From 992ba0c3f8ae65d25503b74c62c3cdf4668635d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 8 Nov 2014 21:17:28 +0100 Subject: Implement #545 * Instance group can be selected when creating and copying instances * Original group is pre-selected when copying * Last used group is pre-selected when creating new instances --- gui/dialogs/CopyInstanceDialog.cpp | 19 +++++++++++++++ gui/dialogs/CopyInstanceDialog.h | 1 + gui/dialogs/CopyInstanceDialog.ui | 31 +++++++++++++++++++++-- gui/dialogs/NewInstanceDialog.cpp | 22 +++++++++++++++++ gui/dialogs/NewInstanceDialog.h | 1 + gui/dialogs/NewInstanceDialog.ui | 50 +++++++++++++++++++++++++++++--------- 6 files changed, 110 insertions(+), 14 deletions(-) (limited to 'gui/dialogs') diff --git a/gui/dialogs/CopyInstanceDialog.cpp b/gui/dialogs/CopyInstanceDialog.cpp index de8cf3ce..6625460b 100644 --- a/gui/dialogs/CopyInstanceDialog.cpp +++ b/gui/dialogs/CopyInstanceDialog.cpp @@ -30,6 +30,7 @@ #include "logic/icons/IconList.h" #include "logic/tasks/Task.h" #include "logic/BaseInstance.h" +#include CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget *parent) :QDialog(parent), ui(new Ui::CopyInstanceDialog), m_original(original) @@ -43,6 +44,19 @@ CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget *parent) ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey)); ui->instNameTextBox->setText(original->name()); ui->instNameTextBox->setFocus(); + auto groups = MMC->instances()->getGroups().toSet(); + auto groupList = QStringList(groups.toList()); + groupList.sort(Qt::CaseInsensitive); + groupList.removeOne(""); + groupList.push_front(""); + ui->groupBox->addItems(groupList); + int index = groupList.indexOf(m_original->group()); + if(index == -1) + { + index = 0; + } + ui->groupBox->setCurrentIndex(index); + ui->groupBox->lineEdit()->setPlaceholderText(tr("No group")); } CopyInstanceDialog::~CopyInstanceDialog() @@ -65,6 +79,11 @@ QString CopyInstanceDialog::iconKey() const return InstIconKey; } +QString CopyInstanceDialog::instGroup() const +{ + return ui->groupBox->currentText(); +} + void CopyInstanceDialog::on_iconButton_clicked() { IconPickerDialog dlg(this); diff --git a/gui/dialogs/CopyInstanceDialog.h b/gui/dialogs/CopyInstanceDialog.h index a8a4c3e4..0f3a2d48 100644 --- a/gui/dialogs/CopyInstanceDialog.h +++ b/gui/dialogs/CopyInstanceDialog.h @@ -37,6 +37,7 @@ public: void updateDialogState(); QString instName() const; + QString instGroup() const; QString iconKey() const; private diff --git a/gui/dialogs/CopyInstanceDialog.ui b/gui/dialogs/CopyInstanceDialog.ui index 4aa1cb27..2615168c 100644 --- a/gui/dialogs/CopyInstanceDialog.ui +++ b/gui/dialogs/CopyInstanceDialog.ui @@ -17,7 +17,7 @@ Copy Instance - + :/icons/toolbar/copy:/icons/toolbar/copy @@ -42,7 +42,7 @@ - + :/icons/instances/infinity:/icons/instances/infinity @@ -82,6 +82,33 @@ + + + + + + Group + + + groupBox + + + + + + + + 0 + 0 + + + + true + + + + + diff --git a/gui/dialogs/NewInstanceDialog.cpp b/gui/dialogs/NewInstanceDialog.cpp index 721d7931..aeaa7e4a 100644 --- a/gui/dialogs/NewInstanceDialog.cpp +++ b/gui/dialogs/NewInstanceDialog.cpp @@ -22,6 +22,7 @@ #include "logic/icons/IconList.h" #include "logic/minecraft/MinecraftVersionList.h" #include "logic/tasks/Task.h" +#include #include "gui/Platform.h" #include "VersionSelectDialog.h" @@ -41,6 +42,21 @@ NewInstanceDialog::NewInstanceDialog(QWidget *parent) setSelectedVersion(MMC->minecraftlist()->getLatestStable(), true); InstIconKey = "infinity"; ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey)); + auto groups = MMC->instances()->getGroups().toSet(); + auto groupList = QStringList(groups.toList()); + groupList.sort(Qt::CaseInsensitive); + groupList.removeOne(""); + QString oldValue = MMC->settings()->get("LastUsedGroupForNewInstance").toString(); + groupList.push_front(oldValue); + groupList.push_front(""); + ui->groupBox->addItems(groupList); + int index = groupList.indexOf(oldValue); + if(index == -1) + { + index = 0; + } + ui->groupBox->setCurrentIndex(index); + ui->groupBox->lineEdit()->setPlaceholderText(tr("No group")); } NewInstanceDialog::~NewInstanceDialog() @@ -79,6 +95,11 @@ QString NewInstanceDialog::instName() const return ui->instNameTextBox->text(); } +QString NewInstanceDialog::instGroup() const +{ + return ui->groupBox->currentText(); +} + QString NewInstanceDialog::iconKey() const { return InstIconKey; @@ -118,3 +139,4 @@ void NewInstanceDialog::on_instNameTextBox_textChanged(const QString &arg1) { updateDialogState(); } + diff --git a/gui/dialogs/NewInstanceDialog.h b/gui/dialogs/NewInstanceDialog.h index 90c85144..83cd78b3 100644 --- a/gui/dialogs/NewInstanceDialog.h +++ b/gui/dialogs/NewInstanceDialog.h @@ -39,6 +39,7 @@ public: void loadVersionList(); QString instName() const; + QString instGroup() const; QString iconKey() const; BaseVersionPtr selectedVersion() const; diff --git a/gui/dialogs/NewInstanceDialog.ui b/gui/dialogs/NewInstanceDialog.ui index 00544463..be4642aa 100644 --- a/gui/dialogs/NewInstanceDialog.ui +++ b/gui/dialogs/NewInstanceDialog.ui @@ -9,15 +9,15 @@ 0 0 - 220 - 234 + 345 + 261 New Instance - + :/icons/toolbar/new:/icons/toolbar/new @@ -42,7 +42,7 @@ - + :/icons/instances/infinity:/icons/instances/infinity @@ -83,25 +83,51 @@ - - - + + + - Version: + ... - + true - - + + - ... + Version: + + + versionTextBox + + + + + + + Group: + + + groupBox + + + + + + + + 0 + 0 + + + + true -- cgit v1.2.3