OpenWrt – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 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 <QTextBrowser> |
||
7 | #include <QTreeWidget> |
||
8 | #include <QMainWindow> |
||
9 | #include <QHeaderView> |
||
10 | #include <qsettings.h> |
||
11 | #include <QPushButton> |
||
12 | #include <QSettings> |
||
13 | #include <QLineEdit> |
||
14 | #include <QSplitter> |
||
15 | #include <QCheckBox> |
||
16 | #include <QDialog> |
||
17 | #include "expr.h" |
||
18 | |||
19 | class ConfigView; |
||
20 | class ConfigList; |
||
21 | class ConfigItem; |
||
22 | class ConfigLineEdit; |
||
23 | class ConfigMainWindow; |
||
24 | |||
25 | class ConfigSettings : public QSettings { |
||
26 | public: |
||
27 | ConfigSettings(); |
||
28 | QList<int> readSizes(const QString& key, bool *ok); |
||
29 | bool writeSizes(const QString& key, const QList<int>& value); |
||
30 | }; |
||
31 | |||
32 | enum colIdx { |
||
33 | promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr |
||
34 | }; |
||
35 | enum listMode { |
||
36 | singleMode, menuMode, symbolMode, fullMode, listMode |
||
37 | }; |
||
38 | enum optionMode { |
||
39 | normalOpt = 0, allOpt, promptOpt |
||
40 | }; |
||
41 | |||
42 | class ConfigList : public QTreeWidget { |
||
43 | Q_OBJECT |
||
44 | typedef class QTreeWidget Parent; |
||
45 | public: |
||
46 | ConfigList(ConfigView* p, const char *name = 0); |
||
47 | void reinit(void); |
||
48 | ConfigView* parent(void) const |
||
49 | { |
||
50 | return (ConfigView*)Parent::parent(); |
||
51 | } |
||
52 | ConfigItem* findConfigItem(struct menu *); |
||
53 | |||
54 | protected: |
||
55 | void keyPressEvent(QKeyEvent *e); |
||
56 | void mousePressEvent(QMouseEvent *e); |
||
57 | void mouseReleaseEvent(QMouseEvent *e); |
||
58 | void mouseMoveEvent(QMouseEvent *e); |
||
59 | void mouseDoubleClickEvent(QMouseEvent *e); |
||
60 | void focusInEvent(QFocusEvent *e); |
||
61 | void contextMenuEvent(QContextMenuEvent *e); |
||
62 | |||
63 | public slots: |
||
64 | void setRootMenu(struct menu *menu); |
||
65 | |||
66 | void updateList(ConfigItem *item); |
||
67 | void setValue(ConfigItem* item, tristate val); |
||
68 | void changeValue(ConfigItem* item); |
||
69 | void updateSelection(void); |
||
70 | void saveSettings(void); |
||
71 | signals: |
||
72 | void menuChanged(struct menu *menu); |
||
73 | void menuSelected(struct menu *menu); |
||
74 | void parentSelected(void); |
||
75 | void gotFocus(struct menu *); |
||
76 | |||
77 | public: |
||
78 | void updateListAll(void) |
||
79 | { |
||
80 | updateAll = true; |
||
81 | updateList(NULL); |
||
82 | updateAll = false; |
||
83 | } |
||
84 | ConfigList* listView() |
||
85 | { |
||
86 | return this; |
||
87 | } |
||
88 | ConfigItem* firstChild() const |
||
89 | { |
||
90 | return (ConfigItem *)children().first(); |
||
91 | } |
||
92 | void addColumn(colIdx idx) |
||
93 | { |
||
94 | showColumn(idx); |
||
95 | } |
||
96 | void removeColumn(colIdx idx) |
||
97 | { |
||
98 | hideColumn(idx); |
||
99 | } |
||
100 | void setAllOpen(bool open); |
||
101 | void setParentMenu(void); |
||
102 | |||
103 | bool menuSkip(struct menu *); |
||
104 | |||
105 | void updateMenuList(ConfigItem *parent, struct menu*); |
||
106 | void updateMenuList(ConfigList *parent, struct menu*); |
||
107 | |||
108 | bool updateAll; |
||
109 | |||
110 | QPixmap symbolYesPix, symbolModPix, symbolNoPix; |
||
111 | QPixmap choiceYesPix, choiceNoPix; |
||
112 | QPixmap menuPix, menuInvPix, menuBackPix, voidPix; |
||
113 | |||
114 | bool showName, showRange, showData; |
||
115 | enum listMode mode; |
||
116 | enum optionMode optMode; |
||
117 | struct menu *rootEntry; |
||
118 | QPalette disabledColorGroup; |
||
119 | QPalette inactivedColorGroup; |
||
120 | QMenu* headerPopup; |
||
121 | }; |
||
122 | |||
123 | class ConfigItem : public QTreeWidgetItem { |
||
124 | typedef class QTreeWidgetItem Parent; |
||
125 | public: |
||
126 | ConfigItem(ConfigList *parent, ConfigItem *after, struct menu *m, bool v) |
||
127 | : Parent(parent, after), nextItem(0), menu(m), visible(v), goParent(false) |
||
128 | { |
||
129 | init(); |
||
130 | } |
||
131 | ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v) |
||
132 | : Parent(parent, after), nextItem(0), menu(m), visible(v), goParent(false) |
||
133 | { |
||
134 | init(); |
||
135 | } |
||
136 | ConfigItem(ConfigList *parent, ConfigItem *after, bool v) |
||
137 | : Parent(parent, after), nextItem(0), menu(0), visible(v), goParent(true) |
||
138 | { |
||
139 | init(); |
||
140 | } |
||
141 | ~ConfigItem(void); |
||
142 | void init(void); |
||
143 | void okRename(int col); |
||
144 | void updateMenu(void); |
||
145 | void testUpdateMenu(bool v); |
||
146 | ConfigList* listView() const |
||
147 | { |
||
148 | return (ConfigList*)Parent::treeWidget(); |
||
149 | } |
||
150 | ConfigItem* firstChild() const |
||
151 | { |
||
152 | return (ConfigItem *)Parent::child(0); |
||
153 | } |
||
154 | ConfigItem* nextSibling() |
||
155 | { |
||
156 | ConfigItem *ret = NULL; |
||
157 | ConfigItem *_parent = (ConfigItem *)parent(); |
||
158 | |||
159 | if(_parent) { |
||
160 | ret = (ConfigItem *)_parent->child(_parent->indexOfChild(this)+1); |
||
161 | } else { |
||
162 | QTreeWidget *_treeWidget = treeWidget(); |
||
163 | ret = (ConfigItem *)_treeWidget->topLevelItem(_treeWidget->indexOfTopLevelItem(this)+1); |
||
164 | } |
||
165 | |||
166 | return ret; |
||
167 | } |
||
168 | void setText(colIdx idx, const QString& text) |
||
169 | { |
||
170 | Parent::setText(idx, text); |
||
171 | } |
||
172 | QString text(colIdx idx) const |
||
173 | { |
||
174 | return Parent::text(idx); |
||
175 | } |
||
176 | void setPixmap(colIdx idx, const QIcon &icon) |
||
177 | { |
||
178 | Parent::setIcon(idx, icon); |
||
179 | } |
||
180 | const QIcon pixmap(colIdx idx) const |
||
181 | { |
||
182 | return icon(idx); |
||
183 | } |
||
184 | // TODO: Implement paintCell |
||
185 | |||
186 | ConfigItem* nextItem; |
||
187 | struct menu *menu; |
||
188 | bool visible; |
||
189 | bool goParent; |
||
190 | }; |
||
191 | |||
192 | class ConfigLineEdit : public QLineEdit { |
||
193 | Q_OBJECT |
||
194 | typedef class QLineEdit Parent; |
||
195 | public: |
||
196 | ConfigLineEdit(ConfigView* parent); |
||
197 | ConfigView* parent(void) const |
||
198 | { |
||
199 | return (ConfigView*)Parent::parent(); |
||
200 | } |
||
201 | void show(ConfigItem *i); |
||
202 | void keyPressEvent(QKeyEvent *e); |
||
203 | |||
204 | public: |
||
205 | ConfigItem *item; |
||
206 | }; |
||
207 | |||
208 | class ConfigView : public QWidget { |
||
209 | Q_OBJECT |
||
210 | typedef class QWidget Parent; |
||
211 | public: |
||
212 | ConfigView(QWidget* parent, const char *name = 0); |
||
213 | ~ConfigView(void); |
||
214 | static void updateList(ConfigItem* item); |
||
215 | static void updateListAll(void); |
||
216 | |||
217 | bool showName(void) const { return list->showName; } |
||
218 | bool showRange(void) const { return list->showRange; } |
||
219 | bool showData(void) const { return list->showData; } |
||
220 | public slots: |
||
221 | void setShowName(bool); |
||
222 | void setShowRange(bool); |
||
223 | void setShowData(bool); |
||
224 | void setOptionMode(QAction *); |
||
225 | signals: |
||
226 | void showNameChanged(bool); |
||
227 | void showRangeChanged(bool); |
||
228 | void showDataChanged(bool); |
||
229 | public: |
||
230 | ConfigList* list; |
||
231 | ConfigLineEdit* lineEdit; |
||
232 | |||
233 | static ConfigView* viewList; |
||
234 | ConfigView* nextView; |
||
235 | |||
236 | static QAction *showNormalAction; |
||
237 | static QAction *showAllAction; |
||
238 | static QAction *showPromptAction; |
||
239 | }; |
||
240 | |||
241 | class ConfigInfoView : public QTextBrowser { |
||
242 | Q_OBJECT |
||
243 | typedef class QTextBrowser Parent; |
||
244 | public: |
||
245 | ConfigInfoView(QWidget* parent, const char *name = 0); |
||
246 | bool showDebug(void) const { return _showDebug; } |
||
247 | |||
248 | public slots: |
||
249 | void setInfo(struct menu *menu); |
||
250 | void saveSettings(void); |
||
251 | void setShowDebug(bool); |
||
252 | |||
253 | signals: |
||
254 | void showDebugChanged(bool); |
||
255 | void menuSelected(struct menu *); |
||
256 | |||
257 | protected: |
||
258 | void symbolInfo(void); |
||
259 | void menuInfo(void); |
||
260 | QString debug_info(struct symbol *sym); |
||
261 | static QString print_filter(const QString &str); |
||
262 | static void expr_print_help(void *data, struct symbol *sym, const char *str); |
||
263 | QMenu *createStandardContextMenu(const QPoint & pos); |
||
264 | void contextMenuEvent(QContextMenuEvent *e); |
||
265 | |||
266 | struct symbol *sym; |
||
267 | struct menu *_menu; |
||
268 | bool _showDebug; |
||
269 | }; |
||
270 | |||
271 | class ConfigSearchWindow : public QDialog { |
||
272 | Q_OBJECT |
||
273 | typedef class QDialog Parent; |
||
274 | public: |
||
275 | ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0); |
||
276 | |||
277 | public slots: |
||
278 | void saveSettings(void); |
||
279 | void search(void); |
||
280 | |||
281 | protected: |
||
282 | QLineEdit* editField; |
||
283 | QPushButton* searchButton; |
||
284 | QSplitter* split; |
||
285 | ConfigView* list; |
||
286 | ConfigInfoView* info; |
||
287 | |||
288 | struct symbol **result; |
||
289 | }; |
||
290 | |||
291 | class ConfigMainWindow : public QMainWindow { |
||
292 | Q_OBJECT |
||
293 | |||
294 | static QAction *saveAction; |
||
295 | static void conf_changed(void); |
||
296 | public: |
||
297 | ConfigMainWindow(void); |
||
298 | public slots: |
||
299 | void changeMenu(struct menu *); |
||
300 | void setMenuLink(struct menu *); |
||
301 | void listFocusChanged(void); |
||
302 | void goBack(void); |
||
303 | void loadConfig(void); |
||
304 | bool saveConfig(void); |
||
305 | void saveConfigAs(void); |
||
306 | void searchConfig(void); |
||
307 | void showSingleView(void); |
||
308 | void showSplitView(void); |
||
309 | void showFullView(void); |
||
310 | void showIntro(void); |
||
311 | void showAbout(void); |
||
312 | void saveSettings(void); |
||
313 | |||
314 | protected: |
||
315 | void closeEvent(QCloseEvent *e); |
||
316 | |||
317 | ConfigSearchWindow *searchWindow; |
||
318 | ConfigView *menuView; |
||
319 | ConfigList *menuList; |
||
320 | ConfigView *configView; |
||
321 | ConfigList *configList; |
||
322 | ConfigInfoView *helpText; |
||
323 | QToolBar *toolBar; |
||
324 | QAction *backAction; |
||
325 | QAction *singleViewAction; |
||
326 | QAction *splitViewAction; |
||
327 | QAction *fullViewAction; |
||
328 | QSplitter *split1; |
||
329 | QSplitter *split2; |
||
330 | }; |