diff options
| author | 2018-07-27 23:54:15 -0400 | |
|---|---|---|
| committer | 2018-07-27 23:54:15 -0400 | |
| commit | 6d3d39356473078c6b47e03b8a7616e4b34de928 (patch) | |
| tree | fe5be2e6a08e4cfc73207746aba4c9fccfecfa10 /SQLiteStudio3/coreSQLiteStudio/config_builder | |
| parent | f98e49169a40876bcf1df832de6e908d1b350193 (diff) | |
| parent | feda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 (diff) | |
Update upstream source from tag 'upstream/3.2.1+dfsg1'
Update to upstream version '3.2.1+dfsg1'
with Debian dir 5ea0333565de4dc898c062cc0ff4ba1153e2c1e4
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/config_builder')
| -rw-r--r-- | SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp | 54 | ||||
| -rw-r--r-- | SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h | 15 |
2 files changed, 69 insertions, 0 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp index fb7d199..0c7295a 100644 --- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp @@ -2,6 +2,7 @@ #include "config_builder/cfgcategory.h" #include "config_builder/cfgentry.h" #include "common/global.h" +#include <QDebug> CfgMain* lastCreatedCfgMain = nullptr; QList<CfgMain*>* CfgMain::instances = nullptr; @@ -153,6 +154,39 @@ QList<CfgEntry *> CfgMain::getEntries() const return entries; } +void CfgMain::setValuesFromQVariant(const QVariant& cfgMainHash) +{ + QHash<QString, QVariant> mainHash = cfgMainHash.toHash(); + if (mainHash.isEmpty()) + return; + + QHash<QString, QVariant>::const_iterator mainIt = mainHash.begin(); + if (mainIt.key() != name) + { + qWarning() << "Tried to set CfgMain values from QVariant which does not have such main in its registry."; + return; + } + + QHash<QString, QVariant> categoriesHash = mainIt.value().toHash(); + QHash<QString, QVariant> entriesHash; + QHash<QString, CfgEntry*> entries; + for (QHash<QString, CfgCategory*>::const_iterator categoryIt = childs.begin(); categoryIt != childs.end(); categoryIt++) + { + if (!categoriesHash.contains(categoryIt.key())) + continue; + + entriesHash = categoriesHash[categoryIt.key()].toHash(); + entries = categoryIt.value()->getEntries(); + for (QHash<QString, CfgEntry*>::const_iterator entryIt = entries.begin(); entryIt != entries.end(); entryIt++) + { + if (!entriesHash.contains(entryIt.key())) + continue; + + entryIt.value()->set(entriesHash[entryIt.key()]); + } + } +} + bool CfgMain::isPersistable() const { return persistable; @@ -173,6 +207,26 @@ QString CfgMain::getTitle() const return title; } +QVariant CfgMain::toQVariant() const +{ + QHash<QString, QVariant> categoriesVariant; + QHash<QString, QVariant> entriesVariant; + QHash<QString, CfgEntry*> entries; + for (QHash<QString, CfgCategory*>::const_iterator categoryIt = childs.begin(); categoryIt != childs.end(); categoryIt++) + { + entries = categoryIt.value()->getEntries(); + entriesVariant.clear(); + for (QHash<QString, CfgEntry*>::const_iterator entryIt = entries.begin(); entryIt != entries.end(); entryIt++) + entriesVariant[entryIt.key()] = entryIt.value()->get(); + + categoriesVariant[categoryIt.key()] = entriesVariant; + } + + QHash<QString, QVariant> mainVariant; + mainVariant[name] = categoriesVariant; + return mainVariant; +} + CfgMain::operator CfgMain*() { return this; diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h index ea11c6d..4e84bef 100644 --- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h +++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h @@ -37,12 +37,27 @@ class API_EXPORT CfgMain QStringList getPaths() const; QList<CfgEntry*> getEntries() const; + /** + * @brief Accepts QVariant produced by toQVariant(). + * + * This method assumes that the QVariant is actually a multi-level QHash + * produced by toQVariant() method. + * It sets all values recursivly using values from provided QVariant. + */ + void setValuesFromQVariant(const QVariant& cfgMainHash); + bool isPersistable() const; QString getName() const; const char* getMetaName() const; QString getTitle() const; operator CfgMain*(); + /** + * @brief Serializes this CfgMain to recursive QHash. + * @return Recursive QHash, where top level has one entry (name of CfgMain), then next level has keys as CfgCategory names, and last one has keys as CfgEntry names. + */ + QVariant toQVariant() const; + private: QString name; const char* metaName; |
