Index: sources/model/settings/MSettings.h =================================================================== diff -u -r265ce7409a0ea99a4ae059f5ce7978c9cdb10631 -r40c09957821fb3779fa06214a856c20cca110e56 --- sources/model/settings/MSettings.h (.../MSettings.h) (revision 265ce7409a0ea99a4ae059f5ce7978c9cdb10631) +++ sources/model/settings/MSettings.h (.../MSettings.h) (revision 40c09957821fb3779fa06214a856c20cca110e56) @@ -35,35 +35,54 @@ { Q_OBJECT -public: - struct KeyValue { - QString category; - QString location; - QList keys; - QList values; - }; -private: - QMap _settings; + typedef QString TCategory ; + typedef QString TGroup ; + typedef QString TKey ; + typedef QVariant TVal ; - QMap _category; + class KeyValue { + TKey _key ; + TVal _val ; + + public: + KeyValue(const TKey &vKey, const TVal &vVal) : _key(vKey), _val(vVal) {} + TKey key() const { return _key.trimmed(); } + TVal val() const { return _val ; } + + void operator = (const TKey &vKey) { _key = vKey.trimmed(); } + void operator = (const TVal &vVal) { _val = vVal ; } + void operator = (const KeyValue &vKeyValue) { + _key = vKeyValue.key(); + _val = vKeyValue.val(); + } + + bool operator == (const KeyValue &vKeyValue) const { + return key() == vKeyValue.key() && val() == vKeyValue.val(); + } + }; + typedef KeyValue TKeyValue ; + typedef QList < TKeyValue > TKeyValues; + typedef QMap < TGroup , TKeyValues > TData ; + typedef QMap < TCategory , TData > TSettings ; + + TSettings _settings ; + QMutex _mutex; // Singleton SINGLETON(MSettings) public: QStringList categorys(); - QStringList groups (); QStringList groups (const QString &vCategory); - QStringList keys (const QString &vGroup ); - QString key (const QString &vGroup , uint vIndex); - QVariantList values (const QString &vGroup ); - QVariant value (const QString &vGroup , const QString &vKey); - QString location (const QString &vGroup ); + QStringList keys (const QString &vCategory, const QString &vGroup ); + QString key (const QString &vCategory, const QString &vGroup , uint vIndex); + QVariantList values (const QString &vCategory, const QString &vGroup ); + QVariant value (const QString &vCategory, const QString &vGroup , const QString &vKey); - void add (const QString &vGroup, const QString &vKey, const QVariant &vValue, const QString &vLocation, const QString &vCategory, bool vEnableDuplicateKeys); + void add (const QString &vCategory, const QString &vGroup, const QString &vKey, const QVariant &vValue, bool vEnableDuplicateKeys); // the utility static functions private : QString _datetimeFormat = "MM/dd/yyyy HH:mm:ss";