00001
00002
00003
00004
00005
00006
#include <qlistview.h>
00007
00008
class ConfigList;
00009
class ConfigItem;
00010
class ConfigLineEdit;
00011
class ConfigMainWindow;
00012
00013 class ConfigView :
public QVBox {
00014 Q_OBJECT
00015 typedef class QVBox Parent;
00016
public:
00017
ConfigView(QWidget* parent,
ConfigMainWindow* cview);
00018
~ConfigView(
void);
00019
static void updateList(
ConfigItem* item);
00020
static void updateListAll(
void);
00021
00022
public:
00023 ConfigList*
list;
00024 ConfigLineEdit*
lineEdit;
00025
00026 static ConfigView*
viewList;
00027 ConfigView*
nextView;
00028 };
00029
00030 enum colIdx {
00031
promptColIdx,
nameColIdx,
noColIdx,
modColIdx,
yesColIdx,
dataColIdx,
colNr
00032 };
00033 enum listMode {
00034
singleMode,
menuMode,
symbolMode,
fullMode
00035 };
00036
00037 class ConfigList :
public QListView {
00038 Q_OBJECT
00039 typedef class QListView Parent;
00040
public:
00041
ConfigList(
ConfigView* p,
ConfigMainWindow* cview);
00042
void reinit(
void);
00043 ConfigView*
parent(
void)
const
00044
{
00045
return (
ConfigView*)Parent::parent();
00046 }
00047
00048
protected:
00049 ConfigMainWindow*
cview;
00050
00051
void keyPressEvent(QKeyEvent *e);
00052
void contentsMousePressEvent(QMouseEvent *e);
00053
void contentsMouseReleaseEvent(QMouseEvent *e);
00054
void contentsMouseMoveEvent(QMouseEvent *e);
00055
void contentsMouseDoubleClickEvent(QMouseEvent *e);
00056
void focusInEvent(QFocusEvent *e);
00057
public slots:
00058
void setRootMenu(
struct menu *
menu);
00059
00060
void updateList(
ConfigItem *item);
00061
void setValue(
ConfigItem* item,
tristate val);
00062
void changeValue(
ConfigItem* item);
00063
void updateSelection(
void);
00064 signals:
00065
void menuSelected(
struct menu *
menu);
00066
void parentSelected(
void);
00067
void gotFocus(
void);
00068
00069
public:
00070 void updateListAll(
void)
00071 {
00072
updateAll =
true;
00073
updateList(NULL);
00074
updateAll =
false;
00075 }
00076 ConfigList*
listView()
00077 {
00078
return this;
00079 }
00080 ConfigItem*
firstChild()
const
00081
{
00082
return (
ConfigItem *)Parent::firstChild();
00083 }
00084 int mapIdx(colIdx idx)
00085 {
00086
return colMap[idx];
00087 }
00088 void addColumn(colIdx idx,
const QString& label)
00089 {
00090
colMap[idx] = Parent::addColumn(
label);
00091
colRevMap[
colMap[idx]] = idx;
00092 }
00093 void removeColumn(colIdx idx)
00094 {
00095
int col =
colMap[idx];
00096
if (col >= 0) {
00097 Parent::removeColumn(col);
00098
colRevMap[col] = colMap[idx] = -1;
00099 }
00100 }
00101
void setAllOpen(
bool open);
00102
void setParentMenu(
void);
00103
00104
template <
class P>
00105
void ConfigList::updateMenuList(P*,
struct menu*);
00106
00107 bool updateAll;
00108
00109 QPixmap
symbolYesPix,
symbolModPix,
symbolNoPix;
00110 QPixmap
choiceYesPix,
choiceNoPix;
00111 QPixmap
menuPix,
menuInvPix,
menuBackPix,
voidPix;
00112
00113 bool showAll,
showName,
showRange,
showData;
00114 enum listMode mode;
00115 struct menu *
rootEntry;
00116 QColorGroup
disabledColorGroup;
00117 QColorGroup
inactivedColorGroup;
00118
00119
private:
00120 int colMap[
colNr];
00121 int colRevMap[
colNr];
00122 };
00123
00124 class ConfigItem :
public QListViewItem {
00125 typedef class QListViewItem Parent;
00126
public:
00127 ConfigItem(QListView *parent,
ConfigItem *after,
struct menu *m,
bool v)
00128 : Parent(parent, after),
menu(m),
visible(v),
goParent(false)
00129 {
00130
init();
00131 }
00132 ConfigItem(
ConfigItem *parent,
ConfigItem *after,
struct menu *m,
bool v)
00133 : Parent(parent, after),
menu(m),
visible(v),
goParent(false)
00134 {
00135
init();
00136 }
00137 ConfigItem(QListView *parent,
ConfigItem *after,
bool v)
00138 : Parent(parent, after),
menu(0),
visible(v),
goParent(true)
00139 {
00140
init();
00141 }
00142
~ConfigItem(
void);
00143
void init(
void);
00144
#if QT_VERSION >= 300
00145
void okRename(
int col);
00146
#endif
00147
void updateMenu(
void);
00148
void testUpdateMenu(
bool v);
00149 ConfigList*
listView()
const
00150
{
00151
return (
ConfigList*)Parent::listView();
00152 }
00153 ConfigItem*
firstChild()
const
00154
{
00155
return (
ConfigItem *)Parent::firstChild();
00156 }
00157 ConfigItem*
nextSibling()
const
00158
{
00159
return (
ConfigItem *)Parent::nextSibling();
00160 }
00161 void setText(colIdx idx,
const QString& text)
00162 {
00163 Parent::setText(
listView()->mapIdx(idx),
text);
00164 }
00165 QString
text(colIdx idx)
const
00166
{
00167
return Parent::text(
listView()->mapIdx(idx));
00168 }
00169 void setPixmap(colIdx idx,
const QPixmap& pm)
00170 {
00171 Parent::setPixmap(
listView()->mapIdx(idx), pm);
00172 }
00173 const QPixmap*
pixmap(colIdx idx)
const
00174
{
00175
return Parent::pixmap(
listView()->mapIdx(idx));
00176 }
00177
void paintCell(QPainter* p,
const QColorGroup& cg,
int column,
int width,
int align);
00178
00179 ConfigItem*
nextItem;
00180 struct menu *
menu;
00181 bool visible;
00182 bool goParent;
00183 };
00184
00185 class ConfigLineEdit :
public QLineEdit {
00186 Q_OBJECT
00187 typedef class QLineEdit Parent;
00188
public:
00189 ConfigLineEdit(
ConfigView* parent)
00190 : Parent(parent)
00191 { }
00192 ConfigView*
parent(
void)
const
00193
{
00194
return (
ConfigView*)Parent::parent();
00195 }
00196
void show(
ConfigItem *i);
00197
void keyPressEvent(QKeyEvent *e);
00198
00199
public:
00200 ConfigItem *
item;
00201 };
00202
00203 class ConfigMainWindow :
public QMainWindow {
00204 Q_OBJECT
00205
public:
00206
ConfigMainWindow(
void);
00207
public slots:
00208
void setHelp(QListViewItem* item);
00209
void changeMenu(
struct menu *);
00210
void listFocusChanged(
void);
00211
void goBack(
void);
00212
void loadConfig(
void);
00213
void saveConfig(
void);
00214
void saveConfigAs(
void);
00215
void showSingleView(
void);
00216
void showSplitView(
void);
00217
void showFullView(
void);
00218
void setShowAll(
bool);
00219
void setShowDebug(
bool);
00220
void setShowRange(
bool);
00221
void setShowName(
bool);
00222
void setShowData(
bool);
00223
void showIntro(
void);
00224
void showAbout(
void);
00225
00226
protected:
00227
void closeEvent(QCloseEvent *e);
00228
00229 ConfigView *
menuView;
00230 ConfigList *
menuList;
00231 ConfigView *
configView;
00232 ConfigList *
configList;
00233 QTextView *
helpText;
00234 QToolBar *
toolBar;
00235 QAction *
backAction;
00236
00237 bool showDebug;
00238 };