aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/config_builder
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/config_builder')
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp5
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h1
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp52
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h6
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;