* 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
This commit is contained in:
Petr Mrázek 2014-11-08 21:17:28 +01:00
parent 7d1dd2a32f
commit 992ba0c3f8
8 changed files with 120 additions and 14 deletions

View File

@ -376,6 +376,9 @@ void MultiMC::initGlobalSettings()
// Notifications
m_settings->registerSetting("ShownNotifications", QString());
// Remembered state
m_settings->registerSetting("LastUsedGroupForNewInstance", QString());
// FTB
m_settings->registerSetting("TrackFTBInstances", false);
QString ftbDataDefault;

View File

@ -751,6 +751,8 @@ void MainWindow::on_actionAddInstance_triggered()
if (!newInstDlg.exec())
return;
MMC->settings()->set("LastUsedGroupForNewInstance", newInstDlg.instGroup());
InstancePtr newInstance;
QString instancesDir = MMC->settings()->get("InstanceDir").toString();
@ -764,10 +766,14 @@ void MainWindow::on_actionAddInstance_triggered()
switch (error)
{
case InstanceFactory::NoCreateError:
{
newInstance->setName(newInstDlg.instName());
newInstance->setIconKey(newInstDlg.iconKey());
newInstance->setGroupInitial(newInstDlg.instGroup());
MMC->instances()->add(InstancePtr(newInstance));
stringToIntList(MMC->settings()->get("ShownNotifications").toString());
break;
}
case InstanceFactory::InstExists:
{
@ -836,6 +842,7 @@ void MainWindow::on_actionCopyInstance_triggered()
{
case InstanceFactory::NoCreateError:
newInstance->setName(copyInstDlg.instName());
newInstance->setGroupInitial(copyInstDlg.instGroup());
newInstance->setIconKey(copyInstDlg.iconKey());
MMC->instances()->add(newInstance);
return;

View File

@ -30,6 +30,7 @@
#include "logic/icons/IconList.h"
#include "logic/tasks/Task.h"
#include "logic/BaseInstance.h"
#include <logic/InstanceList.h>
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);

View File

@ -37,6 +37,7 @@ public:
void updateDialogState();
QString instName() const;
QString instGroup() const;
QString iconKey() const;
private

View File

@ -17,7 +17,7 @@
<string>Copy Instance</string>
</property>
<property name="windowIcon">
<iconset resource="../../graphics.qrc">
<iconset>
<normaloff>:/icons/toolbar/copy</normaloff>:/icons/toolbar/copy</iconset>
</property>
<property name="modal">
@ -42,7 +42,7 @@
<item>
<widget class="QToolButton" name="iconButton">
<property name="icon">
<iconset resource="../../graphics.qrc">
<iconset>
<normaloff>:/icons/instances/infinity</normaloff>:/icons/instances/infinity</iconset>
</property>
<property name="iconSize">
@ -82,6 +82,33 @@
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="labelVersion_3">
<property name="text">
<string>Group</string>
</property>
<property name="buddy">
<cstring>groupBox</cstring>
</property>
</widget>
</item>
<item row="0" column="1" colspan="2">
<widget class="QComboBox" name="groupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">

View File

@ -22,6 +22,7 @@
#include "logic/icons/IconList.h"
#include "logic/minecraft/MinecraftVersionList.h"
#include "logic/tasks/Task.h"
#include <logic/InstanceList.h>
#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();
}

View File

@ -39,6 +39,7 @@ public:
void loadVersionList();
QString instName() const;
QString instGroup() const;
QString iconKey() const;
BaseVersionPtr selectedVersion() const;

View File

@ -9,15 +9,15 @@
<rect>
<x>0</x>
<y>0</y>
<width>220</width>
<height>234</height>
<width>345</width>
<height>261</height>
</rect>
</property>
<property name="windowTitle">
<string>New Instance</string>
</property>
<property name="windowIcon">
<iconset resource="../../graphics.qrc">
<iconset>
<normaloff>:/icons/toolbar/new</normaloff>:/icons/toolbar/new</iconset>
</property>
<property name="modal">
@ -42,7 +42,7 @@
<item>
<widget class="QToolButton" name="iconButton">
<property name="icon">
<iconset resource="../../graphics.qrc">
<iconset>
<normaloff>:/icons/instances/infinity</normaloff>:/icons/instances/infinity</iconset>
</property>
<property name="iconSize">
@ -83,25 +83,51 @@
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="labelVersion">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="2">
<widget class="QToolButton" name="btnChangeVersion">
<property name="text">
<string>Version:</string>
<string>...</string>
</property>
</widget>
</item>
<item>
<item row="0" column="1">
<widget class="QLineEdit" name="versionTextBox">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="btnChangeVersion">
<item row="0" column="0">
<widget class="QLabel" name="labelVersion">
<property name="text">
<string>...</string>
<string>Version:</string>
</property>
<property name="buddy">
<cstring>versionTextBox</cstring>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelVersion_3">
<property name="text">
<string>Group:</string>
</property>
<property name="buddy">
<cstring>groupBox</cstring>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QComboBox" name="groupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>