From 3999dd062745668d5b13b2769c88e6d2e08b3fec Mon Sep 17 00:00:00 2001 From: Bernd Wachter Date: Tue, 15 Oct 2013 13:33:53 +0300 Subject: [PATCH] [features] Add proto for featuremanager --- libssu/libssu.pro | 3 ++- libssu/ssufeaturemanager.h | 30 ++++++++++++++++++++++++++++++ libssu/ssurepomanager.cpp | 11 +++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 libssu/ssufeaturemanager.h diff --git a/libssu/libssu.pro b/libssu/libssu.pro index efd3a33..3aec403 100644 --- a/libssu/libssu.pro +++ b/libssu/libssu.pro @@ -13,7 +13,8 @@ public_headers = \ HEADERS = \ $${public_headers} \ sandbox_p.h \ - ssucoreconfig.h + ssucoreconfig.h \ + ssufeaturemanager.h SOURCES = \ sandbox.cpp \ diff --git a/libssu/ssufeaturemanager.h b/libssu/ssufeaturemanager.h new file mode 100644 index 0000000..0b86792 --- /dev/null +++ b/libssu/ssufeaturemanager.h @@ -0,0 +1,30 @@ +/** + * @file ssufeaturemanager.h + * @copyright 2013 Jolla Ltd. + * @author Bernd Wachter + * @date 2013 + */ + +#ifndef _SSUFEATUREMANAGER_H +#define _SSUFEATUREMANAGER_H + +#include +#include +#include + +#include "ssusettings.h" + +class SsuFeatureManager: public QObject { + Q_OBJECT + + public: + SsuFeatureManager(){}; + // add rnd-flag? + QStringList repos(){}; + QString url(QString repo){ return ""; }; + + private: + SsuSettings *featureSettings; +}; + +#endif diff --git a/libssu/ssurepomanager.cpp b/libssu/ssurepomanager.cpp index c201fef..720aeee 100644 --- a/libssu/ssurepomanager.cpp +++ b/libssu/ssurepomanager.cpp @@ -15,6 +15,7 @@ #include "ssusettings.h" #include "ssulog.h" #include "ssuvariables.h" +#include "ssufeaturemanager.h" #include "ssu.h" #include "../constants.h" @@ -111,6 +112,7 @@ QStringList SsuRepoManager::repos(bool rnd, int filter){ return repos(rnd, deviceInfo, filter); } +// @todo the non-device specific repository resolving should move from deviceInfo to repomanager QStringList SsuRepoManager::repos(bool rnd, SsuDeviceInfo &deviceInfo, int filter){ QStringList result; result = deviceInfo.repos(rnd, filter); @@ -314,8 +316,17 @@ QString SsuRepoManager::url(QString repoName, bool rndRepo, i++; } + // search for URLs for repositories. Lookup order is: + // 1. overrides in ssu.ini + // 2. URLs from features + // 3. URLs from repos.ini + + SsuFeatureManager featureManager; + if (settings->contains("repository-urls/" + repoName)) r = settings->value("repository-urls/" + repoName).toString(); + else if (featureManager.url(repoName) != "") + r = featureManager.url(repoName); else { foreach (const QString §ion, configSections){ repoSettings.beginGroup(section);