diff options
author | Petr Mrázek <peterix@gmail.com> | 2016-05-03 00:27:28 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2016-05-03 00:27:28 +0200 |
commit | e1a530f84dce9b4c1b262669157359fbbd436428 (patch) | |
tree | cc372ad70b91977d1f038fe835a139cdf6bfb7d1 /api/logic | |
parent | c50b3cdeec1ce30de7c67f62f026d689afe6930a (diff) | |
download | MultiMC-e1a530f84dce9b4c1b262669157359fbbd436428.tar MultiMC-e1a530f84dce9b4c1b262669157359fbbd436428.tar.gz MultiMC-e1a530f84dce9b4c1b262669157359fbbd436428.tar.lz MultiMC-e1a530f84dce9b4c1b262669157359fbbd436428.tar.xz MultiMC-e1a530f84dce9b4c1b262669157359fbbd436428.zip |
GH-1559 Fix FTB icons
This was caused by separation of GUI and logic. Now logic has an interface that GUI implements.
It should be expanded upon later.
Diffstat (limited to 'api/logic')
-rw-r--r-- | api/logic/Env.cpp | 10 | ||||
-rw-r--r-- | api/logic/Env.h | 6 | ||||
-rw-r--r-- | api/logic/icons/IIconList.h | 20 | ||||
-rw-r--r-- | api/logic/minecraft/ftb/FTBPlugin.cpp | 6 |
4 files changed, 41 insertions, 1 deletions
diff --git a/api/logic/Env.cpp b/api/logic/Env.cpp index cc0c5981..b8e07343 100644 --- a/api/logic/Env.cpp +++ b/api/logic/Env.cpp @@ -43,6 +43,16 @@ std::shared_ptr< QNetworkAccessManager > Env::qnam() return m_qnam; } +std::shared_ptr<IIconList> Env::icons() +{ + return m_iconlist; +} + +void Env::registerIconList(std::shared_ptr<IIconList> iconlist) +{ + m_iconlist = iconlist; +} + /* class NullVersion : public BaseVersion { diff --git a/api/logic/Env.h b/api/logic/Env.h index 4d8945d7..dcf1947f 100644 --- a/api/logic/Env.h +++ b/api/logic/Env.h @@ -1,6 +1,7 @@ #pragma once #include <memory> +#include "icons/IIconList.h" #include <QString> #include <QMap> @@ -32,6 +33,8 @@ public: std::shared_ptr<HttpMetaCache> metacache(); + std::shared_ptr<IIconList> icons(); + /// init the cache. FIXME: possible future hook point void initHttpMetaCache(); @@ -46,6 +49,8 @@ public: void registerVersionList(QString name, std::shared_ptr<BaseVersionList> vlist); + void registerIconList(std::shared_ptr<IIconList> iconlist); + std::shared_ptr<WonkoIndex> wonkoIndex(); QString wonkoRootUrl() const { return m_wonkoRootUrl; } @@ -54,6 +59,7 @@ public: protected: std::shared_ptr<QNetworkAccessManager> m_qnam; std::shared_ptr<HttpMetaCache> m_metacache; + std::shared_ptr<IIconList> m_iconlist; QMap<QString, std::shared_ptr<BaseVersionList>> m_versionLists; std::shared_ptr<WonkoIndex> m_wonkoIndex; QString m_wonkoRootUrl; diff --git a/api/logic/icons/IIconList.h b/api/logic/icons/IIconList.h new file mode 100644 index 00000000..a7e0fa07 --- /dev/null +++ b/api/logic/icons/IIconList.h @@ -0,0 +1,20 @@ +#pragma once + +#include <QString> + +enum IconType : unsigned +{ + Builtin, + Transient, + FileBased, + ICONS_TOTAL, + ToBeDeleted +}; + +class IIconList +{ +public: + virtual ~IIconList(){} + virtual bool addIcon(QString key, QString name, QString path, IconType type) = 0; +}; + diff --git a/api/logic/minecraft/ftb/FTBPlugin.cpp b/api/logic/minecraft/ftb/FTBPlugin.cpp index a142c106..134257bf 100644 --- a/api/logic/minecraft/ftb/FTBPlugin.cpp +++ b/api/logic/minecraft/ftb/FTBPlugin.cpp @@ -257,7 +257,11 @@ void FTBPlugin::loadInstances(SettingsObjectPtr globalSettings, QMap<QString, QS { qDebug() << "Loading FTB instance from " << record.instanceDir; QString iconKey = record.iconKey; - // MMC->icons()->addIcon(iconKey, iconKey, FS::PathCombine(record.templateDir, record.logo), MMCIcon::Transient); + auto icons = ENV.icons(); + if(icons) + { + icons->addIcon(iconKey, iconKey, FS::PathCombine(record.templateDir, record.logo), IconType::Transient); + } auto settingsFilePath = FS::PathCombine(record.instanceDir, "instance.cfg"); qDebug() << "ICON get!"; |