diff options
| author | Petr Mrázek <peterix@gmail.com> | 2013-09-07 04:00:58 +0200 |
|---|---|---|
| committer | Petr Mrázek <peterix@gmail.com> | 2013-09-07 04:00:58 +0200 |
| commit | 6892c11e9f287dcfb1e698f8f46233a01fb7abb6 (patch) | |
| tree | ee94607e92bcf39faef7f35842499fafbb2e270f | |
| parent | 3f30055afe757637ae865b2adc7cf021edd9b8b5 (diff) | |
| download | PrismLauncher-6892c11e9f287dcfb1e698f8f46233a01fb7abb6.tar.gz PrismLauncher-6892c11e9f287dcfb1e698f8f46233a01fb7abb6.tar.bz2 PrismLauncher-6892c11e9f287dcfb1e698f8f46233a01fb7abb6.zip | |
Move a good chunk of the singleton objects into a new QApplication subclass.
32 files changed, 491 insertions, 631 deletions
diff --git a/AppSettings.cpp b/AppSettings.cpp deleted file mode 100644 index 403af1dc..00000000 --- a/AppSettings.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright 2013 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "AppSettings.h" - -#include <setting.h> - -#include <QPoint> -#include <QApplication> -//#include <QColor> - -AppSettings::AppSettings(QObject *parent) : - INISettingsObject(QApplication::applicationDirPath() + "/multimc.cfg",parent) -{ - // Updates - registerSetting(new Setting("UseDevBuilds", false)); - registerSetting(new Setting("AutoUpdate", true)); - - // Folders - registerSetting(new Setting("InstanceDir", "instances")); - registerSetting(new Setting("CentralModsDir", "mods")); - registerSetting(new Setting("LWJGLDir", "lwjgl")); - - // Console - registerSetting(new Setting("ShowConsole", true)); - registerSetting(new Setting("AutoCloseConsole", true)); - - // Toolbar settings - registerSetting(new Setting("InstanceToolbarVisible", true)); - registerSetting(new Setting("InstanceToolbarPosition", QPoint())); - - // Console Colors -// registerSetting(new Setting("SysMessageColor", QColor(Qt::blue))); -// registerSetting(new Setting("StdOutColor", QColor(Qt::black))); -// registerSetting(new Setting("StdErrColor", QColor(Qt::red))); - - // Window Size - registerSetting(new Setting("LaunchMaximized", false)); - registerSetting(new Setting("MinecraftWinWidth", 854)); - registerSetting(new Setting("MinecraftWinHeight", 480)); - - // Auto login - registerSetting(new Setting("AutoLogin", false)); - - // Memory - registerSetting(new Setting("MinMemAlloc", 512)); - registerSetting(new Setting("MaxMemAlloc", 1024)); - registerSetting(new Setting("PermGen", 64)); - - // Java Settings - registerSetting(new Setting("JavaPath", "java")); - registerSetting(new Setting("JvmArgs", "")); - - // Custom Commands - registerSetting(new Setting("PreLaunchCommand", "")); - registerSetting(new Setting("PostExitCommand", "")); - - // The cat - registerSetting(new Setting("TheCat", false)); -} diff --git a/AppSettings.h b/AppSettings.h deleted file mode 100644 index d8f21de1..00000000 --- a/AppSettings.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright 2013 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include <QObject> - -#include <inisettingsobject.h> - -class AppSettings : public INISettingsObject -{ - Q_OBJECT -public: - explicit AppSettings(QObject *parent = 0); -}; - - diff --git a/AppVersion.cpp b/AppVersion.cpp deleted file mode 100644 index 86b00920..00000000 --- a/AppVersion.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright 2013 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "AppVersion.h" - -#include "config.h" - -AppVersion AppVersion::current(VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD); - -AppVersion::AppVersion(int major, int minor, int revision, int build, QObject *parent) : - QObject(parent) -{ - this->major = major; - this->minor = minor; - this->revision = revision; - this->build = build; -} - -AppVersion::AppVersion(const AppVersion& ver) -{ - this->major = ver.major; - this->minor = ver.minor; - this->revision = ver.revision; - this->build = ver.build; -} - -QString AppVersion::toString() const -{ - return QString("%1.%2.%3.%4").arg( - QString::number(major), - QString::number(minor), - QString::number(revision), - QString::number(build)); -} diff --git a/CMakeLists.txt b/CMakeLists.txt index f8f76c8c..27f8eaba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -147,9 +147,8 @@ ADD_DEFINITIONS(-DLIBGROUPVIEW_STATIC) ######## Headers ######## SET(MULTIMC_HEADERS -multimc_pragma.h -AppVersion.h -AppSettings.h +MultiMC.h +MultiMCVersion.h gui/mainwindow.h gui/settingsdialog.h @@ -181,9 +180,11 @@ logic/MinecraftProcess.h logic/Mod.h logic/ModList.h +# Basic instance launcher for starting from terminal +logic/InstanceLauncher.h + # network stuffs logic/net/DownloadJob.h -logic/net/NetWorker.h logic/net/HttpMetaCache.h # legacy instances @@ -208,7 +209,7 @@ logic/lists/InstanceList.h logic/lists/InstVersionList.h logic/lists/MinecraftVersionList.h logic/lists/LwjglVersionList.h -logic/IconListModel.h +logic/lists/IconList.h # Tasks logic/tasks/Task.h @@ -218,9 +219,7 @@ logic/tasks/LoginTask.h ######## Sources ######## SET(MULTIMC_SOURCES -main.cpp -AppVersion.cpp -AppSettings.cpp +MultiMC.cpp gui/mainwindow.cpp gui/settingsdialog.cpp @@ -249,8 +248,10 @@ logic/MinecraftProcess.cpp logic/Mod.cpp logic/ModList.cpp +# Basic instance launcher for starting from terminal +logic/InstanceLauncher.cpp + # network stuffs - to be moved into a depend lib ~_~ -logic/net/NetWorker.cpp logic/net/DownloadJob.cpp logic/net/HttpMetaCache.cpp @@ -274,7 +275,7 @@ logic/lists/InstanceList.cpp logic/lists/InstVersionList.cpp logic/lists/MinecraftVersionList.cpp logic/lists/LwjglVersionList.cpp -logic/IconListModel.cpp +logic/lists/IconList.cpp # Tasks logic/tasks/Task.cpp diff --git a/MultiMC.cpp b/MultiMC.cpp new file mode 100644 index 00000000..88eb3e62 --- /dev/null +++ b/MultiMC.cpp @@ -0,0 +1,222 @@ + +#include "MultiMC.h" +#include <iostream> +#include <QDir> +#include <QNetworkAccessManager> + +#include "gui/mainwindow.h" +#include "logic/lists/InstanceList.h" +#include "logic/lists/IconList.h" +#include "logic/InstanceLauncher.h" + + +#include "pathutils.h" +#include "cmdutils.h" +#include <inisettingsobject.h> +#include <setting.h> + +#include "config.h" +using namespace Util::Commandline; + +MultiMC::MultiMC ( int& argc, char** argv ) + :QApplication ( argc, argv ) +{ + setOrganizationName("Forkk"); + setApplicationName("MultiMC 5"); + + // Print app header + std::cout << "MultiMC 5" << std::endl; + std::cout << "(c) 2013 MultiMC Contributors" << std::endl << std::endl; + + // Commandline parsing + QHash<QString, QVariant> args; + { + Parser parser(FlagStyle::GNU, ArgumentStyle::SpaceAndEquals); + + // --help + parser.addSwitch("help"); + parser.addShortOpt("help", 'h'); + parser.addDocumentation("help", "display this help and exit."); + // --version + parser.addSwitch("version"); + parser.addShortOpt("version", 'V'); + parser.addDocumentation("version", "display program version and exit."); + // --dir + parser.addOption("dir", applicationDirPath()); + parser.addShortOpt("dir", 'd'); + parser.addDocumentation("dir", "use the supplied directory as MultiMC root instead of the binary location (use '.' for current)"); + // --update + parser.addOption("update"); + parser.addShortOpt("update", 'u'); + parser.addDocumentation("update", "replaces the given file with the running executable", "<path>"); + // --quietupdate + parser.addSwitch("quietupdate"); + parser.addShortOpt("quietupdate", 'U'); + parser.addDocumentation("quietupdate", "doesn't restart MultiMC after installing updates"); + // --launch + parser.addOption("launch"); + parser.addShortOpt("launch", 'l'); + parser.addDocumentation("launch", "tries to launch the given instance", "<inst>"); + + // parse the arguments + try + { + args = parser.parse(arguments()); + } + catch(ParsingError e) + { + std::cerr << "CommandLineError: " << e.what() << std::endl; + std::cerr << "Try '%1 -h' to get help on MultiMC's command line parameters." << std::endl; + m_status = MultiMC::Failed; + return; + } + + // display help and exit + if (args["help"].toBool()) + { + std::cout << qPrintable(parser.compileHelp(arguments()[0])); + m_status = MultiMC::Succeeded; + return; + } + + // display version and exit + if (args["version"].toBool()) + { + std::cout << "Version " << VERSION_STR << std::endl; + std::cout << "Git " << GIT_COMMIT << std::endl; + std::cout << "Tag: " << JENKINS_BUILD_TAG << " " << (ARCH==x64?"x86_64":"x86") << std::endl; + m_status = MultiMC::Succeeded; + return; + } + + // update + // Note: cwd is always the current executable path! + if (!args["update"].isNull()) + { + std::cout << "Performing MultiMC update: " << qPrintable(args["update"].toString()) << std::endl; + QString cwd = QDir::currentPath(); + QDir::setCurrent(applicationDirPath()); + QFile file(applicationFilePath()); + file.copy(args["update"].toString()); + if(args["quietupdate"].toBool()) + { + m_status = MultiMC::Succeeded; + return; + } + QDir::setCurrent(cwd); + } + } + + // change directory + QDir::setCurrent(args["dir"].toString()); + + // load settings + initGlobalSettings(); + // and instances + m_instances = new InstanceList(m_settings->get("InstanceDir").toString(),this); + std::cout << "Loading Instances..." << std::endl; + m_instances->loadList(); + // network manager + m_qnam = new QNetworkAccessManager(this); + + // Register meta types. + qRegisterMetaType<LoginResponse>("LoginResponse"); + + // launch instance, if that's what should be done + if (!args["launch"].isNull()) + { + if(InstanceLauncher(args["launch"].toString()).launch()) + m_status = MultiMC::Succeeded; + else + m_status = MultiMC::Failed; + return; + } + m_status = MultiMC::Initialized; +} + +MultiMC::~MultiMC() +{ + delete m_settings; +} + +void MultiMC::initGlobalSettings() +{ + m_settings = new INISettingsObject(applicationDirPath() + "/multimc.cfg", this); + // Updates + m_settings->registerSetting(new Setting("UseDevBuilds", false)); + m_settings->registerSetting(new Setting("AutoUpdate", true)); + + // Folders + m_settings->registerSetting(new Setting("InstanceDir", "instances")); + m_settings->registerSetting(new Setting("CentralModsDir", "mods")); + m_settings->registerSetting(new Setting("LWJGLDir", "lwjgl")); + + // Console + m_settings->registerSetting(new Setting("ShowConsole", true)); + m_settings->registerSetting(new Setting("AutoCloseConsole", true)); + + // Toolbar settings + m_settings->registerSetting(new Setting("InstanceToolbarVisible", true)); + m_settings->registerSetting(new Setting("InstanceToolbarPosition", QPoint())); + + // Console Colors +// m_settings->registerSetting(new Setting("SysMessageColor", QColor(Qt::blue))); +// m_settings->registerSetting(new Setting("StdOutColor", QColor(Qt::black))); +// m_settings->registerSetting(new Setting("StdErrColor", QColor(Qt::red))); + + // Window Size + m_settings->registerSetting(new Setting("LaunchMaximized", false)); + m_settings->registerSetting(new Setting("MinecraftWinWidth", 854)); + m_settings->registerSetting(new Setting("MinecraftWinHeight", 480)); + + // Auto login + m_settings->registerSetting(new Setting("AutoLogin", false)); + + // Memory + m_settings->registerSetting(new Setting("MinMemAlloc", 512)); + m_settings->registerSetting(new Setting("MaxMemAlloc", 1024)); + m_settings->registerSetting(new Setting("PermGen", 64)); + + // Java Settings + m_settings->registerSetting(new Setting("JavaPath", "java")); + m_settings->registerSetting(new Setting("JvmArgs", "")); + + // Custom Commands + m_settings->registerSetting(new Setting("PreLaunchCommand", "")); + m_settings->registerSetting(new Setting("PostExitCommand", "")); + + // The cat + m_settings->registerSetting(new Setting("TheCat", false)); +} + +IconList* MultiMC::icons() +{ + if ( !m_icons ) + { + m_icons = new IconList; + } + return m_icons; +} + + +int main(int argc, char *argv[]) +{ + // initialize Qt + MultiMC app(argc, argv); + + // show main window + MainWindow mainWin; + mainWin.show(); + + switch(app.status()) + { + case MultiMC::Initialized: + return app.exec(); + case MultiMC::Failed: + return 1; + case MultiMC::Succeeded: + return 0; + } +} + +#include "MultiMC.moc"
\ No newline at end of file diff --git a/MultiMC.h b/MultiMC.h new file mode 100644 index 00000000..99d90b99 --- /dev/null +++ b/MultiMC.h @@ -0,0 +1,68 @@ +#pragma once + +#include <QApplication> +#include "MultiMCVersion.h" +#include "config.h" + +class SettingsObject; +class InstanceList; +class IconList; +class QNetworkAccessManager; + +#if defined(MMC) +#undef MMC +#endif +#define MMC (static_cast<MultiMC *>(QCoreApplication::instance())) + +class MultiMC : public QApplication +{ + Q_OBJECT +public: + enum Status + { + Failed, + Succeeded, + Initialized, + }; + +public: + MultiMC ( int& argc, char** argv ); + virtual ~MultiMC(); + + SettingsObject * settings() + { + return m_settings; + }; + + InstanceList * instances() + { + return m_instances; + }; + + IconList * icons(); + + Status status() + { + return m_status; + } + + MultiMCVersion version() + { + return m_version; + } + + QNetworkAccessManager * qnam() + { + return m_qnam; + } +private: + void initGlobalSettings(); + +private: + SettingsObject * m_settings = nullptr; + InstanceList * m_instances = nullptr; + IconList * m_icons = nullptr; + QNetworkAccessManager * m_qnam = nullptr; + Status m_status = MultiMC::Failed; + MultiMCVersion m_version = {VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD}; +};
\ No newline at end of file diff --git a/AppVersion.h b/MultiMCVersion.h index 86f53950..70a2259e 100644 --- a/AppVersion.h +++ b/MultiMCVersion.h @@ -15,26 +15,26 @@ #pragma once -#include <QObject> +#include <QString> /*! * \brief The Version class represents a MultiMC version number. */ -class AppVersion : public QObject +struct MultiMCVersion { - Q_OBJECT -public: - explicit AppVersion(int major = 0, int minor = 0, int revision = 0, - int build = 0, QObject *parent = 0); - - AppVersion(const AppVersion& ver); - /*! * \brief Converts the Version to a string. * \return The version number in string format (major.minor.revision.build). */ - QString toString() const; - + QString toString() const + { + return QString("%1.%2.%3.%4").arg( + QString::number(major), + QString::number(minor), + QString::number(revision), + QString::number(build)); + } + /*! * \brief The major version number. * For MultiMC 5, this will always be 5. @@ -59,7 +59,5 @@ public: * a new build is run. */ int build; - - static AppVersion current; }; diff --git a/depends/classparser/src/javautils.cpp b/depends/classparser/src/javautils.cpp index 4a359031..3a5c6934 100644 --- a/depends/classparser/src/javautils.cpp +++ b/depends/classparser/src/javautils.cpp @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "multimc_pragma.h" #include "classfile.h" #include "javautils.h" diff --git a/depends/settings/include/settingsobject.h b/depends/settings/include/settingsobject.h index a2f03699..e8bf5c83 100644 --- a/depends/settings/include/settingsobject.h +++ b/depends/settings/include/settingsobject.h @@ -13,8 +13,7 @@ * limitations under the License. */ -#ifndef SETTINGSOBJECT_H -#define SETTINGSOBJECT_H +#pragma once #include <QObject> #include <QMap> @@ -183,10 +182,3 @@ protected: private: QMap<QString, Setting *> m_settings; }; - -/*! - * \brief A global settings object. - */ -LIBSETTINGS_EXPORT extern SettingsObject *globalSettings; - -#endif // SETTINGSOBJECT_H diff --git a/depends/settings/src/settingsobject.cpp b/depends/settings/src/settingsobject.cpp index bf7b8825..2ca544ad 100644 --- a/depends/settings/src/settingsobject.cpp +++ b/depends/settings/src/settingsobject.cpp @@ -18,8 +18,6 @@ #include <QVariant> -SettingsObject *globalSettings; - SettingsObject::SettingsObject(QObject *parent) : QObject(parent) { diff --git a/gui/IconPickerDialog.cpp b/gui/IconPickerDialog.cpp index b75eb30c..2dd80292 100644 --- a/gui/IconPickerDialog.cpp +++ b/gui/IconPickerDialog.cpp @@ -1,7 +1,8 @@ +#include <MultiMC.h> #include "IconPickerDialog.h" #include "instancedelegate.h" #include "ui_IconPickerDialog.h" -#include "logic/IconListModel.h" +#include "logic/lists/IconList.h" #include <QKeyEvent> #include <QPushButton> #include <QFileDialog> @@ -38,8 +39,7 @@ IconPickerDialog::IconPickerDialog(QWidget *parent) : contentsWidget->installEventFilter(this); - IconList * list = IconList::instance(); - contentsWidget->setModel(list); + contentsWidget->setModel(MMC->icons()); auto buttonAdd = ui->buttonBox->addButton("Add Icon",QDialogButtonBox::ResetRole); auto buttonRemove = ui->buttonBox->addButton("Remove Icon",QDialogButtonBox::ResetRole); @@ -71,7 +71,6 @@ bool IconPickerDialog::eventFilter ( QObject* obj, QEvent* evt) return QDialog::eventFilter(obj ,evt); } QKeyEvent *keyEvent = static_cast<QKeyEvent*>(evt); - IconList * list = IconList::instance(); switch(keyEvent->key()) { case Qt::Key_Delete: @@ -89,14 +88,12 @@ bool IconPickerDialog::eventFilter ( QObject* obj, QEvent* evt) void IconPickerDialog::addNewIcon() { QStringList fileNames = QFileDialog::getOpenFileNames(this, "Select Icons", QString(), "Icons (*.png *.jpg *.jpeg)"); - IconList * list = IconList::instance(); - list->installIcons(fileNames); + MMC->icons()->installIcons(fileNames); } void IconPickerDialog::removeSelectedIcon() { - IconList * list = IconList::instance(); - list->deleteIcon(selectedIconKey); + MMC->icons()->deleteIcon(selectedIconKey); } @@ -119,7 +116,7 @@ void IconPickerDialog::selectionChanged ( QItemSelection selected, QItemSelectio int IconPickerDialog::exec ( QString selection ) { - IconList * list = IconList::instance(); + IconList * list = MMC->icons(); auto contentsWidget = ui->iconView; selectedIconKey = selection; diff --git a/gui/aboutdialog.cpp b/gui/aboutdialog.cpp index 873cc175..9792d4fe 100644 --- a/gui/aboutdialog.cpp +++ b/gui/aboutdialog.cpp @@ -1,9 +1,7 @@ #include "aboutdialog.h" #include "ui_aboutdialog.h" -#include <AppVersion.h> - #include <QIcon> -#include <QApplication> +#include <MultiMC.h> AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent), @@ -12,10 +10,10 @@ AboutDialog::AboutDialog(QWidget *parent) : ui->setupUi(this); ui->icon->setPixmap(QIcon(":/icons/multimc/scalable/apps/multimc.svg").pixmap(64)); - ui->title->setText("MultiMC " + AppVersion::current.toString()); + ui->title->setText("MultiMC " + MMC->version().toString()); connect(ui->closeButton, SIGNAL(clicked()), SLOT(close())); - QApplication::instance()->connect(ui->aboutQt, SIGNAL(clicked()), SLOT(aboutQt())); + MMC->connect(ui->aboutQt, SIGNAL(clicked()), SLOT(aboutQt())); } AboutDialog::~AboutDialog() diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 4ccc12b6..82483bf2 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -16,6 +16,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include <MultiMC.h> #include "mainwindow.h" #include "ui_mainwindow.h" @@ -23,7 +24,7 @@ #include <QMenu> #include <QMessageBox> #include <QInputDialog> -#include <QApplication> + #include <QDesktopServices> #include <QUrl> #include <QDir> @@ -48,33 +49,30 @@ #include "gui/consolewindow.h" #include "gui/instancesettings.h" -#include "AppSettings.h" -#include "AppVersion.h" - #include "logic/lists/InstanceList.h" +#include "logic/lists/MinecraftVersionList.h" +#include "logic/lists/LwjglVersionList.h" +#include "logic/lists/IconList.h" + #include "logic/tasks/LoginTask.h" #include "logic/BaseInstance.h" #include "logic/InstanceFactory.h" #include "logic/MinecraftProcess.h" #include "logic/OneSixAssets.h" #include "logic/OneSixUpdate.h" -#include "logic/lists/MinecraftVersionList.h" -#include "logic/lists/LwjglVersionList.h" -#include <logic/IconListModel.h> -#include <logic/LegacyInstance.h> + +#include "logic/LegacyInstance.h" #include "instancedelegate.h" #include "IconPickerDialog.h" #include "LabeledToolButton.h" #include "EditNotesDialog.h" -MainWindow::MainWindow ( QWidget *parent ) : - QMainWindow ( parent ), - ui ( new Ui::MainWindow ), - instList ( globalSettings->get ( "InstanceDir" ).toString() ) +MainWindow::MainWindow ( QWidget *parent ) + :QMainWindow ( parent ), ui ( new Ui::MainWindow ) { ui->setupUi ( this ); - setWindowTitle ( QString ( "MultiMC %1" ).arg ( AppVersion::current.toString() ) ); + setWindowTitle ( QString ( "MultiMC %1" ).arg ( MMC->version().toString() ) ); // Set the selected instance to null m_selectedInstance = nullptr; @@ -126,7 +124,7 @@ MainWindow::MainWindow ( QWidget *parent ) : //proxymodel->setDynamicSortFilter ( true ); // FIXME: instList should be global-ish, or at least not tied to the main window... maybe the application itself? - proxymodel->setSourceModel ( &instList ); + proxymodel->setSourceModel ( MMC->instances() ); proxymodel->sort ( 0 ); view->setFrameShape ( QFrame::NoFrame ); view->setModel ( proxymodel ); @@ -135,7 +133,7 @@ MainWindow::MainWindow ( QWidget *parent ) : } // The cat background { - bool cat_enable = globalSettings->get("TheCat").toBool(); + bool cat_enable = MMC->settings()->get("TheCat").toBool(); ui->actionCAT->setChecked(cat_enable); connect(ui->actionCAT, SIGNAL(toggled(bool)), SLOT(onCatToggled(bool))); setCatBackground(cat_enable); @@ -151,12 +149,11 @@ MainWindow::MainWindow ( QWidget *parent ) : ); // model reset -> selection is invalid. All the instance pointers are wrong. // FIXME: stop using POINTERS everywhere - connect(&instList,SIGNAL(dataIsInvalid()),SLOT(selectionBad())); + connect(MMC->instances() ,SIGNAL(dataIsInvalid()),SLOT(selectionBad())); // run the things that load and download other things... FIXME: this is NOT the place // FIXME: invisible actions in the background = NOPE. { - instList.loadList(); if (!MinecraftVersionList::getMainList().isLoaded()) { m_versionLoadTask = MinecraftVersionList::getMainList().getLoadTask(); @@ -212,7 +209,7 @@ bool MainWindow::eventFilter ( QObject* obj, QEvent* ev ) void MainWindow::onCatToggled ( bool state ) { setCatBackground(state); - globalSettings->set("TheCat", state); + MMC->settings()->set("TheCat", state); } void MainWindow::setCatBackground ( bool enabled ) @@ -264,7 +261,7 @@ void MainWindow::on_actionAddInstance_triggered() BaseInstance *newInstance = NULL; QString instDirName = DirNameFromString(newInstDlg.instName()); - QString instDir = PathCombine(globalSettings->get("InstanceDir").toString(), instDirName); + QString instDir = PathCombine(MMC->settings()->get("InstanceDir").toString(), instDirName); auto &loader = InstanceFactory::get(); @@ -275,7 +272,7 @@ void MainWindow::on_actionAddInstance_triggered() case InstanceFactory::NoCreateError: newInstance->setName(newInstDlg.instName()); newInstance->setIconKey(newInstDlg.iconKey()); - instList.add(InstancePtr(newInstance)); + MMC->instances()->add(InstancePtr(newInstance)); return; case InstanceFactory::InstExists: @@ -305,8 +302,7 @@ void MainWindow::on_actionChangeInstIcon_triggered() if(dlg.result() == QDialog::Accepted) { m_selectedInstance->setIconKey(dlg.selectedIconKey); - IconList * iconListModel = IconList::instance(); - auto ico =iconListModel->getIcon(dlg.selectedIconKey); + auto ico = MMC->icons()->getIcon(dlg.selectedIconKey); ui->actionChangeInstIcon->setIcon(ico); |
