Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  qconf.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
 */


#include <QCheckBox>
#include <QDialog>
#include <QHeaderView>
#include <QLineEdit>
#include <QMainWindow>
#include <QPushButton>
#include <QSettings>
#include <QSplitter>
#include <QStyledItemDelegate>
#include <QTextBrowser>
#include <QTreeWidget>

#include "expr.h"

class ConfigList;
class ConfigItem;
class ConfigMainWindow;

class ConfigSettings : public QSettings {
public:
 ConfigSettings();
 ~ConfigSettings(void);
 QList<int> readSizes(const QString& key, bool *ok);
 bool writeSizes(const QString& key, const QList<int>& value);
};

enum colIdx {
 promptColIdx, nameColIdx, dataColIdx
};
enum listMode {
 singleMode, menuMode, symbolMode, fullMode, listMode
};
enum optionMode {
 normalOpt = 0, allOpt, promptOpt
};

class ConfigList : public QTreeWidget {
 Q_OBJECT
 typedef class QTreeWidget Parent;
public:
 ConfigList(QWidget *parent, const char *name = 0);
 ~ConfigList();
 void reinit(void);
 ConfigItem* findConfigItem(struct menu *);
 void setSelected(QTreeWidgetItem *item, bool enable) {
  for (int i = 0; i < selectedItems().size(); i++)
   selectedItems().at(i)->setSelected(false);

  item->setSelected(enable);
 }

protected:
 void keyPressEvent(QKeyEvent *e);
 void mouseReleaseEvent(QMouseEvent *e);
 void mouseDoubleClickEvent(QMouseEvent *e);
 void focusInEvent(QFocusEvent *e);
 void contextMenuEvent(QContextMenuEvent *e);

public slots:
 void setRootMenu(struct menu *menu);

 void updateList();
 void setValue(ConfigItem* item, tristate val);
 void changeValue(ConfigItem* item);
 void updateSelection(void);
 void saveSettings(void);
 void setOptionMode(QAction *action);
 void setShowName(bool on);

signals:
 void menuChanged(struct menu *menu);
 void menuSelected(struct menu *menu);
 void itemSelected(struct menu *menu);
 void parentSelected(void);
 void gotFocus(struct menu *);
 void showNameChanged(bool on);

public:
 void updateListAll(void)
 {
  updateAll = true;
  updateList();
  updateAll = false;
 }
 void setAllOpen(bool open);
 void setParentMenu(void);

 bool menuSkip(struct menu *);

 void updateMenuList(ConfigItem *parent, struct menu*);
 void updateMenuList(struct menu *menu);

 bool updateAll;

 bool showName;
 enum listMode mode;
 enum optionMode optMode;
 struct menu *rootEntry;
 QPalette disabledColorGroup;
 QPalette inactivedColorGroup;
 QMenu* headerPopup;

 static QList<ConfigList *> allLists;
 static void updateListForAll();
 static void updateListAllForAll();

 static QAction *showNormalAction, *showAllAction, *showPromptAction;
};

class ConfigItem : public QTreeWidgetItem {
 typedef class QTreeWidgetItem Parent;
public:
 ConfigItem(ConfigList *parent, ConfigItem *after, struct menu *m)
 : Parent(parent, after), nextItem(0), menu(m), goParent(false)
 {
  init();
 }
 ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m)
 : Parent(parent, after), nextItem(0), menu(m), goParent(false)
 {
  init();
 }
 ConfigItem(ConfigList *parent, ConfigItem *after)
 : Parent(parent, after), nextItem(0), menu(0), goParent(true)
 {
  init();
 }
 ~ConfigItem(void);
 void init(void);
 void updateMenu(void);
 void testUpdateMenu(void);
 ConfigList* listView() const
 {
  return (ConfigList*)Parent::treeWidget();
 }
 ConfigItem* firstChild() const
 {
  return (ConfigItem *)Parent::child(0);
 }
 ConfigItem* nextSibling()
 {
  ConfigItem *ret = NULL;
  ConfigItem *_parent = (ConfigItem *)parent();

  if(_parent) {
   ret = (ConfigItem *)_parent->child(_parent->indexOfChild(this)+1);
  } else {
   QTreeWidget *_treeWidget = treeWidget();
   ret = (ConfigItem *)_treeWidget->topLevelItem(_treeWidget->indexOfTopLevelItem(this)+1);
  }

  return ret;
 }
 // TODO: Implement paintCell

 ConfigItem* nextItem;
 struct menu *menu;
 bool goParent;

 static QIcon symbolYesIcon, symbolModIcon, symbolNoIcon;
 static QIcon choiceYesIcon, choiceNoIcon;
 static QIcon menuIcon, menubackIcon;
};

class ConfigItemDelegate : public QStyledItemDelegate
{
private:
 struct menu *menu;
public:
 ConfigItemDelegate(QObject *parent = nullptr)
  : QStyledItemDelegate(parent) {}
 QWidget *createEditor(QWidget *parent,
         const QStyleOptionViewItem &option,
         const QModelIndex &index) const override;
 void setModelData(QWidget *editor, QAbstractItemModel *model,
     const QModelIndex &index) const override;
};

class ConfigInfoView : public QTextBrowser {
 Q_OBJECT
 typedef class QTextBrowser Parent;
 QMenu *contextMenu;
public:
 ConfigInfoView(QWidget* parent, const char *name = 0);
 bool showDebug(voidconst { return _showDebug; }

public slots:
 void setInfo(struct menu *menu);
 void saveSettings(void);
 void setShowDebug(bool);
 void clicked (const QUrl &url);

signals:
 void showDebugChanged(bool);
 void menuSelected(struct menu *);

protected:
 void symbolInfo(void);
 void menuInfo(void);
 QString debug_info(struct symbol *sym);
 static QString print_filter(const QString &str);
 static void expr_print_help(void *data, struct symbol *sym, const char *str);
 void contextMenuEvent(QContextMenuEvent *event);

 struct symbol *sym;
 struct menu *_menu;
 bool _showDebug;
};

class ConfigSearchWindow : public QDialog {
 Q_OBJECT
 typedef class QDialog Parent;
public:
 ConfigSearchWindow(ConfigMainWindow *parent);

public slots:
 void saveSettings(void);
 void search(void);

protected:
 QLineEdit* editField;
 QPushButton* searchButton;
 QSplitter* split;
 ConfigList *list;
 ConfigInfoView* info;

 struct symbol **result;
};

class ConfigMainWindow : public QMainWindow {
 Q_OBJECT

 QString configname;
 static QAction *saveAction;
 static void conf_changed(bool);
public:
 ConfigMainWindow(void);
public slots:
 void changeMenu(struct menu *);
 void changeItens(struct menu *);
 void setMenuLink(struct menu *);
 void listFocusChanged(void);
 void goBack(void);
 void loadConfig(void);
 bool saveConfig(void);
 void saveConfigAs(void);
 void searchConfig(void);
 void showSingleView(void);
 void showSplitView(void);
 void showFullView(void);
 void showIntro(void);
 void showAbout(void);
 void saveSettings(void);

protected:
 void closeEvent(QCloseEvent *e);

 ConfigSearchWindow *searchWindow;
 ConfigList *menuList;
 ConfigList *configList;
 ConfigInfoView *helpText;
 QAction *backAction;
 QAction *singleViewAction;
 QAction *splitViewAction;
 QAction *fullViewAction;
 QSplitter *split1;
 QSplitter *split2;
};

Messung V0.5
C=99 H=100 G=99

¤ Dauer der Verarbeitung: 0.0 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge