From d9aa870e5d509cc7309ab82dd102a937ab58613a Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Thu, 9 Feb 2017 04:36:04 -0500 Subject: Imported Upstream version 3.1.1+dfsg1 --- .../config_builder/cfgcategory.cpp | 5 +++ .../coreSQLiteStudio/config_builder/cfgcategory.h | 1 + .../coreSQLiteStudio/config_builder/cfgmain.cpp | 52 ++++++++++++++++++++++ .../coreSQLiteStudio/config_builder/cfgmain.h | 6 +++ 4 files changed, 64 insertions(+) (limited to 'SQLiteStudio3/coreSQLiteStudio/config_builder') 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& 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::instances = nullptr; @@ -50,6 +51,36 @@ QList 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 &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 CfgMain::getEntries() const +{ + QList 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 class CfgCategory; +class CfgEntry; class API_EXPORT CfgMain { @@ -20,6 +21,9 @@ class API_EXPORT CfgMain static void staticInit(); static QList getInstances(); static QList getPersistableInstances(); + static CfgCategory* getCategoryByName(const QString& name); + static CfgEntry* getEntryByName(const QString& categoryName, const QString& name); + static CfgEntry* getEntryByPath(const QString& path); QHash& getCategories(); void translateTitle(); @@ -30,6 +34,8 @@ class API_EXPORT CfgMain void begin(); void commit(); void rollback(); + QStringList getPaths() const; + QList getEntries() const; bool isPersistable() const; QString getName() const; -- cgit v1.2.3