aboutsummaryrefslogtreecommitdiff
path: root/logic
diff options
context:
space:
mode:
Diffstat (limited to 'logic')
-rw-r--r--logic/Env.cpp104
-rw-r--r--logic/Env.h44
-rw-r--r--logic/LegacyUpdate.cpp14
-rw-r--r--logic/LwjglVersionList.cpp4
-rw-r--r--logic/OneSixUpdate.cpp15
-rw-r--r--logic/SkinUtils.cpp4
-rw-r--r--logic/assets/AssetsUtils.cpp3
-rw-r--r--logic/auth/YggdrasilTask.cpp6
-rw-r--r--logic/forge/ForgeInstaller.cpp11
-rw-r--r--logic/forge/ForgeMirrors.cpp4
-rw-r--r--logic/forge/ForgeVersionList.cpp6
-rw-r--r--logic/forge/ForgeXzDownload.cpp6
-rw-r--r--logic/icons/IconList.cpp8
-rw-r--r--logic/icons/IconList.h7
-rw-r--r--logic/java/JavaChecker.cpp2
-rw-r--r--logic/liteloader/LiteLoaderVersionList.cpp4
-rw-r--r--logic/minecraft/MinecraftProcess.cpp2
-rw-r--r--logic/minecraft/MinecraftVersion.cpp4
-rw-r--r--logic/minecraft/MinecraftVersionList.cpp4
-rw-r--r--logic/minecraft/VersionBuilder.cpp1
-rw-r--r--logic/net/ByteArrayDownload.cpp4
-rw-r--r--logic/net/CacheDownload.cpp6
-rw-r--r--logic/net/HttpMetaCache.cpp5
-rw-r--r--logic/net/HttpMetaCache.h3
-rw-r--r--logic/net/MD5EtagDownload.cpp4
-rw-r--r--logic/net/PasteUpload.cpp4
-rw-r--r--logic/screenshots/ImgurAlbumCreation.cpp4
-rw-r--r--logic/screenshots/ImgurUpload.cpp4
-rw-r--r--logic/trans/TranslationDownloader.cpp5
-rw-r--r--logic/updater/DownloadUpdateTask.cpp11
-rw-r--r--logic/updater/DownloadUpdateTask.h17
-rw-r--r--logic/updater/NotificationChecker.cpp5
-rw-r--r--logic/updater/UpdateChecker.cpp20
-rw-r--r--logic/updater/UpdateChecker.h12
34 files changed, 255 insertions, 102 deletions
diff --git a/logic/Env.cpp b/logic/Env.cpp
new file mode 100644
index 00000000..de93ded3
--- /dev/null
+++ b/logic/Env.cpp
@@ -0,0 +1,104 @@
+#include "Env.h"
+#include "logic/net/HttpMetaCache.h"
+#include <QDir>
+#include <QNetworkProxy>
+#include <QNetworkAccessManager>
+#include "logger/QsLog.h"
+#include "MultiMC.h"
+
+Env::Env()
+{
+ // null
+}
+
+void Env::destroy()
+{
+ m_metacache.reset();
+ m_qnam.reset();
+}
+
+Env& Env::Env::getInstance()
+{
+ static Env instance;
+ return instance;
+}
+
+void Env::initHttpMetaCache(QString rootPath, QString staticDataPath)
+{
+ m_metacache.reset(new HttpMetaCache("metacache"));
+ m_metacache->addBase("asset_indexes", QDir("assets/indexes").absolutePath());
+ m_metacache->addBase("asset_objects", QDir("assets/objects").absolutePath());
+ m_metacache->addBase("versions", QDir("versions").absolutePath());
+ m_metacache->addBase("libraries", QDir("libraries").absolutePath());
+ m_metacache->addBase("minecraftforge", QDir("mods/minecraftforge").absolutePath());
+ m_metacache->addBase("fmllibs", QDir("mods/minecraftforge/libs").absolutePath());
+ m_metacache->addBase("liteloader", QDir("mods/liteloader").absolutePath());
+ m_metacache->addBase("general", QDir("cache").absolutePath());
+ m_metacache->addBase("skins", QDir("accounts/skins").absolutePath());
+ m_metacache->addBase("root", QDir(rootPath).absolutePath());
+ m_metacache->addBase("translations", QDir(staticDataPath + "/translations").absolutePath());
+ m_metacache->Load();
+}
+
+void Env::updateProxySettings(QString proxyTypeStr, QString addr, int port, QString user, QString password)
+{
+ // Set the application proxy settings.
+ if (proxyTypeStr == "SOCKS5")
+ {
+ QNetworkProxy::setApplicationProxy(
+ QNetworkProxy(QNetworkProxy::Socks5Proxy, addr, port, user, password));
+ }
+ else if (proxyTypeStr == "HTTP")
+ {
+ QNetworkProxy::setApplicationProxy(
+ QNetworkProxy(QNetworkProxy::HttpProxy, addr, port, user, password));
+ }
+ else if (proxyTypeStr == "None")
+ {
+ // If we have no proxy set, set no proxy and return.
+ QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::NoProxy));
+ }
+ else
+ {
+ // If we have "Default" selected, set Qt to use the system proxy settings.
+ QNetworkProxyFactory::setUseSystemConfiguration(true);
+ }
+
+ QLOG_INFO() << "Detecting proxy settings...";
+ QNetworkProxy proxy = QNetworkProxy::applicationProxy();
+ if (m_qnam.get())
+ m_qnam->setProxy(proxy);
+ QString proxyDesc;
+ if (proxy.type() == QNetworkProxy::NoProxy)
+ {
+ QLOG_INFO() << "Using no proxy is an option!";
+ return;
+ }
+ switch (proxy.type())
+ {
+ case QNetworkProxy::DefaultProxy:
+ proxyDesc = "Default proxy: ";
+ break;
+ case QNetworkProxy::Socks5Proxy:
+ proxyDesc = "Socks5 proxy: ";
+ break;
+ case QNetworkProxy::HttpProxy:
+ proxyDesc = "HTTP proxy: ";
+ break;
+ case QNetworkProxy::HttpCachingProxy:
+ proxyDesc = "HTTP caching: ";
+ break;
+ case QNetworkProxy::FtpCachingProxy:
+ proxyDesc = "FTP caching: ";
+ break;
+ default:
+ proxyDesc = "DERP proxy: ";
+ break;
+ }
+ proxyDesc += QString("%3@%1:%2 pass %4")
+ .arg(proxy.hostName())
+ .arg(proxy.port())
+ .arg(proxy.user())
+ .arg(proxy.password());
+ QLOG_INFO() << proxyDesc;
+}
diff --git a/logic/Env.h b/logic/Env.h
new file mode 100644
index 00000000..523c51f0
--- /dev/null
+++ b/logic/Env.h
@@ -0,0 +1,44 @@
+#pragma once
+
+#include <memory>
+#include <QString>
+
+class QNetworkAccessManager;
+class HttpMetaCache;
+
+#if defined(ENV)
+ #undef ENV
+#endif
+#define ENV (Env::getInstance())
+
+class Env
+{
+ friend class MultiMC;
+private:
+ Env();
+public:
+ static Env& getInstance();
+
+ // call when Qt stuff is being torn down
+ void destroy();
+
+ std::shared_ptr<QNetworkAccessManager> qnam()
+ {
+ return m_qnam;
+ }
+
+ std::shared_ptr<HttpMetaCache> metacache()
+ {
+ return m_metacache;
+ }
+
+ /// init the cache. FIXME: possible future hook point
+ void initHttpMetaCache(QString rootPath, QString staticDataPath);
+
+ /// Updates the application proxy settings from the settings object.
+ void updateProxySettings(QString proxyTypeStr, QString addr, int port, QString user, QString password);
+
+protected:
+ std::shared_ptr<QNetworkAccessManager> m_qnam;
+ std::shared_ptr<HttpMetaCache> m_metacache;
+};
diff --git a/logic/LegacyUpdate.cpp b/logic/LegacyUpdate.cpp
index 30f781ab..d955d456 100644
--- a/logic/LegacyUpdate.cpp
+++ b/logic/LegacyUpdate.cpp
@@ -25,13 +25,13 @@
#include "logic/minecraft/MinecraftVersionList.h"
#include "logic/BaseInstance.h"
#include "logic/LegacyInstance.h"
-#include "MultiMC.h"
+#include "logic/Env.h"
#include "logic/ModList.h"
#include "logger/QsLog.h"
#include "logic/net/URLConstants.h"
#include "JarUtils.h"
-
+#include "MultiMC.h"
LegacyUpdate::LegacyUpdate(BaseInstance *inst, QObject *parent) : Task(parent), m_inst(inst)
{
@@ -110,7 +110,7 @@ void LegacyUpdate::fmllibsStart()
// download missing libs to our place
setStatus(tr("Dowloading FML libraries..."));
auto dljob = new NetJob("FML libraries");
- auto metacache = MMC->metacache();
+ auto metacache = ENV.metacache();
for (auto &lib : fmlLibsToProcess)
{
auto entry = metacache->resolveEntry("fmllibs", lib.filename);
@@ -133,7 +133,7 @@ void LegacyUpdate::fmllibsFinished()
{
setStatus(tr("Copying FML libraries into the instance..."));
LegacyInstance *inst = (LegacyInstance *)m_inst;
- auto metacache = MMC->metacache();
+ auto metacache = ENV.metacache();
int index = 0;
for (auto &lib : fmlLibsToProcess)
{
@@ -197,7 +197,7 @@ void LegacyUpdate::lwjglStart()
QString url = version->url();
QUrl realUrl(url);
QString hostname = realUrl.host();
- auto worker = MMC->qnam();
+ auto worker = ENV.qnam();
QNetworkRequest req(realUrl);
req.setRawHeader("Host", hostname.toLatin1());
req.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0 (Cached)");
@@ -222,7 +222,7 @@ void LegacyUpdate::lwjglFinished(QNetworkReply *reply)
"a row. YMMV");
return;
}
- auto worker = MMC->qnam();
+ auto worker = ENV.qnam();
// Here i check if there is a cookie for me in the reply and extract it
QList<QNetworkCookie> cookies =
qvariant_cast<QList<QNetworkCookie>>(reply->header(QNetworkRequest::SetCookieHeader));
@@ -376,7 +376,7 @@ void LegacyUpdate::jarStart()
auto dljob = new NetJob("Minecraft.jar for version " + version_id);
- auto metacache = MMC->metacache();
+ auto metacache = ENV.metacache();
auto entry = metacache->resolveEntry("versions", localPath);
dljob->addNetAction(CacheDownload::make(QUrl(urlstr), entry));
connect(dljob, SIGNAL(succeeded()), SLOT(jarFinished()));
diff --git a/logic/LwjglVersionList.cpp b/logic/LwjglVersionList.cpp
index 41c951e4..77b7a05e 100644
--- a/logic/LwjglVersionList.cpp
+++ b/logic/LwjglVersionList.cpp
@@ -14,7 +14,7 @@
*/
#include "LwjglVersionList.h"
-#include "MultiMC.h"
+#include "logic/Env.h"
#include <QtNetwork>
#include <QtXml>
@@ -82,7 +82,7 @@ void LWJGLVersionList::loadList()
Q_ASSERT_X(!m_loading, "loadList", "list is already loading (m_loading is true)");
setLoading(true);
- auto worker = MMC->qnam();
+ auto worker = ENV.qnam();
QNetworkRequest req(QUrl(RSS_URL));
req.setRawHeader("Accept", "application/rss+xml, text/xml, */*");
req.setRawHeader("User-Agent", "MultiMC/5.0 (Uncached)");
diff --git a/logic/OneSixUpdate.cpp b/logic/OneSixUpdate.cpp
index 692e4ce3..26a55cc9 100644
--- a/logic/OneSixUpdate.cpp
+++ b/logic/OneSixUpdate.cpp
@@ -14,6 +14,7 @@
*/
#include "MultiMC.h"
+#include "logic/Env.h"
#include "OneSixUpdate.h"
#include <QtNetwork>
@@ -94,7 +95,7 @@ void OneSixUpdate::assetIndexStart()
QString localPath = assetName + ".json";
auto job = new NetJob(tr("Asset index for %1").arg(inst->name()));
- auto metacache = MMC->metacache();
+ auto metacache = ENV.metacache();
auto entry = metacache->resolveEntry("asset_indexes", localPath);
job->addNetAction(CacheDownload::make(indexUrl, entry));
jarlibDownloadJob.reset(job);
@@ -118,7 +119,7 @@ void OneSixUpdate::assetIndexFinished()
QString asset_fname = "assets/indexes/" + assetName + ".json";
if (!AssetsUtils::loadAssetsIndexJson(asset_fname, &index))
{
- auto metacache = MMC->metacache();
+ auto metacache = ENV.metacache();
auto entry = metacache->resolveEntry("asset_indexes", assetName + ".json");
metacache->evictEntry(entry);
emitFailed(tr("Failed to read the assets index!"));
@@ -200,7 +201,7 @@ void OneSixUpdate::jarlibStart()
auto job = new NetJob(tr("Libraries for instance %1").arg(inst->name()));
- auto metacache = MMC->metacache();
+ auto metacache = ENV.metacache();
auto entry = metacache->resolveEntry("versions", localPath);
job->addNetAction(CacheDownload::make(QUrl(urlstr), entry));
jarHashOnEntry = entry->md5sum;
@@ -211,7 +212,7 @@ void OneSixUpdate::jarlibStart()
auto libs = version->getActiveNativeLibs();
libs.append(version->getActiveNormalLibs());
- auto metacache = MMC->metacache();
+ auto metacache = ENV.metacache();
QList<ForgeXzDownloadPtr> ForgeLibs;
QList<std::shared_ptr<OneSixLibrary>> brokenLocalLibs;
@@ -317,7 +318,7 @@ void OneSixUpdate::jarlibFinished()
{
auto sourceJarPath = m_inst->versionsPath().absoluteFilePath(version->id + "/" + version->id + ".jar");
QString localPath = version_id + "/" + version_id + ".jar";
- auto metacache = MMC->metacache();
+ auto metacache = ENV.metacache();
auto entry = metacache->resolveEntry("versions", localPath);
QString fullJarPath = entry->getFullPath();
if(!JarUtils::createModdedJar(sourceJarPath, finalJarPath, jarMods))
@@ -390,7 +391,7 @@ void OneSixUpdate::fmllibsStart()
// download missing libs to our place
setStatus(tr("Dowloading FML libraries..."));
auto dljob = new NetJob("FML libraries");
- auto metacache = MMC->metacache();
+ auto metacache = ENV.metacache();
for (auto &lib : fmlLibsToProcess)
{
auto entry = metacache->resolveEntry("fmllibs", lib.filename);
@@ -413,7 +414,7 @@ void OneSixUpdate::fmllibsFinished()
{
setStatus(tr("Copying FML libraries into the instance..."));
OneSixInstance *inst = (OneSixInstance *)m_inst;
- auto metacache = MMC->metacache();
+ auto metacache = ENV.metacache();
int index = 0;
for (auto &lib : fmlLibsToProcess)
{
diff --git a/logic/SkinUtils.cpp b/logic/SkinUtils.cpp
index 33fc5b1b..68d94117 100644
--- a/logic/SkinUtils.cpp
+++ b/logic/SkinUtils.cpp
@@ -13,9 +13,9 @@
* limitations under the License.
*/
-#include "MultiMC.h"
#include "logic/SkinUtils.h"
#include "net/HttpMetaCache.h"
+#include "logic/Env.h"
#include <QFile>
#include <QJsonDocument>
@@ -29,7 +29,7 @@ namespace SkinUtils
*/
QPixmap getFaceFromCache(QString username, int height, int width)
{
- QFile fskin(MMC->metacache()
+ QFile fskin(ENV.metacache()
->resolveEntry("skins", username + ".png")
->getFullPath());
diff --git a/logic/assets/AssetsUtils.cpp b/logic/assets/AssetsUtils.cpp
index 472b9589..82a0da95 100644
--- a/logic/assets/AssetsUtils.cpp
+++ b/logic/assets/AssetsUtils.cpp
@@ -19,9 +19,10 @@
#include <QJsonParseError>
#include <QJsonDocument>
#include <QJsonObject>
+#include <QVariant>
+#include <logger/QsLog.h>
#include "AssetsUtils.h"
-#include "MultiMC.h"
#include <pathutils.h>
namespace AssetsUtils
diff --git a/logic/auth/YggdrasilTask.cpp b/logic/auth/YggdrasilTask.cpp
index a2a021af..6b5ed256 100644
--- a/logic/auth/YggdrasilTask.cpp
+++ b/logic/auth/YggdrasilTask.cpp
@@ -22,10 +22,12 @@
#include <QNetworkReply>
#include <QByteArray>
-#include <MultiMC.h>
+#include <logic/Env.h>
#include <logic/auth/MojangAccount.h>
#include <logic/net/URLConstants.h>
+#include "logger/QsLog.h"
+
YggdrasilTask::YggdrasilTask(MojangAccount *account, QObject *parent)
: Task(parent), m_account(account)
{
@@ -39,7 +41,7 @@ void YggdrasilTask::executeTask()
// Get the content of the request we're going to send to the server.
QJsonDocument doc(getRequestContent());
- auto worker = MMC->qnam();
+ auto worker = ENV.qnam();
QUrl reqUrl("https://" + URLConstants::AUTH_BASE + getEndpoint());
QNetworkRequest netRequest(reqUrl);
netRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
diff --git a/logic/forge/ForgeInstaller.cpp b/logic/forge/ForgeInstaller.cpp
index 01671306..19cecaeb 100644
--- a/logic/forge/ForgeInstaller.cpp
+++ b/logic/forge/ForgeInstaller.cpp
@@ -21,6 +21,7 @@
#include "logic/OneSixInstance.h"
#include "logic/forge/ForgeVersionList.h"
#include "logic/minecraft/VersionFilterData.h"
+#include "logic/Env.h"
#include <quazip.h>
#include <quazipfile.h>
@@ -28,7 +29,7 @@
#include <QStringList>
#include <QRegularExpression>
#include <QRegularExpressionMatch>
-#include "MultiMC.h"
+
#include <QJsonDocument>
#include <QJsonArray>
#include <QSaveFile>
@@ -86,7 +87,7 @@ void ForgeInstaller::prepare(const QString &filename, const QString &universalUr
// where do we put the library? decode the mojang path
OneSixLibrary lib(libraryName);
- auto cacheentry = MMC->metacache()->resolveEntry("libraries", lib.storagePath());
+ auto cacheentry = ENV.metacache()->resolveEntry("libraries", lib.storagePath());
finalPath = "libraries/" + lib.storagePath();
if (!ensureFilePathExists(finalPath))
return;
@@ -110,7 +111,7 @@ void ForgeInstaller::prepare(const QString &filename, const QString &universalUr
cacheentry->stale = false;
cacheentry->md5sum = md5sum.result().toHex().constData();
- MMC->metacache()->updateEntry(cacheentry);
+ ENV.metacache()->updateEntry(cacheentry);
}
file.close();
@@ -275,7 +276,7 @@ bool ForgeInstaller::addLegacy(OneSixInstance *to)
{
return false;
}
- auto entry = MMC->metacache()->resolveEntry("minecraftforge", m_forge_version->filename());
+ auto entry = ENV.metacache()->resolveEntry("minecraftforge", m_forge_version->filename());
finalPath = PathCombine(to->jarModsDir(), m_forge_version->filename());
if (!ensureFilePathExists(finalPath))
{
@@ -346,7 +347,7 @@ protected:
}
void prepare(ForgeVersionPtr forgeVersion)
{
- auto entry = MMC->metacache()->resolveEntry("minecraftforge", forgeVersion->filename());
+ auto entry = ENV.metacache()->resolveEntry("minecraftforge", forgeVersion->filename());
auto installFunction = [this, entry, forgeVersion]()
{
if (!install(entry, forgeVersion))
diff --git a/logic/forge/ForgeMirrors.cpp b/logic/forge/ForgeMirrors.cpp
index b224306f..bb50d0b7 100644
--- a/logic/forge/ForgeMirrors.cpp
+++ b/logic/forge/ForgeMirrors.cpp
@@ -1,4 +1,4 @@
-#include "MultiMC.h"
+#include "logic/Env.h"
#include "ForgeMirrors.h"
#include "logger/QsLog.h"
#include <algorithm>
@@ -18,7 +18,7 @@ void ForgeMirrors::start()
QLOG_INFO() << "Downloading " << m_url.toString();
QNetworkRequest request(m_url);
request.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0 (Uncached)");
- auto worker = MMC->qnam();
+ auto worker = ENV.qnam();
QNetworkReply *rep = worker->get(request);
m_reply = std::shared_ptr<QNetworkReply>(rep);
diff --git a/logic/forge/ForgeVersionList.cpp b/logic/forge/ForgeVersionList.cpp
index 3e736b78..d7bb8af2 100644
--- a/logic/forge/ForgeVersionList.cpp
+++ b/logic/forge/ForgeVersionList.cpp
@@ -17,7 +17,7 @@
#include "logic/forge/ForgeVersion.h"
#include "logic/net/NetJob.h"
#include "logic/net/URLConstants.h"
-#include "MultiMC.h"
+#include "logic/Env.h"
#include <QtNetwork>
#include <QtXml>
@@ -162,8 +162,8 @@ void ForgeListLoadTask::executeTask()
setStatus(tr("Fetching Forge version lists..."));
auto job = new NetJob("Version index");
// we do not care if the version is stale or not.
- auto forgeListEntry = MMC->metacache()->resolveEntry("minecraftforge", "list.json");
- auto gradleForgeListEntry = MMC->metacache()->resolveEntry("minecraftforge", "json");
+ auto forgeListEntry = ENV.metacache()->resolveEntry("minecraftforge", "list.json");
+ auto gradleForgeListEntry = ENV.metacache()->resolveEntry("minecraftforge", "json");
// verify by poking the server.
forgeListEntry->stale = true;
diff --git a/logic/forge/ForgeXzDownload.cpp b/logic/forge/ForgeXzDownload.cpp
index 781fa385..c2e5f76e 100644
--- a/logic/forge/ForgeXzDownload.cpp
+++ b/logic/forge/ForgeXzDownload.cpp
@@ -13,7 +13,7 @@
* limitations under the License.
*/
-#include "MultiMC.h"
+#include "logic/Env.h"
#include "ForgeXzDownload.h"
#include <pathutils.h>
@@ -67,7 +67,7 @@ void ForgeXzDownload::start()
request.setRawHeader(QString("If-None-Match").toLatin1(), m_entry->etag.toLatin1());
request.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0 (Cached)");
- auto worker = MMC->qnam();
+ auto worker = ENV.qnam();
QNetworkReply *rep = worker->get(request);
m_reply = std::shared_ptr<QNetworkReply>(rep);
@@ -382,7 +382,7 @@ void ForgeXzDownload::decompressAndInstall()
m_entry->local_changed_timestamp =
output_file_info.lastModified().toUTC().toMSecsSinceEpoch();
m_entry->stale = false;
- MMC->metacache()->updateEntry(m_entry);
+ ENV.metacache()->updateEntry(m_entry);
m_reply.reset();
emit succeeded(m_index_within_job);
diff --git a/logic/icons/IconList.cpp b/logic/icons/IconList.cpp
index 217255a1..6db8b035 100644
--- a/logic/icons/IconList.cpp
+++ b/logic/icons/IconList.cpp
@@ -15,18 +15,16 @@
#include "IconList.h"
#include <pathutils.h>
-#include "logic/settings/SettingsObject.h"
#include <QMap>
#include <QEventLoop>
#include <QMimeData>
#include <QUrl>
#include <QFileSystemWatcher>
#include <MultiMC.h>
-#include <logic/settings/Setting.h>
#define MAX_SIZE 1024
-IconList::IconList(QObject *parent) : QAbstractListModel(parent)
+IconList::IconList(QString path, QObject *parent) : QAbstractListModel(parent)
{
// add builtin icons
QDir instance_icons(":/icons/instances/");
@@ -43,10 +41,6 @@ IconList::IconList(QObject *parent) : QAbstractListModel(parent)
SLOT(directoryChanged(QString)));
connect(m_watcher.get(), SIGNAL(fileChanged(QString)), SLOT(fileChanged(QString)));
- auto setting = MMC->settings()->getSetting("IconsDir");
- QString path = setting->get().toString();
- connect(setting.get(), SIGNAL(SettingChanged(const Setting &, QVariant)),
- SLOT(SettingChanged(const Setting &, QVariant)));
directoryChanged(path);
}
diff --git a/logic/icons/IconList.h b/logic/icons/IconList.h
index 1952eba4..8687eba6 100644
--- a/logic/icons/IconList.h
+++ b/logic/icons/IconList.h
@@ -30,7 +30,7 @@ class IconList : public QAbstractListModel
{
Q_OBJECT
public:
- explicit IconList(QObject *parent = 0);
+ explicit IconList(QString path, QObject *parent = 0);
virtual ~IconList() {};
QIcon getIcon(QString key);
@@ -64,9 +64,10 @@ private:
IconList &operator=(const IconList &) = delete;
void reindex();
-protected
-slots:
+public slots:
void directoryChanged(const QString &path);
+
+protected slots:
void fileChanged(const QString &path);
void SettingChanged(const Setting & setting, QVariant value);
private:
diff --git a/logic/java/JavaChecker.cpp b/logic/java/JavaChecker.cpp
index a08f476d..dc0370e7 100644
--- a/logic/java/JavaChecker.cpp
+++ b/logic/java/JavaChecker.cpp
@@ -12,7 +12,7 @@ JavaChecker::JavaChecker(QObject *parent) : QObject(parent)
void JavaChecker::performCheck()
{
- QString checkerJar = PathCombine(MMC->bin(), "jars", "JavaCheck.jar");
+ QString checkerJar = PathCombine(QCoreApplication::applicationDirPath(), "jars", "JavaCheck.jar");
QStringList args = {"-jar", checkerJar};
diff --git a/logic/liteloader/LiteLoaderVersionList.cpp b/logic/liteloader/LiteLoaderVersionList.cpp
index 92d51c6e..48f098d0 100644
--- a/logic/liteloader/LiteLoaderVersionList.cpp
+++ b/logic/liteloader/LiteLoaderVersionList.cpp
@@ -14,7 +14,7 @@
*/
#include "LiteLoaderVersionList.h"
-#include "MultiMC.h"
+#include "logic/Env.h"
#include "logic/net/URLConstants.h"
#include <MMCError.h>
@@ -104,7 +104,7 @@ void LLListLoadTask::executeTask()
setStatus(tr("Loading LiteLoader version list..."));
auto job = new NetJob("Version index");
// we do not care if the version is stale or not.
- auto liteloaderEntry = MMC->metacache()->resolveEntry("liteloader", "versions.json");
+ auto liteloaderEntry = ENV.metacache()->resolveEntry("liteloader", "versions.json");
// verify by poking the server.
liteloaderEntry->stale = true;
diff --git a/logic/minecraft/MinecraftProcess.cpp b/logic/minecraft/MinecraftProcess.cpp
index 0fc3f067..97eb8ee8 100644
--- a/logic/minecraft/MinecraftProcess.cpp
+++ b/logic/minecraft/MinecraftProcess.cpp
@@ -151,7 +151,7 @@ QStringList MinecraftProcess::javaArguments() const
args << "-Duser.language=en";
if (!m_nativeFolder.isEmpty())
args << QString("-Djava.library.path=%1").arg(m_nativeFolder);
- args << "-jar" << PathCombine(MMC->bin(), "jars", "NewLaunch.jar");
+ args << "-jar" << PathCombine(QCoreApplication::applicationDirPath(), "jars", "NewLaunch.jar");
return args;
}
diff --git a/logic/minecraft/MinecraftVersion.cpp b/logic/minecraft/MinecraftVersion.cpp
index 32682bfb..28afb5e7 100644
--- a/logic/minecraft/MinecraftVersion.cpp
+++ b/logic/minecraft/MinecraftVersion.cpp
@@ -152,9 +152,7 @@ QString MinecraftVersion::getPatchFilename()
bool MinecraftVersion::needsUpdate()
{
- auto settings = MMC->settings();
- bool result = m_versionSource == Remote || (hasUpdate() && settings->get("AutoUpdateMinecraftVersions").toBool());
- return result;
+ return m_versionSource == Remote || hasUpdate();
}
bool MinecraftVersion::hasUpdate()
diff --git a/logic/minecraft/MinecraftVersionList.cpp b/logic/minecraft/MinecraftVersionList.cpp
index 68e93d54..26b51731 100644
--- a/logic/minecraft/MinecraftVersionList.cpp
+++ b/logic/minecraft/MinecraftVersionList.cpp
@@ -18,7 +18,7 @@
#include <QtAlgorithms>
#include <QtNetwork>
-#include "MultiMC.h"
+#include "logic/Env.h"
#include "MMCError.h"
#include "MinecraftVersionList.h"
@@ -399,7 +399,7 @@ MCVListLoadTask::MCVListLoadTask(MinecraftVersionList *vlist)
void MCVListLoadTask::executeTask()
{
setStatus(tr("Loading instance version list..."));
- auto worker = MMC->qnam();
+ auto worker = ENV.qnam();
vlistReply = worker->get(QNetworkRequest(
QUrl("http://" + URLConstants::AWS_DOWNLOAD_VERSIONS + "versions.json")));
connect(vlistReply, SIGNAL(finished()), this, SLOT(list_downloaded()));
diff --git a/logic/minecraft/VersionBuilder.cpp b/logic/minecraft/VersionBuilder.cpp
index 7f77b493..2a7096e8 100644
--- a/logic/minecraft/VersionBuilder.cpp
+++ b/logic/minecraft/VersionBuilder.cpp
@@ -26,7 +26,6 @@
#include <modutils.h>
#include <pathutils.h>
-#include "MultiMC.h"
#include "logic/minecraft/VersionBuilder.h"
#include "logic/minecraft/MinecraftProfile.h"
#include "logic/minecraft/OneSixRule.h"
diff --git a/logic/net/ByteArrayDownload.cpp b/logic/net/ByteArrayDownload.cpp
index 00254caa..e56ac9b6 100644
--- a/logic/net/ByteArrayDownload.cpp
+++ b/logic/net/ByteArrayDownload.cpp
@@ -14,7 +14,7 @@
*/
#include "ByteArrayDownload.h"
-#include "MultiMC.h"
+#include "logic/Env.h"
#include "logger/QsLog.h"
ByteArrayDownload::ByteArrayDownload(QUrl url) : NetAction()
@@ -28,7 +28,7 @@ void ByteArrayDownload::start()
QLOG_INFO() << "Downloading " << m_url.toString();
QNetworkRequest request(m_url);
request.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0 (Uncached)");
- auto worker = MMC->qnam();
+ auto worker = ENV.qnam();
QNetworkReply *rep = worker->get(request);
m_reply = std::shared_ptr<QNetworkReply>(rep);
diff --git a/logic/net/CacheDownload.cpp b/logic/net/CacheDownload.cpp
index 95278b0d..1bf59c60 100644
--- a/logic/net/CacheDownload.cpp
+++ b/logic/net/CacheDownload.cpp
@@ -13,7 +13,6 @@
* limitations under the License.
*/
-#include "MultiMC.h"
#include "CacheDownload.h"
#