From 8484e88a27212b415a526b14a3eddf9b830de42c Mon Sep 17 00:00:00 2001 From: Albert S Date: Thu, 30 May 2019 10:57:33 +0200 Subject: [PATCH] ConfigReader: support multiple dirs --- config.cpp | 33 +++++++++++++++++++-------------- config.h | 4 ++-- main.cpp | 23 ++++------------------- 3 files changed, 25 insertions(+), 35 deletions(-) diff --git a/config.cpp b/config.cpp index e56a3e6..95679d6 100644 --- a/config.cpp +++ b/config.cpp @@ -18,9 +18,10 @@ #include #include -ConfigReader::ConfigReader(QString directory) + +ConfigReader::ConfigReader(QStringList paths) { - this->configDirectory = directory; + this->configPaths = paths; desktopIgnoreArgs << "%F" << "%f" << "%U" << "%u"; } @@ -153,24 +154,28 @@ EntryConfig ConfigReader::readFromFile(const QString &path) QVector ConfigReader::readConfig() { QVector result; - QDirIterator it(this->configDirectory); - while(it.hasNext()) + for(QString &configPath : configPaths) { - QString path = it.next(); - QFileInfo info(path); - if(info.isFile()) + QDirIterator it(configPath); + while(it.hasNext()) { - QString suffix = info.completeSuffix(); - if(suffix == "desktop") + QString path = it.next(); + QFileInfo info(path); + if(info.isFile()) { - result.append(readFromDesktopFile(path)); + QString suffix = info.completeSuffix(); + if(suffix == "desktop") + { + result.append(readFromDesktopFile(path)); - } - if(suffix == "qsrun") - { - result.append(readFromFile(path)); + } + if(suffix == "qsrun") + { + result.append(readFromFile(path)); + } } } + } return result; diff --git a/config.h b/config.h index 9bed3f8..331299d 100644 --- a/config.h +++ b/config.h @@ -40,12 +40,12 @@ class EntryConfig class ConfigReader { private: - QString configDirectory; + QStringList configPaths; EntryConfig readFromFile(const QString &path); EntryConfig readFromDesktopFile(const QString &path); QStringList desktopIgnoreArgs; public: - ConfigReader(QString path); + ConfigReader(QStringList paths); QVector readConfig(); }; diff --git a/main.cpp b/main.cpp index 58d0c3f..5dfb16d 100644 --- a/main.cpp +++ b/main.cpp @@ -37,20 +37,18 @@ int main(int argc, char *argv[]) } qRegisterMetaType >("QVector"); - QDir dir(configDirectoryPath); + QDir dir; if(!dir.exists(configDirectoryPath)) { QMessageBox::warning(nullptr, "Directory not found", configDirectoryPath + " was not found!"); return 1; } QSettings settings(configDirectoryPath + "qsrun.config", QSettings::NativeFormat); - QString systemApplicationsPath = settings.value("General/systemApplicationsPath", "/usr/share/applications/").toString(); - QVector configs; try { - ConfigReader reader(configDirectoryPath); + ConfigReader reader({configDirectoryPath}); configs = reader.readConfig(); } catch(std::exception &e) @@ -59,23 +57,10 @@ int main(int argc, char *argv[]) } Window w(configs); - - /* - * TODO: Reconsider the need - * QFuture future = QtConcurrent::run([&w] { - ConfigReader systemConfigReader("/usr/share/applications/"); - QList systemconfigs = systemConfigReader.readConfig(); - if(systemconfigs.count() > 0) - { - w.setSystemConfig(systemconfigs); - w.systemConfigReady(); - } - });*/ - - try { - ConfigReader systemConfigReader(systemApplicationsPath); + QStringList systemApplicationsPaths = settings.value("sysAppsPaths", "/usr/share/applications/").toStringList(); + ConfigReader systemConfigReader(systemApplicationsPaths); QVector systemconfigs = systemConfigReader.readConfig(); if(systemconfigs.count() > 0) {