Index: sources/model/settings/MSettings.h =================================================================== diff -u -r2216ac6ac7f77437a7c29ac8b4043be01bc4609e -r2ef03b2ce51b4dc507f66e9671953a8e0824bde9 --- sources/model/settings/MSettings.h (.../MSettings.h) (revision 2216ac6ac7f77437a7c29ac8b4043be01bc4609e) +++ sources/model/settings/MSettings.h (.../MSettings.h) (revision 2ef03b2ce51b4dc507f66e9671953a8e0824bde9) @@ -1,15 +1,15 @@ /*! * - * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * Copyright (c) 2021-2024 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file MSettings.h * \author (last) Behrouz NematiPour - * \date (last) 28-Mar-2021 + * \date (last) 13-Sep-2023 * \author (original) Behrouz NematiPour - * \date (original) 28-Mar-2021 + * \date (original) 29-Mar-2021 * */ #pragma once @@ -20,27 +20,54 @@ #include // Project -#include "main.h" // Doxygen : don't remove +#include "main.h" // Doxygen : do not remove // Define #define _Settings Storage::MSettings::I() // namespace namespace Storage { +// FixMe: the model and controller need review and some functionalities need to be moved. +// FixMe: the controller should be the Singleton not the model. + class MSettings : public QObject { Q_OBJECT - struct KeyValue { - QString category; - QString location; - QList keys; - QList values; + + typedef QString TCategory ; + typedef QString TGroup ; + typedef QString TKey ; + typedef QVariant TVal ; + + 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(); + } }; - QMap _settings; + typedef KeyValue TKeyValue ; + typedef QList < TKeyValue > TKeyValues; + typedef QMap < TGroup , TKeyValues > TData ; + typedef QMap < TCategory , TData > TSettings ; - QMap _category; + TSettings _settings ; QMutex _mutex; @@ -49,14 +76,22 @@ 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 ); - 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); + 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"; +private : QString _dateFormat = "MM/dd/yyyy"; +private : QString _timeFormat = "HH:mm:ss"; +public : void datetimeFormat(); +public : QString getDatetimeFormat() { return _datetimeFormat;} +public : QString timeFormat() { return _timeFormat;} +public : QString dateFormat() { return _dateFormat;} }; }