From aa70ed2244700dbcc93c1fadb22edc1c1caede37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 1 Feb 2015 11:44:47 +0100 Subject: SCRATCH move icons over to Env, instance proxy model to gui --- gui/ConsoleWindow.cpp | 2 +- gui/InstanceProxyModel.cpp | 23 +++++++++++++++++++++++ gui/InstanceProxyModel.h | 13 +++++++++++++ gui/MainWindow.cpp | 9 +++++---- gui/MainWindow.h | 2 +- gui/dialogs/CopyInstanceDialog.cpp | 6 +++--- gui/dialogs/IconPickerDialog.cpp | 8 ++++---- gui/dialogs/NewInstanceDialog.cpp | 4 ++-- gui/pages/VersionPage.cpp | 2 +- 9 files changed, 53 insertions(+), 16 deletions(-) create mode 100644 gui/InstanceProxyModel.cpp create mode 100644 gui/InstanceProxyModel.h (limited to 'gui') diff --git a/gui/ConsoleWindow.cpp b/gui/ConsoleWindow.cpp index ad3c2636..1f7c63cf 100644 --- a/gui/ConsoleWindow.cpp +++ b/gui/ConsoleWindow.cpp @@ -59,7 +59,7 @@ ConsoleWindow::ConsoleWindow(BaseProcess *process, QWidget *parent) setAttribute(Qt::WA_DeleteOnClose); auto instance = m_proc->instance(); - auto icon = MMC->icons()->getIcon(instance->iconKey()); + auto icon = ENV.icons()->getIcon(instance->iconKey()); QString windowTitle = tr("Console window for ") + instance->name(); // Set window properties diff --git a/gui/InstanceProxyModel.cpp b/gui/InstanceProxyModel.cpp new file mode 100644 index 00000000..09d6fd85 --- /dev/null +++ b/gui/InstanceProxyModel.cpp @@ -0,0 +1,23 @@ +#include "InstanceProxyModel.h" +#include "MultiMC.h" +#include + +InstanceProxyModel::InstanceProxyModel(QObject *parent) : GroupedProxyModel(parent) +{ +} + +bool InstanceProxyModel::subSortLessThan(const QModelIndex &left, + const QModelIndex &right) const +{ + BaseInstance *pdataLeft = static_cast(left.internalPointer()); + BaseInstance *pdataRight = static_cast(right.internalPointer()); + QString sortMode = MMC->settings()->get("InstSortMode").toString(); + if (sortMode == "LastLaunch") + { + return pdataLeft->lastLaunch() > pdataRight->lastLaunch(); + } + else + { + return QString::localeAwareCompare(pdataLeft->name(), pdataRight->name()) < 0; + } +} diff --git a/gui/InstanceProxyModel.h b/gui/InstanceProxyModel.h new file mode 100644 index 00000000..e558efc4 --- /dev/null +++ b/gui/InstanceProxyModel.h @@ -0,0 +1,13 @@ +#include "groupview/GroupedProxyModel.h" + +/** + * A proxy model that is responsible for sorting instances into groups + */ +class InstanceProxyModel : public GroupedProxyModel +{ +public: + explicit InstanceProxyModel(QObject *parent = 0); + +protected: + virtual bool subSortLessThan(const QModelIndex &left, const QModelIndex &right) const; +}; diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp index 8aa2e635..fb3bfd6f 100644 --- a/gui/MainWindow.cpp +++ b/gui/MainWindow.cpp @@ -331,6 +331,7 @@ namespace Ui { #include "gui/groupview/GroupView.h" #include "gui/groupview/InstanceDelegate.h" +#include "gui/InstanceProxyModel.h" #include "gui/Platform.h" @@ -503,7 +504,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi SLOT(instanceChanged(const QModelIndex &, const QModelIndex &))); // track icon changes and update the toolbar! - connect(MMC->icons().get(), SIGNAL(iconUpdated(QString)), SLOT(iconUpdated(QString))); + connect(ENV.icons().get(), SIGNAL(iconUpdated(QString)), SLOT(iconUpdated(QString))); // model reset -> selection is invalid. All the instance pointers are wrong. // FIXME: stop using POINTERS everywhere @@ -1277,7 +1278,7 @@ void MainWindow::on_actionChangeInstIcon_triggered() if (dlg.result() == QDialog::Accepted) { m_selectedInstance->setIconKey(dlg.selectedIconKey); - auto ico = MMC->icons()->getBigIcon(dlg.selectedIconKey); + auto ico = ENV.icons()->getBigIcon(dlg.selectedIconKey); ui->actionChangeInstIcon->setIcon(ico); } } @@ -1286,14 +1287,14 @@ void MainWindow::iconUpdated(QString icon) { if (icon == m_currentInstIcon) { - ui->actionChangeInstIcon->setIcon(MMC->icons()->getBigIcon(m_currentInstIcon)); + ui->actionChangeInstIcon->setIcon(ENV.icons()->getBigIcon(m_currentInstIcon)); } } void MainWindow::updateInstanceToolIcon(QString new_icon) { m_currentInstIcon = new_icon; - ui->actionChangeInstIcon->setIcon(MMC->icons()->getBigIcon(m_currentInstIcon)); + ui->actionChangeInstIcon->setIcon(ENV.icons()->getBigIcon(m_currentInstIcon)); } void MainWindow::setSelectedInstanceById(const QString &id) diff --git a/gui/MainWindow.h b/gui/MainWindow.h index 875c2f86..cccd9f9c 100644 --- a/gui/MainWindow.h +++ b/gui/MainWindow.h @@ -19,7 +19,6 @@ #include #include -#include "logic/InstanceList.h" #include "logic/BaseInstance.h" #include "logic/auth/MojangAccount.h" #include "logic/net/NetJob.h" @@ -27,6 +26,7 @@ class NewsChecker; class NotificationChecker; class QToolButton; +class InstanceProxyModel; class LabeledToolButton; class QLabel; class MinecraftProcess; diff --git a/gui/dialogs/CopyInstanceDialog.cpp b/gui/dialogs/CopyInstanceDialog.cpp index 80418e14..038fb896 100644 --- a/gui/dialogs/CopyInstanceDialog.cpp +++ b/gui/dialogs/CopyInstanceDialog.cpp @@ -29,7 +29,7 @@ #include "logic/icons/IconList.h" #include "logic/tasks/Task.h" #include "logic/BaseInstance.h" -#include +#include "logic/InstanceList.h" CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget *parent) :QDialog(parent), ui(new Ui::CopyInstanceDialog), m_original(original) @@ -40,7 +40,7 @@ CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget *parent) layout()->setSizeConstraint(QLayout::SetFixedSize); InstIconKey = original->iconKey(); - ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey)); + ui->iconButton->setIcon(ENV.icons()->getIcon(InstIconKey)); ui->instNameTextBox->setText(original->name()); ui->instNameTextBox->setFocus(); auto groups = MMC->instances()->getGroups().toSet(); @@ -91,7 +91,7 @@ void CopyInstanceDialog::on_iconButton_clicked() if (dlg.result() == QDialog::Accepted) { InstIconKey = dlg.selectedIconKey; - ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey)); + ui->iconButton->setIcon(ENV.icons()->getIcon(InstIconKey)); } } diff --git a/gui/dialogs/IconPickerDialog.cpp b/gui/dialogs/IconPickerDialog.cpp index 2fb50165..90bf2ef4 100644 --- a/gui/dialogs/IconPickerDialog.cpp +++ b/gui/dialogs/IconPickerDialog.cpp @@ -59,7 +59,7 @@ IconPickerDialog::IconPickerDialog(QWidget *parent) contentsWidget->installEventFilter(this); - contentsWidget->setModel(MMC->icons().get()); + contentsWidget->setModel(ENV.icons().get()); auto buttonAdd = ui->buttonBox->addButton(tr("Add Icon"), QDialogButtonBox::ResetRole); auto buttonRemove = @@ -104,12 +104,12 @@ void IconPickerDialog::addNewIcon() //: The type of icon files QStringList fileNames = QFileDialog::getOpenFileNames(this, selectIcons, QString(), tr("Icons") + "(*.png *.jpg *.jpeg *.ico)"); - MMC->icons()->installIcons(fileNames); + ENV.icons()->installIcons(fileNames); } void IconPickerDialog::removeSelectedIcon() { - MMC->icons()->deleteIcon(selectedIconKey); + ENV.icons()->deleteIcon(selectedIconKey); } void IconPickerDialog::activated(QModelIndex index) @@ -130,7 +130,7 @@ void IconPickerDialog::selectionChanged(QItemSelection selected, QItemSelection int IconPickerDialog::exec(QString selection) { - auto list = MMC->icons(); + auto list = ENV.icons(); auto contentsWidget = ui->iconView; selectedIconKey = selection; diff --git a/gui/dialogs/NewInstanceDialog.cpp b/gui/dialogs/NewInstanceDialog.cpp index bba1f785..86ffc5b8 100644 --- a/gui/dialogs/NewInstanceDialog.cpp +++ b/gui/dialogs/NewInstanceDialog.cpp @@ -66,7 +66,7 @@ NewInstanceDialog::NewInstanceDialog(QWidget *parent) setSelectedVersion(MMC->minecraftlist()->getLatestStable(), true); InstIconKey = "infinity"; - ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey)); + ui->iconButton->setIcon(ENV.icons()->getIcon(InstIconKey)); ui->modpackEdit->setValidator(new UrlValidator(ui->modpackEdit)); connect(ui->modpackEdit, &QLineEdit::textChanged, this, &NewInstanceDialog::updateDialogState); @@ -181,7 +181,7 @@ void NewInstanceDialog::on_iconButton_clicked() if (dlg.result() == QDialog::Accepted) { InstIconKey = dlg.selectedIconKey; - ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey)); + ui->iconButton->setIcon(ENV.icons()->getIcon(InstIconKey)); } } diff --git a/gui/pages/VersionPage.cpp b/gui/pages/VersionPage.cpp index 61253c1b..7df0b5c1 100644 --- a/gui/pages/VersionPage.cpp +++ b/gui/pages/VersionPage.cpp @@ -51,7 +51,7 @@ QIcon VersionPage::icon() const { - return MMC->icons()->getIcon(m_inst->iconKey()); + return ENV.icons()->getIcon(m_inst->iconKey()); } bool VersionPage::shouldDisplay() const { -- cgit v1.2.3