diff options
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/config_builder')
4 files changed, 64 insertions, 0 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp index 1a63776..a5c661e 100644 --- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp @@ -24,6 +24,11 @@ CfgCategory::CfgCategory(const QString &name, const QString &title) : lastCreatedCfgMain->childs[name] = this; } +CfgEntry *CfgCategory::getEntryByName(const QString& name) +{ + return childs[name]; +} + QString CfgCategory::toString() const { return name; diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h index 45197d6..4b4aaac 100644 --- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h +++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h @@ -20,6 +20,7 @@ class API_EXPORT CfgCategory : public QObject CfgCategory(const CfgCategory& other); CfgCategory(const QString& name, const QString& title); + CfgEntry* getEntryByName(const QString &name); QString toString() const; operator QString() const; QHash<QString,CfgEntry*>& getEntries(); diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp index 480b4cc..fb7d199 100644 --- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp @@ -1,6 +1,7 @@ #include "cfgmain.h" #include "config_builder/cfgcategory.h" #include "config_builder/cfgentry.h" +#include "common/global.h" CfgMain* lastCreatedCfgMain = nullptr; QList<CfgMain*>* CfgMain::instances = nullptr; @@ -50,6 +51,36 @@ QList<CfgMain*> CfgMain::getPersistableInstances() return list; } +CfgCategory* CfgMain::getCategoryByName(const QString &name) +{ + for (CfgMain* cfg : getInstances()) + { + if (!cfg->childs.contains(name)) + continue; + + return cfg->childs[name]; + } + return nullptr; +} + +CfgEntry *CfgMain::getEntryByName(const QString &categoryName, const QString &name) +{ + CfgCategory* cat = getCategoryByName(categoryName); + if (!cat) + return nullptr; + + return cat->getEntryByName(name); +} + +CfgEntry *CfgMain::getEntryByPath(const QString &path) +{ + QStringList sp = path.split("."); + if (sp.size() != 2) + return nullptr; + + return getEntryByName(sp[0], sp[1]); +} + QHash<QString, CfgCategory *> &CfgMain::getCategories() { return childs; @@ -101,6 +132,27 @@ void CfgMain::rollback() restore(); } +QStringList CfgMain::getPaths() const +{ + static_qstring(tpl, "%1.%2"); + QStringList paths; + for (CfgCategory* cat : childs.values()) + { + for (const QString& entry : cat->getEntries().keys()) + paths << tpl.arg(cat->toString(), entry); + } + return paths; +} + +QList<CfgEntry *> CfgMain::getEntries() const +{ + QList<CfgEntry*> entries; + for (CfgCategory* cat : childs.values()) + entries += cat->getEntries().values(); + + return entries; +} + bool CfgMain::isPersistable() const { return persistable; diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h index d42f03b..ea11c6d 100644 --- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h +++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h @@ -8,6 +8,7 @@ #include <QString> class CfgCategory; +class CfgEntry; class API_EXPORT CfgMain { @@ -20,6 +21,9 @@ class API_EXPORT CfgMain static void staticInit(); static QList<CfgMain*> getInstances(); static QList<CfgMain*> getPersistableInstances(); + static CfgCategory* getCategoryByName(const QString& name); + static CfgEntry* getEntryByName(const QString& categoryName, const QString& name); + static CfgEntry* getEntryByPath(const QString& path); QHash<QString,CfgCategory*>& getCategories(); void translateTitle(); @@ -30,6 +34,8 @@ class API_EXPORT CfgMain void begin(); void commit(); void rollback(); + QStringList getPaths() const; + QList<CfgEntry*> getEntries() const; bool isPersistable() const; QString getName() const; |
