aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/config_builder
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2018-07-27 23:54:15 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2018-07-27 23:54:15 -0400
commit6d3d39356473078c6b47e03b8a7616e4b34de928 (patch)
treefe5be2e6a08e4cfc73207746aba4c9fccfecfa10 /SQLiteStudio3/coreSQLiteStudio/config_builder
parentf98e49169a40876bcf1df832de6e908d1b350193 (diff)
parentfeda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 (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.cpp54
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h15
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;