summaryrefslogtreecommitdiffstats
path: root/api/logic
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2016-05-03 00:27:28 +0200
committerPetr Mrázek <peterix@gmail.com>2016-05-03 00:27:28 +0200
commite1a530f84dce9b4c1b262669157359fbbd436428 (patch)
treecc372ad70b91977d1f038fe835a139cdf6bfb7d1 /api/logic
parentc50b3cdeec1ce30de7c67f62f026d689afe6930a (diff)
downloadMultiMC-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.cpp10
-rw-r--r--api/logic/Env.h6
-rw-r--r--api/logic/icons/IIconList.h20
-rw-r--r--api/logic/minecraft/ftb/FTBPlugin.cpp6
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!";