Root/
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 | #if QT_VERSION < 0x040000 |
7 | #include <qlistview.h> |
8 | #else |
9 | #include <q3listview.h> |
10 | #endif |
11 | #include <qsettings.h> |
12 | |
13 | #if QT_VERSION < 0x040000 |
14 | #define Q3ValueList QValueList |
15 | #define Q3PopupMenu QPopupMenu |
16 | #define Q3ListView QListView |
17 | #define Q3ListViewItem QListViewItem |
18 | #define Q3VBox QVBox |
19 | #define Q3TextBrowser QTextBrowser |
20 | #define Q3MainWindow QMainWindow |
21 | #define Q3Action QAction |
22 | #define Q3ToolBar QToolBar |
23 | #define Q3ListViewItemIterator QListViewItemIterator |
24 | #define Q3FileDialog QFileDialog |
25 | #endif |
26 | |
27 | class ConfigView; |
28 | class ConfigList; |
29 | class ConfigItem; |
30 | class ConfigLineEdit; |
31 | class ConfigMainWindow; |
32 | |
33 | class ConfigSettings : public QSettings { |
34 | public: |
35 | Q3ValueList<int> readSizes(const QString& key, bool *ok); |
36 | bool writeSizes(const QString& key, const Q3ValueList<int>& value); |
37 | }; |
38 | |
39 | enum colIdx { |
40 | promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr |
41 | }; |
42 | enum listMode { |
43 | singleMode, menuMode, symbolMode, fullMode, listMode |
44 | }; |
45 | enum optionMode { |
46 | normalOpt = 0, allOpt, promptOpt |
47 | }; |
48 | |
49 | class ConfigList : public Q3ListView { |
50 | Q_OBJECT |
51 | typedef class Q3ListView Parent; |
52 | public: |
53 | ConfigList(ConfigView* p, const char *name = 0); |
54 | void reinit(void); |
55 | ConfigView* parent(void) const |
56 | { |
57 | return (ConfigView*)Parent::parent(); |
58 | } |
59 | ConfigItem* findConfigItem(struct menu *); |
60 | |
61 | protected: |
62 | void keyPressEvent(QKeyEvent *e); |
63 | void contentsMousePressEvent(QMouseEvent *e); |
64 | void contentsMouseReleaseEvent(QMouseEvent *e); |
65 | void contentsMouseMoveEvent(QMouseEvent *e); |
66 | void contentsMouseDoubleClickEvent(QMouseEvent *e); |
67 | void focusInEvent(QFocusEvent *e); |
68 | void contextMenuEvent(QContextMenuEvent *e); |
69 | |
70 | public slots: |
71 | void setRootMenu(struct menu *menu); |
72 | |
73 | void updateList(ConfigItem *item); |
74 | void setValue(ConfigItem* item, tristate val); |
75 | void changeValue(ConfigItem* item); |
76 | void updateSelection(void); |
77 | void saveSettings(void); |
78 | signals: |
79 | void menuChanged(struct menu *menu); |
80 | void menuSelected(struct menu *menu); |
81 | void parentSelected(void); |
82 | void gotFocus(struct menu *); |
83 | |
84 | public: |
85 | void updateListAll(void) |
86 | { |
87 | updateAll = true; |
88 | updateList(NULL); |
89 | updateAll = false; |
90 | } |
91 | ConfigList* listView() |
92 | { |
93 | return this; |
94 | } |
95 | ConfigItem* firstChild() const |
96 | { |
97 | return (ConfigItem *)Parent::firstChild(); |
98 | } |
99 | int mapIdx(colIdx idx) |
100 | { |
101 | return colMap[idx]; |
102 | } |
103 | void addColumn(colIdx idx, const QString& label) |
104 | { |
105 | colMap[idx] = Parent::addColumn(label); |
106 | colRevMap[colMap[idx]] = idx; |
107 | } |
108 | void removeColumn(colIdx idx) |
109 | { |
110 | int col = colMap[idx]; |
111 | if (col >= 0) { |
112 | Parent::removeColumn(col); |
113 | colRevMap[col] = colMap[idx] = -1; |
114 | } |
115 | } |
116 | void setAllOpen(bool open); |
117 | void setParentMenu(void); |
118 | |
119 | bool menuSkip(struct menu *); |
120 | |
121 | template <class P> |
122 | void updateMenuList(P*, struct menu*); |
123 | |
124 | bool updateAll; |
125 | |
126 | QPixmap symbolYesPix, symbolModPix, symbolNoPix; |
127 | QPixmap choiceYesPix, choiceNoPix; |
128 | QPixmap menuPix, menuInvPix, menuBackPix, voidPix; |
129 | |
130 | bool showName, showRange, showData; |
131 | enum listMode mode; |
132 | enum optionMode optMode; |
133 | struct menu *rootEntry; |
134 | QColorGroup disabledColorGroup; |
135 | QColorGroup inactivedColorGroup; |
136 | Q3PopupMenu* headerPopup; |
137 | |
138 | private: |
139 | int colMap[colNr]; |
140 | int colRevMap[colNr]; |
141 | }; |
142 | |
143 | class ConfigItem : public Q3ListViewItem { |
144 | typedef class Q3ListViewItem Parent; |
145 | public: |
146 | ConfigItem(Q3ListView *parent, ConfigItem *after, struct menu *m, bool v) |
147 | : Parent(parent, after), menu(m), visible(v), goParent(false) |
148 | { |
149 | init(); |
150 | } |
151 | ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v) |
152 | : Parent(parent, after), menu(m), visible(v), goParent(false) |
153 | { |
154 | init(); |
155 | } |
156 | ConfigItem(Q3ListView *parent, ConfigItem *after, bool v) |
157 | : Parent(parent, after), menu(0), visible(v), goParent(true) |
158 | { |
159 | init(); |
160 | } |
161 | ~ConfigItem(void); |
162 | void init(void); |
163 | void okRename(int col); |
164 | void updateMenu(void); |
165 | void testUpdateMenu(bool v); |
166 | ConfigList* listView() const |
167 | { |
168 | return (ConfigList*)Parent::listView(); |
169 | } |
170 | ConfigItem* firstChild() const |
171 | { |
172 | return (ConfigItem *)Parent::firstChild(); |
173 | } |
174 | ConfigItem* nextSibling() const |
175 | { |
176 | return (ConfigItem *)Parent::nextSibling(); |
177 | } |
178 | void setText(colIdx idx, const QString& text) |
179 | { |
180 | Parent::setText(listView()->mapIdx(idx), text); |
181 | } |
182 | QString text(colIdx idx) const |
183 | { |
184 | return Parent::text(listView()->mapIdx(idx)); |
185 | } |
186 | void setPixmap(colIdx idx, const QPixmap& pm) |
187 | { |
188 | Parent::setPixmap(listView()->mapIdx(idx), pm); |
189 | } |
190 | const QPixmap* pixmap(colIdx idx) const |
191 | { |
192 | return Parent::pixmap(listView()->mapIdx(idx)); |
193 | } |
194 | void paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align); |
195 | |
196 | ConfigItem* nextItem; |
197 | struct menu *menu; |
198 | bool visible; |
199 | bool goParent; |
200 | }; |
201 | |
202 | class ConfigLineEdit : public QLineEdit { |
203 | Q_OBJECT |
204 | typedef class QLineEdit Parent; |
205 | public: |
206 | ConfigLineEdit(ConfigView* parent); |
207 | ConfigView* parent(void) const |
208 | { |
209 | return (ConfigView*)Parent::parent(); |
210 | } |
211 | void show(ConfigItem *i); |
212 | void keyPressEvent(QKeyEvent *e); |
213 | |
214 | public: |
215 | ConfigItem *item; |
216 | }; |
217 | |
218 | class ConfigView : public Q3VBox { |
219 | Q_OBJECT |
220 | typedef class Q3VBox Parent; |
221 | public: |
222 | ConfigView(QWidget* parent, const char *name = 0); |
223 | ~ConfigView(void); |
224 | static void updateList(ConfigItem* item); |
225 | static void updateListAll(void); |
226 | |
227 | bool showName(void) const { return list->showName; } |
228 | bool showRange(void) const { return list->showRange; } |
229 | bool showData(void) const { return list->showData; } |
230 | public slots: |
231 | void setShowName(bool); |
232 | void setShowRange(bool); |
233 | void setShowData(bool); |
234 | void setOptionMode(QAction *); |
235 | signals: |
236 | void showNameChanged(bool); |
237 | void showRangeChanged(bool); |
238 | void showDataChanged(bool); |
239 | public: |
240 | ConfigList* list; |
241 | ConfigLineEdit* lineEdit; |
242 | |
243 | static ConfigView* viewList; |
244 | ConfigView* nextView; |
245 | |
246 | static QAction *showNormalAction; |
247 | static QAction *showAllAction; |
248 | static QAction *showPromptAction; |
249 | }; |
250 | |
251 | class ConfigInfoView : public Q3TextBrowser { |
252 | Q_OBJECT |
253 | typedef class Q3TextBrowser Parent; |
254 | public: |
255 | ConfigInfoView(QWidget* parent, const char *name = 0); |
256 | bool showDebug(void) const { return _showDebug; } |
257 | |
258 | public slots: |
259 | void setInfo(struct menu *menu); |
260 | void saveSettings(void); |
261 | void setShowDebug(bool); |
262 | |
263 | signals: |
264 | void showDebugChanged(bool); |
265 | void menuSelected(struct menu *); |
266 | |
267 | protected: |
268 | void symbolInfo(void); |
269 | void menuInfo(void); |
270 | QString debug_info(struct symbol *sym); |
271 | static QString print_filter(const QString &str); |
272 | static void expr_print_help(void *data, struct symbol *sym, const char *str); |
273 | Q3PopupMenu* createPopupMenu(const QPoint& pos); |
274 | void contentsContextMenuEvent(QContextMenuEvent *e); |
275 | |
276 | struct symbol *sym; |
277 | struct menu *_menu; |
278 | bool _showDebug; |
279 | }; |
280 | |
281 | class ConfigSearchWindow : public QDialog { |
282 | Q_OBJECT |
283 | typedef class QDialog Parent; |
284 | public: |
285 | ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0); |
286 | |
287 | public slots: |
288 | void saveSettings(void); |
289 | void search(void); |
290 | |
291 | protected: |
292 | QLineEdit* editField; |
293 | QPushButton* searchButton; |
294 | QSplitter* split; |
295 | ConfigView* list; |
296 | ConfigInfoView* info; |
297 | |
298 | struct symbol **result; |
299 | }; |
300 | |
301 | class ConfigMainWindow : public Q3MainWindow { |
302 | Q_OBJECT |
303 | |
304 | static Q3Action *saveAction; |
305 | static void conf_changed(void); |
306 | public: |
307 | ConfigMainWindow(void); |
308 | public slots: |
309 | void changeMenu(struct menu *); |
310 | void setMenuLink(struct menu *); |
311 | void listFocusChanged(void); |
312 | void goBack(void); |
313 | void loadConfig(void); |
314 | void saveConfig(void); |
315 | void saveConfigAs(void); |
316 | void searchConfig(void); |
317 | void showSingleView(void); |
318 | void showSplitView(void); |
319 | void showFullView(void); |
320 | void showIntro(void); |
321 | void showAbout(void); |
322 | void saveSettings(void); |
323 | |
324 | protected: |
325 | void closeEvent(QCloseEvent *e); |
326 | |
327 | ConfigSearchWindow *searchWindow; |
328 | ConfigView *menuView; |
329 | ConfigList *menuList; |
330 | ConfigView *configView; |
331 | ConfigList *configList; |
332 | ConfigInfoView *helpText; |
333 | Q3ToolBar *toolBar; |
334 | Q3Action *backAction; |
335 | QSplitter* split1; |
336 | QSplitter* split2; |
337 | }; |
338 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9