Salome HOME
Some layout and names modifications.
[modules/gui.git] / src / Qtx / QtxResourceEdit.h
1 // File:      QtxResourceEdit.h
2 // Author:    Sergey TELKOV
3
4 #ifndef QTXRESOURCEEDIT_H
5 #define QTXRESOURCEEDIT_H
6
7 #ifdef WIN32
8 #pragma warning( disable:4251 )
9 #endif
10
11 #include "Qtx.h"
12
13 class QString;
14 class QtxResourceMgr;
15
16 #include <qcolor.h>
17 #include <qvariant.h>
18
19 class QTX_EXPORT QtxResourceEdit
20 {
21 public:
22   class Item;
23
24 public:
25   QtxResourceEdit( QtxResourceMgr* );
26   virtual ~QtxResourceEdit();
27
28   QtxResourceMgr*      resourceMgr() const;
29
30   int                  addItem( const QString& label, const int pId = -1, const int = -1,
31                                 const QString& section = QString::null,
32                                 const QString& param = QString::null );
33
34   QVariant             property( const int, const QString& ) const;
35   void                 setProperty( const int, const QString&, const QVariant& );
36
37   virtual void         store();
38   virtual void         retrieve();
39
40   virtual void         update();
41
42   virtual void         toBackup();
43   virtual void         fromBackup();
44
45 protected:
46   Item*                item( const int ) const;
47   Item*                item( const QString& ) const;
48   Item*                item( const QString&, const int ) const;
49
50   virtual Item*        createItem( const QString&, const int ) = 0;
51
52   void                 resourceValues( QMap<int, QString>& ) const;
53   void                 resourceValues( QMap<Item*, QString>& ) const;
54
55   void                 setResourceValues( QMap<int, QString>& ) const;
56   void                 setResourceValues( QMap<Item*, QString>& ) const;
57   
58   void                 differentValues( const QMap<int, QString>&, const QMap<int, QString>&,
59                                         QMap<int, QString>&, const bool fromFirst = false ) const;
60   void                 differentValues( const QMap<Item*, QString>&, const QMap<Item*, QString>&,
61                                         QMap<Item*, QString>&, const bool fromFirst = false ) const;
62
63   virtual void         changedResources( const QMap<Item*, QString>& );
64
65 private:
66   void                 removeItem( Item* );
67   Item*                createItem( const QString&, const int, const int );
68
69 private:
70   typedef QMap<int, Item*> ItemMap;
71
72 private:
73   ItemMap              myItems;
74   QtxResourceMgr*      myResMgr;
75   QMap<Item*, QString> myBackup;
76
77   friend class QtxResourceEdit::Item;
78 };
79
80 /*
81   Class: QtxResourceEditor::Item
82   Descr: Class for incapsulation of one preference item
83 */
84
85 class QtxResourceEdit::Item
86 {
87 public:
88   Item( QtxResourceEdit*, Item* = 0 );
89   virtual ~Item();
90
91   int                  id() const;
92   virtual int          type() const = 0;
93
94   Item*                parentItem() const;
95   void                 childItems( QPtrList<Item>& ) const;
96
97   QString              title() const;
98   void                 resource( QString&, QString& ) const;
99
100   virtual void         setTitle( const QString& );
101   virtual void         setResource( const QString&, const QString& );
102
103   virtual void         update();
104
105   QVariant             property( const QString& ) const;
106   virtual void         setProperty( const QString&, const QVariant& );
107
108   virtual void         store() = 0;
109   virtual void         retrieve() = 0;
110
111   virtual Item*        createItem( const QString&, const int ) = 0;
112
113   QString              resourceValue() const;
114   void                 setResourceValue( const QString& );
115
116 protected:
117   QtxResourceMgr*      resourceMgr() const;
118   QtxResourceEdit*     resourceEdit() const;
119
120   int                  getInteger( const int = 0 ) const;
121   double               getDouble( const double = 0.0 ) const;
122   bool                 getBoolean( const bool = false ) const;
123   QColor               getColor( const QColor& = QColor() ) const;
124   QString              getString( const QString& = QString::null ) const;
125
126   void                 setInteger( const int );
127   void                 setDouble( const double );
128   void                 setBoolean( const bool );
129   void                 setColor( const QColor& );
130   void                 setString( const QString& );
131
132   Item*                item( const int ) const;
133   Item*                item( const QString& ) const;
134   Item*                item( const QString&, const int ) const;
135
136 protected:
137   typedef QPtrList<Item>         ItemList;
138   typedef QPtrListIterator<Item> ItemListIterator;
139
140 private:
141   static int           generateId();
142
143 private:
144   int                  myId;
145   Item*                myParent;
146   ItemList             myChildren;
147
148   QString              myTitle;
149   QString              myResSection;
150   QString              myResParameter;
151
152   QtxResourceEdit*     myEdit;
153 };
154
155 #ifdef WIN32
156 #pragma warning( default:4251 )
157 #endif
158
159 #endif