home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6-686 / scripts / kconfig / qconf.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  5.6 KB  |  264 lines

  1. /*
  2.  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  3.  * Released under the terms of the GNU GPL v2.0.
  4.  */
  5.  
  6. #include <qlistview.h>
  7. #if QT_VERSION >= 300
  8. #include <qsettings.h>
  9. #else
  10. class QSettings { };
  11. #endif
  12.  
  13. class ConfigList;
  14. class ConfigItem;
  15. class ConfigLineEdit;
  16. class ConfigMainWindow;
  17.  
  18.  
  19. class ConfigSettings : public QSettings {
  20. public:
  21.     ConfigSettings();
  22.  
  23. #if QT_VERSION >= 300
  24.     void readListSettings();
  25.     QValueList<int> readSizes(const QString& key, bool *ok);
  26.     bool writeSizes(const QString& key, const QValueList<int>& value);
  27. #endif
  28.  
  29.     bool showAll;
  30.     bool showName;
  31.     bool showRange;
  32.     bool showData;
  33. };
  34.  
  35. class ConfigView : public QVBox {
  36.     Q_OBJECT
  37.     typedef class QVBox Parent;
  38. public:
  39.     ConfigView(QWidget* parent, ConfigMainWindow* cview, ConfigSettings* configSettings);
  40.     ~ConfigView(void);
  41.     static void updateList(ConfigItem* item);
  42.     static void updateListAll(void);
  43.  
  44. public:
  45.     ConfigList* list;
  46.     ConfigLineEdit* lineEdit;
  47.  
  48.     static ConfigView* viewList;
  49.     ConfigView* nextView;
  50. };
  51.  
  52. enum colIdx {
  53.     promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr
  54. };
  55. enum listMode {
  56.     singleMode, menuMode, symbolMode, fullMode
  57. };
  58.  
  59. class ConfigList : public QListView {
  60.     Q_OBJECT
  61.     typedef class QListView Parent;
  62. public:
  63.     ConfigList(ConfigView* p, ConfigMainWindow* cview, ConfigSettings *configSettings);
  64.     void reinit(void);
  65.     ConfigView* parent(void) const
  66.     {
  67.         return (ConfigView*)Parent::parent();
  68.     }
  69.  
  70. protected:
  71.     ConfigMainWindow* cview;
  72.  
  73.     void keyPressEvent(QKeyEvent *e);
  74.     void contentsMousePressEvent(QMouseEvent *e);
  75.     void contentsMouseReleaseEvent(QMouseEvent *e);
  76.     void contentsMouseMoveEvent(QMouseEvent *e);
  77.     void contentsMouseDoubleClickEvent(QMouseEvent *e);
  78.     void focusInEvent(QFocusEvent *e);
  79. public slots:
  80.     void setRootMenu(struct menu *menu);
  81.  
  82.     void updateList(ConfigItem *item);
  83.     void setValue(ConfigItem* item, tristate val);
  84.     void changeValue(ConfigItem* item);
  85.     void updateSelection(void);
  86. signals:
  87.     void menuSelected(struct menu *menu);
  88.     void parentSelected(void);
  89.     void gotFocus(void);
  90.  
  91. public:
  92.     void updateListAll(void)
  93.     {
  94.         updateAll = true;
  95.         updateList(NULL);
  96.         updateAll = false;
  97.     }
  98.     ConfigList* listView()
  99.     {
  100.         return this;
  101.     }
  102.     ConfigItem* firstChild() const
  103.     {
  104.         return (ConfigItem *)Parent::firstChild();
  105.     }
  106.     int mapIdx(colIdx idx)
  107.     {
  108.         return colMap[idx];
  109.     }
  110.     void addColumn(colIdx idx, const QString& label)
  111.     {
  112.         colMap[idx] = Parent::addColumn(label);
  113.         colRevMap[colMap[idx]] = idx;
  114.     }
  115.     void removeColumn(colIdx idx)
  116.     {
  117.         int col = colMap[idx];
  118.         if (col >= 0) {
  119.             Parent::removeColumn(col);
  120.             colRevMap[col] = colMap[idx] = -1;
  121.         }
  122.     }
  123.     void setAllOpen(bool open);
  124.     void setParentMenu(void);
  125.  
  126.     template <class P>
  127.     void updateMenuList(P*, struct menu*);
  128.  
  129.     bool updateAll;
  130.  
  131.     QPixmap symbolYesPix, symbolModPix, symbolNoPix;
  132.     QPixmap choiceYesPix, choiceNoPix;
  133.     QPixmap menuPix, menuInvPix, menuBackPix, voidPix;
  134.  
  135.     bool showAll, showName, showRange, showData;
  136.     enum listMode mode;
  137.     struct menu *rootEntry;
  138.     QColorGroup disabledColorGroup;
  139.     QColorGroup inactivedColorGroup;
  140.  
  141. private:
  142.     int colMap[colNr];
  143.     int colRevMap[colNr];
  144. };
  145.  
  146. class ConfigItem : public QListViewItem {
  147.     typedef class QListViewItem Parent;
  148. public:
  149.     ConfigItem(QListView *parent, ConfigItem *after, struct menu *m, bool v)
  150.     : Parent(parent, after), menu(m), visible(v), goParent(false)
  151.     {
  152.         init();
  153.     }
  154.     ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v)
  155.     : Parent(parent, after), menu(m), visible(v), goParent(false)
  156.     {
  157.         init();
  158.     }
  159.     ConfigItem(QListView *parent, ConfigItem *after, bool v)
  160.     : Parent(parent, after), menu(0), visible(v), goParent(true)
  161.     {
  162.         init();
  163.     }
  164.     ~ConfigItem(void);
  165.     void init(void);
  166. #if QT_VERSION >= 300
  167.     void okRename(int col);
  168. #endif
  169.     void updateMenu(void);
  170.     void testUpdateMenu(bool v);
  171.     ConfigList* listView() const
  172.     {
  173.         return (ConfigList*)Parent::listView();
  174.     }
  175.     ConfigItem* firstChild() const
  176.     {
  177.         return (ConfigItem *)Parent::firstChild();
  178.     }
  179.     ConfigItem* nextSibling() const
  180.     {
  181.         return (ConfigItem *)Parent::nextSibling();
  182.     }
  183.     void setText(colIdx idx, const QString& text)
  184.     {
  185.         Parent::setText(listView()->mapIdx(idx), text);
  186.     }
  187.     QString text(colIdx idx) const
  188.     {
  189.         return Parent::text(listView()->mapIdx(idx));
  190.     }
  191.     void setPixmap(colIdx idx, const QPixmap& pm)
  192.     {
  193.         Parent::setPixmap(listView()->mapIdx(idx), pm);
  194.     }
  195.     const QPixmap* pixmap(colIdx idx) const
  196.     {
  197.         return Parent::pixmap(listView()->mapIdx(idx));
  198.     }
  199.     void paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align);
  200.  
  201.     ConfigItem* nextItem;
  202.     struct menu *menu;
  203.     bool visible;
  204.     bool goParent;
  205. };
  206.  
  207. class ConfigLineEdit : public QLineEdit {
  208.     Q_OBJECT
  209.     typedef class QLineEdit Parent;
  210. public:
  211.     ConfigLineEdit(ConfigView* parent)
  212.     : Parent(parent)
  213.     { }
  214.     ConfigView* parent(void) const
  215.     {
  216.         return (ConfigView*)Parent::parent();
  217.     }
  218.     void show(ConfigItem *i);
  219.     void keyPressEvent(QKeyEvent *e);
  220.  
  221. public:
  222.     ConfigItem *item;
  223. };
  224.  
  225. class ConfigMainWindow : public QMainWindow {
  226.     Q_OBJECT
  227. public:
  228.     ConfigMainWindow(void);
  229. public slots:
  230.     void setHelp(QListViewItem* item);
  231.     void changeMenu(struct menu *);
  232.     void listFocusChanged(void);
  233.     void goBack(void);
  234.     void loadConfig(void);
  235.     void saveConfig(void);
  236.     void saveConfigAs(void);
  237.     void showSingleView(void);
  238.     void showSplitView(void);
  239.     void showFullView(void);
  240.     void setShowAll(bool);
  241.     void setShowDebug(bool);
  242.     void setShowRange(bool);
  243.     void setShowName(bool);
  244.     void setShowData(bool);
  245.     void showIntro(void);
  246.     void showAbout(void);
  247.     void saveSettings(void);
  248.  
  249. protected:
  250.     void closeEvent(QCloseEvent *e);
  251.  
  252.     ConfigView *menuView;
  253.     ConfigList *menuList;
  254.     ConfigView *configView;
  255.     ConfigList *configList;
  256.     QTextView *helpText;
  257.     QToolBar *toolBar;
  258.     QAction *backAction;
  259.     QSplitter* split1;
  260.     QSplitter* split2;
  261.  
  262.     bool showDebug;
  263. };
  264.