diff --git a/launcher/Application.cpp b/launcher/Application.cpp index ae44d3238..98c8a48e9 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -911,7 +911,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) // Init page provider { - m_globalSettingsProvider = std::make_shared(tr("Settings")); + m_globalSettingsProvider = std::make_unique(tr("Settings")); m_globalSettingsProvider->addPage(); m_globalSettingsProvider->addPage(); m_globalSettingsProvider->addPage(); @@ -992,7 +992,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) if (FS::checkProblemticPathJava(QDir(instDir))) { qWarning() << "Your instance path contains \'!\' and this is known to cause java problems!"; } - m_instances.reset(new InstanceList(m_settings, instDir, this)); + m_instances.reset(new InstanceList(m_settings.get(), instDir, this)); connect(InstDirSetting.get(), &Setting::SettingChanged, m_instances.get(), &InstanceList::on_InstFolderChanged); qInfo() << "Loading Instances..."; m_instances->loadList(); @@ -1038,12 +1038,12 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_profilers.insert("jvisualvm", std::shared_ptr(new JVisualVMFactory())); m_profilers.insert("generic", std::shared_ptr(new GenericProfilerFactory())); for (auto profiler : m_profilers.values()) { - profiler->registerSettings(m_settings); + profiler->registerSettings(m_settings.get()); } // Create the MCEdit thing... why is this here? { - m_mcedit.reset(new MCEditTool(m_settings)); + m_mcedit.reset(new MCEditTool(m_settings.get())); } #ifdef Q_OS_MACOS @@ -1469,7 +1469,7 @@ void Application::messageReceived(const QByteArray& message) bool offline = received.args["offline_enabled"] == "true"; QString offlineName = received.args["offline_name"]; - InstancePtr instance; + BaseInstance* instance; if (!id.isEmpty()) { instance = instances()->getInstanceById(id); if (!instance) { @@ -1503,17 +1503,17 @@ void Application::messageReceived(const QByteArray& message) } } -std::shared_ptr Application::translations() +TranslationsModel* Application::translations() { - return m_translations; + return m_translations.get(); } -std::shared_ptr Application::javalist() +JavaInstallList* Application::javalist() { if (!m_javalist) { m_javalist.reset(new JavaInstallList()); } - return m_javalist; + return m_javalist.get(); } QIcon Application::logo() @@ -1532,7 +1532,7 @@ bool Application::openJsonEditor(const QString& filename) } } -bool Application::launch(InstancePtr instance, +bool Application::launch(BaseInstance* instance, bool online, bool demo, MinecraftTarget::Ptr targetToJoin, @@ -1580,7 +1580,7 @@ bool Application::launch(InstancePtr instance, return false; } -bool Application::kill(InstancePtr instance) +bool Application::kill(BaseInstance* instance) { if (!instance->isRunning()) { qWarning() << "Attempted to kill instance" << instance->id() << ", which isn't running."; @@ -1589,7 +1589,7 @@ bool Application::kill(InstancePtr instance) QMutexLocker locker(&m_instanceExtrasMutex); auto& extras = m_instanceExtras[instance->id()]; // NOTE: copy of the shared pointer keeps it alive - auto controller = extras.controller; + auto& controller = extras.controller; locker.unlock(); if (controller) { return controller->abort(); @@ -1738,7 +1738,7 @@ ViewLogWindow* Application::showLogWindow() return m_viewLogWindow; } -InstanceWindow* Application::showInstanceWindow(InstancePtr instance, QString page) +InstanceWindow* Application::showInstanceWindow(BaseInstance* instance, QString page) { if (!instance) return nullptr; @@ -1850,22 +1850,22 @@ void Application::updateProxySettings(QString proxyTypeStr, QString addr, int po qDebug() << proxyDesc; } -shared_qobject_ptr Application::metacache() +HttpMetaCache* Application::metacache() { - return m_metacache; + return m_metacache.get(); } -shared_qobject_ptr Application::network() +QNetworkAccessManager* Application::network() { - return m_network; + return m_network.get(); } -shared_qobject_ptr Application::metadataIndex() +Meta::Index* Application::metadataIndex() { if (!m_metadataIndex) { m_metadataIndex.reset(new Meta::Index()); } - return m_metadataIndex; + return m_metadataIndex.get(); } void Application::updateCapabilities() diff --git a/launcher/Application.h b/launcher/Application.h index 0fd733b50..69adee23b 100644 --- a/launcher/Application.h +++ b/launcher/Application.h @@ -112,7 +112,7 @@ class Application : public QApplication { bool event(QEvent* event) override; - std::shared_ptr settings() const { return m_settings; } + SettingsObject* settings() const { return m_settings.get(); } qint64 timeSinceStart() const { return m_startTime.msecsTo(QDateTime::currentDateTime()); } @@ -120,21 +120,21 @@ class Application : public QApplication { ThemeManager* themeManager() { return m_themeManager.get(); } - shared_qobject_ptr updater() { return m_updater; } + ExternalUpdater* updater() { return m_updater.get(); } void triggerUpdateCheck(); - std::shared_ptr translations(); + TranslationsModel* translations(); - std::shared_ptr javalist(); + JavaInstallList* javalist(); - std::shared_ptr instances() const { return m_instances; } + InstanceList* instances() const { return m_instances.get(); } - std::shared_ptr icons() const { return m_icons; } + IconList* icons() const { return m_icons.get(); } MCEditTool* mcedit() const { return m_mcedit.get(); } - shared_qobject_ptr accounts() const { return m_accounts; } + AccountList* accounts() const { return m_accounts.get(); } Status status() const { return m_status; } @@ -142,11 +142,11 @@ class Application : public QApplication { void updateProxySettings(QString proxyTypeStr, QString addr, int port, QString user, QString password); - shared_qobject_ptr network(); + QNetworkAccessManager* network(); - shared_qobject_ptr metacache(); + HttpMetaCache* metacache(); - shared_qobject_ptr metadataIndex(); + Meta::Index* metadataIndex(); void updateCapabilities(); @@ -182,7 +182,7 @@ class Application : public QApplication { */ bool openJsonEditor(const QString& filename); - InstanceWindow* showInstanceWindow(InstancePtr instance, QString page = QString()); + InstanceWindow* showInstanceWindow(BaseInstance* instance, QString page = QString()); MainWindow* showMainWindow(bool minimized = false); ViewLogWindow* showLogWindow(); @@ -209,13 +209,13 @@ class Application : public QApplication { #endif public slots: - bool launch(InstancePtr instance, + bool launch(BaseInstance* instance, bool online = true, bool demo = false, MinecraftTarget::Ptr targetToJoin = nullptr, MinecraftAccountPtr accountToUse = nullptr, const QString& offlineName = QString()); - bool kill(InstancePtr instance); + bool kill(BaseInstance* instance); void closeCurrentWindow(); private slots: @@ -238,23 +238,27 @@ class Application : public QApplication { void subRunningInstance(); bool shouldExitNow() const; + private: + QHash m_qsaveResources; + mutable QMutex m_qsaveResourcesMutex; + private: QDateTime m_startTime; - shared_qobject_ptr m_network; + std::unique_ptr m_network; - shared_qobject_ptr m_updater; - shared_qobject_ptr m_accounts; + std::unique_ptr m_updater; + std::unique_ptr m_accounts; - shared_qobject_ptr m_metacache; - shared_qobject_ptr m_metadataIndex; + std::unique_ptr m_metacache; + std::unique_ptr m_metadataIndex; - std::shared_ptr m_settings; - std::shared_ptr m_instances; - std::shared_ptr m_icons; - std::shared_ptr m_javalist; - std::shared_ptr m_translations; - std::shared_ptr m_globalSettingsProvider; + std::unique_ptr m_settings; + std::unique_ptr m_instances; + std::unique_ptr m_icons; + std::unique_ptr m_javalist; + std::unique_ptr m_translations; + std::unique_ptr m_globalSettingsProvider; std::unique_ptr m_mcedit; QSet m_features; std::unique_ptr m_themeManager; @@ -279,7 +283,7 @@ class Application : public QApplication { // FIXME: attach to instances instead. struct InstanceXtras { InstanceWindow* window = nullptr; - shared_qobject_ptr controller; + std::unique_ptr controller; }; std::map m_instanceExtras; mutable QMutex m_instanceExtrasMutex; @@ -313,14 +317,10 @@ class Application : public QApplication { QList m_urlsToImport; QString m_instanceIdToShowWindowOf; std::unique_ptr logFile; - shared_qobject_ptr logModel; + std::unique_ptr logModel; public: void addQSavePath(QString); void removeQSavePath(QString); bool checkQSavePath(QString); - - private: - QHash m_qsaveResources; - mutable QMutex m_qsaveResourcesMutex; }; diff --git a/launcher/BaseInstance.cpp b/launcher/BaseInstance.cpp index fdbcc11fe..dc2eb2da3 100644 --- a/launcher/BaseInstance.cpp +++ b/launcher/BaseInstance.cpp @@ -45,6 +45,7 @@ #include "Application.h" #include "Json.h" +#include "launch/LaunchTask.h" #include "settings/INISettingsObject.h" #include "settings/OverrideSetting.h" #include "settings/Setting.h" @@ -53,7 +54,7 @@ #include "Commandline.h" #include "FileSystem.h" -int getConsoleMaxLines(SettingsObjectPtr settings) +int getConsoleMaxLines(SettingsObject* settings) { auto lineSetting = settings->getSetting("ConsoleMaxLines"); bool conversionOk = false; @@ -65,14 +66,14 @@ int getConsoleMaxLines(SettingsObjectPtr settings) return maxLines; } -bool shouldStopOnConsoleOverflow(SettingsObjectPtr settings) +bool shouldStopOnConsoleOverflow(SettingsObject* settings) { return settings->get("ConsoleOverflowStop").toBool(); } -BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString& rootDir) : QObject() +BaseInstance::BaseInstance(SettingsObject* globalSettings, std::unique_ptr settings, const QString& rootDir) : QObject() { - m_settings = settings; + m_settings = std::move(settings); m_global_settings = globalSettings; m_rootDir = rootDir; @@ -126,6 +127,8 @@ BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr s m_settings->registerSetting("Profiler", ""); } +BaseInstance::~BaseInstance() {} + QString BaseInstance::getPreLaunchCommand() { return settings()->get("PreLaunchCommand").toString(); @@ -335,11 +338,11 @@ QString BaseInstance::instanceRoot() const return m_rootDir; } -SettingsObjectPtr BaseInstance::settings() +SettingsObject* BaseInstance::settings() { loadSpecificSettings(); - return m_settings; + return m_settings.get(); } bool BaseInstance::canLaunch() const @@ -467,9 +470,9 @@ QStringList BaseInstance::extraArguments() return Commandline::splitArgs(settings()->get("JvmArgs").toString()); } -shared_qobject_ptr BaseInstance::getLaunchTask() +LaunchTask* BaseInstance::getLaunchTask() { - return m_launchProcess; + return m_launchProcess.get(); } void BaseInstance::updateRuntimeContext() diff --git a/launcher/BaseInstance.h b/launcher/BaseInstance.h index a542b76eb..9280d2e1c 100644 --- a/launcher/BaseInstance.h +++ b/launcher/BaseInstance.h @@ -64,9 +64,6 @@ class Task; class LaunchTask; class BaseInstance; -// pointer for lazy people -using InstancePtr = std::shared_ptr; - /// Shortcut saving target representations enum class ShortcutTarget { Desktop, Applications, Other }; @@ -78,8 +75,8 @@ struct ShortcutData { }; /// Console settings -int getConsoleMaxLines(SettingsObjectPtr settings); -bool shouldStopOnConsoleOverflow(SettingsObjectPtr settings); +int getConsoleMaxLines(SettingsObject* settings); +bool shouldStopOnConsoleOverflow(SettingsObject* settings); /*! * \brief Base class for instances. @@ -89,11 +86,11 @@ bool shouldStopOnConsoleOverflow(SettingsObjectPtr settings); * To create a new instance type, create a new class inheriting from this class * and implement the pure virtual functions. */ -class BaseInstance : public QObject, public std::enable_shared_from_this { +class BaseInstance : public QObject { Q_OBJECT protected: /// no-touchy! - BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString& rootDir); + BaseInstance(SettingsObject* globalSettings, std::unique_ptr settings, const QString& rootDir); public: /* types */ enum class Status { @@ -103,7 +100,7 @@ class BaseInstance : public QObject, public std::enable_shared_from_this createUpdateTask() = 0; /// returns a valid launcher (task container) - virtual shared_qobject_ptr createLaunchTask(AuthSessionPtr account, MinecraftTarget::Ptr targetToJoin) = 0; + virtual LaunchTask* createLaunchTask(AuthSessionPtr account, MinecraftTarget::Ptr targetToJoin) = 0; /// returns the current launch task (if any) - shared_qobject_ptr getLaunchTask(); + LaunchTask* getLaunchTask(); /*! * Create envrironment variables for running the instance @@ -286,7 +283,7 @@ class BaseInstance : public QObject, public std::enable_shared_from_this); + void launchTaskChanged(LaunchTask*); void runningStatusChanged(bool running); @@ -310,10 +307,10 @@ class BaseInstance : public QObject, public std::enable_shared_from_this m_settings; // InstanceFlags m_flags; bool m_isRunning = false; - shared_qobject_ptr m_launchProcess; + std::unique_ptr m_launchProcess; QDateTime m_timeStarted; RuntimeContext m_runtimeContext; @@ -323,7 +320,7 @@ class BaseInstance : public QObject, public std::enable_shared_from_this; virtual ~BaseVersion() {} /*! diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index d1878e3b0..c7048fd8f 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -119,6 +119,7 @@ set(NET_SOURCES net/ChecksumValidator.h net/Download.cpp net/Download.h + net/DummySink.h net/FileSink.cpp net/FileSink.h net/HttpMetaCache.cpp diff --git a/launcher/InstanceCopyTask.cpp b/launcher/InstanceCopyTask.cpp index eba1a1339..3e912afea 100644 --- a/launcher/InstanceCopyTask.cpp +++ b/launcher/InstanceCopyTask.cpp @@ -8,7 +8,7 @@ #include "settings/INISettingsObject.h" #include "tasks/Task.h" -InstanceCopyTask::InstanceCopyTask(InstancePtr origInstance, const InstanceCopyPrefs& prefs) +InstanceCopyTask::InstanceCopyTask(BaseInstance* origInstance, const InstanceCopyPrefs& prefs) { m_origInstance = origInstance; m_keepPlaytime = prefs.isKeepPlaytimeEnabled(); @@ -147,9 +147,9 @@ void InstanceCopyTask::copyFinished() } // FIXME: shouldn't this be able to report errors? - auto instanceSettings = std::make_shared(FS::PathCombine(m_stagingPath, "instance.cfg")); + auto instanceSettings = std::make_unique(FS::PathCombine(m_stagingPath, "instance.cfg")); - InstancePtr inst(new NullInstance(m_globalSettings, instanceSettings, m_stagingPath)); + BaseInstance* inst(new NullInstance(m_globalSettings, std::move(instanceSettings), m_stagingPath)); inst->setName(name()); inst->setIconKey(m_instIcon); if (!m_keepPlaytime) { diff --git a/launcher/InstanceCopyTask.h b/launcher/InstanceCopyTask.h index ef4120bc6..a926af8a7 100644 --- a/launcher/InstanceCopyTask.h +++ b/launcher/InstanceCopyTask.h @@ -15,7 +15,7 @@ class InstanceCopyTask : public InstanceTask { Q_OBJECT public: - explicit InstanceCopyTask(InstancePtr origInstance, const InstanceCopyPrefs& prefs); + explicit InstanceCopyTask(BaseInstance* origInstance, const InstanceCopyPrefs& prefs); protected: //! Entry point for tasks. @@ -26,7 +26,7 @@ class InstanceCopyTask : public InstanceTask { private: /* data */ - InstancePtr m_origInstance; + BaseInstance* m_origInstance; QFuture m_copyFuture; QFutureWatcher m_copyFutureWatcher; Filter m_matcher; diff --git a/launcher/InstanceDirUpdate.cpp b/launcher/InstanceDirUpdate.cpp index 8be0dccac..75fbdb6c6 100644 --- a/launcher/InstanceDirUpdate.cpp +++ b/launcher/InstanceDirUpdate.cpp @@ -42,7 +42,7 @@ #include "InstanceList.h" #include "ui/dialogs/CustomMessageBox.h" -QString askToUpdateInstanceDirName(InstancePtr instance, const QString& oldName, const QString& newName, QWidget* parent) +QString askToUpdateInstanceDirName(BaseInstance* instance, const QString& oldName, const QString& newName, QWidget* parent) { if (oldName == newName) return QString(); diff --git a/launcher/InstanceDirUpdate.h b/launcher/InstanceDirUpdate.h index b92a59c4c..9da49a9a6 100644 --- a/launcher/InstanceDirUpdate.h +++ b/launcher/InstanceDirUpdate.h @@ -37,7 +37,7 @@ #include "BaseInstance.h" /// Update instanceRoot to make it sync with name/id; return newRoot if a directory rename happened -QString askToUpdateInstanceDirName(InstancePtr instance, const QString& oldName, const QString& newName, QWidget* parent); +QString askToUpdateInstanceDirName(BaseInstance* instance, const QString& oldName, const QString& newName, QWidget* parent); /// Check if there are linked instances, and display a warning; return true if the operation should proceed bool checkLinkedInstances(const QString& id, QWidget* parent, const QString& verb); diff --git a/launcher/InstanceImportTask.cpp b/launcher/InstanceImportTask.cpp index bbf36037e..8082139e3 100644 --- a/launcher/InstanceImportTask.cpp +++ b/launcher/InstanceImportTask.cpp @@ -343,9 +343,9 @@ void InstanceImportTask::processTechnic() void InstanceImportTask::processMultiMC() { QString configPath = FS::PathCombine(m_stagingPath, "instance.cfg"); - auto instanceSettings = std::make_shared(configPath); + auto instanceSettings = std::make_unique(configPath); - NullInstance instance(m_globalSettings, instanceSettings, m_stagingPath); + NullInstance instance(m_globalSettings, std::move(instanceSettings), m_stagingPath); // reset time played on import... because packs. instance.resetTimePlayed(); diff --git a/launcher/InstanceList.cpp b/launcher/InstanceList.cpp index de94db7c3..f36221f67 100644 --- a/launcher/InstanceList.cpp +++ b/launcher/InstanceList.cpp @@ -69,7 +69,7 @@ const static int GROUP_FILE_FORMAT_VERSION = 1; -InstanceList::InstanceList(SettingsObjectPtr settings, const QString& instDir, QObject* parent) +InstanceList::InstanceList(SettingsObject* settings, const QString& instDir, QObject* parent) : QAbstractListModel(parent), m_globalSettings(settings) { resumeWatch(); @@ -87,7 +87,10 @@ InstanceList::InstanceList(SettingsObjectPtr settings, const QString& instDir, Q m_watcher->addPath(m_instDir); } -InstanceList::~InstanceList() {} +InstanceList::~InstanceList() +{ + qDeleteAll(m_instances); +} Qt::DropActions InstanceList::supportedDragActions() const { @@ -161,7 +164,7 @@ QModelIndex InstanceList::index(int row, int column, const QModelIndex& parent) Q_UNUSED(parent); if (row < 0 || row >= m_instances.size()) return QModelIndex(); - return createIndex(row, column, (void*)m_instances.at(row).get()); + return createIndex(row, column, (void*)m_instances.at(row)); } QVariant InstanceList::data(const QModelIndex& index, int role) const @@ -266,7 +269,7 @@ void InstanceList::setInstanceGroup(const InstanceId& id, GroupId name) if (changed) { increaseGroupCount(name); - auto idx = getInstIndex(inst.get()); + auto idx = getInstIndex(inst); emit dataChanged(index(idx), index(idx), { GroupRole }); saveGroupList(); } @@ -291,7 +294,7 @@ void InstanceList::deleteGroup(const GroupId& name) m_instanceGroupIndex.remove(instID); qDebug() << "Remove" << instID << "from group" << name; removed = true; - auto idx = getInstIndex(instance.get()); + auto idx = getInstIndex(instance); if (idx >= 0) emit dataChanged(index(idx), index(idx), { GroupRole }); } @@ -316,7 +319,7 @@ void InstanceList::renameGroup(const QString& src, const QString& dst) increaseGroupCount(dst); qDebug() << "Set" << instID << "group to" << dst; modified = true; - auto idx = getInstIndex(instance.get()); + auto idx = getInstIndex(instance); if (idx >= 0) emit dataChanged(index(idx), index(idx), { GroupRole }); } @@ -457,11 +460,11 @@ void InstanceList::deleteInstance(const InstanceId& id) } } -static QMap getIdMapping(const QList& list) +static QMap getIdMapping(const QList& list) { QMap out; int i = 0; - for (auto& item : list) { + for (auto item : list) { auto id = item->id(); if (out.contains(id)) { qWarning() << "Duplicate ID" << id << "in instance list"; @@ -504,7 +507,7 @@ InstanceList::InstListError InstanceList::loadList() { auto existingIds = getIdMapping(m_instances); - QList newList; + QList newList; for (auto& id : discoverInstances()) { if (existingIds.contains(id)) { @@ -512,7 +515,7 @@ InstanceList::InstListError InstanceList::loadList() existingIds.remove(id); qInfo() << "Should keep and soft-reload" << id; } else { - InstancePtr instPtr = loadInstance(id); + BaseInstanceOwner instPtr = loadInstance(id); if (instPtr) { newList.append(instPtr); } @@ -567,7 +570,7 @@ void InstanceList::updateTotalPlayTime() { totalPlayTime = 0; for (auto const& itr : m_instances) { - totalPlayTime += itr.get()->totalTimePlayed(); + totalPlayTime += itr->totalTimePlayed(); } } @@ -578,12 +581,12 @@ void InstanceList::saveNow() } } -void InstanceList::add(const QList& t) +void InstanceList::add(const QList& t) { beginInsertRows(QModelIndex(), m_instances.count(), m_instances.count() + t.size() - 1); m_instances.append(t); - for (auto& ptr : t) { - connect(ptr.get(), &BaseInstance::propertiesChanged, this, &InstanceList::propertiesChanged); + for (auto ptr : t) { + connect(ptr, &BaseInstance::propertiesChanged, this, &InstanceList::propertiesChanged); } endInsertRows(); } @@ -613,19 +616,19 @@ void InstanceList::providerUpdated() } } -InstancePtr InstanceList::getInstanceById(QString instId) const +BaseInstance* InstanceList::getInstanceById(QString instId) const { if (instId.isEmpty()) - return InstancePtr(); + return nullptr; for (auto& inst : m_instances) { if (inst->id() == instId) { return inst; } } - return InstancePtr(); + return nullptr; } -InstancePtr InstanceList::getInstanceByManagedName(const QString& managed_name) const +BaseInstance* InstanceList::getInstanceByManagedName(const QString& managed_name) const { if (managed_name.isEmpty()) return {}; @@ -640,14 +643,14 @@ InstancePtr InstanceList::getInstanceByManagedName(const QString& managed_name) QModelIndex InstanceList::getInstanceIndexById(const QString& id) const { - return index(getInstIndex(getInstanceById(id).get())); + return index(getInstIndex(getInstanceById(id))); } int InstanceList::getInstIndex(BaseInstance* inst) const { int count = m_instances.count(); for (int i = 0; i < count; i++) { - if (inst == m_instances[i].get()) { + if (inst == m_instances[i]) { return i; } } @@ -663,15 +666,15 @@ void InstanceList::propertiesChanged(BaseInstance* inst) } } -InstancePtr InstanceList::loadInstance(const InstanceId& id) +InstanceList::BaseInstanceOwner InstanceList::loadInstance(const InstanceId& id) { if (!m_groupsLoaded) { loadGroupList(); } auto instanceRoot = FS::PathCombine(m_instDir, id); - auto instanceSettings = std::make_shared(FS::PathCombine(instanceRoot, "instance.cfg")); - InstancePtr inst; + auto instanceSettings = std::make_unique(FS::PathCombine(instanceRoot, "instance.cfg")); + BaseInstanceOwner inst; instanceSettings->registerSetting("InstanceType", ""); @@ -680,9 +683,9 @@ InstancePtr InstanceList::loadInstance(const InstanceId& id) // NOTE: Some launcher versions didn't save the InstanceType properly. We will just bank on the probability that this is probably a // OneSix instance if (inst_type == "OneSix" || inst_type.isEmpty()) { - inst.reset(new MinecraftInstance(m_globalSettings, instanceSettings, instanceRoot)); + inst = new MinecraftInstance(m_globalSettings, std::move(instanceSettings), instanceRoot); } else { - inst.reset(new NullInstance(m_globalSettings, instanceSettings, instanceRoot)); + inst = new NullInstance(m_globalSettings, std::move(instanceSettings), instanceRoot); } qDebug() << "Loaded instance" << inst->name() << "from" << inst->instanceRoot(); @@ -911,15 +914,14 @@ class InstanceStaging : public Task { const unsigned maxBackoff = 16; public: - InstanceStaging(InstanceList* parent, InstanceTask* child, SettingsObjectPtr settings) - : m_parent(parent), backoff(minBackoff, maxBackoff) + InstanceStaging(InstanceList* parent, InstanceTask* child, SettingsObject* settings) : m_parent(parent), backoff(minBackoff, maxBackoff) { m_stagingPath = parent->getStagedInstancePath(); m_child.reset(child); m_child->setStagingPath(m_stagingPath); - m_child->setParentSettings(std::move(settings)); + m_child->setParentSettings(settings); connect(child, &Task::succeeded, this, &InstanceStaging::childSucceeded); connect(child, &Task::failed, this, &InstanceStaging::childFailed); @@ -995,7 +997,7 @@ class InstanceStaging : public Task { */ ExponentialSeries backoff; QString m_stagingPath; - unique_qobject_ptr m_child; + std::unique_ptr m_child; QTimer m_backoffTimer; }; @@ -1036,7 +1038,7 @@ bool InstanceList::commitStagedInstance(const QString& path, groupName = QString(); QString instID; - InstancePtr inst; + BaseInstance* inst; auto should_override = commiting.shouldOverride(); diff --git a/launcher/InstanceList.h b/launcher/InstanceList.h index fc4fa9a39..5e002a422 100644 --- a/launcher/InstanceList.h +++ b/launcher/InstanceList.h @@ -50,7 +50,7 @@ struct InstanceName; using InstanceId = QString; using GroupId = QString; -using InstanceLocator = std::pair; +using InstanceLocator = std::pair; enum class InstCreateError { NoCreateError = 0, NoSuchVersion, UnknownCreateError, InstExists, CantCreateDir }; @@ -73,7 +73,9 @@ class InstanceList : public QAbstractListModel { Q_OBJECT public: - explicit InstanceList(SettingsObjectPtr settings, const QString& instDir, QObject* parent = 0); + using BaseInstanceOwner = BaseInstance*; + + explicit InstanceList(SettingsObject* settings, const QString& instDir, QObject* parent = 0); virtual ~InstanceList(); public: @@ -96,7 +98,7 @@ class InstanceList : public QAbstractListModel { */ enum InstListError { NoError = 0, UnknownError }; - InstancePtr at(int i) const { return m_instances.at(i); } + BaseInstance* at(int i) const { return m_instances.at(i); } int count() const { return m_instances.count(); } @@ -104,9 +106,9 @@ class InstanceList : public QAbstractListModel { void saveNow(); /* O(n) */ - InstancePtr getInstanceById(QString id) const; + BaseInstance* getInstanceById(QString id) const; /* O(n) */ - InstancePtr getInstanceByManagedName(const QString& managed_name) const; + BaseInstance* getInstanceByManagedName(const QString& managed_name) const; QModelIndex getInstanceIndexById(const QString& id) const; QStringList getGroups(); bool isGroupCollapsed(const QString& groupName); @@ -179,11 +181,11 @@ class InstanceList : public QAbstractListModel { void updateTotalPlayTime(); void suspendWatch(); void resumeWatch(); - void add(const QList& list); + void add(const QList& list); void loadGroupList(); void saveGroupList(); QList discoverInstances(); - InstancePtr loadInstance(const InstanceId& id); + BaseInstanceOwner loadInstance(const InstanceId& id); void increaseGroupCount(const QString& group); void decreaseGroupCount(const QString& group); @@ -192,11 +194,11 @@ class InstanceList : public QAbstractListModel { int m_watchLevel = 0; int totalPlayTime = 0; bool m_dirty = false; - QList m_instances; + QList m_instances; // id -> refs QMap m_groupNameCache; - SettingsObjectPtr m_globalSettings; + SettingsObject* m_globalSettings; QString m_instDir; QFileSystemWatcher* m_watcher; // FIXME: this is so inefficient that looking at it is almost painful. diff --git a/launcher/InstancePageProvider.h b/launcher/InstancePageProvider.h index c683774d2..134fb8f24 100644 --- a/launcher/InstancePageProvider.h +++ b/launcher/InstancePageProvider.h @@ -21,26 +21,26 @@ class InstancePageProvider : protected QObject, public BasePageProvider { Q_OBJECT public: - explicit InstancePageProvider(InstancePtr parent) { inst = parent; } + explicit InstancePageProvider(BaseInstance* parent) { inst = parent; } virtual ~InstancePageProvider() = default; virtual QList getPages() override { QList values; values.append(new LogPage(inst)); - std::shared_ptr onesix = std::dynamic_pointer_cast(inst); - values.append(new VersionPage(onesix.get())); - values.append(ManagedPackPage::createPage(onesix.get())); - auto modsPage = new ModFolderPage(onesix.get(), onesix->loaderModList()); + MinecraftInstance* onesix = dynamic_cast(inst); + values.append(new VersionPage(onesix)); + values.append(ManagedPackPage::createPage(onesix)); + auto modsPage = new ModFolderPage(onesix, onesix->loaderModList()); modsPage->setFilter("%1 (*.zip *.jar *.litemod *.nilmod)"); values.append(modsPage); - values.append(new CoreModFolderPage(onesix.get(), onesix->coreModList())); - values.append(new NilModFolderPage(onesix.get(), onesix->nilModList())); - values.append(new ResourcePackPage(onesix.get(), onesix->resourcePackList())); - values.append(new GlobalDataPackPage(onesix.get())); - values.append(new TexturePackPage(onesix.get(), onesix->texturePackList())); - values.append(new ShaderPackPage(onesix.get(), onesix->shaderPackList())); - values.append(new NotesPage(onesix.get())); + values.append(new CoreModFolderPage(onesix, onesix->coreModList())); + values.append(new NilModFolderPage(onesix, onesix->nilModList())); + values.append(new ResourcePackPage(onesix, onesix->resourcePackList())); + values.append(new GlobalDataPackPage(onesix)); + values.append(new TexturePackPage(onesix, onesix->texturePackList())); + values.append(new ShaderPackPage(onesix, onesix->shaderPackList())); + values.append(new NotesPage(onesix)); values.append(new WorldListPage(onesix, onesix->worldList())); values.append(new ServersPage(onesix)); values.append(new ScreenshotsPage(FS::PathCombine(onesix->gameRoot(), "screenshots"))); @@ -52,5 +52,5 @@ class InstancePageProvider : protected QObject, public BasePageProvider { virtual QString dialogTitle() override { return tr("Edit Instance (%1)").arg(inst->name()); } protected: - InstancePtr inst; + BaseInstance* inst; }; diff --git a/launcher/InstanceTask.h b/launcher/InstanceTask.h index 86b4cee68..cd5a2b35a 100644 --- a/launcher/InstanceTask.h +++ b/launcher/InstanceTask.h @@ -35,7 +35,7 @@ class InstanceTask : public Task, public InstanceName { InstanceTask(); ~InstanceTask() override = default; - void setParentSettings(SettingsObjectPtr settings) { m_globalSettings = settings; } + void setParentSettings(SettingsObject* settings) { m_globalSettings = settings; } void setStagingPath(const QString& stagingPath) { m_stagingPath = stagingPath; } @@ -60,7 +60,7 @@ class InstanceTask : public Task, public InstanceName { } protected: /* data */ - SettingsObjectPtr m_globalSettings; + SettingsObject* m_globalSettings; QString m_instIcon; QString m_instGroup; QString m_stagingPath; diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp index d33dbc3f1..5702d95ce 100644 --- a/launcher/LaunchController.cpp +++ b/launcher/LaunchController.cpp @@ -403,10 +403,10 @@ void LaunchController::launchInstance() if (!console && showConsole) { APPLICATION->showInstanceWindow(m_instance); } - connect(m_launcher.get(), &LaunchTask::readyForLaunch, this, &LaunchController::readyForLaunch); - connect(m_launcher.get(), &LaunchTask::succeeded, this, &LaunchController::onSucceeded); - connect(m_launcher.get(), &LaunchTask::failed, this, &LaunchController::onFailed); - connect(m_launcher.get(), &LaunchTask::requestProgress, this, &LaunchController::onProgressRequested); + connect(m_launcher, &LaunchTask::readyForLaunch, this, &LaunchController::readyForLaunch); + connect(m_launcher, &LaunchTask::succeeded, this, &LaunchController::onSucceeded); + connect(m_launcher, &LaunchTask::failed, this, &LaunchController::onFailed); + connect(m_launcher, &LaunchTask::requestProgress, this, &LaunchController::onProgressRequested); // Prepend Online and Auth Status QString online_mode; @@ -416,19 +416,18 @@ void LaunchController::launchInstance() // Prepend Server Status QStringList servers = { "login.microsoftonline.com", "session.minecraft.net", "textures.minecraft.net", "api.mojang.com" }; - m_launcher->prependStep(makeShared(m_launcher.get(), servers)); + m_launcher->prependStep(makeShared(m_launcher, servers)); } else { online_mode = m_demo ? "demo" : "offline"; } - m_launcher->prependStep( - makeShared(m_launcher.get(), "Launched instance in " + online_mode + " mode\n", MessageLevel::Launcher)); + m_launcher->prependStep(makeShared(m_launcher, "Launched instance in " + online_mode + " mode\n", MessageLevel::Launcher)); // Prepend Version { auto versionString = QString("%1 version: %2 (%3)") .arg(BuildConfig.LAUNCHER_DISPLAYNAME, BuildConfig.printableVersionString(), BuildConfig.BUILD_PLATFORM); - m_launcher->prependStep(makeShared(m_launcher.get(), versionString + "\n\n", MessageLevel::Launcher)); + m_launcher->prependStep(makeShared(m_launcher, versionString + "\n\n", MessageLevel::Launcher)); } m_launcher->start(); } diff --git a/launcher/LaunchController.h b/launcher/LaunchController.h index 50b72eb18..f421e1c86 100644 --- a/launcher/LaunchController.h +++ b/launcher/LaunchController.h @@ -50,9 +50,9 @@ class LaunchController : public Task { LaunchController(); virtual ~LaunchController() = default; - void setInstance(InstancePtr instance) { m_instance = instance; } + void setInstance(BaseInstance* instance) { m_instance = instance; } - InstancePtr instance() { return m_instance; } + BaseInstance* instance() { return m_instance; } void setOnline(bool online) { m_online = online; } @@ -92,11 +92,11 @@ class LaunchController : public Task { bool m_online = true; QString m_offlineName; bool m_demo = false; - InstancePtr m_instance; + BaseInstance* m_instance; QWidget* m_parentWidget = nullptr; InstanceWindow* m_console = nullptr; MinecraftAccountPtr m_accountToUse = nullptr; AuthSessionPtr m_session; - shared_qobject_ptr m_launcher; + LaunchTask* m_launcher; MinecraftTarget::Ptr m_targetToJoin; }; diff --git a/launcher/NullInstance.h b/launcher/NullInstance.h index 13ad0b2c5..1c2425e16 100644 --- a/launcher/NullInstance.h +++ b/launcher/NullInstance.h @@ -41,8 +41,8 @@ class NullInstance : public BaseInstance { Q_OBJECT public: - NullInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString& rootDir) - : BaseInstance(globalSettings, settings, rootDir) + NullInstance(SettingsObject* globalSettings, std::unique_ptr settings, const QString& rootDir) + : BaseInstance(globalSettings, std::move(settings), rootDir) { setVersionBroken(true); } @@ -52,7 +52,7 @@ class NullInstance : public BaseInstance { QString getStatusbarDescription() override { return tr("Unknown instance type"); }; QSet traits() const override { return {}; }; QString instanceConfigFolder() const override { return instanceRoot(); }; - shared_qobject_ptr createLaunchTask(AuthSessionPtr, MinecraftTarget::Ptr) override { return nullptr; } + LaunchTask* createLaunchTask(AuthSessionPtr, MinecraftTarget::Ptr) override { return nullptr; } QList createUpdateTask() override { return {}; } QProcessEnvironment createEnvironment() override { return QProcessEnvironment(); } QProcessEnvironment createLaunchEnvironment() override { return QProcessEnvironment(); } diff --git a/launcher/ResourceDownloadTask.cpp b/launcher/ResourceDownloadTask.cpp index 875a7f02d..01c4cdc18 100644 --- a/launcher/ResourceDownloadTask.cpp +++ b/launcher/ResourceDownloadTask.cpp @@ -31,7 +31,7 @@ ResourceDownloadTask::ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack, ModPlatform::IndexedVersion version, - const std::shared_ptr packs, + ResourceFolderModel* packs, bool is_indexed) : m_pack(std::move(pack)), m_pack_version(std::move(version)), m_pack_model(packs) { @@ -88,7 +88,7 @@ void ResourceDownloadTask::downloadSucceeded() m_pack_model->uninstallResource(oldFilename, true); // also rename the shader config file - if (dynamic_cast(m_pack_model.get()) != nullptr) { + if (dynamic_cast(m_pack_model) != nullptr) { QFileInfo oldConfig(m_pack_model->dir(), oldFilename + ".txt"); QFileInfo newConfig(m_pack_model->dir(), getFilename() + ".txt"); diff --git a/launcher/ResourceDownloadTask.h b/launcher/ResourceDownloadTask.h index 78fe8efc7..7a04c6f1c 100644 --- a/launcher/ResourceDownloadTask.h +++ b/launcher/ResourceDownloadTask.h @@ -32,7 +32,7 @@ class ResourceDownloadTask : public SequentialTask { public: explicit ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack, ModPlatform::IndexedVersion version, - std::shared_ptr packs, + ResourceFolderModel* packs, bool is_indexed = true); const QString& getFilename() const { return m_pack_version.fileName; } const QVariant& getVersionID() const { return m_pack_version.fileId; } @@ -44,7 +44,7 @@ class ResourceDownloadTask : public SequentialTask { private: ModPlatform::IndexedPack::Ptr m_pack; ModPlatform::IndexedVersion m_pack_version; - const std::shared_ptr m_pack_model; + ResourceFolderModel* m_pack_model; NetJob::Ptr m_filesNetJob; LocalResourceUpdateTask::Ptr m_update_task; diff --git a/launcher/RuntimeContext.h b/launcher/RuntimeContext.h index 85304a5bc..84a56a892 100644 --- a/launcher/RuntimeContext.h +++ b/launcher/RuntimeContext.h @@ -41,7 +41,7 @@ struct RuntimeContext { return javaRealArchitecture; } - void updateFromInstanceSettings(SettingsObjectPtr instanceSettings) + void updateFromInstanceSettings(SettingsObject* instanceSettings) { javaArchitecture = instanceSettings->get("JavaArchitecture").toString(); javaRealArchitecture = instanceSettings->get("JavaRealArchitecture").toString(); diff --git a/launcher/Usable.h b/launcher/Usable.h index b0ecd4018..8cef29868 100644 --- a/launcher/Usable.h +++ b/launcher/Usable.h @@ -36,7 +36,7 @@ class Usable { */ class UseLock { public: - UseLock(shared_qobject_ptr usable) : m_usable(usable) + UseLock(Usable* usable) : m_usable(usable) { // this doesn't use shared pointer use count, because that wouldn't be correct. this count is separate. m_usable->incrementUses(); @@ -44,5 +44,5 @@ class UseLock { ~UseLock() { m_usable->decrementUses(); } private: - shared_qobject_ptr m_usable; + Usable* m_usable; }; diff --git a/launcher/java/download/ManifestDownloadTask.cpp b/launcher/java/download/ManifestDownloadTask.cpp index 04d28a5cc..cbb76bac6 100644 --- a/launcher/java/download/ManifestDownloadTask.cpp +++ b/launcher/java/download/ManifestDownloadTask.cpp @@ -41,7 +41,7 @@ void ManifestDownloadTask::executeTask() auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); auto files = std::make_shared(); - auto action = Net::Download::makeByteArray(m_url, files); + auto action = Net::Download::makeByteArray(m_url, files.get()); if (!m_checksum_hash.isEmpty() && !m_checksum_type.isEmpty()) { auto hashType = QCryptographicHash::Algorithm::Sha1; if (m_checksum_type == "sha256") { diff --git a/launcher/launch/LaunchTask.cpp b/launcher/launch/LaunchTask.cpp index 9985e0f4f..6aaf2af96 100644 --- a/launcher/launch/LaunchTask.cpp +++ b/launcher/launch/LaunchTask.cpp @@ -51,14 +51,14 @@ void LaunchTask::init() m_instance->setRunning(true); } -shared_qobject_ptr LaunchTask::create(MinecraftInstancePtr inst) +std::unique_ptr LaunchTask::create(MinecraftInstance* inst) { - shared_qobject_ptr proc(new LaunchTask(inst)); - proc->init(); - return proc; + auto task = std::unique_ptr(new LaunchTask(inst)); + task->init(); + return task; } -LaunchTask::LaunchTask(MinecraftInstancePtr instance) : m_instance(instance) {} +LaunchTask::LaunchTask(MinecraftInstance* instance) : m_instance(instance) {} void LaunchTask::appendStep(shared_qobject_ptr step) { diff --git a/launcher/launch/LaunchTask.h b/launcher/launch/LaunchTask.h index db7e453e4..c52273a9e 100644 --- a/launcher/launch/LaunchTask.h +++ b/launcher/launch/LaunchTask.h @@ -39,7 +39,6 @@ #include #include #include -#include "BaseInstance.h" #include "LaunchStep.h" #include "LogModel.h" #include "MessageLevel.h" @@ -48,21 +47,21 @@ class LaunchTask : public Task { Q_OBJECT protected: - explicit LaunchTask(MinecraftInstancePtr instance); + explicit LaunchTask(MinecraftInstance* instance); void init(); public: enum State { NotStarted, Running, Waiting, Failed, Aborted, Finished }; public: /* methods */ - static shared_qobject_ptr create(MinecraftInstancePtr inst); + static std::unique_ptr create(MinecraftInstance* inst); virtual ~LaunchTask() = default; void appendStep(shared_qobject_ptr step); void prependStep(shared_qobject_ptr step); void setCensorFilter(QMap filter); - MinecraftInstancePtr instance() { return m_instance; } + MinecraftInstance* instance() { return m_instance; } void setPid(qint64 pid) { m_pid = pid; } @@ -119,7 +118,7 @@ class LaunchTask : public Task { bool parseXmlLogs(QString const& line, MessageLevel level); protected: /* data */ - MinecraftInstancePtr m_instance; + MinecraftInstance* m_instance; shared_qobject_ptr m_logModel; QList> m_steps; QMap m_censorFilter; diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 6904ed0bc..2a6e64626 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -160,12 +160,14 @@ class OrSetting : public Setting { std::shared_ptr m_b; }; -MinecraftInstance::MinecraftInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString& rootDir) - : BaseInstance(globalSettings, settings, rootDir) +MinecraftInstance::MinecraftInstance(SettingsObject* globalSettings, std::unique_ptr settings, const QString& rootDir) + : BaseInstance(globalSettings, std::move(settings), rootDir) { m_components.reset(new PackProfile(this)); } +MinecraftInstance::~MinecraftInstance() {} + void MinecraftInstance::saveNow() { m_components->saveNow(); @@ -269,7 +271,7 @@ void MinecraftInstance::loadSpecificSettings() void MinecraftInstance::updateRuntimeContext() { - m_runtimeContext.updateFromInstanceSettings(m_settings); + m_runtimeContext.updateFromInstanceSettings(m_settings.get()); m_components->invalidateLaunchProfile(); } @@ -278,9 +280,9 @@ QString MinecraftInstance::typeName() const return "Minecraft"; } -std::shared_ptr MinecraftInstance::getPackProfile() const +PackProfile* MinecraftInstance::getPackProfile() const { - return m_components; + return m_components.get(); } QSet MinecraftInstance::traits() const @@ -308,9 +310,9 @@ void MinecraftInstance::populateLaunchMenu(QMenu* menu) normalLaunchDemo->setEnabled(supportsDemo()); - connect(normalLaunch, &QAction::triggered, [this] { APPLICATION->launch(shared_from_this()); }); - connect(normalLaunchOffline, &QAction::triggered, [this] { APPLICATION->launch(shared_from_this(), false, false); }); - connect(normalLaunchDemo, &QAction::triggered, [this] { APPLICATION->launch(shared_from_this(), false, true); }); + connect(normalLaunch, &QAction::triggered, [this] { APPLICATION->launch(this); }); + connect(normalLaunchOffline, &QAction::triggered, [this] { APPLICATION->launch(this, false, false); }); + connect(normalLaunchDemo, &QAction::triggered, [this] { APPLICATION->launch(this, false, true); }); QString profilersTitle = tr("Profilers"); menu->addSeparator()->setText(profilersTitle); @@ -964,8 +966,8 @@ QStringList MinecraftInstance::verboseDescription(AuthSessionPtr session, Minecr } }; - printModList("Mods", *(loaderModList().get())); - printModList("Core Mods", *(coreModList().get())); + printModList("Mods", *loaderModList()); + printModList("Core Mods", *coreModList()); // jar mods auto& jarMods = profile->getJarMods(); @@ -1106,11 +1108,10 @@ QList MinecraftInstance::createUpdateTask() }; } -shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin) +LaunchTask* MinecraftInstance::createLaunchTask(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin) { updateRuntimeContext(); - // FIXME: get rid of shared_from_this ... - auto process = LaunchTask::create(std::dynamic_pointer_cast(shared_from_this())); + auto process = LaunchTask::create(this); auto pptr = process.get(); APPLICATION->icons()->saveIcon(iconKey(), FS::PathCombine(gameRoot(), "icon.png"), "PNG"); @@ -1225,9 +1226,9 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt if (m_settings->get("QuitAfterGameStop").toBool()) { process->appendStep(makeShared(pptr)); } - m_launchProcess = process; - emit launchTaskChanged(m_launchProcess); - return m_launchProcess; + m_launchProcess = std::move(process); + emit launchTaskChanged(m_launchProcess.get()); + return m_launchProcess.get(); } JavaVersion MinecraftInstance::getJavaVersion() @@ -1235,80 +1236,80 @@ JavaVersion MinecraftInstance::getJavaVersion() return JavaVersion(settings()->get("JavaVersion").toString()); } -std::shared_ptr MinecraftInstance::loaderModList() +ModFolderModel* MinecraftInstance::loaderModList() { if (!m_loader_mod_list) { bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); m_loader_mod_list.reset(new ModFolderModel(modsRoot(), this, is_indexed, true)); } - return m_loader_mod_list; + return m_loader_mod_list.get(); } -std::shared_ptr MinecraftInstance::coreModList() +ModFolderModel* MinecraftInstance::coreModList() { if (!m_core_mod_list) { bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); m_core_mod_list.reset(new ModFolderModel(coreModsDir(), this, is_indexed, true)); } - return m_core_mod_list; + return m_core_mod_list.get(); } -std::shared_ptr MinecraftInstance::nilModList() +ModFolderModel* MinecraftInstance::nilModList() { if (!m_nil_mod_list) { bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); m_nil_mod_list.reset(new ModFolderModel(nilModsDir(), this, is_indexed, false)); } - return m_nil_mod_list; + return m_nil_mod_list.get(); } -std::shared_ptr MinecraftInstance::resourcePackList() +ResourcePackFolderModel* MinecraftInstance::resourcePackList() { if (!m_resource_pack_list) { bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); m_resource_pack_list.reset(new ResourcePackFolderModel(resourcePacksDir(), this, is_indexed, true)); } - return m_resource_pack_list; + return m_resource_pack_list.get(); } -std::shared_ptr MinecraftInstance::texturePackList() +TexturePackFolderModel* MinecraftInstance::texturePackList() { if (!m_texture_pack_list) { bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); m_texture_pack_list.reset(new TexturePackFolderModel(texturePacksDir(), this, is_indexed, true)); } - return m_texture_pack_list; + return m_texture_pack_list.get(); } -std::shared_ptr MinecraftInstance::shaderPackList() +ShaderPackFolderModel* MinecraftInstance::shaderPackList() { if (!m_shader_pack_list) { bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); m_shader_pack_list.reset(new ShaderPackFolderModel(shaderPacksDir(), this, is_indexed, true)); } - return m_shader_pack_list; + return m_shader_pack_list.get(); } -std::shared_ptr MinecraftInstance::dataPackList() +DataPackFolderModel* MinecraftInstance::dataPackList() { if (!m_data_pack_list && settings()->get("GlobalDataPacksEnabled").toBool()) { bool isIndexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); m_data_pack_list.reset(new DataPackFolderModel(dataPacksDir(), this, isIndexed, true)); } - return m_data_pack_list; + return m_data_pack_list.get(); } -QList> MinecraftInstance::resourceLists() +QList MinecraftInstance::resourceLists() { return { loaderModList(), coreModList(), nilModList(), resourcePackList(), texturePackList(), shaderPackList(), dataPackList() }; } -std::shared_ptr MinecraftInstance::worldList() +WorldList* MinecraftInstance::worldList() { if (!m_world_list) { m_world_list.reset(new WorldList(worldDir(), this)); } - return m_world_list; + return m_world_list.get(); } QList MinecraftInstance::getJarMods() const diff --git a/launcher/minecraft/MinecraftInstance.h b/launcher/minecraft/MinecraftInstance.h index ecddef69c..256e982ff 100644 --- a/launcher/minecraft/MinecraftInstance.h +++ b/launcher/minecraft/MinecraftInstance.h @@ -56,8 +56,8 @@ class PackProfile; class MinecraftInstance : public BaseInstance { Q_OBJECT public: - MinecraftInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString& rootDir); - virtual ~MinecraftInstance() = default; + MinecraftInstance(SettingsObject* globalSettings, std::unique_ptr settings, const QString& rootDir); + virtual ~MinecraftInstance(); virtual void saveNow() override; void loadSpecificSettings() override; @@ -109,22 +109,22 @@ class MinecraftInstance : public BaseInstance { void updateRuntimeContext() override; ////// Profile management ////// - std::shared_ptr getPackProfile() const; + PackProfile* getPackProfile() const; ////// Mod Lists ////// - std::shared_ptr loaderModList(); - std::shared_ptr coreModList(); - std::shared_ptr nilModList(); - std::shared_ptr resourcePackList(); - std::shared_ptr texturePackList(); - std::shared_ptr shaderPackList(); - std::shared_ptr dataPackList(); - QList> resourceLists(); - std::shared_ptr worldList(); + ModFolderModel* loaderModList(); + ModFolderModel* coreModList(); + ModFolderModel* nilModList(); + ResourcePackFolderModel* resourcePackList(); + TexturePackFolderModel* texturePackList(); + ShaderPackFolderModel* shaderPackList(); + DataPackFolderModel* dataPackList(); + QList resourceLists(); + WorldList* worldList(); ////// Launch stuff ////// QList createUpdateTask() override; - shared_qobject_ptr createLaunchTask(AuthSessionPtr account, MinecraftTarget::Ptr targetToJoin) override; + LaunchTask* createLaunchTask(AuthSessionPtr account, MinecraftTarget::Ptr targetToJoin) override; QStringList extraArguments() override; QStringList verboseDescription(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin) override; QList getJarMods() const; @@ -162,15 +162,13 @@ class MinecraftInstance : public BaseInstance { QMap makeProfileVarMapping(std::shared_ptr profile) const; protected: // data - std::shared_ptr m_components; - mutable std::shared_ptr m_loader_mod_list; - mutable std::shared_ptr m_core_mod_list; - mutable std::shared_ptr m_nil_mod_list; - mutable std::shared_ptr m_resource_pack_list; - mutable std::shared_ptr m_shader_pack_list; - mutable std::shared_ptr m_texture_pack_list; - mutable std::shared_ptr m_data_pack_list; - mutable std::shared_ptr m_world_list; -}; - -using MinecraftInstancePtr = std::shared_ptr; + std::unique_ptr m_components; + std::unique_ptr m_loader_mod_list; + std::unique_ptr m_core_mod_list; + std::unique_ptr m_nil_mod_list; + std::unique_ptr m_resource_pack_list; + std::unique_ptr m_shader_pack_list; + std::unique_ptr m_texture_pack_list; + std::unique_ptr m_data_pack_list; + std::unique_ptr m_world_list; +}; \ No newline at end of file diff --git a/launcher/minecraft/VanillaInstanceCreationTask.cpp b/launcher/minecraft/VanillaInstanceCreationTask.cpp index ccbd8c677..9625e985b 100644 --- a/launcher/minecraft/VanillaInstanceCreationTask.cpp +++ b/launcher/minecraft/VanillaInstanceCreationTask.cpp @@ -19,10 +19,10 @@ bool VanillaCreationTask::createInstance() { setStatus(tr("Creating instance from version %1").arg(m_version->name())); - auto instance_settings = std::make_shared(FS::PathCombine(m_stagingPath, "instance.cfg")); + auto instance_settings = std::make_unique(FS::PathCombine(m_stagingPath, "instance.cfg")); instance_settings->suspendSave(); { - MinecraftInstance inst(m_globalSettings, instance_settings, m_stagingPath); + MinecraftInstance inst(m_globalSettings, std::move(instance_settings), m_stagingPath); auto components = inst.getPackProfile(); components->buildingFromScratch(); components->setComponentVersion("net.minecraft", m_version->descriptor(), true); @@ -31,8 +31,9 @@ bool VanillaCreationTask::createInstance() inst.setName(name()); inst.setIconKey(m_instIcon); + + inst.settings()->resumeSave(); } - instance_settings->resumeSave(); return true; } diff --git a/launcher/minecraft/auth/steps/EntitlementsStep.cpp b/launcher/minecraft/auth/steps/EntitlementsStep.cpp index 5b9809c52..890c1d77b 100644 --- a/launcher/minecraft/auth/steps/EntitlementsStep.cpp +++ b/launcher/minecraft/auth/steps/EntitlementsStep.cpp @@ -32,8 +32,8 @@ void EntitlementsStep::perform() { "Authorization", QString("Bearer %1").arg(m_data->yggdrasilToken.token).toUtf8() } }; m_response.reset(new QByteArray()); - m_request = Net::Download::makeByteArray(url, m_response); - m_request->addHeaderProxy(new Net::RawHeaderProxy(headers)); + m_request = Net::Download::makeByteArray(url, m_response.get()); + m_request->addHeaderProxy(std::make_unique(headers)); m_task.reset(new NetJob("EntitlementsStep", APPLICATION->network())); m_task->setAskRetry(false); diff --git a/launcher/minecraft/auth/steps/EntitlementsStep.h b/launcher/minecraft/auth/steps/EntitlementsStep.h index f20fcac08..b6d077004 100644 --- a/launcher/minecraft/auth/steps/EntitlementsStep.h +++ b/launcher/minecraft/auth/steps/EntitlementsStep.h @@ -22,7 +22,7 @@ class EntitlementsStep : public AuthStep { private: QString m_entitlements_request_id; - std::shared_ptr m_response; + std::unique_ptr m_response; Net::Download::Ptr m_request; NetJob::Ptr m_task; }; diff --git a/launcher/minecraft/auth/steps/GetSkinStep.cpp b/launcher/minecraft/auth/steps/GetSkinStep.cpp index e067bc34c..ac83119e9 100644 --- a/launcher/minecraft/auth/steps/GetSkinStep.cpp +++ b/launcher/minecraft/auth/steps/GetSkinStep.cpp @@ -17,7 +17,7 @@ void GetSkinStep::perform() QUrl url(m_data->minecraftProfile.skin.url); m_response.reset(new QByteArray()); - m_request = Net::Download::makeByteArray(url, m_response); + m_request = Net::Download::makeByteArray(url, m_response.get()); m_task.reset(new NetJob("GetSkinStep", APPLICATION->network())); m_task->setAskRetry(false); diff --git a/launcher/minecraft/auth/steps/GetSkinStep.h b/launcher/minecraft/auth/steps/GetSkinStep.h index c598f05d9..11a0820fd 100644 --- a/launcher/minecraft/auth/steps/GetSkinStep.h +++ b/launcher/minecraft/auth/steps/GetSkinStep.h @@ -21,7 +21,7 @@ class GetSkinStep : public AuthStep { void onRequestDone(); private: - std::shared_ptr m_response; + std::unique_ptr m_response; Net::Download::Ptr m_request; NetJob::Ptr m_task; }; diff --git a/launcher/minecraft/auth/steps/LauncherLoginStep.cpp b/launcher/minecraft/auth/steps/LauncherLoginStep.cpp index 954f013af..bc9a74ce9 100644 --- a/launcher/minecraft/auth/steps/LauncherLoginStep.cpp +++ b/launcher/minecraft/auth/steps/LauncherLoginStep.cpp @@ -37,8 +37,8 @@ void LauncherLoginStep::perform() }; m_response.reset(new QByteArray()); - m_request = Net::Upload::makeByteArray(url, m_response, requestBody.toUtf8()); - m_request->addHeaderProxy(new Net::RawHeaderProxy(headers)); + m_request = Net::Upload::makeByteArray(url, m_response.get(), requestBody.toUtf8()); + m_request->addHeaderProxy(std::make_unique(headers)); m_task.reset(new NetJob("LauncherLoginStep", APPLICATION->network())); m_task->setAskRetry(false); diff --git a/launcher/minecraft/auth/steps/LauncherLoginStep.h b/launcher/minecraft/auth/steps/LauncherLoginStep.h index 0b5969f2b..7ea06ee1e 100644 --- a/launcher/minecraft/auth/steps/LauncherLoginStep.h +++ b/launcher/minecraft/auth/steps/LauncherLoginStep.h @@ -21,7 +21,7 @@ class LauncherLoginStep : public AuthStep { void onRequestDone(); private: - std::shared_ptr m_response; + std::unique_ptr m_response; Net::Upload::Ptr m_request; NetJob::Ptr m_task; }; diff --git a/launcher/minecraft/auth/steps/MSADeviceCodeStep.cpp b/launcher/minecraft/auth/steps/MSADeviceCodeStep.cpp index 7a4722f21..221e73b80 100644 --- a/launcher/minecraft/auth/steps/MSADeviceCodeStep.cpp +++ b/launcher/minecraft/auth/steps/MSADeviceCodeStep.cpp @@ -67,8 +67,8 @@ void MSADeviceCodeStep::perform() { "Accept", "application/json" }, }; m_response.reset(new QByteArray()); - m_request = Net::Upload::makeByteArray(url, m_response, payload); - m_request->addHeaderProxy(new Net::RawHeaderProxy(headers)); + m_request = Net::Upload::makeByteArray(url, m_response.get(), payload); + m_request->addHeaderProxy(std::make_unique(headers)); m_task.reset(new NetJob("MSADeviceCodeStep", APPLICATION->network())); m_task->setAskRetry(false); @@ -181,8 +181,8 @@ void MSADeviceCodeStep::authenticateUser() { "Accept", "application/json" }, }; m_response.reset(new QByteArray()); - m_request = Net::Upload::makeByteArray(url, m_response, payload); - m_request->addHeaderProxy(new Net::RawHeaderProxy(headers)); + m_request = Net::Upload::makeByteArray(url, m_response.get(), payload); + m_request->addHeaderProxy(std::make_unique(headers)); connect(m_request.get(), &Task::finished, this, &MSADeviceCodeStep::authenticationFinished); diff --git a/launcher/minecraft/auth/steps/MSADeviceCodeStep.h b/launcher/minecraft/auth/steps/MSADeviceCodeStep.h index 7f755563f..62fbbc7a5 100644 --- a/launcher/minecraft/auth/steps/MSADeviceCodeStep.h +++ b/launcher/minecraft/auth/steps/MSADeviceCodeStep.h @@ -72,7 +72,7 @@ class MSADeviceCodeStep : public AuthStep { QTimer m_pool_timer; QTimer m_expiration_timer; - std::shared_ptr m_response; + std::unique_ptr m_response; Net::Upload::Ptr m_request; NetJob::Ptr m_task; }; diff --git a/launcher/minecraft/auth/steps/MSAStep.cpp b/launcher/minecraft/auth/steps/MSAStep.cpp index aa972be71..a66bd3db0 100644 --- a/launcher/minecraft/auth/steps/MSAStep.cpp +++ b/launcher/minecraft/auth/steps/MSAStep.cpp @@ -107,7 +107,7 @@ MSAStep::MSAStep(AccountData* data, bool silent) : AuthStep(data), m_silent(sile m_oauth2.setAccessTokenUrl(QUrl("https://login.microsoftonline.com/consumers/oauth2/v2.0/token")); m_oauth2.setScope("XboxLive.SignIn XboxLive.offline_access"); m_oauth2.setClientIdentifier(m_clientId); - m_oauth2.setNetworkAccessManager(APPLICATION->network().get()); + m_oauth2.setNetworkAccessManager(APPLICATION->network()); connect(&m_oauth2, &QOAuth2AuthorizationCodeFlow::granted, this, [this] { m_data->msaClientID = m_oauth2.clientIdentifier(); diff --git a/launcher/minecraft/auth/steps/MinecraftProfileStep.cpp b/launcher/minecraft/auth/steps/MinecraftProfileStep.cpp index c1529b086..90e49283d 100644 --- a/launcher/minecraft/auth/steps/MinecraftProfileStep.cpp +++ b/launcher/minecraft/auth/steps/MinecraftProfileStep.cpp @@ -22,8 +22,8 @@ void MinecraftProfileStep::perform() { "Authorization", QString("Bearer %1").arg(m_data->yggdrasilToken.token).toUtf8() } }; m_response.reset(new QByteArray()); - m_request = Net::Download::makeByteArray(url, m_response); - m_request->addHeaderProxy(new Net::RawHeaderProxy(headers)); + m_request = Net::Download::makeByteArray(url, m_response.get()); + m_request->addHeaderProxy(std::make_unique(headers)); m_task.reset(new NetJob("MinecraftProfileStep", APPLICATION->network())); m_task->setAskRetry(false); diff --git a/launcher/minecraft/auth/steps/MinecraftProfileStep.h b/launcher/minecraft/auth/steps/MinecraftProfileStep.h index e8b35b875..d6de74731 100644 --- a/launcher/minecraft/auth/steps/MinecraftProfileStep.h +++ b/launcher/minecraft/auth/steps/MinecraftProfileStep.h @@ -21,7 +21,7 @@ class MinecraftProfileStep : public AuthStep { void onRequestDone(); private: - std::shared_ptr m_response; + std::unique_ptr m_response; Net::Download::Ptr m_request; NetJob::Ptr m_task; }; diff --git a/launcher/minecraft/auth/steps/XboxAuthorizationStep.cpp b/launcher/minecraft/auth/steps/XboxAuthorizationStep.cpp index f9de9210b..782ed33a3 100644 --- a/launcher/minecraft/auth/steps/XboxAuthorizationStep.cpp +++ b/launcher/minecraft/auth/steps/XboxAuthorizationStep.cpp @@ -42,8 +42,8 @@ void XboxAuthorizationStep::perform() { "Accept", "application/json" }, }; m_response.reset(new QByteArray()); - m_request = Net::Upload::makeByteArray(url, m_response, xbox_auth_data.toUtf8()); - m_request->addHeaderProxy(new Net::RawHeaderProxy(headers)); + m_request = Net::Upload::makeByteArray(url, m_response.get(), xbox_auth_data.toUtf8()); + m_request->addHeaderProxy(std::make_unique(headers)); m_task.reset(new NetJob("XboxAuthorizationStep", APPLICATION->network())); m_task->setAskRetry(false); diff --git a/launcher/minecraft/auth/steps/XboxAuthorizationStep.h b/launcher/minecraft/auth/steps/XboxAuthorizationStep.h index 8418727c4..a152ed5e6 100644 --- a/launcher/minecraft/auth/steps/XboxAuthorizationStep.h +++ b/launcher/minecraft/auth/steps/XboxAuthorizationStep.h @@ -28,7 +28,7 @@ class XboxAuthorizationStep : public AuthStep { QString m_relyingParty; QString m_authorizationKind; - std::shared_ptr m_response; + std::unique_ptr m_response; Net::Upload::Ptr m_request; NetJob::Ptr m_task; }; diff --git a/launcher/minecraft/auth/steps/XboxProfileStep.cpp b/launcher/minecraft/auth/steps/XboxProfileStep.cpp index b896357c0..ab24c9cd9 100644 --- a/launcher/minecraft/auth/steps/XboxProfileStep.cpp +++ b/launcher/minecraft/auth/steps/XboxProfileStep.cpp @@ -34,8 +34,8 @@ void XboxProfileStep::perform() }; m_response.reset(new QByteArray()); - m_request = Net::Download::makeByteArray(url, m_response); - m_request->addHeaderProxy(new Net::RawHeaderProxy(headers)); + m_request = Net::Download::makeByteArray(url, m_response.get()); + m_request->addHeaderProxy(std::make_unique(headers)); m_task.reset(new NetJob("XboxProfileStep", APPLICATION->network())); m_task->setAskRetry(false); diff --git a/launcher/minecraft/auth/steps/XboxProfileStep.h b/launcher/minecraft/auth/steps/XboxProfileStep.h index f2ab874f2..d447f7a2b 100644 --- a/launcher/minecraft/auth/steps/XboxProfileStep.h +++ b/launcher/minecraft/auth/steps/XboxProfileStep.h @@ -21,7 +21,7 @@ class XboxProfileStep : public AuthStep { void onRequestDone(); private: - std::shared_ptr m_response; + std::unique_ptr m_response; Net::Download::Ptr m_request; NetJob::Ptr m_task; }; diff --git a/launcher/minecraft/auth/steps/XboxUserStep.cpp b/launcher/minecraft/auth/steps/XboxUserStep.cpp index 4e5abb62b..6b8c45b24 100644 --- a/launcher/minecraft/auth/steps/XboxUserStep.cpp +++ b/launcher/minecraft/auth/steps/XboxUserStep.cpp @@ -38,8 +38,8 @@ void XboxUserStep::perform() { "x-xbl-contract-version", "1" } }; m_response.reset(new QByteArray()); - m_request = Net::Upload::makeByteArray(url, m_response, xbox_auth_data.toUtf8()); - m_request->addHeaderProxy(new Net::RawHeaderProxy(headers)); + m_request = Net::Upload::makeByteArray(url, m_response.get(), xbox_auth_data.toUtf8()); + m_request->addHeaderProxy(std::make_unique(headers)); m_task.reset(new NetJob("XboxUserStep", APPLICATION->network())); m_task->setAskRetry(false); diff --git a/launcher/minecraft/auth/steps/XboxUserStep.h b/launcher/minecraft/auth/steps/XboxUserStep.h index f6cc822f2..e3c31ae9d 100644 --- a/launcher/minecraft/auth/steps/XboxUserStep.h +++ b/launcher/minecraft/auth/steps/XboxUserStep.h @@ -21,7 +21,7 @@ class XboxUserStep : public AuthStep { void onRequestDone(); private: - std::shared_ptr m_response; + std::unique_ptr m_response; Net::Upload::Ptr m_request; NetJob::Ptr m_task; }; diff --git a/launcher/minecraft/launch/AutoInstallJava.h b/launcher/minecraft/launch/AutoInstallJava.h index cbfcf5ee7..a4ffdff29 100644 --- a/launcher/minecraft/launch/AutoInstallJava.h +++ b/launcher/minecraft/launch/AutoInstallJava.h @@ -59,7 +59,7 @@ class AutoInstallJava : public LaunchStep { void tryNextMajorJava(); private: - MinecraftInstancePtr m_instance; + MinecraftInstance* m_instance; Task::Ptr m_current_task; qsizetype m_majorJavaVersionIndex = 0; diff --git a/launcher/minecraft/launch/ClaimAccount.cpp b/launcher/minecraft/launch/ClaimAccount.cpp index a3de1516a..eecc5282b 100644 --- a/launcher/minecraft/launch/ClaimAccount.cpp +++ b/launcher/minecraft/launch/ClaimAccount.cpp @@ -15,7 +15,7 @@ ClaimAccount::ClaimAccount(LaunchTask* parent, AuthSessionPtr session) : LaunchS void ClaimAccount::executeTask() { if (m_account) { - lock.reset(new UseLock(m_account)); + lock.reset(new UseLock(m_account.get())); emitSucceeded(); } } diff --git a/launcher/minecraft/launch/ScanModFolders.cpp b/launcher/minecraft/launch/ScanModFolders.cpp index 1a2ddf194..cbe1599cb 100644 --- a/launcher/minecraft/launch/ScanModFolders.cpp +++ b/launcher/minecraft/launch/ScanModFolders.cpp @@ -45,19 +45,19 @@ void ScanModFolders::executeTask() auto m_inst = m_parent->instance(); auto loaders = m_inst->loaderModList(); - connect(loaders.get(), &ModFolderModel::updateFinished, this, &ScanModFolders::modsDone); + connect(loaders, &ModFolderModel::updateFinished, this, &ScanModFolders::modsDone); if (!loaders->update()) { m_modsDone = true; } auto cores = m_inst->coreModList(); - connect(cores.get(), &ModFolderModel::updateFinished, this, &ScanModFolders::coreModsDone); + connect(cores, &ModFolderModel::updateFinished, this, &ScanModFolders::coreModsDone); if (!cores->update()) { m_coreModsDone = true; } auto nils = m_inst->nilModList(); - connect(nils.get(), &ModFolderModel::updateFinished, this, &ScanModFolders::nilModsDone); + connect(nils, &ModFolderModel::updateFinished, this, &ScanModFolders::nilModsDone); if (!nils->update()) { m_nilModsDone = true; } diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index 38ae6c026..b0082653d 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -175,7 +175,7 @@ void ResourceFolderModel::installResourceWithFlameMetadata(QString path, ModPlat }; auto response = std::make_shared(); - auto job = FlameAPI().getProject(vers.addonId.toString(), response); + auto job = FlameAPI().getProject(vers.addonId.toString(), response.get()); connect(job.get(), &Task::failed, this, install); connect(job.get(), &Task::aborted, this, install); connect(job.get(), &Task::succeeded, [response, this, &vers, install, &pack] { diff --git a/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp b/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp index 75815cb44..668209930 100644 --- a/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp +++ b/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp @@ -135,7 +135,7 @@ Task::Ptr GetModDependenciesTask::getProjectInfoTask(std::shared_ptrpack->provider; auto responseInfo = std::make_shared(); - auto info = getAPI(provider)->getProject(pDep->pack->addonId.toString(), responseInfo); + auto info = getAPI(provider)->getProject(pDep->pack->addonId.toString(), responseInfo.get()); connect(info.get(), &NetJob::succeeded, [this, responseInfo, provider, pDep] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*responseInfo, &parse_error); diff --git a/launcher/minecraft/skins/CapeChange.cpp b/launcher/minecraft/skins/CapeChange.cpp index abbaa0b67..84cedb96b 100644 --- a/launcher/minecraft/skins/CapeChange.cpp +++ b/launcher/minecraft/skins/CapeChange.cpp @@ -62,8 +62,8 @@ CapeChange::Ptr CapeChange::make(QString token, QString capeId) auto up = makeShared(capeId); up->m_url = QUrl("https://api.minecraftservices.com/minecraft/profile/capes/active"); up->setObjectName(QString("BYTES:") + up->m_url.toString()); - up->m_sink.reset(new Net::ByteArraySink(std::make_shared())); - up->addHeaderProxy(new Net::RawHeaderProxy(QList{ + up->m_sink.reset(new Net::ByteArraySink(new QByteArray())); + up->addHeaderProxy(std::make_unique(QList{ { "Authorization", QString("Bearer %1").arg(token).toLocal8Bit() }, })); return up; diff --git a/launcher/minecraft/skins/SkinDelete.cpp b/launcher/minecraft/skins/SkinDelete.cpp index 94aca62ca..9c98e3faa 100644 --- a/launcher/minecraft/skins/SkinDelete.cpp +++ b/launcher/minecraft/skins/SkinDelete.cpp @@ -36,7 +36,7 @@ #include "SkinDelete.h" -#include "net/ByteArraySink.h" +#include #include "net/RawHeaderProxy.h" SkinDelete::SkinDelete() : NetRequest() @@ -54,8 +54,8 @@ SkinDelete::Ptr SkinDelete::make(QString token) { auto up = makeShared(); up->m_url = QUrl("https://api.minecraftservices.com/minecraft/profile/skins/active"); - up->m_sink.reset(new Net::ByteArraySink(std::make_shared())); - up->addHeaderProxy(new Net::RawHeaderProxy(QList{ + up->m_sink.reset(new Net::DummySink()); + up->addHeaderProxy(std::make_unique(QList{ { "Authorization", QString("Bearer %1").arg(token).toLocal8Bit() }, })); return up; diff --git a/launcher/minecraft/skins/SkinUpload.cpp b/launcher/minecraft/skins/SkinUpload.cpp index ccc29d281..8399f1f7d 100644 --- a/launcher/minecraft/skins/SkinUpload.cpp +++ b/launcher/minecraft/skins/SkinUpload.cpp @@ -39,7 +39,7 @@ #include #include "FileSystem.h" -#include "net/ByteArraySink.h" +#include "net/DummySink.h" #include "net/RawHeaderProxy.h" SkinUpload::SkinUpload(QString path, QString variant) : NetRequest(), m_path(path), m_variant(variant) @@ -72,8 +72,8 @@ SkinUpload::Ptr SkinUpload::make(QString token, QString path, QString variant) auto up = makeShared(path, variant); up->m_url = QUrl("https://api.minecraftservices.com/minecraft/profile/skins"); up->setObjectName(QString("BYTES:") + up->m_url.toString()); - up->m_sink.reset(new Net::ByteArraySink(std::make_shared())); - up->addHeaderProxy(new Net::RawHeaderProxy(QList{ + up->m_sink.reset(new Net::DummySink()); + up->addHeaderProxy(std::make_unique(QList{ { "Authorization", QString("Bearer %1").arg(token).toLocal8Bit() }, })); return up; diff --git a/launcher/minecraft/update/LibrariesTask.cpp b/launcher/minecraft/update/LibrariesTask.cpp index e64691d51..85f4103cd 100644 --- a/launcher/minecraft/update/LibrariesTask.cpp +++ b/launcher/minecraft/update/LibrariesTask.cpp @@ -31,7 +31,7 @@ void LibrariesTask::executeTask() emitFailed(tr("Null jar is specified in the metadata, aborting.")); return false; } - auto dls = lib->getDownloads(inst->runtimeContext(), metacache.get(), errors, localPath); + auto dls = lib->getDownloads(inst->runtimeContext(), metacache, errors, localPath); for (auto dl : dls) { downloadJob->addNetAction(dl); } diff --git a/launcher/modplatform/CheckUpdateTask.h b/launcher/modplatform/CheckUpdateTask.h index c5beff26c..57f6625a6 100644 --- a/launcher/modplatform/CheckUpdateTask.h +++ b/launcher/modplatform/CheckUpdateTask.h @@ -14,12 +14,12 @@ class CheckUpdateTask : public Task { CheckUpdateTask(QList& resources, std::list& mcVersions, QList loadersList, - std::shared_ptr resourceModel) + ResourceFolderModel* resourceModel) : Task() , m_resources(resources) , m_gameVersions(mcVersions) , m_loadersList(std::move(loadersList)) - , m_resourceModel(std::move(resourceModel)) + , m_resourceModel(resourceModel) {} struct Update { @@ -71,7 +71,7 @@ class CheckUpdateTask : public Task { QList& m_resources; std::list& m_gameVersions; QList m_loadersList; - std::shared_ptr m_resourceModel; + ResourceFolderModel* m_resourceModel; std::vector m_updates; QList> m_deps; diff --git a/launcher/modplatform/EnsureMetadataTask.cpp b/launcher/modplatform/EnsureMetadataTask.cpp index ecf83c7c2..8e2ad744b 100644 --- a/launcher/modplatform/EnsureMetadataTask.cpp +++ b/launcher/modplatform/EnsureMetadataTask.cpp @@ -216,7 +216,7 @@ Task::Ptr EnsureMetadataTask::modrinthVersionsTask() auto hash_type = ModPlatform::ProviderCapabilities::hashType(ModPlatform::ResourceProvider::MODRINTH).first(); auto response = std::make_shared(); - auto ver_task = modrinth_api.currentVersions(m_resources.keys(), hash_type, response); + auto ver_task = modrinth_api.currentVersions(m_resources.keys(), hash_type, response.get()); // Prevents unfortunate timings when aborting the task if (!ver_task) @@ -273,9 +273,9 @@ Task::Ptr EnsureMetadataTask::modrinthProjectsTask() if (addonIds.isEmpty()) { qWarning() << "No addonId found!"; } else if (addonIds.size() == 1) { - proj_task = modrinth_api.getProject(*addonIds.keyBegin(), response); + proj_task = modrinth_api.getProject(*addonIds.keyBegin(), response.get()); } else { - proj_task = modrinth_api.getProjects(addonIds.keys(), response); + proj_task = modrinth_api.getProjects(addonIds.keys(), response.get()); } // Prevents unfortunate timings when aborting the task @@ -348,7 +348,7 @@ Task::Ptr EnsureMetadataTask::flameVersionsTask() fingerprints.push_back(murmur.toUInt()); } - auto ver_task = flame_api.matchFingerprints(fingerprints, response); + auto ver_task = flame_api.matchFingerprints(fingerprints, response.get()); connect(ver_task.get(), &Task::succeeded, this, [this, response] { QJsonParseError parse_error{}; @@ -423,9 +423,9 @@ Task::Ptr EnsureMetadataTask::flameProjectsTask() if (addonIds.isEmpty()) { qWarning() << "No addonId found!"; } else if (addonIds.size() == 1) { - proj_task = flame_api.getProject(*addonIds.keyBegin(), response); + proj_task = flame_api.getProject(*addonIds.keyBegin(), response.get()); } else { - proj_task = flame_api.getProjects(addonIds.keys(), response); + proj_task = flame_api.getProjects(addonIds.keys(), response.get()); } // Prevents unfortunate timings when aborting the task diff --git a/launcher/modplatform/ResourceAPI.cpp b/launcher/modplatform/ResourceAPI.cpp index 5aff9d217..cdc1d8090 100644 --- a/launcher/modplatform/ResourceAPI.cpp +++ b/launcher/modplatform/ResourceAPI.cpp @@ -21,7 +21,7 @@ Task::Ptr ResourceAPI::searchProjects(SearchArgs&& args, Callback(); auto netJob = makeShared(QString("%1::Search").arg(debugName()), APPLICATION->network()); - netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(search_url), response)); + netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(search_url), response.get())); QObject::connect(netJob.get(), &NetJob::succeeded, [this, response, callbacks] { QJsonParseError parse_error{}; @@ -86,7 +86,7 @@ Task::Ptr ResourceAPI::getProjectVersions(VersionSearchArgs&& args, Callback(QString("%1::Versions").arg(args.pack->name), APPLICATION->network()); auto response = std::make_shared(); - netJob->addNetAction(Net::ApiDownload::makeByteArray(versions_url, response)); + netJob->addNetAction(Net::ApiDownload::makeByteArray(versions_url, response.get())); QObject::connect(netJob.get(), &NetJob::succeeded, [this, response, callbacks, args] { QJsonParseError parse_error{}; @@ -149,7 +149,7 @@ Task::Ptr ResourceAPI::getProjectVersions(VersionSearchArgs&& args, Callback&& callbacks) const { auto response = std::make_shared(); - auto job = getProject(args.pack->addonId.toString(), response); + auto job = getProject(args.pack->addonId.toString(), response.get()); QObject::connect(job.get(), &NetJob::succeeded, [this, response, callbacks, args] { auto pack = args.pack; @@ -206,7 +206,7 @@ Task::Ptr ResourceAPI::getDependencyVersion(DependencySearchArgs&& args, Callbac auto netJob = makeShared(QString("%1::Dependency").arg(args.dependency.addonId.toString()), APPLICATION->network()); auto response = std::make_shared(); - netJob->addNetAction(Net::ApiDownload::makeByteArray(versions_url, response)); + netJob->addNetAction(Net::ApiDownload::makeByteArray(versions_url, response.get())); QObject::connect(netJob.get(), &NetJob::succeeded, [this, response, callbacks, args] { QJsonParseError parse_error{}; @@ -284,7 +284,7 @@ QString ResourceAPI::mapMCVersionToModrinth(Version v) const return verStr; } -Task::Ptr ResourceAPI::getProject(QString addonId, std::shared_ptr response) const +Task::Ptr ResourceAPI::getProject(QString addonId, QByteArray* response) const { auto project_url_optional = getInfoURL(addonId); if (!project_url_optional.has_value()) diff --git a/launcher/modplatform/ResourceAPI.h b/launcher/modplatform/ResourceAPI.h index ca77dc8a7..84bbe8bf0 100644 --- a/launcher/modplatform/ResourceAPI.h +++ b/launcher/modplatform/ResourceAPI.h @@ -112,8 +112,8 @@ class ResourceAPI { public slots: virtual Task::Ptr searchProjects(SearchArgs&&, Callback>&&) const; - virtual Task::Ptr getProject(QString addonId, std::shared_ptr response) const; - virtual Task::Ptr getProjects(QStringList addonIds, std::shared_ptr response) const = 0; + virtual Task::Ptr getProject(QString addonId, QByteArray* response) const; + virtual Task::Ptr getProjects(QStringList addonIds, QByteArray* response) const = 0; virtual Task::Ptr getProjectInfo(ProjectInfoArgs&&, Callback&&) const; Task::Ptr getProjectVersions(VersionSearchArgs&& args, Callback>&& callbacks) const; diff --git a/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp b/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp index f107e4700..66dc95503 100644 --- a/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp +++ b/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp @@ -87,7 +87,7 @@ void PackInstallTask::executeTask() NetJob::Ptr netJob{ new NetJob("ATLauncher::VersionFetch", APPLICATION->network()) }; auto searchUrl = QString(BuildConfig.ATL_DOWNLOAD_SERVER_URL + "packs/%1/versions/%2/Configs.json").arg(m_pack_safe_name).arg(m_version_name); - netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl), response)); + netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl), response.get())); connect(netJob.get(), &NetJob::succeeded, this, &PackInstallTask::onDownloadSucceeded); connect(netJob.get(), &NetJob::failed, this, &PackInstallTask::onDownloadFailed); @@ -423,7 +423,7 @@ QString PackInstallTask::detectLibrary(const VersionLibrary& library) return "org.multimc.atlauncher:" + library.md5 + ":1"; } -bool PackInstallTask::createLibrariesComponent(QString instanceRoot, std::shared_ptr profile) +bool PackInstallTask::createLibrariesComponent(QString instanceRoot, PackProfile* profile) { if (m_version.libraries.isEmpty()) { return true; @@ -532,11 +532,11 @@ bool PackInstallTask::createLibrariesComponent(QString instanceRoot, std::shared file.write(OneSixVersionFormat::versionFileToJson(f).toJson()); file.close(); - profile->appendComponent(ComponentPtr{ new Component(profile.get(), target_id, f) }); + profile->appendComponent(ComponentPtr{ new Component(profile, target_id, f) }); return true; } -bool PackInstallTask::createPackComponent(QString instanceRoot, std::shared_ptr profile) +bool PackInstallTask::createPackComponent(QString instanceRoot, PackProfile* profile) { if (m_version.mainClass.mainClass.isEmpty() && m_version.extraArguments.arguments.isEmpty()) { return true; @@ -621,7 +621,7 @@ bool PackInstallTask::createPackComponent(QString instanceRoot, std::shared_ptr< file.write(OneSixVersionFormat::versionFileToJson(f).toJson()); file.close(); - profile->appendComponent(ComponentPtr{ new Component(profile.get(), target_id, f) }); + profile->appendComponent(ComponentPtr{ new Component(profile, target_id, f) }); return true; } @@ -988,10 +988,10 @@ void PackInstallTask::install() setStatus(tr("Installing modpack")); auto instanceConfigPath = FS::PathCombine(m_stagingPath, "instance.cfg"); - auto instanceSettings = std::make_shared(instanceConfigPath); + auto instanceSettings = std::make_unique(instanceConfigPath); instanceSettings->suspendSave(); - MinecraftInstance instance(m_globalSettings, instanceSettings, m_stagingPath); + MinecraftInstance instance(m_globalSettings, std::move(instanceSettings), m_stagingPath); auto components = instance.getPackProfile(); components->buildingFromScratch(); @@ -1047,7 +1047,7 @@ void PackInstallTask::install() instance.setName(name()); instance.setIconKey(m_instIcon); instance.setManagedPack("atlauncher", m_pack_safe_name, m_pack_name, m_version_name, m_version_name); - instanceSettings->resumeSave(); + instance.settings()->resumeSave(); jarmods.clear(); emitSucceeded(); diff --git a/launcher/modplatform/atlauncher/ATLPackInstallTask.h b/launcher/modplatform/atlauncher/ATLPackInstallTask.h index 8024286e8..695668731 100644 --- a/launcher/modplatform/atlauncher/ATLPackInstallTask.h +++ b/launcher/modplatform/atlauncher/ATLPackInstallTask.h @@ -107,8 +107,8 @@ class PackInstallTask : public InstanceTask { QString getVersionForLoader(QString uid); QString detectLibrary(const VersionLibrary& library); - bool createLibrariesComponent(QString instanceRoot, std::shared_ptr profile); - bool createPackComponent(QString instanceRoot, std::shared_ptr profile); + bool createLibrariesComponent(QString instanceRoot, PackProfile* profile); + bool createPackComponent(QString instanceRoot, PackProfile* profile); void deleteExistingFiles(); void installConfigs(); @@ -125,7 +125,7 @@ class PackInstallTask : public InstanceTask { bool abortable = false; NetJob::Ptr jobPtr; - std::shared_ptr response = std::make_shared(); + std::unique_ptr response = std::make_unique(); InstallMode m_install_mode; QString m_pack_name; diff --git a/launcher/modplatform/flame/FileResolvingTask.cpp b/launcher/modplatform/flame/FileResolvingTask.cpp index 6dacb43de..acffc2706 100644 --- a/launcher/modplatform/flame/FileResolvingTask.cpp +++ b/launcher/modplatform/flame/FileResolvingTask.cpp @@ -57,7 +57,7 @@ void Flame::FileResolvingTask::executeTask() for (auto file : m_manifest.files) { fileIds.push_back(QString::number(file.fileId)); } - m_task = flameAPI.getFiles(fileIds, m_result); + m_task = flameAPI.getFiles(fileIds, m_result.get()); auto step_progress = std::make_shared(); connect(m_task.get(), &Task::finished, this, [this, step_progress]() { @@ -154,7 +154,7 @@ void Flame::FileResolvingTask::netJobFinished() return; } m_result.reset(new QByteArray()); - m_task = modrinthAPI.currentVersions(hashes, "sha1", m_result); + m_task = modrinthAPI.currentVersions(hashes, "sha1", m_result.get()); (dynamic_cast(m_task.get()))->setAskRetry(false); auto step_progress = std::make_shared(); connect(m_task.get(), &Task::finished, this, [this, step_progress]() { @@ -227,7 +227,7 @@ void Flame::FileResolvingTask::getFlameProjects() addonIds.push_back(QString::number(file.projectId)); } - m_task = flameAPI.getProjects(addonIds, m_result); + m_task = flameAPI.getProjects(addonIds, m_result.get()); auto step_progress = std::make_shared(); connect(m_task.get(), &Task::succeeded, this, [this, step_progress] { diff --git a/launcher/modplatform/flame/FileResolvingTask.h b/launcher/modplatform/flame/FileResolvingTask.h index 3fe8dfb1a..681d7660a 100644 --- a/launcher/modplatform/flame/FileResolvingTask.h +++ b/launcher/modplatform/flame/FileResolvingTask.h @@ -43,7 +43,7 @@ class FileResolvingTask : public Task { private: /* data */ Flame::Manifest m_manifest; - std::shared_ptr m_result; + std::unique_ptr m_result; Task::Ptr m_task; }; } // namespace Flame diff --git a/launcher/modplatform/flame/FlameAPI.cpp b/launcher/modplatform/flame/FlameAPI.cpp index 2b634efef..6cf907976 100644 --- a/launcher/modplatform/flame/FlameAPI.cpp +++ b/launcher/modplatform/flame/FlameAPI.cpp @@ -15,7 +15,7 @@ #include "net/ApiUpload.h" #include "net/NetJob.h" -Task::Ptr FlameAPI::matchFingerprints(const QList& fingerprints, std::shared_ptr response) +Task::Ptr FlameAPI::matchFingerprints(const QList& fingerprints, QByteArray* response) { auto netJob = makeShared(QString("Flame::MatchFingerprints"), APPLICATION->network()); @@ -45,7 +45,7 @@ QString FlameAPI::getModFileChangelog(int modId, int fileId) netJob->addNetAction(Net::ApiDownload::makeByteArray( QString(BuildConfig.FLAME_BASE_URL + "/mods/%1/files/%2/changelog") .arg(QString::fromStdString(std::to_string(modId)), QString::fromStdString(std::to_string(fileId))), - response)); + response.get())); QObject::connect(netJob.get(), &NetJob::succeeded, [&netJob, response, &changelog] { QJsonParseError parse_error{}; @@ -78,7 +78,7 @@ QString FlameAPI::getModDescription(int modId) auto netJob = makeShared(QString("Flame::ModDescription"), APPLICATION->network()); auto response = std::make_shared(); netJob->addNetAction(Net::ApiDownload::makeByteArray( - QString(BuildConfig.FLAME_BASE_URL + "/mods/%1/description").arg(QString::number(modId)), response)); + QString(BuildConfig.FLAME_BASE_URL + "/mods/%1/description").arg(QString::number(modId)), response.get())); QObject::connect(netJob.get(), &NetJob::succeeded, [&netJob, response, &description] { QJsonParseError parse_error{}; @@ -103,7 +103,7 @@ QString FlameAPI::getModDescription(int modId) return description; } -Task::Ptr FlameAPI::getProjects(QStringList addonIds, std::shared_ptr response) const +Task::Ptr FlameAPI::getProjects(QStringList addonIds, QByteArray* response) const { auto netJob = makeShared(QString("Flame::GetProjects"), APPLICATION->network()); @@ -125,7 +125,7 @@ Task::Ptr FlameAPI::getProjects(QStringList addonIds, std::shared_ptr response) const +Task::Ptr FlameAPI::getFiles(const QStringList& fileIds, QByteArray* response) const { auto netJob = makeShared(QString("Flame::GetFiles"), APPLICATION->network()); @@ -147,7 +147,7 @@ Task::Ptr FlameAPI::getFiles(const QStringList& fileIds, std::shared_ptr response) const +Task::Ptr FlameAPI::getFile(const QString& addonId, const QString& fileId, QByteArray* response) const { auto netJob = makeShared(QString("Flame::GetFile"), APPLICATION->network()); netJob->addNetAction( @@ -171,7 +171,7 @@ QList FlameAPI::getSortingMethods() const { 8, "GameVersion", QObject::tr("Sort by Game Version") } }; } -Task::Ptr FlameAPI::getCategories(std::shared_ptr response, ModPlatform::ResourceType type) +Task::Ptr FlameAPI::getCategories(QByteArray* response, ModPlatform::ResourceType type) { auto netJob = makeShared(QString("Flame::GetCategories"), APPLICATION->network()); netJob->addNetAction(Net::ApiDownload::makeByteArray( @@ -180,12 +180,12 @@ Task::Ptr FlameAPI::getCategories(std::shared_ptr response, ModPlatf return netJob; } -Task::Ptr FlameAPI::getModCategories(std::shared_ptr response) +Task::Ptr FlameAPI::getModCategories(QByteArray* response) { return getCategories(response, ModPlatform::ResourceType::Mod); } -QList FlameAPI::loadModCategories(std::shared_ptr response) +QList FlameAPI::loadModCategories(QByteArray* response) { QList categories; QJsonParseError parse_error{}; diff --git a/launcher/modplatform/flame/FlameAPI.h b/launcher/modplatform/flame/FlameAPI.h index 8bcb3ff46..a5f2146c0 100644 --- a/launcher/modplatform/flame/FlameAPI.h +++ b/launcher/modplatform/flame/FlameAPI.h @@ -23,14 +23,14 @@ class FlameAPI : public ResourceAPI { ModPlatform::ModLoaderTypes fallback, bool checkLoaders); - Task::Ptr getProjects(QStringList addonIds, std::shared_ptr response) const override; - Task::Ptr matchFingerprints(const QList& fingerprints, std::shared_ptr response); - Task::Ptr getFiles(const QStringList& fileIds, std::shared_ptr response) const; - Task::Ptr getFile(const QString& addonId, const QString& fileId, std::shared_ptr response) const; + Task::Ptr getProjects(QStringList addonIds, QByteArray* response) const override; + Task::Ptr matchFingerprints(const QList& fingerprints, QByteArray* response); + Task::Ptr getFiles(const QStringList& fileIds, QByteArray* response) const; + Task::Ptr getFile(const QString& addonId, const QString& fileId, QByteArray* response) const; - static Task::Ptr getCategories(std::shared_ptr response, ModPlatform::ResourceType type); - static Task::Ptr getModCategories(std::shared_ptr response); - static QList loadModCategories(std::shared_ptr response); + static Task::Ptr getCategories(QByteArray* response, ModPlatform::ResourceType type); + static Task::Ptr getModCategories(QByteArray* response); + static QList loadModCategories(QByteArray* response); QList getSortingMethods() const override; diff --git a/launcher/modplatform/flame/FlameCheckUpdate.cpp b/launcher/modplatform/flame/FlameCheckUpdate.cpp index 937f3dc7a..58dd0ce33 100644 --- a/launcher/modplatform/flame/FlameCheckUpdate.cpp +++ b/launcher/modplatform/flame/FlameCheckUpdate.cpp @@ -53,16 +53,16 @@ void FlameCheckUpdate::executeTask() continue; auto response = std::make_shared(); - auto task = Net::ApiDownload::makeByteArray(versionsUrlOptional.value(), response); + auto task = Net::ApiDownload::makeByteArray(versionsUrlOptional.value(), response.get()); - connect(task.get(), &Task::succeeded, this, [this, resource, response] { getLatestVersionCallback(resource, response); }); + connect(task.get(), &Task::succeeded, this, [this, resource, response] { getLatestVersionCallback(resource, response.get()); }); netJob->addNetAction(task); } m_task.reset(netJob); m_task->start(); } -void FlameCheckUpdate::getLatestVersionCallback(Resource* resource, std::shared_ptr response) +void FlameCheckUpdate::getLatestVersionCallback(Resource* resource, QByteArray* response) { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); @@ -146,9 +146,9 @@ void FlameCheckUpdate::collectBlockedMods() emitSucceeded(); return; } else if (addonIds.size() == 1) { - projTask = api.getProject(*addonIds.begin(), response); + projTask = api.getProject(*addonIds.begin(), response.get()); } else { - projTask = api.getProjects(addonIds, response); + projTask = api.getProjects(addonIds, response.get()); } connect(projTask.get(), &Task::succeeded, this, [this, response, addonIds, quickSearch] { @@ -200,4 +200,4 @@ void FlameCheckUpdate::collectBlockedMods() connect(projTask.get(), &Task::details, this, &FlameCheckUpdate::setDetails); m_task.reset(projTask); m_task->start(); -} \ No newline at end of file +} diff --git a/launcher/modplatform/flame/FlameCheckUpdate.h b/launcher/modplatform/flame/FlameCheckUpdate.h index eb80ce47c..d4b97a2b7 100644 --- a/launcher/modplatform/flame/FlameCheckUpdate.h +++ b/launcher/modplatform/flame/FlameCheckUpdate.h @@ -9,8 +9,8 @@ class FlameCheckUpdate : public CheckUpdateTask { FlameCheckUpdate(QList& resources, std::list& mcVersions, QList loadersList, - std::shared_ptr resourceModel) - : CheckUpdateTask(resources, mcVersions, std::move(loadersList), std::move(resourceModel)) + ResourceFolderModel* resourceModel) + : CheckUpdateTask(resources, mcVersions, std::move(loadersList), resourceModel) {} public slots: @@ -19,7 +19,7 @@ class FlameCheckUpdate : public CheckUpdateTask { protected slots: void executeTask() override; private slots: - void getLatestVersionCallback(Resource* resource, std::shared_ptr response); + void getLatestVersionCallback(Resource* resource, QByteArray* response); void collectBlockedMods(); private: diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index caf75fe6c..967eab8d3 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -91,7 +91,7 @@ bool FlameCreationTask::updateInstance() auto instance_list = APPLICATION->instances(); // FIXME: How to handle situations when there's more than one install already for a given modpack? - InstancePtr inst; + BaseInstance* inst; if (auto original_id = originalInstanceID(); !original_id.isEmpty()) { inst = instance_list->getInstanceById(original_id); Q_ASSERT(inst); @@ -185,7 +185,7 @@ bool FlameCreationTask::updateInstance() } auto raw_response = std::make_shared(); - auto job = api.getFiles(fileIds, raw_response); + auto job = api.getFiles(fileIds, raw_response.get()); QEventLoop loop; @@ -386,8 +386,8 @@ bool FlameCreationTask::createInstance() } QString configPath = FS::PathCombine(m_stagingPath, "instance.cfg"); - auto instanceSettings = std::make_shared(configPath); - MinecraftInstance instance(m_globalSettings, instanceSettings, m_stagingPath); + auto instanceSettings = std::make_unique(configPath); + MinecraftInstance instance(m_globalSettings, std::move(instanceSettings), m_stagingPath); auto mcVersion = m_pack.minecraft.version; // Hack to correct some 'special sauce'... diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.h b/launcher/modplatform/flame/FlameInstanceCreationTask.h index e41ce742e..2fe81a909 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.h +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.h @@ -52,7 +52,7 @@ class FlameCreationTask final : public InstanceCreationTask { public: FlameCreationTask(const QString& staging_path, - SettingsObjectPtr global_settings, + SettingsObject* global_settings, QWidget* parent, QString id, QString version_id, @@ -91,7 +91,7 @@ class FlameCreationTask final : public InstanceCreationTask { QList> m_otherResources; - std::optional m_instance; + std::optional m_instance; QStringList m_selectedOptionalMods; }; diff --git a/launcher/modplatform/flame/FlamePackExportTask.cpp b/launcher/modplatform/flame/FlamePackExportTask.cpp index d63eb709f..b1eba63a0 100644 --- a/launcher/modplatform/flame/FlamePackExportTask.cpp +++ b/launcher/modplatform/flame/FlamePackExportTask.cpp @@ -77,7 +77,7 @@ void FlamePackExportTask::collectFiles() resolvedFiles.clear(); m_options.instance->loaderModList()->update(); - connect(m_options.instance->loaderModList().get(), &ModFolderModel::updateFinished, this, &FlamePackExportTask::collectHashes); + connect(m_options.instance->loaderModList(), &ModFolderModel::updateFinished, this, &FlamePackExportTask::collectHashes); } void FlamePackExportTask::collectHashes() @@ -174,7 +174,7 @@ void FlamePackExportTask::makeApiRequest() fingerprints.push_back(murmur.toUInt()); } - task.reset(api.matchFingerprints(fingerprints, response)); + task.reset(api.matchFingerprints(fingerprints, response.get())); connect(task.get(), &Task::succeeded, this, [this, response] { QJsonParseError parseError{}; @@ -252,9 +252,9 @@ void FlamePackExportTask::getProjectsInfo() buildZip(); return; } else if (addonIds.size() == 1) { - projTask = api.getProject(*addonIds.begin(), response); + projTask = api.getProject(*addonIds.begin(), response.get()); } else { - projTask = api.getProjects(addonIds, response); + projTask = api.getProjects(addonIds, response.get()); } connect(projTask.get(), &Task::succeeded, this, [this, response, addonIds] { diff --git a/launcher/modplatform/flame/FlamePackExportTask.h b/launcher/modplatform/flame/FlamePackExportTask.h index e3d4c74a7..f47041704 100644 --- a/launcher/modplatform/flame/FlamePackExportTask.h +++ b/launcher/modplatform/flame/FlamePackExportTask.h @@ -29,7 +29,7 @@ struct FlamePackExportOptions { QString version; QString author; bool optionalFiles; - MinecraftInstancePtr instance; + MinecraftInstance* instance; QString output; MMCZip::FilterFileFunction filter; int recommendedRAM; diff --git a/launcher/modplatform/import_ftb/PackInstallTask.cpp b/launcher/modplatform/import_ftb/PackInstallTask.cpp index 3851e198c..7a31d92a5 100644 --- a/launcher/modplatform/import_ftb/PackInstallTask.cpp +++ b/launcher/modplatform/import_ftb/PackInstallTask.cpp @@ -51,9 +51,9 @@ void PackInstallTask::copySettings() setStatus(tr("Copying settings...")); progress(2, 2); QString instanceConfigPath = FS::PathCombine(m_stagingPath, "instance.cfg"); - auto instanceSettings = std::make_shared(instanceConfigPath); + auto instanceSettings = std::make_unique(instanceConfigPath); instanceSettings->suspendSave(); - MinecraftInstance instance(m_globalSettings, instanceSettings, m_stagingPath); + MinecraftInstance instance(m_globalSettings, std::move(instanceSettings), m_stagingPath); instance.settings()->set("InstanceType", "OneSix"); instance.settings()->set("totalTimePlayed", m_pack.totalPlayTime / 1000); @@ -108,7 +108,7 @@ void PackInstallTask::copySettings() if (m_instIcon == "default") m_instIcon = "ftb_logo"; instance.setIconKey(m_instIcon); - instanceSettings->resumeSave(); + instance.settings()->resumeSave(); emitSucceeded(); } diff --git a/launcher/modplatform/legacy_ftb/PackFetchTask.cpp b/launcher/modplatform/legacy_ftb/PackFetchTask.cpp index 717e63084..43a5fbfa2 100644 --- a/launcher/modplatform/legacy_ftb/PackFetchTask.cpp +++ b/launcher/modplatform/legacy_ftb/PackFetchTask.cpp @@ -53,11 +53,11 @@ void PackFetchTask::fetch() QUrl publicPacksUrl = QUrl(BuildConfig.LEGACY_FTB_CDN_BASE_URL + "static/modpacks.xml"); qDebug() << "Downloading public version info from" << publicPacksUrl.toString(); - jobPtr->addNetAction(Net::ApiDownload::makeByteArray(publicPacksUrl, publicModpacksXmlFileData)); + jobPtr->addNetAction(Net::ApiDownload::makeByteArray(publicPacksUrl, publicModpacksXmlFileData.get())); QUrl thirdPartyUrl = QUrl(BuildConfig.LEGACY_FTB_CDN_BASE_URL + "static/thirdparty.xml"); qDebug() << "Downloading thirdparty version info from" << thirdPartyUrl.toString(); - jobPtr->addNetAction(Net::Download::makeByteArray(thirdPartyUrl, thirdPartyModpacksXmlFileData)); + jobPtr->addNetAction(Net::Download::makeByteArray(thirdPartyUrl, thirdPartyModpacksXmlFileData.get())); connect(jobPtr.get(), &NetJob::succeeded, this, &PackFetchTask::fileDownloadFinished); connect(jobPtr.get(), &NetJob::failed, this, &PackFetchTask::fileDownloadFailed); @@ -73,7 +73,7 @@ void PackFetchTask::fetchPrivate(const QStringList& toFetch) for (auto& packCode : toFetch) { auto data = std::make_shared(); NetJob* job = new NetJob("Fetching private pack", m_network); - job->addNetAction(Net::ApiDownload::makeByteArray(privatePackBaseUrl.arg(packCode), data)); + job->addNetAction(Net::ApiDownload::makeByteArray(privatePackBaseUrl.arg(packCode), data.get())); job->setAskRetry(false); connect(job, &NetJob::succeeded, this, [this, job, data, packCode] { diff --git a/launcher/modplatform/legacy_ftb/PackFetchTask.h b/launcher/modplatform/legacy_ftb/PackFetchTask.h index 4c7a8f6aa..dd119c068 100644 --- a/launcher/modplatform/legacy_ftb/PackFetchTask.h +++ b/launcher/modplatform/legacy_ftb/PackFetchTask.h @@ -13,18 +13,18 @@ class PackFetchTask : public QObject { Q_OBJECT public: - PackFetchTask(shared_qobject_ptr network) : QObject(nullptr), m_network(network) {}; + PackFetchTask(QNetworkAccessManager* network) : QObject(nullptr), m_network(network) {}; virtual ~PackFetchTask() = default; void fetch(); void fetchPrivate(const QStringList& toFetch); private: - shared_qobject_ptr m_network; + QNetworkAccessManager* m_network; NetJob::Ptr jobPtr; - std::shared_ptr publicModpacksXmlFileData = std::make_shared(); - std::shared_ptr thirdPartyModpacksXmlFileData = std::make_shared(); + std::unique_ptr publicModpacksXmlFileData = std::make_unique(); + std::unique_ptr thirdPartyModpacksXmlFileData = std::make_unique(); bool parseAndAddPacks(QByteArray& data, PackType packType, ModpackList& list); ModpackList publicPacks; diff --git a/launcher/modplatform/legacy_ftb/PackInstallTask.cpp b/launcher/modplatform/legacy_ftb/PackInstallTask.cpp index 33c0c38b6..ef1816557 100644 --- a/launcher/modplatform/legacy_ftb/PackInstallTask.cpp +++ b/launcher/modplatform/legacy_ftb/PackInstallTask.cpp @@ -52,7 +52,7 @@ namespace LegacyFTB { -PackInstallTask::PackInstallTask(shared_qobject_ptr network, const Modpack& pack, QString version) +PackInstallTask::PackInstallTask(QNetworkAccessManager* network, const Modpack& pack, QString version) { m_pack = pack; m_version = version; @@ -133,10 +133,10 @@ void PackInstallTask::install() } QString instanceConfigPath = FS::PathCombine(m_stagingPath, "instance.cfg"); - auto instanceSettings = std::make_shared(instanceConfigPath); + auto instanceSettings = std::make_unique(instanceConfigPath); instanceSettings->suspendSave(); - MinecraftInstance instance(m_globalSettings, instanceSettings, m_stagingPath); + MinecraftInstance instance(m_globalSettings, std::move(instanceSettings), m_stagingPath); auto components = instance.getPackProfile(); components->buildingFromScratch(); components->setComponentVersion("net.minecraft", m_pack.mcVersion, true); @@ -204,7 +204,7 @@ void PackInstallTask::install() m_instIcon = "ftb_logo"; } instance.setIconKey(m_instIcon); - instanceSettings->resumeSave(); + instance.settings()->resumeSave(); emitSucceeded(); } diff --git a/launcher/modplatform/legacy_ftb/PackInstallTask.h b/launcher/modplatform/legacy_ftb/PackInstallTask.h index 6db6cb712..98777214f 100644 --- a/launcher/modplatform/legacy_ftb/PackInstallTask.h +++ b/launcher/modplatform/legacy_ftb/PackInstallTask.h @@ -14,7 +14,7 @@ class PackInstallTask : public InstanceTask { Q_OBJECT public: - explicit PackInstallTask(shared_qobject_ptr network, const Modpack& pack, QString version); + explicit PackInstallTask(QNetworkAccessManager* network, const Modpack& pack, QString version); virtual ~PackInstallTask() {} bool canAbort() const override { return true; } @@ -35,7 +35,7 @@ class PackInstallTask : public InstanceTask { void onUnzipCanceled(); private: /* data */ - shared_qobject_ptr m_network; + QNetworkAccessManager* m_network; bool abortable = false; QFuture> m_extractFuture; QFutureWatcher> m_extractFutureWatcher; diff --git a/launcher/modplatform/modrinth/ModrinthAPI.cpp b/launcher/modplatform/modrinth/ModrinthAPI.cpp index f82d75a8b..ecbba4c75 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.cpp +++ b/launcher/modplatform/modrinth/ModrinthAPI.cpp @@ -11,7 +11,7 @@ #include "net/NetJob.h" #include "net/Upload.h" -Task::Ptr ModrinthAPI::currentVersion(QString hash, QString hash_format, std::shared_ptr response) +Task::Ptr ModrinthAPI::currentVersion(QString hash, QString hash_format, QByteArray* response) { auto netJob = makeShared(QString("Modrinth::GetCurrentVersion"), APPLICATION->network()); @@ -21,7 +21,7 @@ Task::Ptr ModrinthAPI::currentVersion(QString hash, QString hash_format, std::sh return netJob; } -Task::Ptr ModrinthAPI::currentVersions(const QStringList& hashes, QString hash_format, std::shared_ptr response) +Task::Ptr ModrinthAPI::currentVersions(const QStringList& hashes, QString hash_format, QByteArray* response) { auto netJob = makeShared(QString("Modrinth::GetCurrentVersions"), APPLICATION->network()); @@ -42,7 +42,7 @@ Task::Ptr ModrinthAPI::latestVersion(QString hash, QString hash_format, std::optional> mcVersions, std::optional loaders, - std::shared_ptr response) + QByteArray* response) { auto netJob = makeShared(QString("Modrinth::GetLatestVersion"), APPLICATION->network()); @@ -72,7 +72,7 @@ Task::Ptr ModrinthAPI::latestVersions(const QStringList& hashes, QString hash_format, std::optional> mcVersions, std::optional loaders, - std::shared_ptr response) + QByteArray* response) { auto netJob = makeShared(QString("Modrinth::GetLatestVersions"), APPLICATION->network()); @@ -101,7 +101,7 @@ Task::Ptr ModrinthAPI::latestVersions(const QStringList& hashes, return netJob; } -Task::Ptr ModrinthAPI::getProjects(QStringList addonIds, std::shared_ptr response) const +Task::Ptr ModrinthAPI::getProjects(QStringList addonIds, QByteArray* response) const { auto netJob = makeShared(QString("Modrinth::GetProjects"), APPLICATION->network()); auto searchUrl = getMultipleModInfoURL(addonIds); @@ -121,7 +121,7 @@ QList ModrinthAPI::getSortingMethods() const { 5, "updated", QObject::tr("Sort by Last Updated") } }; } -Task::Ptr ModrinthAPI::getModCategories(std::shared_ptr response) +Task::Ptr ModrinthAPI::getModCategories(QByteArray* response) { auto netJob = makeShared(QString("Modrinth::GetCategories"), APPLICATION->network()); netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(BuildConfig.MODRINTH_PROD_URL + "/tag/category"), response)); @@ -129,7 +129,7 @@ Task::Ptr ModrinthAPI::getModCategories(std::shared_ptr response) return netJob; } -QList ModrinthAPI::loadCategories(std::shared_ptr response, QString projectType) +QList ModrinthAPI::loadCategories(QByteArray* response, QString projectType) { QList categories; QJsonParseError parse_error{}; @@ -159,7 +159,7 @@ QList ModrinthAPI::loadCategories(std::shared_ptr ModrinthAPI::loadModCategories(std::shared_ptr response) +QList ModrinthAPI::loadModCategories(QByteArray* response) { return loadCategories(response, "mod"); }; diff --git a/launcher/modplatform/modrinth/ModrinthAPI.h b/launcher/modplatform/modrinth/ModrinthAPI.h index 1990350d4..acfe396b7 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.h +++ b/launcher/modplatform/modrinth/ModrinthAPI.h @@ -14,27 +14,27 @@ class ModrinthAPI : public ResourceAPI { public: - Task::Ptr currentVersion(QString hash, QString hash_format, std::shared_ptr response); + Task::Ptr currentVersion(QString hash, QString hash_format, QByteArray* response); - Task::Ptr currentVersions(const QStringList& hashes, QString hash_format, std::shared_ptr response); + Task::Ptr currentVersions(const QStringList& hashes, QString hash_format, QByteArray* response); Task::Ptr latestVersion(QString hash, QString hash_format, std::optional> mcVersions, std::optional loaders, - std::shared_ptr response); + QByteArray* response); Task::Ptr latestVersions(const QStringList& hashes, QString hash_format, std::optional> mcVersions, std::optional loaders, - std::shared_ptr response); + QByteArray* response); - Task::Ptr getProjects(QStringList addonIds, std::shared_ptr response) const override; + Task::Ptr getProjects(QStringList addonIds, QByteArray* response) const override; - static Task::Ptr getModCategories(std::shared_ptr response); - static QList loadCategories(std::shared_ptr response, QString projectType); - static QList loadModCategories(std::shared_ptr response); + static Task::Ptr getModCategories(QByteArray* response); + static QList loadCategories(QByteArray* response, QString projectType); + static QList loadModCategories(QByteArray* response); public: auto getSortingMethods() const -> QList override; diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp index 6683a0ed5..b24da6fc9 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp @@ -18,8 +18,8 @@ static ModrinthAPI api; ModrinthCheckUpdate::ModrinthCheckUpdate(QList& resources, std::list& mcVersions, QList loadersList, - std::shared_ptr resourceModel) - : CheckUpdateTask(resources, mcVersions, std::move(loadersList), std::move(resourceModel)) + ResourceFolderModel* resourceModel) + : CheckUpdateTask(resources, mcVersions, std::move(loadersList), resourceModel) , m_hashType(ModPlatform::ProviderCapabilities::hashType(ModPlatform::ResourceProvider::MODRINTH).first()) { if (!m_loadersList.isEmpty()) { // this is for mods so append all the other posible loaders to the initial list @@ -97,9 +97,9 @@ void ModrinthCheckUpdate::getUpdateModsForLoader(std::optionalstart(); } -void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr response, std::optional loader) +void ModrinthCheckUpdate::checkVersionsResponse(QByteArray* response, std::optional loader) { setStatus(tr("Parsing the API response from Modrinth...")); setProgress(m_progress + 1, m_progressTotal); @@ -223,4 +223,4 @@ void ModrinthCheckUpdate::checkNextLoader() } emitSucceeded(); -} \ No newline at end of file +} diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.h b/launcher/modplatform/modrinth/ModrinthCheckUpdate.h index eb8057694..e44c782d1 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.h +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.h @@ -9,7 +9,7 @@ class ModrinthCheckUpdate : public CheckUpdateTask { ModrinthCheckUpdate(QList& resources, std::list& mcVersions, QList loadersList, - std::shared_ptr resourceModel); + ResourceFolderModel* resourceModel); public slots: bool abort() override; @@ -17,7 +17,7 @@ class ModrinthCheckUpdate : public CheckUpdateTask { protected slots: void executeTask() override; void getUpdateModsForLoader(std::optional loader = {}, bool forceModLoaderCheck = false); - void checkVersionsResponse(std::shared_ptr response, std::optional loader); + void checkVersionsResponse(QByteArray* response, std::optional loader); void checkNextLoader(); private: diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index 767bb003f..45ac61273 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -43,7 +43,7 @@ bool ModrinthCreationTask::updateInstance() auto instance_list = APPLICATION->instances(); // FIXME: How to handle situations when there's more than one install already for a given modpack? - InstancePtr inst; + BaseInstance* inst; if (auto original_id = originalInstanceID(); !original_id.isEmpty()) { inst = instance_list->getInstanceById(original_id); Q_ASSERT(inst); @@ -212,8 +212,8 @@ bool ModrinthCreationTask::createInstance() } QString configPath = FS::PathCombine(m_stagingPath, "instance.cfg"); - auto instanceSettings = std::make_shared(configPath); - MinecraftInstance instance(m_globalSettings, instanceSettings, m_stagingPath); + auto instanceSettings = std::make_unique(configPath); + MinecraftInstance instance(m_globalSettings, std::move(instanceSettings), m_stagingPath); auto components = instance.getPackProfile(); components->buildingFromScratch(); diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h index e02a55877..bda91edf6 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h @@ -25,7 +25,7 @@ class ModrinthCreationTask final : public InstanceCreationTask { public: ModrinthCreationTask(QString staging_path, - SettingsObjectPtr global_settings, + SettingsObject* global_settings, QWidget* parent, QString id, QString version_id = {}, @@ -55,7 +55,7 @@ class ModrinthCreationTask final : public InstanceCreationTask { std::vector m_files; Task::Ptr m_task; - std::optional m_instance; + std::optional m_instance; QString m_root_path = "minecraft"; }; diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp index c638e8db0..d9002274c 100644 --- a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp @@ -40,7 +40,7 @@ ModrinthPackExportTask::ModrinthPackExportTask(const QString& name, const QString& version, const QString& summary, bool optionalFiles, - InstancePtr instance, + BaseInstance* instance, const QString& output, MMCZip::FilterFileFunction filter) : name(name) @@ -48,7 +48,7 @@ ModrinthPackExportTask::ModrinthPackExportTask(const QString& name, , summary(summary) , optionalFiles(optionalFiles) , instance(instance) - , mcInstance(dynamic_cast(instance.get())) + , mcInstance(dynamic_cast(instance)) , gameRoot(instance->gameRoot()) , output(output) , filter(filter) @@ -86,7 +86,7 @@ void ModrinthPackExportTask::collectFiles() if (mcInstance) { mcInstance->loaderModList()->update(); - connect(mcInstance->loaderModList().get(), &ModFolderModel::updateFinished, this, &ModrinthPackExportTask::collectHashes); + connect(mcInstance->loaderModList(), &ModFolderModel::updateFinished, this, &ModrinthPackExportTask::collectHashes); } else collectHashes(); } @@ -156,15 +156,15 @@ void ModrinthPackExportTask::makeApiRequest() else { setStatus(tr("Finding versions for hashes...")); auto response = std::make_shared(); - task = api.currentVersions(pendingHashes.values(), "sha512", response); - connect(task.get(), &Task::succeeded, [this, response]() { parseApiResponse(response); }); + task = api.currentVersions(pendingHashes.values(), "sha512", response.get()); + connect(task.get(), &Task::succeeded, [this, response]() { parseApiResponse(response.get()); }); connect(task.get(), &Task::failed, this, &ModrinthPackExportTask::emitFailed); connect(task.get(), &Task::aborted, this, &ModrinthPackExportTask::emitAborted); task->start(); } } -void ModrinthPackExportTask::parseApiResponse(const std::shared_ptr response) +void ModrinthPackExportTask::parseApiResponse(QByteArray* response) { task = nullptr; diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.h b/launcher/modplatform/modrinth/ModrinthPackExportTask.h index f9b86bbd7..5aca657a9 100644 --- a/launcher/modplatform/modrinth/ModrinthPackExportTask.h +++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.h @@ -34,7 +34,7 @@ class ModrinthPackExportTask : public Task { const QString& version, const QString& summary, bool optionalFiles, - InstancePtr instance, + BaseInstance* instance, const QString& output, MMCZip::FilterFileFunction filter); @@ -55,7 +55,7 @@ class ModrinthPackExportTask : public Task { // inputs const QString name, version, summary; const bool optionalFiles; - const InstancePtr instance; + const BaseInstance* instance; MinecraftInstance* mcInstance; const QDir gameRoot; const QString output; @@ -70,7 +70,7 @@ class ModrinthPackExportTask : public Task { void collectFiles(); void collectHashes(); void makeApiRequest(); - void parseApiResponse(std::shared_ptr response); + void parseApiResponse(QByteArray* response); void buildZip(); QByteArray generateIndex(); diff --git a/launcher/modplatform/technic/SolderPackInstallTask.cpp b/launcher/modplatform/technic/SolderPackInstallTask.cpp index ffda05ee9..9d8a1a340 100644 --- a/launcher/modplatform/technic/SolderPackInstallTask.cpp +++ b/launcher/modplatform/technic/SolderPackInstallTask.cpp @@ -45,7 +45,7 @@ #include "net/ApiDownload.h" #include "net/ChecksumValidator.h" -Technic::SolderPackInstallTask::SolderPackInstallTask(shared_qobject_ptr network, +Technic::SolderPackInstallTask::SolderPackInstallTask(QNetworkAccessManager* network, const QUrl& solderUrl, const QString& pack, const QString& version, @@ -72,7 +72,7 @@ void Technic::SolderPackInstallTask::executeTask() m_filesNetJob.reset(new NetJob(tr("Resolving modpack files"), m_network)); auto sourceUrl = QString("%1/modpack/%2/%3").arg(m_solderUrl.toString(), m_pack, m_version); - m_filesNetJob->addNetAction(Net::ApiDownload::makeByteArray(sourceUrl, m_response)); + m_filesNetJob->addNetAction(Net::ApiDownload::makeByteArray(sourceUrl, m_response.get())); auto job = m_filesNetJob.get(); connect(job, &NetJob::succeeded, this, &Technic::SolderPackInstallTask::fileListSucceeded); diff --git a/launcher/modplatform/technic/SolderPackInstallTask.h b/launcher/modplatform/technic/SolderPackInstallTask.h index 2ea701e23..ef319e6a5 100644 --- a/launcher/modplatform/technic/SolderPackInstallTask.h +++ b/launcher/modplatform/technic/SolderPackInstallTask.h @@ -46,7 +46,7 @@ namespace Technic { class SolderPackInstallTask : public InstanceTask { Q_OBJECT public: - explicit SolderPackInstallTask(shared_qobject_ptr network, + explicit SolderPackInstallTask(QNetworkAccessManager* network, const QUrl& solderUrl, const QString& pack, const QString& version, @@ -71,14 +71,14 @@ class SolderPackInstallTask : public InstanceTask { private: bool m_abortable = false; - shared_qobject_ptr m_network; + QNetworkAccessManager* m_network; NetJob::Ptr m_filesNetJob; QUrl m_solderUrl; QString m_pack; QString m_version; QString m_minecraftVersion; - std::shared_ptr m_response = std::make_shared(); + std::unique_ptr m_response = std::make_unique(); QTemporaryDir m_outputDir; int m_modCount; QFuture m_extractFuture; diff --git a/launcher/modplatform/technic/TechnicPackProcessor.cpp b/launcher/modplatform/technic/TechnicPackProcessor.cpp index 4c40ddf73..e114398c4 100644 --- a/launcher/modplatform/technic/TechnicPackProcessor.cpp +++ b/launcher/modplatform/technic/TechnicPackProcessor.cpp @@ -24,7 +24,7 @@ #include #include "archive/ArchiveReader.h" -void Technic::TechnicPackProcessor::run(SettingsObjectPtr globalSettings, +void Technic::TechnicPackProcessor::run(SettingsObject* globalSettings, const QString& instName, const QString& instIcon, const QString& stagingPath, @@ -33,8 +33,8 @@ void Technic::TechnicPackProcessor::run(SettingsObjectPtr globalSettings, { QString minecraftPath = FS::PathCombine(stagingPath, "minecraft"); QString configPath = FS::PathCombine(stagingPath, "instance.cfg"); - auto instanceSettings = std::make_shared(configPath); - MinecraftInstance instance(globalSettings, instanceSettings, stagingPath); + auto instanceSettings = std::make_unique(configPath); + MinecraftInstance instance(globalSettings, std::move(instanceSettings), stagingPath); instance.setName(instName); diff --git a/launcher/modplatform/technic/TechnicPackProcessor.h b/launcher/modplatform/technic/TechnicPackProcessor.h index 08e117fd8..0d2dabc93 100644 --- a/launcher/modplatform/technic/TechnicPackProcessor.h +++ b/launcher/modplatform/technic/TechnicPackProcessor.h @@ -28,7 +28,7 @@ class TechnicPackProcessor : public QObject { void failed(QString reason); public: - void run(SettingsObjectPtr globalSettings, + void run(SettingsObject* globalSettings, const QString& instName, const QString& instIcon, const QString& stagingPath, diff --git a/launcher/net/ApiDownload.cpp b/launcher/net/ApiDownload.cpp index 78eb1f851..c0e3d78a2 100644 --- a/launcher/net/ApiDownload.cpp +++ b/launcher/net/ApiDownload.cpp @@ -25,21 +25,21 @@ namespace Net { Download::Ptr ApiDownload::makeCached(QUrl url, MetaEntryPtr entry, Download::Options options) { auto dl = Download::makeCached(url, entry, options); - dl->addHeaderProxy(new ApiHeaderProxy()); + dl->addHeaderProxy(std::make_unique()); return dl; } -Download::Ptr ApiDownload::makeByteArray(QUrl url, std::shared_ptr output, Download::Options options) +Download::Ptr ApiDownload::makeByteArray(QUrl url, QByteArray* output, Download::Options options) { auto dl = Download::makeByteArray(url, output, options); - dl->addHeaderProxy(new ApiHeaderProxy()); + dl->addHeaderProxy(std::make_unique()); return dl; } Download::Ptr ApiDownload::makeFile(QUrl url, QString path, Download::Options options) { auto dl = Download::makeFile(url, path, options); - dl->addHeaderProxy(new ApiHeaderProxy()); + dl->addHeaderProxy(std::make_unique()); return dl; } diff --git a/launcher/net/ApiDownload.h b/launcher/net/ApiDownload.h index 842c25c56..25d2447e3 100644 --- a/launcher/net/ApiDownload.h +++ b/launcher/net/ApiDownload.h @@ -25,7 +25,7 @@ namespace Net { namespace ApiDownload { Download::Ptr makeCached(QUrl url, MetaEntryPtr entry, Download::Options options = Download::Option::NoOptions); -Download::Ptr makeByteArray(QUrl url, std::shared_ptr output, Download::Options options = Download::Option::NoOptions); +Download::Ptr makeByteArray(QUrl url, QByteArray* output, Download::Options options = Download::Option::NoOptions); Download::Ptr makeFile(QUrl url, QString path, Download::Options options = Download::Option::NoOptions); }; // namespace ApiDownload diff --git a/launcher/net/ApiUpload.cpp b/launcher/net/ApiUpload.cpp index a2b8f357b..acb7d141f 100644 --- a/launcher/net/ApiUpload.cpp +++ b/launcher/net/ApiUpload.cpp @@ -22,10 +22,10 @@ namespace Net { -Upload::Ptr ApiUpload::makeByteArray(QUrl url, std::shared_ptr output, QByteArray m_post_data) +Upload::Ptr ApiUpload::makeByteArray(QUrl url, QByteArray* output, QByteArray m_post_data) { auto up = Upload::makeByteArray(url, output, m_post_data); - up->addHeaderProxy(new ApiHeaderProxy()); + up->addHeaderProxy(std::make_unique()); return up; } diff --git a/launcher/net/ApiUpload.h b/launcher/net/ApiUpload.h index 674a3b93f..b473c81c8 100644 --- a/launcher/net/ApiUpload.h +++ b/launcher/net/ApiUpload.h @@ -24,7 +24,7 @@ namespace Net { namespace ApiUpload { -Upload::Ptr makeByteArray(QUrl url, std::shared_ptr output, QByteArray m_post_data); +Upload::Ptr makeByteArray(QUrl url, QByteArray* output, QByteArray m_post_data); }; } // namespace Net diff --git a/launcher/net/ByteArraySink.h b/launcher/net/ByteArraySink.h index f68230838..82e3f6592 100644 --- a/launcher/net/ByteArraySink.h +++ b/launcher/net/ByteArraySink.h @@ -45,7 +45,7 @@ namespace Net { */ class ByteArraySink : public Sink { public: - ByteArraySink(std::shared_ptr output) : m_output(output) {}; + ByteArraySink(QByteArray* output) : m_output(output) {} virtual ~ByteArraySink() = default; @@ -92,6 +92,6 @@ class ByteArraySink : public Sink { auto hasLocalData() -> bool override { return false; } protected: - std::shared_ptr m_output; + QByteArray* m_output; }; } // namespace Net diff --git a/launcher/net/Download.cpp b/launcher/net/Download.cpp index 49686db98..8b7bef2d4 100644 --- a/launcher/net/Download.cpp +++ b/launcher/net/Download.cpp @@ -63,7 +63,7 @@ auto Download::makeCached(QUrl url, MetaEntryPtr entry, Options options) -> Down } #endif -auto Download::makeByteArray(QUrl url, std::shared_ptr output, Options options) -> Download::Ptr +auto Download::makeByteArray(QUrl url, QByteArray* output, Options options) -> Download::Ptr { auto dl = makeShared(); dl->m_url = url; diff --git a/launcher/net/Download.h b/launcher/net/Download.h index 5f6a5caf1..a571e5b03 100644 --- a/launcher/net/Download.h +++ b/launcher/net/Download.h @@ -54,7 +54,7 @@ class Download : public NetRequest { static auto makeCached(QUrl url, MetaEntryPtr entry, Options options = Option::NoOptions) -> Download::Ptr; #endif - static auto makeByteArray(QUrl url, std::shared_ptr output, Options options = Option::NoOptions) -> Download::Ptr; + static auto makeByteArray(QUrl url, QByteArray* output, Options options = Option::NoOptions) -> Download::Ptr; static auto makeFile(QUrl url, QString path, Options options = Option::NoOptions) -> Download::Ptr; protected: diff --git a/launcher/net/DummySink.h b/launcher/net/DummySink.h new file mode 100644 index 000000000..03eb49732 --- /dev/null +++ b/launcher/net/DummySink.h @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2025 Octol1ttle + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +namespace Net { + +class DummySink : public Sink { + public: + explicit DummySink() {} + ~DummySink() override {} + auto init(QNetworkRequest& request) -> Task::State override { return Task::State::Running; } + auto write(QByteArray& data) -> Task::State override { return Task::State::Succeeded; } + auto abort() -> Task::State override { return Task::State::AbortedByUser; } + auto finalize(QNetworkReply& reply) -> Task::State override { return Task::State::Succeeded; } + auto hasLocalData() -> bool override { return false; } +}; + +} // namespace Net diff --git a/launcher/net/NetJob.cpp b/launcher/net/NetJob.cpp index 335e360b2..530349c28 100644 --- a/launcher/net/NetJob.cpp +++ b/launcher/net/NetJob.cpp @@ -44,7 +44,7 @@ #include "ui/dialogs/CustomMessageBox.h" #endif -NetJob::NetJob(QString job_name, shared_qobject_ptr network, int max_concurrent) +NetJob::NetJob(QString job_name, QNetworkAccessManager* network, int max_concurrent) : ConcurrentTask(job_name), m_network(network) { #if defined(LAUNCHER_APPLICATION) diff --git a/launcher/net/NetJob.h b/launcher/net/NetJob.h index 59213ba15..e8351f686 100644 --- a/launcher/net/NetJob.h +++ b/launcher/net/NetJob.h @@ -50,9 +50,10 @@ class NetJob : public ConcurrentTask { Q_OBJECT public: + // TODO: delete using Ptr = shared_qobject_ptr; - explicit NetJob(QString job_name, shared_qobject_ptr network, int max_concurrent = -1); + explicit NetJob(QString job_name, QNetworkAccessManager* network, int max_concurrent = -1); ~NetJob() override = default; auto size() const -> int; @@ -77,7 +78,7 @@ class NetJob : public ConcurrentTask { bool isOnline(); private: - shared_qobject_ptr m_network; + QNetworkAccessManager* m_network; int m_try = 1; bool m_ask_retry = true; diff --git a/launcher/net/NetRequest.h b/launcher/net/NetRequest.h index 714459810..bdab9d68f 100644 --- a/launcher/net/NetRequest.h +++ b/launcher/net/NetRequest.h @@ -68,8 +68,8 @@ class NetRequest : public Task { auto abort() -> bool override; auto canAbort() const -> bool override { return true; } - void setNetwork(shared_qobject_ptr network) { m_network = network; } - void addHeaderProxy(Net::HeaderProxy* proxy) { m_headerProxies.push_back(std::shared_ptr(proxy)); } + void setNetwork(QNetworkAccessManager* network) { m_network = network; } + void addHeaderProxy(std::unique_ptr proxy) { m_headerProxies.push_back(std::move(proxy)); } QUrl url() const; void setUrl(QUrl url) { m_url = url; } @@ -100,15 +100,15 @@ class NetRequest : public Task { std::chrono::time_point m_last_progress_time; qint64 m_last_progress_bytes; - shared_qobject_ptr m_network; + QNetworkAccessManager* m_network; /// the network reply - unique_qobject_ptr m_reply; + std::unique_ptr m_reply; QByteArray m_errorResponse; /// source URL QUrl m_url; - std::vector> m_headerProxies; + std::vector> m_headerProxies; }; } // namespace Net diff --git a/launcher/net/PasteUpload.cpp b/launcher/net/PasteUpload.cpp index a72d63f29..672637685 100644 --- a/launcher/net/PasteUpload.cpp +++ b/launcher/net/PasteUpload.cpp @@ -214,5 +214,5 @@ PasteUpload::PasteUpload(const QString& log, QString url, PasteType pasteType) : else m_url = m_baseUrl + base.endpointPath; - m_sink.reset(new Sink(this)); + m_sink.reset(new Sink(this, m_output.get())); } diff --git a/launcher/net/PasteUpload.h b/launcher/net/PasteUpload.h index 7f43779c4..cb0d2d5c1 100644 --- a/launcher/net/PasteUpload.h +++ b/launcher/net/PasteUpload.h @@ -71,7 +71,7 @@ class PasteUpload : public Net::NetRequest { class Sink : public Net::ByteArraySink { public: - Sink(PasteUpload* p) : Net::ByteArraySink(std::make_shared()), m_d(p) {}; + Sink(PasteUpload* p, QByteArray* output) : Net::ByteArraySink(output), m_d(p) {}; virtual ~Sink() = default; public: @@ -93,4 +93,5 @@ class PasteUpload : public Net::NetRequest { QString m_pasteLink; QString m_baseUrl; const PasteType m_paste_type; + std::unique_ptr m_output = std::make_unique(); }; diff --git a/launcher/net/Upload.cpp b/launcher/net/Upload.cpp index 623ec80f4..d162051f8 100644 --- a/launcher/net/Upload.cpp +++ b/launcher/net/Upload.cpp @@ -51,7 +51,7 @@ QNetworkReply* Upload::getReply(QNetworkRequest& request) return m_network->post(request, m_post_data); } -Upload::Ptr Upload::makeByteArray(QUrl url, std::shared_ptr output, QByteArray m_post_data) +Upload::Ptr Upload::makeByteArray(QUrl url, QByteArray* output, QByteArray m_post_data) { auto up = makeShared(); up->m_url = std::move(url); diff --git a/launcher/net/Upload.h b/launcher/net/Upload.h index f920e5561..97db89250 100644 --- a/launcher/net/Upload.h +++ b/launcher/net/Upload.h @@ -47,7 +47,7 @@ class Upload : public NetRequest { using Ptr = shared_qobject_ptr; explicit Upload() : NetRequest() { logCat = taskUploadLogC; }; - static Upload::Ptr makeByteArray(QUrl url, std::shared_ptr output, QByteArray m_post_data); + static Upload::Ptr makeByteArray(QUrl url, QByteArray* output, QByteArray m_post_data); protected: virtual QNetworkReply* getReply(QNetworkRequest&) override; diff --git a/launcher/news/NewsChecker.cpp b/launcher/news/NewsChecker.cpp index dc4447aba..72833c6d8 100644 --- a/launcher/news/NewsChecker.cpp +++ b/launcher/news/NewsChecker.cpp @@ -40,7 +40,7 @@ #include -NewsChecker::NewsChecker(shared_qobject_ptr network, const QString& feedUrl) +NewsChecker::NewsChecker(QNetworkAccessManager* network, const QString& feedUrl) { m_network = network; m_feedUrl = feedUrl; @@ -57,7 +57,7 @@ void NewsChecker::reloadNews() qDebug() << "Reloading news."; NetJob::Ptr job{ new NetJob("News RSS Feed", m_network) }; - job->addNetAction(Net::Download::makeByteArray(m_feedUrl, newsData)); + job->addNetAction(Net::Download::makeByteArray(m_feedUrl, newsData.get())); job->setAskRetry(false); connect(job.get(), &NetJob::succeeded, this, &NewsChecker::rssDownloadFinished); connect(job.get(), &NetJob::failed, this, &NewsChecker::rssDownloadFailed); diff --git a/launcher/news/NewsChecker.h b/launcher/news/NewsChecker.h index cdd621a20..386bfd5ec 100644 --- a/launcher/news/NewsChecker.h +++ b/launcher/news/NewsChecker.h @@ -29,7 +29,7 @@ class NewsChecker : public QObject { /*! * Constructs a news reader to read from the given RSS feed URL. */ - NewsChecker(shared_qobject_ptr network, const QString& feedUrl); + NewsChecker(QNetworkAccessManager* network, const QString& feedUrl); /*! * Returns the error message for the last time the news was loaded. @@ -84,7 +84,7 @@ class NewsChecker : public QObject { //! True if news has been loaded. bool m_loadedNews; - std::shared_ptr newsData = std::make_shared(); + std::unique_ptr newsData = std::make_unique(); /*! * Gets the error message that was given last time the news was loaded. @@ -92,7 +92,7 @@ class NewsChecker : public QObject { */ QString m_lastLoadError; - shared_qobject_ptr m_network; + QNetworkAccessManager* m_network; protected slots: /// Emits newsLoaded() and sets m_lastLoadError to empty string. diff --git a/launcher/screenshots/ImgurAlbumCreation.cpp b/launcher/screenshots/ImgurAlbumCreation.cpp index 1355c74c0..7974d4a9f 100644 --- a/launcher/screenshots/ImgurAlbumCreation.cpp +++ b/launcher/screenshots/ImgurAlbumCreation.cpp @@ -54,7 +54,7 @@ Net::NetRequest::Ptr ImgurAlbumCreation::make(std::shared_ptrm_url = BuildConfig.IMGUR_BASE_URL + "album"; up->m_sink.reset(new Sink(output)); up->m_screenshots = screenshots; - up->addHeaderProxy(new Net::RawHeaderProxy( + up->addHeaderProxy(std::make_unique( QList{ { "Content-Type", "application/x-www-form-urlencoded" }, { "Authorization", QString("Client-ID %1").arg(BuildConfig.IMGUR_CLIENT_ID).toUtf8() }, { "Accept", "application/json" } })); diff --git a/launcher/screenshots/ImgurUpload.cpp b/launcher/screenshots/ImgurUpload.cpp index 835a1ab81..f553bc774 100644 --- a/launcher/screenshots/ImgurUpload.cpp +++ b/launcher/screenshots/ImgurUpload.cpp @@ -120,7 +120,7 @@ Net::NetRequest::Ptr ImgurUpload::make(ScreenShot::Ptr m_shot) auto up = makeShared(m_shot->m_file); up->m_url = std::move(BuildConfig.IMGUR_BASE_URL + "image"); up->m_sink.reset(new Sink(m_shot)); - up->addHeaderProxy(new Net::RawHeaderProxy(QList{ + up->addHeaderProxy(std::make_unique(QList{ { "Authorization", QString("Client-ID %1").arg(BuildConfig.IMGUR_CLIENT_ID).toUtf8() }, { "Accept", "application/json" } })); return up; } diff --git a/launcher/settings/SettingsObject.h b/launcher/settings/SettingsObject.h index abd6c29c5..5743bee54 100644 --- a/launcher/settings/SettingsObject.h +++ b/launcher/settings/SettingsObject.h @@ -30,9 +30,6 @@ class Setting; class SettingsObject; -using SettingsObjectPtr = std::shared_ptr; -using SettingsObjectWeakPtr = std::weak_ptr; - /*! * \brief The SettingsObject handles communicating settings between the application and a *settings file. @@ -50,11 +47,11 @@ class SettingsObject : public QObject { public: class Lock { public: - Lock(SettingsObjectPtr locked) : m_locked(locked) { m_locked->suspendSave(); } + Lock(SettingsObject* locked) : m_locked(locked) { m_locked->suspendSave(); } ~Lock() { m_locked->resumeSave(); } private: - SettingsObjectPtr m_locked; + SettingsObject* m_locked; }; public: diff --git a/launcher/tools/BaseExternalTool.cpp b/launcher/tools/BaseExternalTool.cpp index 9e4b91cd8..dd1a683b4 100644 --- a/launcher/tools/BaseExternalTool.cpp +++ b/launcher/tools/BaseExternalTool.cpp @@ -9,13 +9,13 @@ #include "BaseInstance.h" -BaseExternalTool::BaseExternalTool(SettingsObjectPtr settings, InstancePtr instance, QObject* parent) +BaseExternalTool::BaseExternalTool(SettingsObject* settings, BaseInstance* instance, QObject* parent) : QObject(parent), m_instance(instance), globalSettings(settings) {} BaseExternalTool::~BaseExternalTool() {} -BaseDetachedTool::BaseDetachedTool(SettingsObjectPtr settings, InstancePtr instance, QObject* parent) +BaseDetachedTool::BaseDetachedTool(SettingsObject* settings, BaseInstance* instance, QObject* parent) : BaseExternalTool(settings, instance, parent) {} @@ -26,7 +26,7 @@ void BaseDetachedTool::run() BaseExternalToolFactory::~BaseExternalToolFactory() {} -BaseDetachedTool* BaseDetachedToolFactory::createDetachedTool(InstancePtr instance, QObject* parent) +BaseDetachedTool* BaseDetachedToolFactory::createDetachedTool(BaseInstance* instance, QObject* parent) { return qobject_cast(createTool(instance, parent)); } diff --git a/launcher/tools/BaseExternalTool.h b/launcher/tools/BaseExternalTool.h index eb2d07e1e..0890c8e5f 100644 --- a/launcher/tools/BaseExternalTool.h +++ b/launcher/tools/BaseExternalTool.h @@ -10,18 +10,18 @@ class QProcess; class BaseExternalTool : public QObject { Q_OBJECT public: - explicit BaseExternalTool(SettingsObjectPtr settings, InstancePtr instance, QObject* parent = 0); + explicit BaseExternalTool(SettingsObject* settings, BaseInstance* instance, QObject* parent = 0); virtual ~BaseExternalTool(); protected: - InstancePtr m_instance; - SettingsObjectPtr globalSettings; + BaseInstance* m_instance; + SettingsObject* globalSettings; }; class BaseDetachedTool : public BaseExternalTool { Q_OBJECT public: - explicit BaseDetachedTool(SettingsObjectPtr settings, InstancePtr instance, QObject* parent = 0); + explicit BaseDetachedTool(SettingsObject* settings, BaseInstance* instance, QObject* parent = 0); public slots: void run(); @@ -36,18 +36,18 @@ class BaseExternalToolFactory { virtual QString name() const = 0; - virtual void registerSettings(SettingsObjectPtr settings) = 0; + virtual void registerSettings(SettingsObject* settings) = 0; - virtual BaseExternalTool* createTool(InstancePtr instance, QObject* parent = 0) = 0; + virtual BaseExternalTool* createTool(BaseInstance* instance, QObject* parent = 0) = 0; virtual bool check(QString* error) = 0; virtual bool check(const QString& path, QString* error) = 0; protected: - SettingsObjectPtr globalSettings; + SettingsObject* globalSettings; }; class BaseDetachedToolFactory : public BaseExternalToolFactory { public: - virtual BaseDetachedTool* createDetachedTool(InstancePtr instance, QObject* parent = 0); + virtual BaseDetachedTool* createDetachedTool(BaseInstance* instance, QObject* parent = 0); }; diff --git a/launcher/tools/BaseProfiler.cpp b/launcher/tools/BaseProfiler.cpp index 2ab1254e9..f7a30fa2c 100644 --- a/launcher/tools/BaseProfiler.cpp +++ b/launcher/tools/BaseProfiler.cpp @@ -3,10 +3,10 @@ #include -BaseProfiler::BaseProfiler(SettingsObjectPtr settings, InstancePtr instance, QObject* parent) : BaseExternalTool(settings, instance, parent) +BaseProfiler::BaseProfiler(SettingsObject* settings, BaseInstance* instance, QObject* parent) : BaseExternalTool(settings, instance, parent) {} -void BaseProfiler::beginProfiling(shared_qobject_ptr process) +void BaseProfiler::beginProfiling(LaunchTask* process) { beginProfilingImpl(process); } @@ -27,7 +27,7 @@ void BaseProfiler::abortProfilingImpl() emit abortLaunch(tr("Profiler aborted")); } -BaseProfiler* BaseProfilerFactory::createProfiler(InstancePtr instance, QObject* parent) +BaseProfiler* BaseProfilerFactory::createProfiler(BaseInstance* instance, QObject* parent) { return qobject_cast(createTool(instance, parent)); } diff --git a/launcher/tools/BaseProfiler.h b/launcher/tools/BaseProfiler.h index ac0f3a786..b84a591d7 100644 --- a/launcher/tools/BaseProfiler.h +++ b/launcher/tools/BaseProfiler.h @@ -11,16 +11,16 @@ class QProcess; class BaseProfiler : public BaseExternalTool { Q_OBJECT public: - explicit BaseProfiler(SettingsObjectPtr settings, InstancePtr instance, QObject* parent = 0); + explicit BaseProfiler(SettingsObject* settings, BaseInstance* instance, QObject* parent = 0); public slots: - void beginProfiling(shared_qobject_ptr process); + void beginProfiling(LaunchTask* process); void abortProfiling(); protected: QProcess* m_profilerProcess; - virtual void beginProfilingImpl(shared_qobject_ptr process) = 0; + virtual void beginProfilingImpl(LaunchTask* process) = 0; virtual void abortProfilingImpl(); signals: @@ -30,5 +30,5 @@ class BaseProfiler : public BaseExternalTool { class BaseProfilerFactory : public BaseExternalToolFactory { public: - virtual BaseProfiler* createProfiler(InstancePtr instance, QObject* parent = 0); + virtual BaseProfiler* createProfiler(BaseInstance* instance, QObject* parent = 0); }; diff --git a/launcher/tools/GenericProfiler.cpp b/launcher/tools/GenericProfiler.cpp index 594024a7d..feb775981 100644 --- a/launcher/tools/GenericProfiler.cpp +++ b/launcher/tools/GenericProfiler.cpp @@ -24,22 +24,22 @@ class GenericProfiler : public BaseProfiler { Q_OBJECT public: - GenericProfiler(SettingsObjectPtr settings, InstancePtr instance, QObject* parent = 0); + GenericProfiler(SettingsObject* settings, BaseInstance* instance, QObject* parent = 0); protected: - void beginProfilingImpl(shared_qobject_ptr process); + void beginProfilingImpl(LaunchTask* process); }; -GenericProfiler::GenericProfiler(SettingsObjectPtr settings, InstancePtr instance, QObject* parent) +GenericProfiler::GenericProfiler(SettingsObject* settings, BaseInstance* instance, QObject* parent) : BaseProfiler(settings, instance, parent) {} -void GenericProfiler::beginProfilingImpl(shared_qobject_ptr process) +void GenericProfiler::beginProfilingImpl(LaunchTask* process) { emit readyToLaunch(tr("Started process: %1").arg(process->pid())); } -BaseExternalTool* GenericProfilerFactory::createTool(InstancePtr instance, QObject* parent) +BaseExternalTool* GenericProfilerFactory::createTool(BaseInstance* instance, QObject* parent) { return new GenericProfiler(globalSettings, instance, parent); } diff --git a/launcher/tools/GenericProfiler.h b/launcher/tools/GenericProfiler.h index 7868990ea..49ce7271c 100644 --- a/launcher/tools/GenericProfiler.h +++ b/launcher/tools/GenericProfiler.h @@ -22,8 +22,8 @@ class GenericProfilerFactory : public BaseProfilerFactory { public: QString name() const override { return "Generic"; } - void registerSettings([[maybe_unused]] SettingsObjectPtr settings) override {}; - BaseExternalTool* createTool(InstancePtr instance, QObject* parent = 0) override; + void registerSettings([[maybe_unused]] SettingsObject* settings) override {}; + BaseExternalTool* createTool(BaseInstance* instance, QObject* parent = 0) override; bool check([[maybe_unused]] QString* error) override { return true; }; bool check([[maybe_unused]] const QString& path, [[maybe_unused]] QString* error) override { return true; }; }; diff --git a/launcher/tools/JProfiler.cpp b/launcher/tools/JProfiler.cpp index 8550038d2..5d51cde97 100644 --- a/launcher/tools/JProfiler.cpp +++ b/launcher/tools/JProfiler.cpp @@ -9,20 +9,20 @@ class JProfiler : public BaseProfiler { Q_OBJECT public: - JProfiler(SettingsObjectPtr settings, InstancePtr instance, QObject* parent = 0); + JProfiler(SettingsObject* settings, BaseInstance* instance, QObject* parent = 0); private slots: void profilerStarted(); void profilerFinished(int exit, QProcess::ExitStatus status); protected: - void beginProfilingImpl(shared_qobject_ptr process); + void beginProfilingImpl(LaunchTask* process); private: int listeningPort = 0; }; -JProfiler::JProfiler(SettingsObjectPtr settings, InstancePtr instance, QObject* parent) : BaseProfiler(settings, instance, parent) {} +JProfiler::JProfiler(SettingsObject* settings, BaseInstance* instance, QObject* parent) : BaseProfiler(settings, instance, parent) {} void JProfiler::profilerStarted() { @@ -40,7 +40,7 @@ void JProfiler::profilerFinished([[maybe_unused]] int exit, QProcess::ExitStatus } } -void JProfiler::beginProfilingImpl(shared_qobject_ptr process) +void JProfiler::beginProfilingImpl(LaunchTask* process) { listeningPort = globalSettings->get("JProfilerPort").toInt(); QProcess* profiler = new QProcess(this); @@ -63,14 +63,14 @@ void JProfiler::beginProfilingImpl(shared_qobject_ptr process) profiler->start(); } -void JProfilerFactory::registerSettings(SettingsObjectPtr settings) +void JProfilerFactory::registerSettings(SettingsObject* settings) { settings->registerSetting("JProfilerPath"); settings->registerSetting("JProfilerPort", 42042); globalSettings = settings; } -BaseExternalTool* JProfilerFactory::createTool(InstancePtr instance, QObject* parent) +BaseExternalTool* JProfilerFactory::createTool(BaseInstance* instance, QObject* parent) { return new JProfiler(globalSettings, instance, parent); } diff --git a/launcher/tools/JProfiler.h b/launcher/tools/JProfiler.h index 55715df32..4e6975c25 100644 --- a/launcher/tools/JProfiler.h +++ b/launcher/tools/JProfiler.h @@ -5,8 +5,8 @@ class JProfilerFactory : public BaseProfilerFactory { public: QString name() const override { return "JProfiler"; } - void registerSettings(SettingsObjectPtr settings) override; - BaseExternalTool* createTool(InstancePtr instance, QObject* parent = 0) override; + void registerSettings(SettingsObject* settings) override; + BaseExternalTool* createTool(BaseInstance* instance, QObject* parent = 0) override; bool check(QString* error) override; bool check(const QString& path, QString* error) override; }; diff --git a/launcher/tools/JVisualVM.cpp b/launcher/tools/JVisualVM.cpp index 2e1cf69f7..9155a1832 100644 --- a/launcher/tools/JVisualVM.cpp +++ b/launcher/tools/JVisualVM.cpp @@ -10,17 +10,17 @@ class JVisualVM : public BaseProfiler { Q_OBJECT public: - JVisualVM(SettingsObjectPtr settings, InstancePtr instance, QObject* parent = 0); + JVisualVM(SettingsObject* settings, BaseInstance* instance, QObject* parent = 0); private slots: void profilerStarted(); void profilerFinished(int exit, QProcess::ExitStatus status); protected: - void beginProfilingImpl(shared_qobject_ptr process); + void beginProfilingImpl(LaunchTask* process); }; -JVisualVM::JVisualVM(SettingsObjectPtr settings, InstancePtr instance, QObject* parent) : BaseProfiler(settings, instance, parent) {} +JVisualVM::JVisualVM(SettingsObject* settings, BaseInstance* instance, QObject* parent) : BaseProfiler(settings, instance, parent) {} void JVisualVM::profilerStarted() { @@ -38,7 +38,7 @@ void JVisualVM::profilerFinished([[maybe_unused]] int exit, QProcess::ExitStatus } } -void JVisualVM::beginProfilingImpl(shared_qobject_ptr process) +void JVisualVM::beginProfilingImpl(LaunchTask* process) { QProcess* profiler = new QProcess(this); QStringList profilerArgs = { "--openpid", QString::number(process->pid()) }; @@ -54,7 +54,7 @@ void JVisualVM::beginProfilingImpl(shared_qobject_ptr process) m_profilerProcess = profiler; } -void JVisualVMFactory::registerSettings(SettingsObjectPtr settings) +void JVisualVMFactory::registerSettings(SettingsObject* settings) { QString defaultValue = QStandardPaths::findExecutable("jvisualvm"); if (defaultValue.isNull()) { @@ -64,7 +64,7 @@ void JVisualVMFactory::registerSettings(SettingsObjectPtr settings) globalSettings = settings; } -BaseExternalTool* JVisualVMFactory::createTool(InstancePtr instance, QObject* parent) +BaseExternalTool* JVisualVMFactory::createTool(BaseInstance* instance, QObject* parent) { return new JVisualVM(globalSettings, instance, parent); } diff --git a/launcher/tools/JVisualVM.h b/launcher/tools/JVisualVM.h index c152aecdb..dfb09caf4 100644 --- a/launcher/tools/JVisualVM.h +++ b/launcher/tools/JVisualVM.h @@ -5,8 +5,8 @@ class JVisualVMFactory : public BaseProfilerFactory { public: QString name() const override { return "VisualVM"; } - void registerSettings(SettingsObjectPtr settings) override; - BaseExternalTool* createTool(InstancePtr instance, QObject* parent = 0) override; + void registerSettings(SettingsObject* settings) override; + BaseExternalTool* createTool(BaseInstance* instance, QObject* parent = 0) override; bool check(QString* error) override; bool check(const QString& path, QString* error) override; }; diff --git a/launcher/tools/MCEditTool.cpp b/launcher/tools/MCEditTool.cpp index e006a1411..12db12e42 100644 --- a/launcher/tools/MCEditTool.cpp +++ b/launcher/tools/MCEditTool.cpp @@ -8,7 +8,7 @@ #include "minecraft/MinecraftInstance.h" #include "settings/SettingsObject.h" -MCEditTool::MCEditTool(SettingsObjectPtr settings) +MCEditTool::MCEditTool(SettingsObject* settings) { settings->registerSetting("MCEditPath"); m_settings = settings; diff --git a/launcher/tools/MCEditTool.h b/launcher/tools/MCEditTool.h index fd2de1b6d..edc9ffa27 100644 --- a/launcher/tools/MCEditTool.h +++ b/launcher/tools/MCEditTool.h @@ -5,12 +5,12 @@ class MCEditTool { public: - MCEditTool(SettingsObjectPtr settings); + MCEditTool(SettingsObject* settings); void setPath(QString& path); QString path() const; bool check(const QString& toolPath, QString& error); QString getProgramPath(); private: - SettingsObjectPtr m_settings; + SettingsObject* m_settings; }; diff --git a/launcher/ui/InstanceWindow.cpp b/launcher/ui/InstanceWindow.cpp index 93da1d10c..a164351b0 100644 --- a/launcher/ui/InstanceWindow.cpp +++ b/launcher/ui/InstanceWindow.cpp @@ -49,7 +49,7 @@ #include "icons/IconList.h" -InstanceWindow::InstanceWindow(InstancePtr instance, QWidget* parent) : QMainWindow(parent), m_instance(instance) +InstanceWindow::InstanceWindow(BaseInstance* instance, QWidget* parent) : QMainWindow(parent), m_instance(instance) { setAttribute(Qt::WA_DeleteOnClose); @@ -109,7 +109,7 @@ InstanceWindow::InstanceWindow(InstancePtr instance, QWidget* parent) : QMainWin m_container->addButtons(horizontalLayout); - connect(m_instance.get(), &BaseInstance::profilerChanged, this, &InstanceWindow::updateButtons); + connect(m_instance, &BaseInstance::profilerChanged, this, &InstanceWindow::updateButtons); connect(APPLICATION, &Application::globalSettingsApplied, this, &InstanceWindow::updateButtons); } @@ -125,13 +125,13 @@ InstanceWindow::InstanceWindow(InstancePtr instance, QWidget* parent) : QMainWin { auto launchTask = m_instance->getLaunchTask(); instanceLaunchTaskChanged(launchTask); - connect(m_instance.get(), &BaseInstance::launchTaskChanged, this, &InstanceWindow::instanceLaunchTaskChanged); - connect(m_instance.get(), &BaseInstance::runningStatusChanged, this, &InstanceWindow::runningStateChanged); + connect(m_instance, &BaseInstance::launchTaskChanged, this, &InstanceWindow::instanceLaunchTaskChanged); + connect(m_instance, &BaseInstance::runningStatusChanged, this, &InstanceWindow::runningStateChanged); } // set up instance destruction detection { - connect(m_instance.get(), &BaseInstance::statusChanged, this, &InstanceWindow::on_instanceStatusChanged); + connect(m_instance, &BaseInstance::statusChanged, this, &InstanceWindow::on_instanceStatusChanged); } // add ourself as the modpack page's instance window @@ -164,7 +164,7 @@ void InstanceWindow::updateButtons() m_launchButton->setMenu(launchMenu); } -void InstanceWindow::instanceLaunchTaskChanged(shared_qobject_ptr proc) +void InstanceWindow::instanceLaunchTaskChanged(LaunchTask* proc) { m_proc = proc; } diff --git a/launcher/ui/InstanceWindow.h b/launcher/ui/InstanceWindow.h index e5bc24d44..7f66a8b9c 100644 --- a/launcher/ui/InstanceWindow.h +++ b/launcher/ui/InstanceWindow.h @@ -53,7 +53,7 @@ class InstanceWindow : public QMainWindow, public BasePageContainer { Q_OBJECT public: - explicit InstanceWindow(InstancePtr proc, QWidget* parent = 0); + explicit InstanceWindow(BaseInstance* proc, QWidget* parent = 0); virtual ~InstanceWindow() = default; bool selectPage(QString pageId) override; @@ -72,7 +72,7 @@ class InstanceWindow : public QMainWindow, public BasePageContainer { void isClosing(); private slots: - void instanceLaunchTaskChanged(shared_qobject_ptr proc); + void instanceLaunchTaskChanged(LaunchTask* proc); void runningStateChanged(bool running); void on_instanceStatusChanged(BaseInstance::Status, BaseInstance::Status newStatus); @@ -83,8 +83,8 @@ class InstanceWindow : public QMainWindow, public BasePageContainer { void updateButtons(); private: - shared_qobject_ptr m_proc; - InstancePtr m_instance; + LaunchTask* m_proc; + BaseInstance* m_instance; bool m_doNotSave = false; PageContainer* m_container = nullptr; QPushButton* m_closeButton = nullptr; diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 77a480e70..d6c4ccbec 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -322,14 +322,14 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi connect(view, &InstanceView::droppedURLs, this, &MainWindow::processURLs, Qt::QueuedConnection); proxymodel = new InstanceProxyModel(this); - proxymodel->setSourceModel(APPLICATION->instances().get()); + proxymodel->setSourceModel(APPLICATION->instances()); proxymodel->sort(0); connect(proxymodel, &InstanceProxyModel::dataChanged, this, &MainWindow::instanceDataChanged); view->setModel(proxymodel); view->setSourceOfGroupCollapseStatus( [](const QString& groupName) -> bool { return APPLICATION->instances()->isGroupCollapsed(groupName); }); - connect(view, &InstanceView::groupStateChanged, APPLICATION->instances().get(), &InstanceList::on_GroupStateChanged); + connect(view, &InstanceView::groupStateChanged, APPLICATION->instances(), &InstanceList::on_GroupStateChanged); ui->horizontalLayout->addWidget(view); } // The cat background @@ -365,13 +365,13 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi connect(view->selectionModel(), &QItemSelectionModel::currentChanged, this, &MainWindow::instanceChanged); // track icon changes and update the toolbar! - connect(APPLICATION->icons().get(), &IconList::iconUpdated, this, &MainWindow::iconUpdated); + connect(APPLICATION->icons(), &IconList::iconUpdated, this, &MainWindow::iconUpdated); // model reset -> selection is invalid. All the instance pointers are wrong. - connect(APPLICATION->instances().get(), &InstanceList::dataIsInvalid, this, &MainWindow::selectionBad); + connect(APPLICATION->instances(), &InstanceList::dataIsInvalid, this, &MainWindow::selectionBad); // handle newly added instances - connect(APPLICATION->instances().get(), &InstanceList::instanceSelectRequest, this, &MainWindow::instanceSelectRequest); + connect(APPLICATION->instances(), &InstanceList::instanceSelectRequest, this, &MainWindow::instanceSelectRequest); // When the global settings page closes, we want to know about it and update our state connect(APPLICATION, &Application::globalSettingsApplied, this, &MainWindow::globalSettingsClosed); @@ -394,8 +394,8 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi // Update the menu when the active account changes. // Shouldn't have to use lambdas here like this, but if I don't, the compiler throws a fit. // Template hell sucks... - connect(APPLICATION->accounts().get(), &AccountList::defaultAccountChanged, [this] { defaultAccountChanged(); }); - connect(APPLICATION->accounts().get(), &AccountList::listChanged, [this] { defaultAccountChanged(); }); + connect(APPLICATION->accounts(), &AccountList::defaultAccountChanged, [this] { defaultAccountChanged(); }); + connect(APPLICATION->accounts(), &AccountList::listChanged, [this] { defaultAccountChanged(); }); // Show initial account defaultAccountChanged(); @@ -419,7 +419,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi auto updater = APPLICATION->updater(); if (updater) { - connect(updater.get(), &ExternalUpdater::canCheckForUpdatesChanged, this, &MainWindow::updatesAllowedChanged); + connect(updater, &ExternalUpdater::canCheckForUpdatesChanged, this, &MainWindow::updatesAllowedChanged); } } @@ -960,7 +960,7 @@ void MainWindow::processURLs(QList urls) auto array = std::make_shared(); auto api = FlameAPI(); - auto job = api.getFile(addonId, fileId, array); + auto job = api.getFile(addonId, fileId, array.get()); connect(job.get(), &Task::failed, this, [this](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); }); @@ -1062,7 +1062,7 @@ void MainWindow::processURLs(QList urls) qDebug() << "Adding resource" << localFileName << "to" << dlg.selectedInstanceKey; auto inst = APPLICATION->instances()->getInstanceById(dlg.selectedInstanceKey); - auto minecraftInst = std::dynamic_pointer_cast(inst); + auto minecraftInst = dynamic_cast(inst); switch (type) { case ModPlatform::ResourceType::ResourcePack: @@ -1442,7 +1442,7 @@ void MainWindow::on_actionExportInstanceZip_triggered() void MainWindow::on_actionExportInstanceMrPack_triggered() { if (m_selectedInstance) { - auto instance = std::dynamic_pointer_cast(m_selectedInstance); + auto instance = dynamic_cast(m_selectedInstance); if (instance != nullptr) { ExportPackDialog dlg(instance, this); dlg.exec(); @@ -1453,7 +1453,7 @@ void MainWindow::on_actionExportInstanceMrPack_triggered() void MainWindow::on_actionExportInstanceFlamePack_triggered() { if (m_selectedInstance) { - auto instance = std::dynamic_pointer_cast(m_selectedInstance); + auto instance = dynamic_cast(m_selectedInstance); if (instance) { if (auto cmp = instance->getPackProfile()->getComponent("net.minecraft"); cmp && cmp->getVersionFile() && cmp->getVersionFile()->type == "snapshot") { @@ -1506,7 +1506,7 @@ void MainWindow::instanceActivated(QModelIndex index) if (!index.isValid()) return; QString id = index.data(InstanceList::InstanceIDRole).toString(); - InstancePtr inst = APPLICATION->instances()->getInstanceById(id); + BaseInstance* inst = APPLICATION->instances()->getInstanceById(id); if (!inst) return; @@ -1520,7 +1520,7 @@ void MainWindow::on_actionLaunchInstance_triggered() } } -void MainWindow::activateInstance(InstancePtr instance) +void MainWindow::activateInstance(BaseInstance* instance) { APPLICATION->launch(instance); } @@ -1567,8 +1567,8 @@ void MainWindow::instanceChanged(const QModelIndex& current, [[maybe_unused]] co return; } if (m_selectedInstance) { - disconnect(m_selectedInstance.get(), &BaseInstance::runningStatusChanged, this, &MainWindow::refreshCurrentInstance); - disconnect(m_selectedInstance.get(), &BaseInstance::profilerChanged, this, &MainWindow::refreshCurrentInstance); + disconnect(m_selectedInstance, &BaseInstance::runningStatusChanged, this, &MainWindow::refreshCurrentInstance); + disconnect(m_selectedInstance, &BaseInstance::profilerChanged, this, &MainWindow::refreshCurrentInstance); } QString id = current.data(InstanceList::InstanceIDRole).toString(); m_selectedInstance = APPLICATION->instances()->getInstanceById(id); @@ -1588,8 +1588,8 @@ void MainWindow::instanceChanged(const QModelIndex& current, [[maybe_unused]] co APPLICATION->settings()->set("SelectedInstance", m_selectedInstance->id()); - connect(m_selectedInstance.get(), &BaseInstance::runningStatusChanged, this, &MainWindow::refreshCurrentInstance); - connect(m_selectedInstance.get(), &BaseInstance::profilerChanged, this, &MainWindow::refreshCurrentInstance); + connect(m_selectedInstance, &BaseInstance::runningStatusChanged, this, &MainWindow::refreshCurrentInstance); + connect(m_selectedInstance, &BaseInstance::profilerChanged, this, &MainWindow::refreshCurrentInstance); } else { APPLICATION->settings()->set("SelectedInstance", QString()); selectionBad(); diff --git a/launcher/ui/MainWindow.h b/launcher/ui/MainWindow.h index 0e692eda7..7dcba885a 100644 --- a/launcher/ui/MainWindow.h +++ b/launcher/ui/MainWindow.h @@ -220,7 +220,7 @@ class MainWindow : public QMainWindow { void retranslateUi(); void addInstance(const QString& url = QString(), const QMap& extra_info = {}); - void activateInstance(InstancePtr instance); + void activateInstance(BaseInstance* instance); void setCatBackground(bool enabled); void updateInstanceToolIcon(QString new_icon); void setSelectedInstanceById(const QString& id); @@ -247,7 +247,7 @@ class MainWindow : public QMainWindow { unique_qobject_ptr m_newsChecker; - InstancePtr m_selectedInstance; + BaseInstance* m_selectedInstance = nullptr; QString m_currentInstIcon; // managed by the application object diff --git a/launcher/ui/dialogs/CopyInstanceDialog.cpp b/launcher/ui/dialogs/CopyInstanceDialog.cpp index e5c2c301b..74fab3407 100644 --- a/launcher/ui/dialogs/CopyInstanceDialog.cpp +++ b/launcher/ui/dialogs/CopyInstanceDialog.cpp @@ -51,7 +51,7 @@ #include "InstanceList.h" #include "icons/IconList.h" -CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget* parent) +CopyInstanceDialog::CopyInstanceDialog(BaseInstance* original, QWidget* parent) : QDialog(parent), ui(new Ui::CopyInstanceDialog), m_original(original) { ui->setupUi(this); diff --git a/launcher/ui/dialogs/CopyInstanceDialog.h b/launcher/ui/dialogs/CopyInstanceDialog.h index 698c6e939..5f150cf5f 100644 --- a/launcher/ui/dialogs/CopyInstanceDialog.h +++ b/launcher/ui/dialogs/CopyInstanceDialog.h @@ -30,7 +30,7 @@ class CopyInstanceDialog : public QDialog { Q_OBJECT public: - explicit CopyInstanceDialog(InstancePtr original, QWidget* parent = 0); + explicit CopyInstanceDialog(BaseInstance* original, QWidget* parent = 0); ~CopyInstanceDialog(); void updateDialogState(); @@ -71,7 +71,7 @@ class CopyInstanceDialog : public QDialog { /* data */ Ui::CopyInstanceDialog* ui; QString InstIconKey; - InstancePtr m_original; + BaseInstance* m_original; InstanceCopyPrefs m_selectedOptions; bool m_cloneSupported = false; bool m_linkSupported = false; diff --git a/launcher/ui/dialogs/CreateShortcutDialog.cpp b/launcher/ui/dialogs/CreateShortcutDialog.cpp index 574881ad0..7d4199f13 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.cpp +++ b/launcher/ui/dialogs/CreateShortcutDialog.cpp @@ -55,7 +55,7 @@ #include "minecraft/WorldList.h" #include "minecraft/auth/AccountList.h" -CreateShortcutDialog::CreateShortcutDialog(InstancePtr instance, QWidget* parent) +CreateShortcutDialog::CreateShortcutDialog(BaseInstance* instance, QWidget* parent) : QDialog(parent), ui(new Ui::CreateShortcutDialog), m_instance(instance) { ui->setupUi(this); @@ -64,7 +64,7 @@ CreateShortcutDialog::CreateShortcutDialog(InstancePtr instance, QWidget* parent ui->iconButton->setIcon(APPLICATION->icons()->getIcon(InstIconKey)); ui->instNameTextBox->setPlaceholderText(instance->name()); - auto mInst = std::dynamic_pointer_cast(instance); + auto mInst = dynamic_cast(instance); m_QuickJoinSupported = mInst && mInst->traits().contains("feature:is_quick_play_singleplayer"); auto worldList = mInst->worldList(); worldList->update(); @@ -212,7 +212,7 @@ void CreateShortcutDialog::createShortcut() if (ui->overrideAccountCheckbox->isChecked()) extraArgs.append({ "--profile", ui->accountSelectionBox->currentData().toString() }); - ShortcutUtils::Shortcut args{ m_instance.get(), name, targetString, this, extraArgs, InstIconKey, target }; + ShortcutUtils::Shortcut args{ m_instance, name, targetString, this, extraArgs, InstIconKey, target }; if (target == ShortcutTarget::Desktop) ShortcutUtils::createInstanceShortcutOnDesktop(args); else if (target == ShortcutTarget::Applications) diff --git a/launcher/ui/dialogs/CreateShortcutDialog.h b/launcher/ui/dialogs/CreateShortcutDialog.h index 29e68a787..8d666ef63 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.h +++ b/launcher/ui/dialogs/CreateShortcutDialog.h @@ -28,7 +28,7 @@ class CreateShortcutDialog : public QDialog { Q_OBJECT public: - explicit CreateShortcutDialog(InstancePtr instance, QWidget* parent = nullptr); + explicit CreateShortcutDialog(BaseInstance* instance, QWidget* parent = nullptr); ~CreateShortcutDialog(); void createShortcut(); @@ -51,7 +51,7 @@ class CreateShortcutDialog : public QDialog { // Data Ui::CreateShortcutDialog* ui; QString InstIconKey; - InstancePtr m_instance; + BaseInstance* m_instance; bool m_QuickJoinSupported = false; // Functions diff --git a/launcher/ui/dialogs/ExportInstanceDialog.cpp b/launcher/ui/dialogs/ExportInstanceDialog.cpp index 21c16f01a..96dab97e3 100644 --- a/launcher/ui/dialogs/ExportInstanceDialog.cpp +++ b/launcher/ui/dialogs/ExportInstanceDialog.cpp @@ -60,7 +60,7 @@ #include "Application.h" #include "SeparatorPrefixTree.h" -ExportInstanceDialog::ExportInstanceDialog(InstancePtr instance, QWidget* parent) +ExportInstanceDialog::ExportInstanceDialog(BaseInstance* instance, QWidget* parent) : QDialog(parent), m_ui(new Ui::ExportInstanceDialog), m_instance(instance) { m_ui->setupUi(this); @@ -98,7 +98,7 @@ ExportInstanceDialog::~ExportInstanceDialog() } /// Save icon to instance's folder is needed -void SaveIcon(InstancePtr m_instance) +void SaveIcon(BaseInstance* m_instance) { auto iconKey = m_instance->iconKey(); auto iconList = APPLICATION->icons(); diff --git a/launcher/ui/dialogs/ExportInstanceDialog.h b/launcher/ui/dialogs/ExportInstanceDialog.h index 989e1635a..c1f8559cc 100644 --- a/launcher/ui/dialogs/ExportInstanceDialog.h +++ b/launcher/ui/dialogs/ExportInstanceDialog.h @@ -43,7 +43,6 @@ #include "FileIgnoreProxy.h" class BaseInstance; -using InstancePtr = std::shared_ptr; namespace Ui { class ExportInstanceDialog; @@ -53,7 +52,7 @@ class ExportInstanceDialog : public QDialog { Q_OBJECT public: - explicit ExportInstanceDialog(InstancePtr instance, QWidget* parent = 0); + explicit ExportInstanceDialog(BaseInstance* instance, QWidget* parent = 0); ~ExportInstanceDialog(); virtual void done(int result); @@ -64,7 +63,7 @@ class ExportInstanceDialog : public QDialog { private: Ui::ExportInstanceDialog* m_ui; - InstancePtr m_instance; + BaseInstance* m_instance; FileIgnoreProxy* m_proxyModel; FastFileIconProvider m_icons; diff --git a/launcher/ui/dialogs/ExportPackDialog.cpp b/launcher/ui/dialogs/ExportPackDialog.cpp index 17b3ba703..d0a9f0914 100644 --- a/launcher/ui/dialogs/ExportPackDialog.cpp +++ b/launcher/ui/dialogs/ExportPackDialog.cpp @@ -33,7 +33,7 @@ #include "MMCZip.h" #include "modplatform/modrinth/ModrinthPackExportTask.h" -ExportPackDialog::ExportPackDialog(MinecraftInstancePtr instance, QWidget* parent, ModPlatform::ResourceProvider provider) +ExportPackDialog::ExportPackDialog(MinecraftInstance* instance, QWidget* parent, ModPlatform::ResourceProvider provider) : QDialog(parent), m_instance(instance), m_ui(new Ui::ExportPackDialog), m_provider(provider) { Q_ASSERT(m_provider == ModPlatform::ResourceProvider::MODRINTH || m_provider == ModPlatform::ResourceProvider::FLAME); @@ -101,23 +101,20 @@ ExportPackDialog::ExportPackDialog(MinecraftInstancePtr instance, QWidget* paren const QDir::Filters filter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden); - MinecraftInstance* mcInstance = dynamic_cast(instance.get()); - if (mcInstance) { - for (auto resourceModel : mcInstance->resourceLists()) { - if (resourceModel == nullptr) { - continue; - } - - if (!resourceModel->indexDir().exists()) { - continue; - } - - if (resourceModel->dir() == resourceModel->indexDir()) { - continue; - } - - m_proxy->ignoreFilesWithPath().insert(instanceRoot.relativeFilePath(resourceModel->indexDir().absolutePath())); + for (auto resourceModel : instance->resourceLists()) { + if (resourceModel == nullptr) { + continue; } + + if (!resourceModel->indexDir().exists()) { + continue; + } + + if (resourceModel->dir() == resourceModel->indexDir()) { + continue; + } + + m_proxy->ignoreFilesWithPath().insert(instanceRoot.relativeFilePath(resourceModel->indexDir().absolutePath())); } m_ui->files->setModel(m_proxy); diff --git a/launcher/ui/dialogs/ExportPackDialog.h b/launcher/ui/dialogs/ExportPackDialog.h index e93055d8d..81e657aa0 100644 --- a/launcher/ui/dialogs/ExportPackDialog.h +++ b/launcher/ui/dialogs/ExportPackDialog.h @@ -33,7 +33,7 @@ class ExportPackDialog : public QDialog { Q_OBJECT public: - explicit ExportPackDialog(MinecraftInstancePtr instance, + explicit ExportPackDialog(MinecraftInstance* instance, QWidget* parent = nullptr, ModPlatform::ResourceProvider provider = ModPlatform::ResourceProvider::MODRINTH); ~ExportPackDialog(); @@ -45,7 +45,7 @@ class ExportPackDialog : public QDialog { QString ignoreFileName(); private: - const MinecraftInstancePtr m_instance; + MinecraftInstance* m_instance; Ui::ExportPackDialog* m_ui; FileIgnoreProxy* m_proxy; FastFileIconProvider m_icons; diff --git a/launcher/ui/dialogs/IconPickerDialog.cpp b/launcher/ui/dialogs/IconPickerDialog.cpp index f4d352c86..52a5ffbbb 100644 --- a/launcher/ui/dialogs/IconPickerDialog.cpp +++ b/launcher/ui/dialogs/IconPickerDialog.cpp @@ -40,7 +40,7 @@ IconPickerDialog::IconPickerDialog(QWidget* parent) : QDialog(parent), ui(new Ui ui->verticalLayout->insertWidget(0, searchBar); proxyModel = new QSortFilterProxyModel(this); - proxyModel->setSourceModel(APPLICATION->icons().get()); + proxyModel->setSourceModel(APPLICATION->icons()); proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); ui->iconView->setModel(proxyModel); @@ -88,7 +88,7 @@ IconPickerDialog::IconPickerDialog(QWidget* parent) : QDialog(parent), ui(new Ui connect(buttonFolder, &QPushButton::clicked, this, &IconPickerDialog::openFolder); connect(searchBar, &QLineEdit::textChanged, this, &IconPickerDialog::filterIcons); // Prevent incorrect indices from e.g. filesystem changes - connect(APPLICATION->icons().get(), &IconList::iconUpdated, this, [this]() { proxyModel->invalidate(); }); + connect(APPLICATION->icons(), &IconList::iconUpdated, this, [this]() { proxyModel->invalidate(); }); } bool IconPickerDialog::eventFilter(QObject* obj, QEvent* evt) diff --git a/launcher/ui/dialogs/ImportResourceDialog.cpp b/launcher/ui/dialogs/ImportResourceDialog.cpp index 7cd178130..80096ed01 100644 --- a/launcher/ui/dialogs/ImportResourceDialog.cpp +++ b/launcher/ui/dialogs/ImportResourceDialog.cpp @@ -35,7 +35,7 @@ ImportResourceDialog::ImportResourceDialog(QString file_path, ModPlatform::Resou contentsWidget->setItemDelegate(new ListViewDelegate()); proxyModel = new InstanceProxyModel(this); - proxyModel->setSourceModel(APPLICATION->instances().get()); + proxyModel->setSourceModel(APPLICATION->instances()); proxyModel->sort(0); contentsWidget->setModel(proxyModel); diff --git a/launcher/ui/dialogs/InstallLoaderDialog.cpp b/launcher/ui/dialogs/InstallLoaderDialog.cpp index c811e01eb..820e65a63 100644 --- a/launcher/ui/dialogs/InstallLoaderDialog.cpp +++ b/launcher/ui/dialogs/InstallLoaderDialog.cpp @@ -37,7 +37,7 @@ class InstallLoaderPage : public VersionSelectWidget, public BasePage { const QString& iconName, const QString& name, const Version& oldestVersion, - const std::shared_ptr profile) + PackProfile* profile) : VersionSelectWidget(nullptr), uid(id), iconName(iconName), name(name) { const QString minecraftVersion = profile->getComponentVersion("net.minecraft"); @@ -88,8 +88,8 @@ static InstallLoaderPage* pageCast(BasePage* page) return result; } -InstallLoaderDialog::InstallLoaderDialog(std::shared_ptr profile, const QString& uid, QWidget* parent) - : QDialog(parent), profile(std::move(profile)), container(new PageContainer(this, QString(), this)), buttons(new QDialogButtonBox(this)) +InstallLoaderDialog::InstallLoaderDialog(PackProfile* profile, const QString& uid, QWidget* parent) + : QDialog(parent), profile(profile), container(new PageContainer(this, QString(), this)), buttons(new QDialogButtonBox(this)) { auto layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); diff --git a/launcher/ui/dialogs/InstallLoaderDialog.h b/launcher/ui/dialogs/InstallLoaderDialog.h index 86cb3bdd2..501f136e2 100644 --- a/launcher/ui/dialogs/InstallLoaderDialog.h +++ b/launcher/ui/dialogs/InstallLoaderDialog.h @@ -30,7 +30,7 @@ class InstallLoaderDialog final : public QDialog, protected BasePageProvider { Q_OBJECT public: - explicit InstallLoaderDialog(std::shared_ptr instance, const QString& uid = QString(), QWidget* parent = nullptr); + explicit InstallLoaderDialog(PackProfile* instance, const QString& uid = QString(), QWidget* parent = nullptr); QList getPages() override; QString dialogTitle() override; @@ -39,7 +39,7 @@ class InstallLoaderDialog final : public QDialog, protected BasePageProvider { void done(int result) override; private: - std::shared_ptr profile; + PackProfile* profile; PageContainer* container; QDialogButtonBox* buttons; }; diff --git a/launcher/ui/dialogs/ProfileSelectDialog.h b/launcher/ui/dialogs/ProfileSelectDialog.h index e56ba0527..a44e82d55 100644 --- a/launcher/ui/dialogs/ProfileSelectDialog.h +++ b/launcher/ui/dialogs/ProfileSelectDialog.h @@ -76,7 +76,7 @@ class ProfileSelectDialog : public QDialog { void on_buttonBox_rejected(); protected: - shared_qobject_ptr m_accounts; + AccountList* m_accounts; //! The account that was selected when the user clicked OK. MinecraftAccountPtr m_selected; diff --git a/launcher/ui/dialogs/ProfileSetupDialog.cpp b/launcher/ui/dialogs/ProfileSetupDialog.cpp index af8b26c66..8e2f2289c 100644 --- a/launcher/ui/dialogs/ProfileSetupDialog.cpp +++ b/launcher/ui/dialogs/ProfileSetupDialog.cpp @@ -162,8 +162,8 @@ void ProfileSetupDialog::checkName(const QString& name) m_check_response.reset(new QByteArray()); if (m_check_task) disconnect(m_check_task.get(), nullptr, this, nullptr); - m_check_task = Net::Download::makeByteArray(url, m_check_response); - m_check_task->addHeaderProxy(new Net::RawHeaderProxy(headers)); + m_check_task = Net::Download::makeByteArray(url, m_check_response.get()); + m_check_task->addHeaderProxy(std::make_unique(headers)); connect(m_check_task.get(), &Task::finished, this, &ProfileSetupDialog::checkFinished); @@ -206,8 +206,8 @@ void ProfileSetupDialog::setupProfile(const QString& profileName) { "Authorization", QString("Bearer %1").arg(m_accountToSetup->accessToken()).toUtf8() } }; m_profile_response.reset(new QByteArray()); - m_profile_task = Net::Upload::makeByteArray(url, m_profile_response, payloadTemplate.arg(profileName).toUtf8()); - m_profile_task->addHeaderProxy(new Net::RawHeaderProxy(headers)); + m_profile_task = Net::Upload::makeByteArray(url, m_profile_response.get(), payloadTemplate.arg(profileName).toUtf8()); + m_profile_task->addHeaderProxy(std::make_unique(headers)); connect(m_profile_task.get(), &Task::finished, this, &ProfileSetupDialog::setupProfileFinished); diff --git a/launcher/ui/dialogs/ProfileSetupDialog.h b/launcher/ui/dialogs/ProfileSetupDialog.h index c005a4138..594ec6d51 100644 --- a/launcher/ui/dialogs/ProfileSetupDialog.h +++ b/launcher/ui/dialogs/ProfileSetupDialog.h @@ -70,9 +70,9 @@ class ProfileSetupDialog : public QDialog { QTimer checkStartTimer; - std::shared_ptr m_check_response; + std::unique_ptr m_check_response; Net::Download::Ptr m_check_task; - std::shared_ptr m_profile_response; + std::unique_ptr m_profile_response; Net::Upload::Ptr m_profile_task; }; diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.cpp b/launcher/ui/dialogs/ResourceDownloadDialog.cpp index 2fd0b8c7c..439cb5391 100644 --- a/launcher/ui/dialogs/ResourceDownloadDialog.cpp +++ b/launcher/ui/dialogs/ResourceDownloadDialog.cpp @@ -49,7 +49,7 @@ namespace ResourceDownload { -ResourceDownloadDialog::ResourceDownloadDialog(QWidget* parent, const std::shared_ptr base_model) +ResourceDownloadDialog::ResourceDownloadDialog(QWidget* parent, ResourceFolderModel* base_model) : QDialog(parent) , m_base_model(base_model) , m_buttons(QDialogButtonBox::Help | QDialogButtonBox::Ok | QDialogButtonBox::Cancel) @@ -269,7 +269,7 @@ void ResourceDownloadDialog::selectedPageChanged(BasePage* previous, BasePage* s result->setSearchTerm(prev_page->getSearchTerm()); } -ModDownloadDialog::ModDownloadDialog(QWidget* parent, const std::shared_ptr& mods, BaseInstance* instance) +ModDownloadDialog::ModDownloadDialog(QWidget* parent, ModFolderModel* mods, BaseInstance* instance) : ResourceDownloadDialog(parent, mods), m_instance(instance) { setWindowTitle(dialogTitle()); @@ -298,7 +298,7 @@ QList ModDownloadDialog::getPages() GetModDependenciesTask::Ptr ModDownloadDialog::getModDependenciesTask() { if (!APPLICATION->settings()->get("ModDependenciesDisabled").toBool()) { // dependencies - if (auto model = dynamic_cast(getBaseModel().get()); model) { + if (auto model = dynamic_cast(getBaseModel()); model) { QList> selectedVers; for (auto& selected : getTasks()) { selectedVers.append(std::make_shared(selected->getPack(), selected->getVersion())); @@ -311,7 +311,7 @@ GetModDependenciesTask::Ptr ModDownloadDialog::getModDependenciesTask() } ResourcePackDownloadDialog::ResourcePackDownloadDialog(QWidget* parent, - const std::shared_ptr& resource_packs, + ResourcePackFolderModel* resource_packs, BaseInstance* instance) : ResourceDownloadDialog(parent, resource_packs), m_instance(instance) { @@ -336,7 +336,7 @@ QList ResourcePackDownloadDialog::getPages() } TexturePackDownloadDialog::TexturePackDownloadDialog(QWidget* parent, - const std::shared_ptr& resource_packs, + TexturePackFolderModel* resource_packs, BaseInstance* instance) : ResourceDownloadDialog(parent, resource_packs), m_instance(instance) { @@ -361,7 +361,7 @@ QList TexturePackDownloadDialog::getPages() } ShaderPackDownloadDialog::ShaderPackDownloadDialog(QWidget* parent, - const std::shared_ptr& shaders, + ShaderPackFolderModel* shaders, BaseInstance* instance) : ResourceDownloadDialog(parent, shaders), m_instance(instance) { @@ -401,7 +401,7 @@ void ResourceDownloadDialog::setResourceMetadata(const std::shared_ptr& data_packs, + DataPackFolderModel* data_packs, BaseInstance* instance) : ResourceDownloadDialog(parent, data_packs), m_instance(instance) { diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.h b/launcher/ui/dialogs/ResourceDownloadDialog.h index a83f3c536..3597d4f31 100644 --- a/launcher/ui/dialogs/ResourceDownloadDialog.h +++ b/launcher/ui/dialogs/ResourceDownloadDialog.h @@ -51,7 +51,7 @@ class ResourceDownloadDialog : public QDialog, public BasePageProvider { public: using DownloadTaskPtr = shared_qobject_ptr; - ResourceDownloadDialog(QWidget* parent, std::shared_ptr base_model); + ResourceDownloadDialog(QWidget* parent, ResourceFolderModel* base_model); void initializeContainer(); void connectButtons(); @@ -68,7 +68,7 @@ class ResourceDownloadDialog : public QDialog, public BasePageProvider { void removeResource(const QString&); const QList getTasks(); - const std::shared_ptr getBaseModel() const { return m_base_model; } + ResourceFolderModel* getBaseModel() const { return m_base_model; } void setResourceMetadata(const std::shared_ptr& meta); @@ -88,7 +88,7 @@ class ResourceDownloadDialog : public QDialog, public BasePageProvider { virtual GetModDependenciesTask::Ptr getModDependenciesTask() { return nullptr; } protected: - const std::shared_ptr m_base_model; + ResourceFolderModel* m_base_model; PageContainer* m_container = nullptr; @@ -100,7 +100,7 @@ class ModDownloadDialog final : public ResourceDownloadDialog { Q_OBJECT public: - explicit ModDownloadDialog(QWidget* parent, const std::shared_ptr& mods, BaseInstance* instance); + explicit ModDownloadDialog(QWidget* parent, ModFolderModel* mods, BaseInstance* instance); ~ModDownloadDialog() override = default; //: String that gets appended to the mod download dialog title ("Download " + resourcesString()) @@ -119,7 +119,7 @@ class ResourcePackDownloadDialog final : public ResourceDownloadDialog { public: explicit ResourcePackDownloadDialog(QWidget* parent, - const std::shared_ptr& resource_packs, + ResourcePackFolderModel* resource_packs, BaseInstance* instance); ~ResourcePackDownloadDialog() override = default; @@ -138,7 +138,7 @@ class TexturePackDownloadDialog final : public ResourceDownloadDialog { public: explicit TexturePackDownloadDialog(QWidget* parent, - const std::shared_ptr& resource_packs, + TexturePackFolderModel* resource_packs, BaseInstance* instance); ~TexturePackDownloadDialog() override = default; @@ -156,7 +156,7 @@ class ShaderPackDownloadDialog final : public ResourceDownloadDialog { Q_OBJECT public: - explicit ShaderPackDownloadDialog(QWidget* parent, const std::shared_ptr& shader_packs, BaseInstance* instance); + explicit ShaderPackDownloadDialog(QWidget* parent, ShaderPackFolderModel* shader_packs, BaseInstance* instance); ~ShaderPackDownloadDialog() override = default; //: String that gets appended to the shader pack download dialog title ("Download " + resourcesString()) @@ -173,7 +173,7 @@ class DataPackDownloadDialog final : public ResourceDownloadDialog { Q_OBJECT public: - explicit DataPackDownloadDialog(QWidget* parent, const std::shared_ptr& data_packs, BaseInstance* instance); + explicit DataPackDownloadDialog(QWidget* parent, DataPackFolderModel* data_packs, BaseInstance* instance); ~DataPackDownloadDialog() override = default; //: String that gets appended to the data pack download dialog title ("Download " + resourcesString()) diff --git a/launcher/ui/dialogs/ResourceUpdateDialog.cpp b/launcher/ui/dialogs/ResourceUpdateDialog.cpp index a460e9d35..3587b8c40 100644 --- a/launcher/ui/dialogs/ResourceUpdateDialog.cpp +++ b/launcher/ui/dialogs/ResourceUpdateDialog.cpp @@ -36,7 +36,7 @@ static std::list mcVersions(BaseInstance* inst) ResourceUpdateDialog::ResourceUpdateDialog(QWidget* parent, BaseInstance* instance, - const std::shared_ptr resourceModel, + ResourceFolderModel* resourceModel, QList& searchFor, bool includeDeps, QList loadersList) @@ -188,7 +188,7 @@ void ResourceUpdateDialog::checkCandidates() } if (m_includeDeps && !APPLICATION->settings()->get("ModDependenciesDisabled").toBool()) { // dependencies - auto* mod_model = dynamic_cast(m_resourceModel.get()); + auto* mod_model = dynamic_cast(m_resourceModel); if (mod_model != nullptr) { auto depTask = makeShared(m_instance, mod_model, selectedVers); diff --git a/launcher/ui/dialogs/ResourceUpdateDialog.h b/launcher/ui/dialogs/ResourceUpdateDialog.h index be3c19dcc..ea81aeb7a 100644 --- a/launcher/ui/dialogs/ResourceUpdateDialog.h +++ b/launcher/ui/dialogs/ResourceUpdateDialog.h @@ -18,7 +18,7 @@ class ResourceUpdateDialog final : public ReviewMessageBox { public: explicit ResourceUpdateDialog(QWidget* parent, BaseInstance* instance, - std::shared_ptr resourceModel, + ResourceFolderModel* resourceModel, QList& searchFor, bool includeDeps, QList loadersList = {}); @@ -48,7 +48,7 @@ class ResourceUpdateDialog final : public ReviewMessageBox { shared_qobject_ptr m_modrinthCheckTask; shared_qobject_ptr m_flameCheckTask; - const std::shared_ptr m_resourceModel; + ResourceFolderModel* m_resourceModel; QList& m_candidates; QList m_modrinthToUpdate; diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.cpp b/launcher/ui/dialogs/skins/SkinManageDialog.cpp index d665a1781..b700c3a4c 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.cpp +++ b/launcher/ui/dialogs/skins/SkinManageDialog.cpp @@ -476,8 +476,8 @@ void SkinManageDialog::on_userBtn_clicked() auto uuidLoop = makeShared(); auto profileLoop = makeShared(); - auto getUUID = Net::Download::makeByteArray("https://api.minecraftservices.com/minecraft/profile/lookup/name/" + user, uuidOut); - auto getProfile = Net::Download::makeByteArray(QUrl(), profileOut); + auto getUUID = Net::Download::makeByteArray("https://api.minecraftservices.com/minecraft/profile/lookup/name/" + user, uuidOut.get()); + auto getProfile = Net::Download::makeByteArray(QUrl(), profileOut.get()); auto downloadSkin = Net::Download::makeFile(QUrl(), path); QString failReason; diff --git a/launcher/ui/instanceview/InstanceView.cpp b/launcher/ui/instanceview/InstanceView.cpp index 14d480e90..c09da3a04 100644 --- a/launcher/ui/instanceview/InstanceView.cpp +++ b/launcher/ui/instanceview/InstanceView.cpp @@ -642,7 +642,7 @@ void InstanceView::dropEvent(QDropEvent* event) return; } auto instanceId = QString::fromUtf8(mimedata->data("application/x-instanceid")); - auto instanceList = APPLICATION->instances().get(); + auto instanceList = APPLICATION->instances(); instanceList->setInstanceGroup(instanceId, group->text); event->setDropAction(Qt::MoveAction); event->accept(); diff --git a/launcher/ui/pages/global/AccountListPage.cpp b/launcher/ui/pages/global/AccountListPage.cpp index 7e7490d34..6c88acd06 100644 --- a/launcher/ui/pages/global/AccountListPage.cpp +++ b/launcher/ui/pages/global/AccountListPage.cpp @@ -61,7 +61,7 @@ AccountListPage::AccountListPage(QWidget* parent) : QMainWindow(parent), ui(new m_accounts = APPLICATION->accounts(); - ui->listView->setModel(m_accounts.get()); + ui->listView->setModel(m_accounts); ui->listView->header()->setSectionResizeMode(AccountList::VListColumns::ProfileNameColumn, QHeaderView::Stretch); ui->listView->header()->setSectionResizeMode(AccountList::VListColumns::NameColumn, QHeaderView::Stretch); ui->listView->header()->setSectionResizeMode(AccountList::VListColumns::TypeColumn, QHeaderView::ResizeToContents); @@ -78,9 +78,9 @@ AccountListPage::AccountListPage(QWidget* parent) : QMainWindow(parent), ui(new connect(ui->listView, &VersionListView::activated, this, [this](const QModelIndex& index) { m_accounts->setDefaultAccount(m_accounts->at(index.row())); }); - connect(m_accounts.get(), &AccountList::listChanged, this, &AccountListPage::listChanged); - connect(m_accounts.get(), &AccountList::listActivityChanged, this, &AccountListPage::listChanged); - connect(m_accounts.get(), &AccountList::defaultAccountChanged, this, &AccountListPage::listChanged); + connect(m_accounts, &AccountList::listChanged, this, &AccountListPage::listChanged); + connect(m_accounts, &AccountList::listActivityChanged, this, &AccountListPage::listChanged); + connect(m_accounts, &AccountList::defaultAccountChanged, this, &AccountListPage::listChanged); updateButtonStates(); diff --git a/launcher/ui/pages/global/AccountListPage.h b/launcher/ui/pages/global/AccountListPage.h index 2841b9456..d0743f0e0 100644 --- a/launcher/ui/pages/global/AccountListPage.h +++ b/launcher/ui/pages/global/AccountListPage.h @@ -88,6 +88,6 @@ class AccountListPage : public QMainWindow, public BasePage { private: void changeEvent(QEvent* event) override; QMenu* createPopupMenu() override; - shared_qobject_ptr m_accounts; + AccountList* m_accounts; Ui::AccountListPage* ui; }; diff --git a/launcher/ui/pages/instance/DataPackPage.cpp b/launcher/ui/pages/instance/DataPackPage.cpp index a56cc9b79..71d421850 100644 --- a/launcher/ui/pages/instance/DataPackPage.cpp +++ b/launcher/ui/pages/instance/DataPackPage.cpp @@ -25,7 +25,7 @@ #include "ui/dialogs/ResourceDownloadDialog.h" #include "ui/dialogs/ResourceUpdateDialog.h" -DataPackPage::DataPackPage(BaseInstance* instance, std::shared_ptr model, QWidget* parent) +DataPackPage::DataPackPage(BaseInstance* instance, DataPackFolderModel* model, QWidget* parent) : ExternalResourcesPage(instance, model, parent), m_model(model) { ui->actionDownloadItem->setText(tr("Download Packs")); diff --git a/launcher/ui/pages/instance/DataPackPage.h b/launcher/ui/pages/instance/DataPackPage.h index bed84540a..0a121a5bc 100644 --- a/launcher/ui/pages/instance/DataPackPage.h +++ b/launcher/ui/pages/instance/DataPackPage.h @@ -26,7 +26,7 @@ class DataPackPage : public ExternalResourcesPage { Q_OBJECT public: - explicit DataPackPage(BaseInstance* instance, std::shared_ptr model, QWidget* parent = nullptr); + explicit DataPackPage(BaseInstance* instance, DataPackFolderModel* model, QWidget* parent = nullptr); QString displayName() const override { return QObject::tr("Data Packs"); } QIcon icon() const override { return QIcon::fromTheme("datapacks"); } @@ -43,7 +43,7 @@ class DataPackPage : public ExternalResourcesPage { void changeDataPackVersion(); private: - std::shared_ptr m_model; + DataPackFolderModel* m_model; QPointer m_downloadDialog; }; diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.cpp b/launcher/ui/pages/instance/ExternalResourcesPage.cpp index 9174d6ee4..da7fa3ee0 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.cpp +++ b/launcher/ui/pages/instance/ExternalResourcesPage.cpp @@ -47,7 +47,7 @@ #include #include -ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, std::shared_ptr model, QWidget* parent) +ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, ResourceFolderModel* model, QWidget* parent) : QMainWindow(parent), m_instance(instance), ui(new Ui::ExternalResourcesPage), m_model(model) { ui->setupUi(this); @@ -58,7 +58,7 @@ ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, std::shared m_filterModel->setDynamicSortFilter(true); m_filterModel->setFilterCaseSensitivity(Qt::CaseInsensitive); m_filterModel->setSortCaseSensitivity(Qt::CaseInsensitive); - m_filterModel->setSourceModel(m_model.get()); + m_filterModel->setSourceModel(m_model); m_filterModel->setFilterKeyColumn(-1); ui->treeView->setModel(m_filterModel); // must come after setModel @@ -98,12 +98,12 @@ ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, std::shared }; connect(selection_model, &QItemSelectionModel::selectionChanged, this, updateExtra); - connect(model.get(), &ResourceFolderModel::updateFinished, this, updateExtra); - connect(model.get(), &ResourceFolderModel::parseFinished, this, updateExtra); + connect(model, &ResourceFolderModel::updateFinished, this, updateExtra); + connect(model, &ResourceFolderModel::parseFinished, this, updateExtra); connect(selection_model, &QItemSelectionModel::selectionChanged, this, [this] { updateActions(); }); - connect(m_model.get(), &ResourceFolderModel::rowsInserted, this, [this] { updateActions(); }); - connect(m_model.get(), &ResourceFolderModel::rowsRemoved, this, [this] { updateActions(); }); + connect(m_model, &ResourceFolderModel::rowsInserted, this, [this] { updateActions(); }); + connect(m_model, &ResourceFolderModel::rowsRemoved, this, [this] { updateActions(); }); auto viewHeader = ui->treeView->header(); viewHeader->setContextMenuPolicy(Qt::CustomContextMenu); diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.h b/launcher/ui/pages/instance/ExternalResourcesPage.h index 00bb5d17d..7f4320648 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.h +++ b/launcher/ui/pages/instance/ExternalResourcesPage.h @@ -20,7 +20,7 @@ class ExternalResourcesPage : public QMainWindow, public BasePage { Q_OBJECT public: - explicit ExternalResourcesPage(BaseInstance* instance, std::shared_ptr model, QWidget* parent = nullptr); + explicit ExternalResourcesPage(BaseInstance* instance, ResourceFolderModel* model, QWidget* parent = nullptr); virtual ~ExternalResourcesPage(); virtual QString displayName() const override = 0; @@ -68,7 +68,7 @@ class ExternalResourcesPage : public QMainWindow, public BasePage { BaseInstance* m_instance = nullptr; Ui::ExternalResourcesPage* ui = nullptr; - std::shared_ptr m_model; + ResourceFolderModel* m_model; QSortFilterProxyModel* m_filterModel = nullptr; QString m_fileSelectionFilter; diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.h b/launcher/ui/pages/instance/InstanceSettingsPage.h index aca47e2c7..d41bad2d4 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.h +++ b/launcher/ui/pages/instance/InstanceSettingsPage.h @@ -44,8 +44,8 @@ class InstanceSettingsPage : public MinecraftSettingsWidget, public BasePage { Q_OBJECT public: - explicit InstanceSettingsPage(MinecraftInstancePtr instance, QWidget* parent = nullptr) - : MinecraftSettingsWidget(std::move(instance), parent) + explicit InstanceSettingsPage(MinecraftInstance* instance, QWidget* parent = nullptr) + : MinecraftSettingsWidget(instance, parent) { connect(APPLICATION, &Application::globalSettingsAboutToOpen, this, &InstanceSettingsPage::saveSettings); connect(APPLICATION, &Application::globalSettingsApplied, this, &InstanceSettingsPage::loadSettings); diff --git a/launcher/ui/pages/instance/LogPage.cpp b/launcher/ui/pages/instance/LogPage.cpp index 9f978ecb7..770698961 100644 --- a/launcher/ui/pages/instance/LogPage.cpp +++ b/launcher/ui/pages/instance/LogPage.cpp @@ -128,7 +128,7 @@ QModelIndex LogFormatProxyModel::find(const QModelIndex& start, const QString& v return QModelIndex(); } -LogPage::LogPage(InstancePtr instance, QWidget* parent) : QWidget(parent), ui(new Ui::LogPage), m_instance(instance) +LogPage::LogPage(BaseInstance* instance, QWidget* parent) : QWidget(parent), ui(new Ui::LogPage), m_instance(instance) { ui->setupUi(this); @@ -153,7 +153,7 @@ LogPage::LogPage(InstancePtr instance, QWidget* parent) : QWidget(parent), ui(ne if (launchTask) { setInstanceLaunchTaskChanged(launchTask, true); } - connect(m_instance.get(), &BaseInstance::launchTaskChanged, this, &LogPage::onInstanceLaunchTaskChanged); + connect(m_instance, &BaseInstance::launchTaskChanged, this, &LogPage::onInstanceLaunchTaskChanged); } auto findShortcut = new QShortcut(QKeySequence(QKeySequence::Find), this); @@ -203,7 +203,7 @@ void LogPage::UIToModelState() m_model->suspend(ui->trackLogCheckbox->checkState() != Qt::Checked); } -void LogPage::setInstanceLaunchTaskChanged(shared_qobject_ptr proc, bool initial) +void LogPage::setInstanceLaunchTaskChanged(LaunchTask* proc, bool initial) { m_process = proc; if (m_process) { @@ -220,7 +220,7 @@ void LogPage::setInstanceLaunchTaskChanged(shared_qobject_ptr proc, } } -void LogPage::onInstanceLaunchTaskChanged(shared_qobject_ptr proc) +void LogPage::onInstanceLaunchTaskChanged(LaunchTask* proc) { setInstanceLaunchTaskChanged(proc, false); } diff --git a/launcher/ui/pages/instance/LogPage.h b/launcher/ui/pages/instance/LogPage.h index 636a8b70d..ef93f2cc0 100644 --- a/launcher/ui/pages/instance/LogPage.h +++ b/launcher/ui/pages/instance/LogPage.h @@ -63,7 +63,7 @@ class LogPage : public QWidget, public BasePage { Q_OBJECT public: - explicit LogPage(InstancePtr instance, QWidget* parent = 0); + explicit LogPage(BaseInstance* instance, QWidget* parent = 0); virtual ~LogPage(); virtual QString displayName() const override { return tr("Minecraft Log"); } virtual QIcon icon() const override { return QIcon::fromTheme("log"); } @@ -88,17 +88,17 @@ class LogPage : public QWidget, public BasePage { void findNextActivated(); void findPreviousActivated(); - void onInstanceLaunchTaskChanged(shared_qobject_ptr proc); + void onInstanceLaunchTaskChanged(LaunchTask* proc); private: void modelStateToUI(); void UIToModelState(); - void setInstanceLaunchTaskChanged(shared_qobject_ptr proc, bool initial); + void setInstanceLaunchTaskChanged(LaunchTask* proc, bool initial); private: Ui::LogPage* ui; - InstancePtr m_instance; - shared_qobject_ptr m_process; + BaseInstance* m_instance; + LaunchTask* m_process; LogFormatProxyModel* m_proxy; shared_qobject_ptr m_model; diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index e3fa9bf6b..ea3a8141e 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -66,7 +66,7 @@ #include "tasks/Task.h" #include "ui/dialogs/ProgressDialog.h" -ModFolderPage::ModFolderPage(BaseInstance* inst, std::shared_ptr model, QWidget* parent) +ModFolderPage::ModFolderPage(BaseInstance* inst, ModFolderModel* model, QWidget* parent) : ExternalResourcesPage(inst, model, parent), m_model(model) { ui->actionDownloadItem->setText(tr("Download Mods")); @@ -341,7 +341,7 @@ void ModFolderPage::exportModMetadata() dlg.exec(); } -CoreModFolderPage::CoreModFolderPage(BaseInstance* inst, std::shared_ptr mods, QWidget* parent) +CoreModFolderPage::CoreModFolderPage(BaseInstance* inst, ModFolderModel* mods, QWidget* parent) : ModFolderPage(inst, mods, parent) { auto mcInst = dynamic_cast(m_instance); @@ -381,7 +381,7 @@ bool CoreModFolderPage::shouldDisplay() const return false; } -NilModFolderPage::NilModFolderPage(BaseInstance* inst, std::shared_ptr mods, QWidget* parent) +NilModFolderPage::NilModFolderPage(BaseInstance* inst, ModFolderModel* mods, QWidget* parent) : ModFolderPage(inst, mods, parent) {} diff --git a/launcher/ui/pages/instance/ModFolderPage.h b/launcher/ui/pages/instance/ModFolderPage.h index aadeecb20..62db9fad8 100644 --- a/launcher/ui/pages/instance/ModFolderPage.h +++ b/launcher/ui/pages/instance/ModFolderPage.h @@ -48,7 +48,7 @@ class ModFolderPage : public ExternalResourcesPage { inline bool handleNoModLoader(); public: - explicit ModFolderPage(BaseInstance* inst, std::shared_ptr model, QWidget* parent = nullptr); + explicit ModFolderPage(BaseInstance* inst, ModFolderModel* model, QWidget* parent = nullptr); virtual ~ModFolderPage() = default; void setFilter(const QString& filter) { m_fileSelectionFilter = filter; } @@ -74,14 +74,14 @@ class ModFolderPage : public ExternalResourcesPage { void changeModVersion(); protected: - std::shared_ptr m_model; + ModFolderModel* m_model; QPointer m_downloadDialog; }; class CoreModFolderPage : public ModFolderPage { Q_OBJECT public: - explicit CoreModFolderPage(BaseInstance* inst, std::shared_ptr mods, QWidget* parent = 0); + explicit CoreModFolderPage(BaseInstance* inst, ModFolderModel* mods, QWidget* parent = 0); virtual ~CoreModFolderPage() = default; virtual QString displayName() const override { return tr("Core Mods"); } @@ -95,7 +95,7 @@ class CoreModFolderPage : public ModFolderPage { class NilModFolderPage : public ModFolderPage { Q_OBJECT public: - explicit NilModFolderPage(BaseInstance* inst, std::shared_ptr mods, QWidget* parent = 0); + explicit NilModFolderPage(BaseInstance* inst, ModFolderModel* mods, QWidget* parent = 0); virtual ~NilModFolderPage() = default; virtual QString displayName() const override { return tr("Nilmods"); } diff --git a/launcher/ui/pages/instance/OtherLogsPage.cpp b/launcher/ui/pages/instance/OtherLogsPage.cpp index a3914832b..c76b7d8d5 100644 --- a/launcher/ui/pages/instance/OtherLogsPage.cpp +++ b/launcher/ui/pages/instance/OtherLogsPage.cpp @@ -50,7 +50,7 @@ #include #include -OtherLogsPage::OtherLogsPage(QString id, QString displayName, QString helpPage, InstancePtr instance, QWidget* parent) +OtherLogsPage::OtherLogsPage(QString id, QString displayName, QString helpPage, BaseInstance* instance, QWidget* parent) : QWidget(parent) , m_id(id) , m_displayName(displayName) @@ -64,10 +64,10 @@ OtherLogsPage::OtherLogsPage(QString id, QString displayName, QString helpPage, m_proxy = new LogFormatProxyModel(this); if (m_instance) { - m_model.reset(new LogModel(this)); + m_model = new LogModel(this); ui->trackLogCheckbox->hide(); } else { - m_model = APPLICATION->logModel; + m_model = APPLICATION->logModel.get(); } // set up fonts in the log proxy @@ -90,7 +90,7 @@ OtherLogsPage::OtherLogsPage(QString id, QString displayName, QString helpPage, } else { modelStateToUI(); } - m_proxy->setSourceModel(m_model.get()); + m_proxy->setSourceModel(m_model); connect(&m_watcher, &QFileSystemWatcher::directoryChanged, this, &OtherLogsPage::populateSelectLogBox); @@ -243,8 +243,8 @@ void OtherLogsPage::reload() if (m_instance) { setControlsEnabled(false); } else { - m_model = APPLICATION->logModel; - m_proxy->setSourceModel(m_model.get()); + m_model = APPLICATION->logModel.get(); + m_proxy->setSourceModel(m_model); ui->text->setModel(m_proxy); ui->text->scrollToBottom(); UIToModelState(); @@ -299,7 +299,7 @@ void OtherLogsPage::reload() ui->text->clear(); ui->text->setModel(nullptr); if (!m_instance) { - m_model.reset(new LogModel(this)); + m_model = new LogModel(this); m_model->setMaxLines(getConsoleMaxLines(APPLICATION->settings())); m_model->setStopOnOverflow(shouldStopOnConsoleOverflow(APPLICATION->settings())); m_model->setOverflowMessage(tr("Cannot display this log since the log length surpassed %1 lines.").arg(m_model->getMaxLines())); @@ -338,7 +338,7 @@ void OtherLogsPage::reload() ui->text->setModel(m_proxy); ui->text->scrollToBottom(); } else { - m_proxy->setSourceModel(m_model.get()); + m_proxy->setSourceModel(m_model); ui->text->setModel(m_proxy); ui->text->scrollToBottom(); UIToModelState(); diff --git a/launcher/ui/pages/instance/OtherLogsPage.h b/launcher/ui/pages/instance/OtherLogsPage.h index 9fc0ba3b9..cd2fe6439 100644 --- a/launcher/ui/pages/instance/OtherLogsPage.h +++ b/launcher/ui/pages/instance/OtherLogsPage.h @@ -52,7 +52,7 @@ class OtherLogsPage : public QWidget, public BasePage { Q_OBJECT public: - explicit OtherLogsPage(QString id, QString displayName, QString helpPage, InstancePtr instance = nullptr, QWidget* parent = 0); + explicit OtherLogsPage(QString id, QString displayName, QString helpPage, BaseInstance* instance = nullptr, QWidget* parent = 0); ~OtherLogsPage(); QString id() const override { return m_id; } @@ -97,7 +97,7 @@ class OtherLogsPage : public QWidget, public BasePage { QString m_helpPage; Ui::OtherLogsPage* ui; - InstancePtr m_instance; + BaseInstance* m_instance; /** Path to display log paths relative to. */ QString m_basePath; QStringList m_logSearchPaths; @@ -105,5 +105,5 @@ class OtherLogsPage : public QWidget, public BasePage { QFileSystemWatcher m_watcher; LogFormatProxyModel* m_proxy; - shared_qobject_ptr m_model; + LogModel* m_model; }; diff --git a/launcher/ui/pages/instance/ResourcePackPage.cpp b/launcher/ui/pages/instance/ResourcePackPage.cpp index 2b5a5a86c..203253711 100644 --- a/launcher/ui/pages/instance/ResourcePackPage.cpp +++ b/launcher/ui/pages/instance/ResourcePackPage.cpp @@ -42,7 +42,7 @@ #include "ui/dialogs/ResourceDownloadDialog.h" #include "ui/dialogs/ResourceUpdateDialog.h" -ResourcePackPage::ResourcePackPage(MinecraftInstance* instance, std::shared_ptr model, QWidget* parent) +ResourcePackPage::ResourcePackPage(MinecraftInstance* instance, ResourcePackFolderModel* model, QWidget* parent) : ExternalResourcesPage(instance, model, parent), m_model(model) { ui->actionDownloadItem->setText(tr("Download Packs")); diff --git a/launcher/ui/pages/instance/ResourcePackPage.h b/launcher/ui/pages/instance/ResourcePackPage.h index 0ad24fc45..4e673e98c 100644 --- a/launcher/ui/pages/instance/ResourcePackPage.h +++ b/launcher/ui/pages/instance/ResourcePackPage.h @@ -48,7 +48,7 @@ class ResourcePackPage : public ExternalResourcesPage { Q_OBJECT public: - explicit ResourcePackPage(MinecraftInstance* instance, std::shared_ptr model, QWidget* parent = 0); + explicit ResourcePackPage(MinecraftInstance* instance, ResourcePackFolderModel* model, QWidget* parent = 0); QString displayName() const override { return tr("Resource Packs"); } QIcon icon() const override { return QIcon::fromTheme("resourcepacks"); } @@ -71,6 +71,6 @@ class ResourcePackPage : public ExternalResourcesPage { void changeResourcePackVersion(); protected: - std::shared_ptr m_model; + ResourcePackFolderModel* m_model; QPointer m_downloadDialog; }; diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 59ae6e43f..206658f63 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -548,7 +548,7 @@ class ServersModel : public QAbstractListModel { ConcurrentTask::Ptr m_currentQueryTask = nullptr; }; -ServersPage::ServersPage(InstancePtr inst, QWidget* parent) : QMainWindow(parent), ui(new Ui::ServersPage) +ServersPage::ServersPage(BaseInstance* inst, QWidget* parent) : QMainWindow(parent), ui(new Ui::ServersPage) { ui->setupUi(this); m_inst = inst; @@ -568,7 +568,7 @@ ServersPage::ServersPage(InstancePtr inst, QWidget* parent) : QMainWindow(parent auto selectionModel = ui->serversView->selectionModel(); connect(selectionModel, &QItemSelectionModel::currentChanged, this, &ServersPage::currentChanged); - connect(m_inst.get(), &MinecraftInstance::runningStatusChanged, this, &ServersPage::runningStateChanged); + connect(m_inst, &MinecraftInstance::runningStatusChanged, this, &ServersPage::runningStateChanged); connect(ui->nameLine, &QLineEdit::textEdited, this, &ServersPage::nameEdited); connect(ui->addressLine, &QLineEdit::textEdited, this, &ServersPage::addressEdited); connect(ui->resourceComboBox, &QComboBox::currentIndexChanged, this, &ServersPage::resourceIndexChanged); diff --git a/launcher/ui/pages/instance/ServersPage.h b/launcher/ui/pages/instance/ServersPage.h index 49a746245..0eec57de1 100644 --- a/launcher/ui/pages/instance/ServersPage.h +++ b/launcher/ui/pages/instance/ServersPage.h @@ -56,7 +56,7 @@ class ServersPage : public QMainWindow, public BasePage { Q_OBJECT public: - explicit ServersPage(InstancePtr inst, QWidget* parent = 0); + explicit ServersPage(BaseInstance* inst, QWidget* parent = 0); virtual ~ServersPage(); void openedImpl() override; @@ -100,7 +100,7 @@ class ServersPage : public QMainWindow, public BasePage { bool m_locked = true; Ui::ServersPage* ui = nullptr; ServersModel* m_model = nullptr; - InstancePtr m_inst = nullptr; + BaseInstance* m_inst = nullptr; std::shared_ptr m_wide_bar_setting = nullptr; }; diff --git a/launcher/ui/pages/instance/ShaderPackPage.cpp b/launcher/ui/pages/instance/ShaderPackPage.cpp index baf18da52..c6c0ccbc3 100644 --- a/launcher/ui/pages/instance/ShaderPackPage.cpp +++ b/launcher/ui/pages/instance/ShaderPackPage.cpp @@ -47,7 +47,7 @@ #include "ui/dialogs/ResourceDownloadDialog.h" #include "ui/dialogs/ResourceUpdateDialog.h" -ShaderPackPage::ShaderPackPage(MinecraftInstance* instance, std::shared_ptr model, QWidget* parent) +ShaderPackPage::ShaderPackPage(MinecraftInstance* instance, ShaderPackFolderModel* model, QWidget* parent) : ExternalResourcesPage(instance, model, parent), m_model(model) { ui->actionDownloadItem->setText(tr("Download Packs")); diff --git a/launcher/ui/pages/instance/ShaderPackPage.h b/launcher/ui/pages/instance/ShaderPackPage.h index c6ae3bc24..cc53a01e1 100644 --- a/launcher/ui/pages/instance/ShaderPackPage.h +++ b/launcher/ui/pages/instance/ShaderPackPage.h @@ -44,7 +44,7 @@ class ShaderPackPage : public ExternalResourcesPage { Q_OBJECT public: - explicit ShaderPackPage(MinecraftInstance* instance, std::shared_ptr model, QWidget* parent = nullptr); + explicit ShaderPackPage(MinecraftInstance* instance, ShaderPackFolderModel* model, QWidget* parent = nullptr); ~ShaderPackPage() override = default; QString displayName() const override { return tr("Shader Packs"); } @@ -62,6 +62,6 @@ class ShaderPackPage : public ExternalResourcesPage { void changeShaderPackVersion(); private: - std::shared_ptr m_model; + ShaderPackFolderModel* m_model; QPointer m_downloadDialog; }; diff --git a/launcher/ui/pages/instance/TexturePackPage.cpp b/launcher/ui/pages/instance/TexturePackPage.cpp index 163a14c86..c95e17b86 100644 --- a/launcher/ui/pages/instance/TexturePackPage.cpp +++ b/launcher/ui/pages/instance/TexturePackPage.cpp @@ -46,7 +46,7 @@ #include "ui/dialogs/ResourceDownloadDialog.h" #include "ui/dialogs/ResourceUpdateDialog.h" -TexturePackPage::TexturePackPage(MinecraftInstance* instance, std::shared_ptr model, QWidget* parent) +TexturePackPage::TexturePackPage(MinecraftInstance* instance, TexturePackFolderModel* model, QWidget* parent) : ExternalResourcesPage(instance, model, parent), m_model(model) { ui->actionDownloadItem->setText(tr("Download Packs")); diff --git a/launcher/ui/pages/instance/TexturePackPage.h b/launcher/ui/pages/instance/TexturePackPage.h index 2c92212b9..dad0affa4 100644 --- a/launcher/ui/pages/instance/TexturePackPage.h +++ b/launcher/ui/pages/instance/TexturePackPage.h @@ -48,7 +48,7 @@ class TexturePackPage : public ExternalResourcesPage { Q_OBJECT public: - explicit TexturePackPage(MinecraftInstance* instance, std::shared_ptr model, QWidget* parent = nullptr); + explicit TexturePackPage(MinecraftInstance* instance, TexturePackFolderModel* model, QWidget* parent = nullptr); QString displayName() const override { return tr("Texture packs"); } QIcon icon() const override { return QIcon::fromTheme("resourcepacks"); } @@ -66,6 +66,6 @@ class TexturePackPage : public ExternalResourcesPage { void changeTexturePackVersion(); private: - std::shared_ptr m_model; + TexturePackFolderModel* m_model; QPointer m_downloadDialog; }; diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp index ef5427a00..fea759bb2 100644 --- a/launcher/ui/pages/instance/VersionPage.cpp +++ b/launcher/ui/pages/instance/VersionPage.cpp @@ -151,7 +151,7 @@ VersionPage::VersionPage(MinecraftInstance* inst, QWidget* parent) : QMainWindow reloadPackProfile(); auto proxy = new IconProxy(ui->packageView); - proxy->setSourceModel(m_profile.get()); + proxy->setSourceModel(m_profile); m_filterModel = new QSortFilterProxyModel(this); m_filterModel->setDynamicSortFilter(true); @@ -168,7 +168,7 @@ VersionPage::VersionPage(MinecraftInstance* inst, QWidget* parent) : QMainWindow auto smodel = ui->packageView->selectionModel(); connect(smodel, &QItemSelectionModel::currentChanged, this, &VersionPage::versionCurrent); connect(smodel, &QItemSelectionModel::currentChanged, this, &VersionPage::packageCurrent); - connect(m_profile.get(), &PackProfile::minecraftChanged, this, &VersionPage::updateVersionControls); + connect(m_profile, &PackProfile::minecraftChanged, this, &VersionPage::updateVersionControls); updateVersionControls(); preselect(0); connect(ui->packageView, &ModListView::customContextMenuRequested, this, &VersionPage::showContextMenu); diff --git a/launcher/ui/pages/instance/VersionPage.h b/launcher/ui/pages/instance/VersionPage.h index 602d09206..493e3b8c8 100644 --- a/launcher/ui/pages/instance/VersionPage.h +++ b/launcher/ui/pages/instance/VersionPage.h @@ -105,7 +105,7 @@ class VersionPage : public QMainWindow, public BasePage { private: Ui::VersionPage* ui; QSortFilterProxyModel* m_filterModel; - std::shared_ptr m_profile; + PackProfile* m_profile; MinecraftInstance* m_inst; int currentIdx = 0; diff --git a/launcher/ui/pages/instance/WorldListPage.cpp b/launcher/ui/pages/instance/WorldListPage.cpp index c7eaf94a0..1b6b082d3 100644 --- a/launcher/ui/pages/instance/WorldListPage.cpp +++ b/launcher/ui/pages/instance/WorldListPage.cpp @@ -86,7 +86,7 @@ class WorldListProxyModel : public QSortFilterProxyModel { } }; -WorldListPage::WorldListPage(MinecraftInstancePtr inst, std::shared_ptr worlds, QWidget* parent) +WorldListPage::WorldListPage(MinecraftInstance* inst, WorldList* worlds, QWidget* parent) : QMainWindow(parent), m_inst(inst), ui(new Ui::WorldListPage), m_worlds(worlds) { ui->setupUi(this); @@ -95,7 +95,7 @@ WorldListPage::WorldListPage(MinecraftInstancePtr inst, std::shared_ptrsetSortCaseSensitivity(Qt::CaseInsensitive); - proxy->setSourceModel(m_worlds.get()); + proxy->setSourceModel(m_worlds); proxy->setSortRole(Qt::UserRole); ui->worldTreeView->setSortingEnabled(true); ui->worldTreeView->setModel(proxy); @@ -117,8 +117,7 @@ void WorldListPage::openedImpl() { m_worlds->startWatching(); - auto mInst = std::dynamic_pointer_cast(m_inst); - if (!mInst || !mInst->traits().contains("feature:is_quick_play_singleplayer")) { + if (!m_inst || !m_inst->traits().contains("feature:is_quick_play_singleplayer")) { ui->toolBar->removeAction(ui->actionJoin); } @@ -237,10 +236,11 @@ void WorldListPage::on_actionData_Packs_triggered() GenericPageProvider provider(dialog->windowTitle()); - provider.addPageCreator([this, folder] { - bool isIndexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); - auto model = std::make_shared(folder, m_inst.get(), isIndexed, true); - return new DataPackPage(m_inst.get(), std::move(model)); + bool isIndexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); + m_datapackModel.reset(new DataPackFolderModel(folder, m_inst, isIndexed, true)); + + provider.addPageCreator([this] { + return new DataPackPage(m_inst, m_datapackModel.get(), this); }); auto layout = new QVBoxLayout(dialog); @@ -380,8 +380,7 @@ void WorldListPage::worldChanged([[maybe_unused]] const QModelIndex& current, [[ bool hasIcon = !index.data(WorldList::IconFileRole).isNull(); ui->actionReset_Icon->setEnabled(enable && hasIcon); - auto mInst = std::dynamic_pointer_cast(m_inst); - auto supportsJoin = mInst && mInst->traits().contains("feature:is_quick_play_singleplayer"); + auto supportsJoin = m_inst && m_inst->traits().contains("feature:is_quick_play_singleplayer"); ui->actionJoin->setEnabled(enable && supportsJoin); if (!supportsJoin) { diff --git a/launcher/ui/pages/instance/WorldListPage.h b/launcher/ui/pages/instance/WorldListPage.h index 9b931066d..0afb9883b 100644 --- a/launcher/ui/pages/instance/WorldListPage.h +++ b/launcher/ui/pages/instance/WorldListPage.h @@ -52,7 +52,7 @@ class WorldListPage : public QMainWindow, public BasePage { Q_OBJECT public: - explicit WorldListPage(MinecraftInstancePtr inst, std::shared_ptr worlds, QWidget* parent = 0); + explicit WorldListPage(MinecraftInstance* inst, WorldList* worlds, QWidget* parent = 0); virtual ~WorldListPage(); virtual QString displayName() const override { return tr("Worlds"); } @@ -71,7 +71,7 @@ class WorldListPage : public QMainWindow, public BasePage { QMenu* createPopupMenu() override; protected: - MinecraftInstancePtr m_inst; + MinecraftInstance* m_inst; private: QModelIndex getSelectedWorld(); @@ -81,11 +81,12 @@ class WorldListPage : public QMainWindow, public BasePage { private: Ui::WorldListPage* ui; - std::shared_ptr m_worlds; + WorldList* m_worlds; unique_qobject_ptr m_mceditProcess; bool m_mceditStarting = false; std::shared_ptr m_wide_bar_setting = nullptr; + std::unique_ptr m_datapackModel; private slots: void on_actionCopy_Seed_triggered(); diff --git a/launcher/ui/pages/modplatform/ImportPage.cpp b/launcher/ui/pages/modplatform/ImportPage.cpp index c43d3e1fa..a345f0d41 100644 --- a/launcher/ui/pages/modplatform/ImportPage.cpp +++ b/launcher/ui/pages/modplatform/ImportPage.cpp @@ -134,7 +134,7 @@ void ImportPage::updateState() auto array = std::make_shared(); auto api = FlameAPI(); - auto job = api.getFile(addonId, fileId, array); + auto job = api.getFile(addonId, fileId, array.get()); connect(job.get(), &NetJob::failed, this, [this](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); }); diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp index 803ba6d5c..005aee749 100644 --- a/launcher/ui/pages/modplatform/ModPage.cpp +++ b/launcher/ui/pages/modplatform/ModPage.cpp @@ -114,7 +114,7 @@ QMap ModPage::urlHandlers() const void ModPage::addResourceToPage(ModPlatform::IndexedPack::Ptr pack, ModPlatform::IndexedVersion& version, - const std::shared_ptr base_model) + ResourceFolderModel* base_model) { bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); m_model->addPack(pack, version, base_model, is_indexed); diff --git a/launcher/ui/pages/modplatform/ModPage.h b/launcher/ui/pages/modplatform/ModPage.h index d3b08cbd9..a69ee53f7 100644 --- a/launcher/ui/pages/modplatform/ModPage.h +++ b/launcher/ui/pages/modplatform/ModPage.h @@ -49,7 +49,7 @@ class ModPage : public ResourcePage { QMap urlHandlers() const override; - void addResourceToPage(ModPlatform::IndexedPack::Ptr, ModPlatform::IndexedVersion&, std::shared_ptr) override; + void addResourceToPage(ModPlatform::IndexedPack::Ptr, ModPlatform::IndexedVersion&, ResourceFolderModel*) override; virtual std::unique_ptr createFilterWidget() = 0; diff --git a/launcher/ui/pages/modplatform/ResourceModel.cpp b/launcher/ui/pages/modplatform/ResourceModel.cpp index 30d3dbdf4..036a50467 100644 --- a/launcher/ui/pages/modplatform/ResourceModel.cpp +++ b/launcher/ui/pages/modplatform/ResourceModel.cpp @@ -471,7 +471,7 @@ void ResourceModel::infoRequestSucceeded(ModPlatform::IndexedPack::Ptr pack, con void ResourceModel::addPack(ModPlatform::IndexedPack::Ptr pack, ModPlatform::IndexedVersion& version, - const std::shared_ptr packs, + ResourceFolderModel* packs, bool is_indexed) { version.is_currently_selected = true; diff --git a/launcher/ui/pages/modplatform/ResourceModel.h b/launcher/ui/pages/modplatform/ResourceModel.h index 8a0b7e06a..573ad8b75 100644 --- a/launcher/ui/pages/modplatform/ResourceModel.h +++ b/launcher/ui/pages/modplatform/ResourceModel.h @@ -93,7 +93,7 @@ class ResourceModel : public QAbstractListModel { void addPack(ModPlatform::IndexedPack::Ptr pack, ModPlatform::IndexedVersion& version, - std::shared_ptr packs, + ResourceFolderModel* packs, bool is_indexed = false); void removePack(const QString& rem); QList selectedPacks() { return m_selected; } diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index 061e96491..c1d147e5e 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -372,7 +372,7 @@ void ResourcePage::removeResourceFromDialog(const QString& pack_name) void ResourcePage::addResourceToPage(ModPlatform::IndexedPack::Ptr pack, ModPlatform::IndexedVersion& ver, - const std::shared_ptr base_model) + ResourceFolderModel* base_model) { bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); m_model->addPack(pack, ver, base_model, is_indexed); diff --git a/launcher/ui/pages/modplatform/ResourcePage.h b/launcher/ui/pages/modplatform/ResourcePage.h index 8f4d2c496..6e219bf22 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.h +++ b/launcher/ui/pages/modplatform/ResourcePage.h @@ -78,7 +78,7 @@ class ResourcePage : public QWidget, public BasePage { void addResourceToDialog(ModPlatform::IndexedPack::Ptr, ModPlatform::IndexedVersion&); void removeResourceFromDialog(const QString& pack_name); virtual void removeResourceFromPage(const QString& name); - virtual void addResourceToPage(ModPlatform::IndexedPack::Ptr, ModPlatform::IndexedVersion&, std::shared_ptr); + virtual void addResourceToPage(ModPlatform::IndexedPack::Ptr, ModPlatform::IndexedVersion&, ResourceFolderModel*); virtual void modelReset(); diff --git a/launcher/ui/pages/modplatform/ShaderPackPage.cpp b/launcher/ui/pages/modplatform/ShaderPackPage.cpp index fda05b038..99c50352a 100644 --- a/launcher/ui/pages/modplatform/ShaderPackPage.cpp +++ b/launcher/ui/pages/modplatform/ShaderPackPage.cpp @@ -44,7 +44,7 @@ QMap ShaderPackResourcePage::urlHandlers() const void ShaderPackResourcePage::addResourceToPage(ModPlatform::IndexedPack::Ptr pack, ModPlatform::IndexedVersion& version, - const std::shared_ptr base_model) + ResourceFolderModel* base_model) { bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); m_model->addPack(pack, version, base_model, is_indexed); diff --git a/launcher/ui/pages/modplatform/ShaderPackPage.h b/launcher/ui/pages/modplatform/ShaderPackPage.h index 85d2b16e6..92ddd9f8a 100644 --- a/launcher/ui/pages/modplatform/ShaderPackPage.h +++ b/launcher/ui/pages/modplatform/ShaderPackPage.h @@ -39,7 +39,7 @@ class ShaderPackResourcePage : public ResourcePage { bool supportsFiltering() const override { return false; }; - void addResourceToPage(ModPlatform::IndexedPack::Ptr, ModPlatform::IndexedVersion&, std::shared_ptr) override; + void addResourceToPage(ModPlatform::IndexedPack::Ptr, ModPlatform::IndexedVersion&, ResourceFolderModel*) override; QMap urlHandlers() const override; diff --git a/launcher/ui/pages/modplatform/atlauncher/AtlListModel.cpp b/launcher/ui/pages/modplatform/atlauncher/AtlListModel.cpp index c5fec48d7..ed25c9fdf 100644 --- a/launcher/ui/pages/modplatform/atlauncher/AtlListModel.cpp +++ b/launcher/ui/pages/modplatform/atlauncher/AtlListModel.cpp @@ -99,7 +99,7 @@ void ListModel::request() auto netJob = makeShared("Atl::Request", APPLICATION->network()); auto url = QString(BuildConfig.ATL_DOWNLOAD_SERVER_URL + "launcher/json/packsnew.json"); - netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(url), response)); + netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(url), response.get())); jobPtr = netJob; jobPtr->start(); diff --git a/launcher/ui/pages/modplatform/atlauncher/AtlListModel.h b/launcher/ui/pages/modplatform/atlauncher/AtlListModel.h index bcadd7c91..7311d787a 100644 --- a/launcher/ui/pages/modplatform/atlauncher/AtlListModel.h +++ b/launcher/ui/pages/modplatform/atlauncher/AtlListModel.h @@ -61,7 +61,7 @@ class ListModel : public QAbstractListModel { QMap waitingCallbacks; NetJob::Ptr jobPtr; - std::shared_ptr response = std::make_shared(); + std::unique_ptr response = std::make_unique(); }; } // namespace Atl diff --git a/launcher/ui/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp b/launcher/ui/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp index 5ee8d2c04..7d24726b5 100644 --- a/launcher/ui/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp +++ b/launcher/ui/pages/modplatform/atlauncher/AtlOptionalModDialog.cpp @@ -159,7 +159,7 @@ void AtlOptionalModListModel::useShareCode(const QString& code) { m_jobPtr.reset(new NetJob("Atl::Request", APPLICATION->network())); auto url = QString(BuildConfig.ATL_API_BASE_URL + "share-codes/" + code); - m_jobPtr->addNetAction(Net::ApiDownload::makeByteArray(QUrl(url), m_response)); + m_jobPtr->addNetAction(Net::ApiDownload::makeByteArray(QUrl(url), m_response.get())); connect(m_jobPtr.get(), &NetJob::succeeded, this, &AtlOptionalModListModel::shareCodeSuccess); connect(m_jobPtr.get(), &NetJob::failed, this, &AtlOptionalModListModel::shareCodeFailure); diff --git a/launcher/ui/pages/modplatform/atlauncher/AtlOptionalModDialog.h b/launcher/ui/pages/modplatform/atlauncher/AtlOptionalModDialog.h index fa39e997c..ebd63881b 100644 --- a/launcher/ui/pages/modplatform/atlauncher/AtlOptionalModDialog.h +++ b/launcher/ui/pages/modplatform/atlauncher/AtlOptionalModDialog.h @@ -83,7 +83,7 @@ class AtlOptionalModListModel : public QAbstractListModel { private: NetJob::Ptr m_jobPtr; - std::shared_ptr m_response = std::make_shared(); + std::unique_ptr m_response = std::make_unique(); ATLauncher::PackVersion m_version; QList m_mods; diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.cpp b/launcher/ui/pages/modplatform/flame/FlamePage.cpp index 79faccbc1..316295390 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.cpp +++ b/launcher/ui/pages/modplatform/flame/FlamePage.cpp @@ -330,9 +330,9 @@ void FlamePage::createFilterWidget() connect(m_filterWidget.get(), &ModFilterWidget::filterChanged, this, &FlamePage::triggerSearch); auto response = std::make_shared(); - m_categoriesTask = FlameAPI::getCategories(response, ModPlatform::ResourceType::Modpack); + m_categoriesTask = FlameAPI::getCategories(response.get(), ModPlatform::ResourceType::Modpack); connect(m_categoriesTask.get(), &Task::succeeded, [this, response]() { - auto categories = FlameAPI::loadModCategories(response); + auto categories = FlameAPI::loadModCategories(response.get()); m_filterWidget->setCategories(categories); }); m_categoriesTask->start(); diff --git a/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp b/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp index 6ff435854..af2de22ec 100644 --- a/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp +++ b/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp @@ -248,9 +248,9 @@ std::unique_ptr FlameModPage::createFilterWidget() void FlameModPage::prepareProviderCategories() { auto response = std::make_shared(); - m_categoriesTask = FlameAPI::getModCategories(response); + m_categoriesTask = FlameAPI::getModCategories(response.get()); connect(m_categoriesTask.get(), &Task::succeeded, [this, response]() { - auto categories = FlameAPI::loadModCategories(response); + auto categories = FlameAPI::loadModCategories(response.get()); m_filter_widget->setCategories(categories); }); m_categoriesTask->start(); diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp index 73685d3ba..ab4dcc4c6 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp @@ -372,10 +372,10 @@ void ModrinthPage::createFilterWidget() connect(m_filterWidget.get(), &ModFilterWidget::filterChanged, this, &ModrinthPage::triggerSearch); auto response = std::make_shared(); - m_categoriesTask = ModrinthAPI::getModCategories(response); + m_categoriesTask = ModrinthAPI::getModCategories(response.get()); connect(m_categoriesTask.get(), &Task::succeeded, [this, response]() { - auto categories = ModrinthAPI::loadCategories(response, "modpack"); + auto categories = ModrinthAPI::loadCategories(response.get(), "modpack"); m_filterWidget->setCategories(categories); }); m_categoriesTask->start(); -} \ No newline at end of file +} diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp index 32296316f..0646cbdc9 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp @@ -166,9 +166,9 @@ std::unique_ptr ModrinthModPage::createFilterWidget() void ModrinthModPage::prepareProviderCategories() { auto response = std::make_shared(); - m_categoriesTask = ModrinthAPI::getModCategories(response); + m_categoriesTask = ModrinthAPI::getModCategories(response.get()); connect(m_categoriesTask.get(), &Task::succeeded, [this, response]() { - auto categories = ModrinthAPI::loadModCategories(response); + auto categories = ModrinthAPI::loadModCategories(response.get()); m_filter_widget->setCategories(categories); }); m_categoriesTask->start(); diff --git a/launcher/ui/pages/modplatform/technic/TechnicModel.cpp b/launcher/ui/pages/modplatform/technic/TechnicModel.cpp index 4fc50ab8d..2de280907 100644 --- a/launcher/ui/pages/modplatform/technic/TechnicModel.cpp +++ b/launcher/ui/pages/modplatform/technic/TechnicModel.cpp @@ -156,7 +156,7 @@ void Technic::ListModel::performSearch() if (!clientId.isEmpty()) { searchUrl += "?cid=" + clientId; } - netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl), response)); + netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl), response.get())); jobPtr = netJob; jobPtr->start(); connect(netJob.get(), &NetJob::succeeded, this, &ListModel::searchRequestFinished); diff --git a/launcher/ui/pages/modplatform/technic/TechnicModel.h b/launcher/ui/pages/modplatform/technic/TechnicModel.h index 4979000e9..8ad8b88bb 100644 --- a/launcher/ui/pages/modplatform/technic/TechnicModel.h +++ b/launcher/ui/pages/modplatform/technic/TechnicModel.h @@ -86,7 +86,7 @@ class ListModel : public QAbstractListModel { Single, } searchMode = List; NetJob::Ptr jobPtr; - std::shared_ptr response = std::make_shared(); + std::unique_ptr response = std::make_unique(); }; } // namespace Technic diff --git a/launcher/ui/pages/modplatform/technic/TechnicPage.cpp b/launcher/ui/pages/modplatform/technic/TechnicPage.cpp index fef665149..54d228c9c 100644 --- a/launcher/ui/pages/modplatform/technic/TechnicPage.cpp +++ b/launcher/ui/pages/modplatform/technic/TechnicPage.cpp @@ -163,7 +163,7 @@ void TechnicPage::suggestCurrent() auto netJob = makeShared(QString("Technic::PackMeta(%1)").arg(current.name), APPLICATION->network()); QString slug = current.slug; netJob->addNetAction(Net::ApiDownload::makeByteArray( - QString("%1modpack/%2?build=%3").arg(BuildConfig.TECHNIC_API_BASE_URL, slug, BuildConfig.TECHNIC_API_BUILD), response)); + QString("%1modpack/%2?build=%3").arg(BuildConfig.TECHNIC_API_BASE_URL, slug, BuildConfig.TECHNIC_API_BUILD), response.get())); connect(netJob.get(), &NetJob::succeeded, this, [this, slug] { jobPtr.reset(); @@ -260,7 +260,7 @@ void TechnicPage::metadataLoaded() auto netJob = makeShared(QString("Technic::SolderMeta(%1)").arg(current.name), APPLICATION->network()); auto url = QString("%1/modpack/%2").arg(current.url, current.slug); - netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(url), response)); + netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(url), response.get())); connect(netJob.get(), &NetJob::succeeded, this, &TechnicPage::onSolderLoaded); connect(jobPtr.get(), &NetJob::failed, diff --git a/launcher/ui/pages/modplatform/technic/TechnicPage.h b/launcher/ui/pages/modplatform/technic/TechnicPage.h index a131a6db1..9bde6b78c 100644 --- a/launcher/ui/pages/modplatform/technic/TechnicPage.h +++ b/launcher/ui/pages/modplatform/technic/TechnicPage.h @@ -95,7 +95,7 @@ class TechnicPage : public QWidget, public ModpackProviderBasePage { QString selectedVersion; NetJob::Ptr jobPtr; - std::shared_ptr response = std::make_shared(); + std::unique_ptr response = std::make_unique(); ProgressWidget m_fetch_progress; diff --git a/launcher/ui/widgets/AppearanceWidget.cpp b/launcher/ui/widgets/AppearanceWidget.cpp index 5ab622ef9..0eedd1fc3 100644 --- a/launcher/ui/widgets/AppearanceWidget.cpp +++ b/launcher/ui/widgets/AppearanceWidget.cpp @@ -92,7 +92,7 @@ AppearanceWidget::~AppearanceWidget() void AppearanceWidget::applySettings() { - SettingsObjectPtr settings = APPLICATION->settings(); + SettingsObject* settings = APPLICATION->settings(); QString consoleFontFamily = m_ui->consoleFont->currentFont().family(); settings->set("ConsoleFont", consoleFontFamily); settings->set("ConsoleFontSize", m_ui->fontSizeBox->value()); @@ -103,7 +103,7 @@ void AppearanceWidget::applySettings() void AppearanceWidget::loadSettings() { - SettingsObjectPtr settings = APPLICATION->settings(); + SettingsObject* settings = APPLICATION->settings(); QString fontFamily = settings->get("ConsoleFont").toString(); QFont consoleFont(fontFamily); m_ui->consoleFont->setCurrentFont(consoleFont); @@ -175,7 +175,7 @@ void AppearanceWidget::loadThemeSettings() m_ui->widgetStyleComboBox->clear(); m_ui->catPackComboBox->clear(); - const SettingsObjectPtr settings = APPLICATION->settings(); + SettingsObject* settings = APPLICATION->settings(); const QString currentIconTheme = settings->get("IconTheme").toString(); const auto iconThemes = APPLICATION->themeManager()->getValidIconThemes(); diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 01da7cc48..1763bd953 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -53,8 +53,8 @@ #include "ui_JavaSettingsWidget.h" -JavaSettingsWidget::JavaSettingsWidget(InstancePtr instance, QWidget* parent) - : QWidget(parent), m_instance(std::move(instance)), m_ui(new Ui::JavaSettingsWidget) +JavaSettingsWidget::JavaSettingsWidget(BaseInstance* instance, QWidget* parent) + : QWidget(parent), m_instance(instance), m_ui(new Ui::JavaSettingsWidget) { m_ui->setupUi(this); @@ -79,7 +79,7 @@ JavaSettingsWidget::JavaSettingsWidget(InstancePtr instance, QWidget* parent) m_ui->memoryGroupBox->setCheckable(true); m_ui->javaArgumentsGroupBox->setCheckable(true); - SettingsObjectPtr settings = m_instance->settings(); + SettingsObject* settings = m_instance->settings(); connect(settings->getSetting("OverrideJavaLocation").get(), &Setting::SettingChanged, m_ui->javaInstallationGroupBox, [this, settings] { m_ui->javaInstallationGroupBox->setChecked(settings->get("OverrideJavaLocation").toBool()); }); @@ -87,7 +87,7 @@ JavaSettingsWidget::JavaSettingsWidget(InstancePtr instance, QWidget* parent) [this, settings] { m_ui->javaPathTextBox->setText(settings->get("JavaPath").toString()); }); connect(m_ui->javaDownloadBtn, &QPushButton::clicked, this, [this] { - auto javaDialog = new Java::InstallDialog({}, m_instance.get(), this); + auto javaDialog = new Java::InstallDialog({}, m_instance, this); javaDialog->exec(); }); connect(m_ui->javaPathTextBox, &QLineEdit::textChanged, [this](QString newValue) { @@ -115,7 +115,7 @@ JavaSettingsWidget::~JavaSettingsWidget() void JavaSettingsWidget::loadSettings() { - SettingsObjectPtr settings; + SettingsObject* settings; if (m_instance != nullptr) settings = m_instance->settings(); @@ -158,7 +158,7 @@ void JavaSettingsWidget::loadSettings() void JavaSettingsWidget::saveSettings() { - SettingsObjectPtr settings; + SettingsObject* settings; if (m_instance != nullptr) settings = m_instance->settings(); @@ -265,7 +265,7 @@ void JavaSettingsWidget::onJavaAutodetect() return; } - VersionSelectDialog versionDialog(APPLICATION->javalist().get(), tr("Select a Java version"), this, true); + VersionSelectDialog versionDialog(APPLICATION->javalist(), tr("Select a Java version"), this, true); versionDialog.setResizeOn(2); versionDialog.exec(); diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h index 85266bc2b..a84bd7c66 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.h +++ b/launcher/ui/widgets/JavaSettingsWidget.h @@ -48,8 +48,8 @@ class JavaSettingsWidget : public QWidget { Q_OBJECT public: - explicit JavaSettingsWidget(QWidget* parent = nullptr) : JavaSettingsWidget(nullptr, nullptr) {} - explicit JavaSettingsWidget(InstancePtr instance, QWidget* parent = nullptr); + explicit JavaSettingsWidget(QWidget* parent = nullptr) : JavaSettingsWidget(nullptr, parent) {} + explicit JavaSettingsWidget(BaseInstance* instance, QWidget* parent = nullptr); ~JavaSettingsWidget() override; void loadSettings(); @@ -62,7 +62,7 @@ class JavaSettingsWidget : public QWidget { void updateThresholds(); private: - InstancePtr m_instance; + BaseInstance* m_instance; Ui::JavaSettingsWidget* m_ui; unique_qobject_ptr m_checker; }; \ No newline at end of file diff --git a/launcher/ui/widgets/JavaWizardWidget.cpp b/launcher/ui/widgets/JavaWizardWidget.cpp index 955bc5334..2b02f1d58 100644 --- a/launcher/ui/widgets/JavaWizardWidget.cpp +++ b/launcher/ui/widgets/JavaWizardWidget.cpp @@ -185,7 +185,7 @@ void JavaWizardWidget::setupUi() void JavaWizardWidget::initialize() { - m_versionWidget->initialize(APPLICATION->javalist().get()); + m_versionWidget->initialize(APPLICATION->javalist()); m_versionWidget->selectSearch(); m_versionWidget->setResizeOn(2); auto s = APPLICATION->settings(); diff --git a/launcher/ui/widgets/LanguageSelectionWidget.cpp b/launcher/ui/widgets/LanguageSelectionWidget.cpp index 481547b5b..4ca416aad 100644 --- a/launcher/ui/widgets/LanguageSelectionWidget.cpp +++ b/launcher/ui/widgets/LanguageSelectionWidget.cpp @@ -40,7 +40,7 @@ LanguageSelectionWidget::LanguageSelectionWidget(QWidget* parent) : QWidget(pare auto translations = APPLICATION->translations(); auto index = translations->selectedIndex(); - languageView->setModel(translations.get()); + languageView->setModel(translations); languageView->setCurrentIndex(index); languageView->header()->setSectionResizeMode(QHeaderView::ResizeToContents); languageView->header()->setSectionResizeMode(0, QHeaderView::Stretch); diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.cpp b/launcher/ui/widgets/MinecraftSettingsWidget.cpp index e57233b90..ab2bba5c1 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.cpp +++ b/launcher/ui/widgets/MinecraftSettingsWidget.cpp @@ -48,7 +48,7 @@ #include "minecraft/auth/AccountList.h" #include "settings/Setting.h" -MinecraftSettingsWidget::MinecraftSettingsWidget(MinecraftInstancePtr instance, QWidget* parent) +MinecraftSettingsWidget::MinecraftSettingsWidget(MinecraftInstance* instance, QWidget* parent) : QWidget(parent), m_instance(std::move(instance)), m_ui(new Ui::MinecraftSettingsWidget) { m_ui->setupUi(this); @@ -154,7 +154,7 @@ MinecraftSettingsWidget::~MinecraftSettingsWidget() void MinecraftSettingsWidget::loadSettings() { - SettingsObjectPtr settings; + SettingsObject* settings; if (m_instance != nullptr) settings = m_instance->settings(); @@ -297,7 +297,7 @@ void MinecraftSettingsWidget::loadSettings() void MinecraftSettingsWidget::saveSettings() { - SettingsObjectPtr settings; + SettingsObject* settings; if (m_instance != nullptr) settings = m_instance->settings(); diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.h b/launcher/ui/widgets/MinecraftSettingsWidget.h index 0dd8e6ba7..847e05806 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.h +++ b/launcher/ui/widgets/MinecraftSettingsWidget.h @@ -46,7 +46,7 @@ class MinecraftSettingsWidget; class MinecraftSettingsWidget : public QWidget { public: - MinecraftSettingsWidget(MinecraftInstancePtr instance, QWidget* parent = nullptr); + MinecraftSettingsWidget(MinecraftInstance* instance, QWidget* parent = nullptr); ~MinecraftSettingsWidget() override; void loadSettings(); @@ -61,7 +61,7 @@ class MinecraftSettingsWidget : public QWidget { void saveDataPacksPath(); void selectDataPacksFolder(); - MinecraftInstancePtr m_instance; + MinecraftInstance* m_instance; Ui::MinecraftSettingsWidget* m_ui; JavaSettingsWidget* m_javaSettings = nullptr; bool m_quickPlaySingleplayer = false; diff --git a/launcher/updater/prismupdater/PrismUpdater.cpp b/launcher/updater/prismupdater/PrismUpdater.cpp index a866dd76a..bffc6630c 100644 --- a/launcher/updater/prismupdater/PrismUpdater.cpp +++ b/launcher/updater/prismupdater/PrismUpdater.cpp @@ -293,7 +293,7 @@ PrismUpdaterApp::PrismUpdaterApp(int& argc, char** argv) : QApplication(argc, ar } { // network - m_network = makeShared(new QNetworkAccessManager()); + m_network = std::make_unique(); qDebug() << "Detecting proxy settings..."; QNetworkProxy proxy = QNetworkProxy::applicationProxy(); m_network->setProxy(proxy); @@ -792,7 +792,7 @@ QFileInfo PrismUpdaterApp::downloadAsset(const GitHubReleaseAsset& asset) qDebug() << "downloading" << file_url << "to" << out_file_path; auto download = Net::Download::makeFile(file_url, out_file_path); - download->setNetwork(m_network); + download->setNetwork(m_network.get()); auto progress_dialog = ProgressDialog(); progress_dialog.adjustSize(); @@ -1162,16 +1162,16 @@ void PrismUpdaterApp::downloadReleasePage(const QString& api_url, int page) int per_page = 30; auto page_url = QString("%1?per_page=%2&page=%3").arg(api_url).arg(QString::number(per_page)).arg(QString::number(page)); auto response = std::make_shared(); - auto download = Net::Download::makeByteArray(page_url, response); - download->setNetwork(m_network); + auto download = Net::Download::makeByteArray(page_url, response.get()); + download->setNetwork(m_network.get()); m_current_url = page_url; - auto github_api_headers = new Net::RawHeaderProxy(); + auto github_api_headers = std::make_unique(); github_api_headers->addHeaders({ { "Accept", "application/vnd.github+json" }, { "X-GitHub-Api-Version", "2022-11-28" }, }); - download->addHeaderProxy(github_api_headers); + download->addHeaderProxy(std::move(github_api_headers)); connect(download.get(), &Net::Download::succeeded, this, [this, response, per_page, api_url, page]() { int num_found = parseReleasePage(response.get()); diff --git a/launcher/updater/prismupdater/PrismUpdater.h b/launcher/updater/prismupdater/PrismUpdater.h index a904cbb6f..f141b6c7d 100644 --- a/launcher/updater/prismupdater/PrismUpdater.h +++ b/launcher/updater/prismupdater/PrismUpdater.h @@ -128,7 +128,7 @@ class PrismUpdaterApp : public QApplication { GitHubRelease m_install_release; Status m_status = Status::Starting; - shared_qobject_ptr m_network; + std::unique_ptr m_network; QString m_current_url; Task::Ptr m_current_task; QList m_releases;