| 23 #include "macros.h" |
23 #include "macros.h" |
| 24 #include "basics.h" |
24 #include "basics.h" |
| 25 |
25 |
| 26 class QSettings; |
26 class QSettings; |
| 27 |
27 |
| 28 #define CFGENTRY(T, NAME, DEFAULT) \ |
28 #define CFGENTRY(T, NAME, DEFAULT) namespace cfg { ConfigEntry::T##Type NAME; } |
| 29 namespace cfg \ |
29 #define EXTERN_CFGENTRY(T, NAME) namespace cfg { extern ConfigEntry::T##Type NAME; } |
| 30 { \ |
|
| 31 ConfigEntry::T##Type NAME; \ |
|
| 32 T##ConfigEntry config_##NAME (&NAME, #NAME, DEFAULT); \ |
|
| 33 } |
|
| 34 |
|
| 35 #define EXTERN_CFGENTRY(T, NAME) \ |
|
| 36 namespace cfg \ |
|
| 37 { \ |
|
| 38 extern ConfigEntry::T##Type NAME; \ |
|
| 39 } |
|
| 40 |
30 |
| 41 namespace Config |
31 namespace Config |
| 42 { |
32 { |
| |
33 void init(); |
| 43 bool load(); |
34 bool load(); |
| 44 bool save(); |
35 bool save(); |
| 45 void reset(); |
36 void reset(); |
| 46 QString dirpath(); |
37 QString dirpath(); |
| 47 QString filepath (QString file); |
38 QString filepath (QString file); |
| 78 virtual Type getType() const = 0; |
69 virtual Type getType() const = 0; |
| 79 virtual bool isDefault() const = 0; |
70 virtual bool isDefault() const = 0; |
| 80 virtual void loadFromVariant (const QVariant& val) = 0; |
71 virtual void loadFromVariant (const QVariant& val) = 0; |
| 81 virtual void resetValue() = 0; |
72 virtual void resetValue() = 0; |
| 82 virtual QVariant toVariant() const = 0; |
73 virtual QVariant toVariant() const = 0; |
| 83 |
|
| 84 |
|
| 85 protected: |
|
| 86 static void addToArray (ConfigEntry* ptr); |
|
| 87 }; |
74 }; |
| 88 |
75 |
| 89 // ============================================================================= |
76 // ============================================================================= |
| 90 #define IMPLEMENT_CONFIG(NAME) \ |
77 #define IMPLEMENT_CONFIG(NAME) \ |
| 91 public: \ |
78 public: \ |
| 94 NAME##ConfigEntry (ValueType* valueptr, QString name, ValueType def) : \ |
81 NAME##ConfigEntry (ValueType* valueptr, QString name, ValueType def) : \ |
| 95 ConfigEntry (name), \ |
82 ConfigEntry (name), \ |
| 96 m_valueptr (valueptr), \ |
83 m_valueptr (valueptr), \ |
| 97 m_default (def) \ |
84 m_default (def) \ |
| 98 { \ |
85 { \ |
| 99 ConfigEntry::addToArray (this); \ |
|
| 100 *m_valueptr = def; \ |
86 *m_valueptr = def; \ |
| 101 } \ |
87 } \ |
| 102 \ |
88 \ |
| 103 inline ValueType getValue() const \ |
89 inline ValueType getValue() const \ |
| 104 { \ |
90 { \ |