From aa70ed2244700dbcc93c1fadb22edc1c1caede37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 1 Feb 2015 11:44:47 +0100 Subject: SCRATCH move icons over to Env, instance proxy model to gui --- logic/BaseInstance.cpp | 3 +-- logic/Env.cpp | 6 ++++++ logic/Env.h | 4 ++++ logic/InstanceList.cpp | 22 +--------------------- logic/InstanceList.h | 9 --------- logic/LegacyInstance.cpp | 2 +- logic/OneSixInstance.cpp | 2 +- logic/ftb/FTBPlugin.cpp | 2 +- logic/icons/IconList.cpp | 7 ++++--- logic/icons/IconList.h | 3 ++- 10 files changed, 21 insertions(+), 39 deletions(-) (limited to 'logic') diff --git a/logic/BaseInstance.cpp b/logic/BaseInstance.cpp index ce81b90e..a5fb5f81 100644 --- a/logic/BaseInstance.cpp +++ b/logic/BaseInstance.cpp @@ -18,7 +18,6 @@ #include #include -#include "MultiMC.h" #include "logic/settings/INISettingsObject.h" #include "logic/settings/Setting.h" @@ -37,7 +36,7 @@ BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr s m_settings->registerSetting("name", "Unnamed Instance"); m_settings->registerSetting("iconKey", "default"); - connect(MMC->icons().get(), SIGNAL(iconUpdated(QString)), SLOT(iconUpdated(QString))); + connect(ENV.icons().get(), SIGNAL(iconUpdated(QString)), SLOT(iconUpdated(QString))); m_settings->registerSetting("notes", ""); m_settings->registerSetting("lastLaunchTime", 0); diff --git a/logic/Env.cpp b/logic/Env.cpp index daf17d65..f10f1951 100644 --- a/logic/Env.cpp +++ b/logic/Env.cpp @@ -1,5 +1,6 @@ #include "Env.h" #include "logic/net/HttpMetaCache.h" +#include "icons/IconList.h" #include #include #include @@ -35,6 +36,11 @@ std::shared_ptr< QNetworkAccessManager > Env::qnam() return m_qnam; } +std::shared_ptr Env::icons() +{ + Q_ASSERT(m_icons != nullptr); + return m_icons; +} void Env::initHttpMetaCache(QString rootPath, QString staticDataPath) { diff --git a/logic/Env.h b/logic/Env.h index 3d560a29..ba2ea869 100644 --- a/logic/Env.h +++ b/logic/Env.h @@ -3,6 +3,7 @@ #include #include +class IconList; class QNetworkAccessManager; class HttpMetaCache; @@ -26,6 +27,8 @@ public: std::shared_ptr metacache(); + std::shared_ptr icons(); + /// init the cache. FIXME: possible future hook point void initHttpMetaCache(QString rootPath, QString staticDataPath); @@ -35,4 +38,5 @@ public: protected: std::shared_ptr m_qnam; std::shared_ptr m_metacache; + std::shared_ptr m_icons; }; diff --git a/logic/InstanceList.cpp b/logic/InstanceList.cpp index db85bcfc..b6ac38a8 100644 --- a/logic/InstanceList.cpp +++ b/logic/InstanceList.cpp @@ -97,7 +97,7 @@ QVariant InstanceList::data(const QModelIndex &index, int role) const case Qt::DecorationRole: { QString key = pdata->iconKey(); - return MMC->icons()->getIcon(key); + return ENV.icons()->getIcon(key); } // for now. case GroupViewRoles::GroupRole: @@ -547,23 +547,3 @@ void InstanceList::propertiesChanged(BaseInstance *inst) emit dataChanged(index(i), index(i)); } } - -InstanceProxyModel::InstanceProxyModel(QObject *parent) : GroupedProxyModel(parent) -{ -} - -bool InstanceProxyModel::subSortLessThan(const QModelIndex &left, - const QModelIndex &right) const -{ - BaseInstance *pdataLeft = static_cast(left.internalPointer()); - BaseInstance *pdataRight = static_cast(right.internalPointer()); - QString sortMode = MMC->settings()->get("InstSortMode").toString(); - if (sortMode == "LastLaunch") - { - return pdataLeft->lastLaunch() > pdataRight->lastLaunch(); - } - else - { - return QString::localeAwareCompare(pdataLeft->name(), pdataRight->name()) < 0; - } -} diff --git a/logic/InstanceList.h b/logic/InstanceList.h index 1d52663e..ac3dc848 100644 --- a/logic/InstanceList.h +++ b/logic/InstanceList.h @@ -181,12 +181,3 @@ protected: QSet m_groups; SettingsObjectPtr m_globalSettings; }; - -class InstanceProxyModel : public GroupedProxyModel -{ -public: - explicit InstanceProxyModel(QObject *parent = 0); - -protected: - virtual bool subSortLessThan(const QModelIndex &left, const QModelIndex &right) const; -}; diff --git a/logic/LegacyInstance.cpp b/logic/LegacyInstance.cpp index 96aeff69..ff1eed44 100644 --- a/logic/LegacyInstance.cpp +++ b/logic/LegacyInstance.cpp @@ -127,7 +127,7 @@ std::shared_ptr LegacyInstance::doUpdate() BaseProcess *LegacyInstance::prepareForLaunch(AuthSessionPtr account) { QString launchScript; - QIcon icon = MMC->icons()->getIcon(iconKey()); + QIcon icon = ENV.icons()->getIcon(iconKey()); auto pixmap = icon.pixmap(128, 128); pixmap.save(PathCombine(minecraftRoot(), "icon.png"), "PNG"); diff --git a/logic/OneSixInstance.cpp b/logic/OneSixInstance.cpp index 95701e80..20fb65bb 100644 --- a/logic/OneSixInstance.cpp +++ b/logic/OneSixInstance.cpp @@ -158,7 +158,7 @@ QStringList OneSixInstance::processMinecraftArgs(AuthSessionPtr session) BaseProcess *OneSixInstance::prepareForLaunch(AuthSessionPtr session) { QString launchScript; - QIcon icon = MMC->icons()->getIcon(iconKey()); + QIcon icon = ENV.icons()->getIcon(iconKey()); auto pixmap = icon.pixmap(128, 128); pixmap.save(PathCombine(minecraftRoot(), "icon.png"), "PNG"); diff --git a/logic/ftb/FTBPlugin.cpp b/logic/ftb/FTBPlugin.cpp index d524e3fd..1e9d9123 100644 --- a/logic/ftb/FTBPlugin.cpp +++ b/logic/ftb/FTBPlugin.cpp @@ -212,7 +212,7 @@ void FTBPlugin::loadInstances(QMap &groupMap, QListicons()->addIcon(iconKey, iconKey, PathCombine(record.templateDir, record.logo), + ENV.icons()->addIcon(iconKey, iconKey, PathCombine(record.templateDir, record.logo), MMCIcon::Transient); if (!QFileInfo(PathCombine(record.instanceDir, "instance.cfg")).exists()) diff --git a/logic/icons/IconList.cpp b/logic/icons/IconList.cpp index 6db8b035..964d61e9 100644 --- a/logic/icons/IconList.cpp +++ b/logic/icons/IconList.cpp @@ -20,14 +20,15 @@ #include #include #include -#include +#include +#include #define MAX_SIZE 1024 -IconList::IconList(QString path, QObject *parent) : QAbstractListModel(parent) +IconList::IconList(QString builtinPath, QString path, QObject *parent) : QAbstractListModel(parent) { // add builtin icons - QDir instance_icons(":/icons/instances/"); + QDir instance_icons(builtinPath); auto file_info_list = instance_icons.entryInfoList(QDir::Files, QDir::Name); for (auto file_info : file_info_list) { diff --git a/logic/icons/IconList.h b/logic/icons/IconList.h index 8687eba6..124ecf27 100644 --- a/logic/icons/IconList.h +++ b/logic/icons/IconList.h @@ -23,6 +23,7 @@ #include #include "MMCIcon.h" #include "logic/settings/Setting.h" +#include "logic/Env.h" // there is a global icon list inside Env. class QFileSystemWatcher; @@ -30,7 +31,7 @@ class IconList : public QAbstractListModel { Q_OBJECT public: - explicit IconList(QString path, QObject *parent = 0); + explicit IconList(QString builtinPath, QString path, QObject *parent = 0); virtual ~IconList() {}; QIcon getIcon(QString key); -- cgit v1.2.3