Salome HOME
Merge from V6_main 01/04/2013
[modules/gui.git] / src / Qtx / QtxPreferenceMgr.h
1 // Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 // File:      QtxPreferenceMgr.h
21 // Author:    Sergey TELKOV
22 //
23 #ifndef QTXPREFERENCEMGR_H
24 #define QTXPREFERENCEMGR_H
25
26 #ifdef WIN32
27 #pragma warning( disable:4251 )
28 #endif
29
30 #include "Qtx.h"
31
32 #include <QFont>
33 #include <QIcon>
34 #include <QColor>
35 #include <QVariant>
36
37 class QtxResourceMgr;
38 class QtxPreferenceMgr;
39
40 class QTX_EXPORT QtxPreferenceItem
41 {
42   class Updater;
43
44 public:
45   QtxPreferenceItem( QtxPreferenceItem* = 0 );
46   QtxPreferenceItem( const QString&, QtxPreferenceItem* );
47   QtxPreferenceItem( const QString&, const QString&, const QString&, QtxPreferenceItem* );
48   virtual ~QtxPreferenceItem();
49
50   int                       id() const;
51   virtual int               rtti() const;
52
53   QtxPreferenceItem*        rootItem() const;
54   QtxPreferenceItem*        parentItem() const;
55   QList<QtxPreferenceItem*> childItems( const bool = false ) const;
56
57   int                       depth() const;
58   int                       count() const;
59   virtual bool              isEmpty() const;
60
61   void                      appendItem( QtxPreferenceItem* );
62   void                      removeItem( QtxPreferenceItem* );
63   void                      insertItem( QtxPreferenceItem*, QtxPreferenceItem* = 0 );
64
65   QIcon                     icon() const;
66   QString                   title() const;
67   void                      resource( QString&, QString& ) const;
68
69   virtual void              setIcon( const QIcon& );
70   virtual void              setTitle( const QString& );
71   virtual void              setResource( const QString&, const QString& );
72
73   virtual void              updateContents();
74
75   QVariant                  option( const QString& ) const;
76   void                      setOption( const QString&, const QVariant& );
77
78   bool                      isEvaluateValues() const;
79   void                      setEvaluateValues( const bool );
80
81   virtual void              store() = 0;
82   virtual void              retrieve() = 0;
83
84   QString                   resourceValue() const;
85   void                      setResourceValue( const QString& );
86
87   QtxPreferenceItem*        findItem( const int, const bool = false ) const;
88   QtxPreferenceItem*        findItem( const QString&, const bool = false ) const;
89   QtxPreferenceItem*        findItem( const QString&, const int, const bool = false ) const;
90
91   virtual QtxResourceMgr*   resourceMgr() const;
92   virtual QtxPreferenceMgr* preferenceMgr() const;
93
94   virtual void              activate();
95   void                      ensureVisible();
96
97   static int                RTTI();
98
99 protected:
100   int                       getInteger( const int = 0 ) const;
101   double                    getDouble( const double = 0.0 ) const;
102   bool                      getBoolean( const bool = false ) const;
103   QColor                    getColor( const QColor& = QColor() ) const;
104   QFont                     getFont( const QFont& = QFont() ) const;
105   QString                   getString( const QString& = QString() ) const;
106
107   void                      setInteger( const int );
108   void                      setDouble( const double );
109   void                      setBoolean( const bool );
110   void                      setColor( const QColor& );
111   void                      setFont( const QFont& );
112   void                      setString( const QString& );
113
114   virtual void              itemAdded( QtxPreferenceItem* );
115   virtual void              itemRemoved( QtxPreferenceItem* );
116   virtual void              itemChanged( QtxPreferenceItem* );
117
118   virtual void              ensureVisible( QtxPreferenceItem* );
119
120   void                      sendItemChanges();
121
122   virtual void              triggerUpdate();
123
124   virtual QVariant          optionValue( const QString& ) const;
125   virtual void              setOptionValue( const QString&, const QVariant& );
126
127 protected:
128   typedef QList<QtxPreferenceItem*> ItemList;
129
130 private:
131   static int                generateId();
132
133 private:
134   int                       myId;
135   QtxPreferenceItem*        myParent;
136   ItemList                  myChildren;
137
138   bool                      myEval;
139   QIcon                     myIcon;
140   QString                   myTitle;
141   QString                   mySection;
142   QString                   myParameter;
143 };
144
145 class QTX_EXPORT QtxPreferenceMgr : public QtxPreferenceItem
146 {
147 public:
148   QtxPreferenceMgr( QtxResourceMgr* );
149   virtual ~QtxPreferenceMgr();
150
151   virtual QtxResourceMgr*   resourceMgr() const;
152   virtual QtxPreferenceMgr* preferenceMgr() const;
153
154   QVariant                  option( const int, const QString& ) const;
155   void                      setOption( const int, const QString&, const QVariant& );
156
157   virtual void              store();
158   virtual void              retrieve();
159
160   virtual void              update();
161
162   virtual void              toBackup();
163   virtual void              fromBackup();
164
165 protected:
166   typedef QMap<QtxPreferenceItem*, QString> ResourceMap;
167
168   void                      resourceValues( QMap<int, QString>& ) const;
169   void                      resourceValues( ResourceMap& ) const;
170
171   void                      setResourceValues( QMap<int, QString>& ) const;
172   void                      setResourceValues( ResourceMap& ) const;
173
174   void                      differentValues( const QMap<int, QString>&, const QMap<int, QString>&,
175                                              QMap<int, QString>&, const bool fromFirst = false ) const;
176   void                      differentValues( const ResourceMap&, const ResourceMap&,
177                                              ResourceMap&, const bool fromFirst = false ) const;
178
179   virtual void              changedResources( const ResourceMap& );
180
181 private:
182   QtxResourceMgr*           myResMgr;
183   ResourceMap               myBackup;
184 };
185
186 #ifdef WIN32
187 #pragma warning( default:4251 )
188 #endif
189
190 #endif