mirror of
https://github.com/MultiMC/MultiMC5.git
synced 2025-02-18 21:41:06 +00:00
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
This commit is contained in:
parent
7d1dd2a32f
commit
992ba0c3f8
@ -376,6 +376,9 @@ void MultiMC::initGlobalSettings()
|
|||||||
// Notifications
|
// Notifications
|
||||||
m_settings->registerSetting("ShownNotifications", QString());
|
m_settings->registerSetting("ShownNotifications", QString());
|
||||||
|
|
||||||
|
// Remembered state
|
||||||
|
m_settings->registerSetting("LastUsedGroupForNewInstance", QString());
|
||||||
|
|
||||||
// FTB
|
// FTB
|
||||||
m_settings->registerSetting("TrackFTBInstances", false);
|
m_settings->registerSetting("TrackFTBInstances", false);
|
||||||
QString ftbDataDefault;
|
QString ftbDataDefault;
|
||||||
|
@ -751,6 +751,8 @@ void MainWindow::on_actionAddInstance_triggered()
|
|||||||
if (!newInstDlg.exec())
|
if (!newInstDlg.exec())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
MMC->settings()->set("LastUsedGroupForNewInstance", newInstDlg.instGroup());
|
||||||
|
|
||||||
InstancePtr newInstance;
|
InstancePtr newInstance;
|
||||||
|
|
||||||
QString instancesDir = MMC->settings()->get("InstanceDir").toString();
|
QString instancesDir = MMC->settings()->get("InstanceDir").toString();
|
||||||
@ -764,10 +766,14 @@ void MainWindow::on_actionAddInstance_triggered()
|
|||||||
switch (error)
|
switch (error)
|
||||||
{
|
{
|
||||||
case InstanceFactory::NoCreateError:
|
case InstanceFactory::NoCreateError:
|
||||||
|
{
|
||||||
newInstance->setName(newInstDlg.instName());
|
newInstance->setName(newInstDlg.instName());
|
||||||
newInstance->setIconKey(newInstDlg.iconKey());
|
newInstance->setIconKey(newInstDlg.iconKey());
|
||||||
|
newInstance->setGroupInitial(newInstDlg.instGroup());
|
||||||
MMC->instances()->add(InstancePtr(newInstance));
|
MMC->instances()->add(InstancePtr(newInstance));
|
||||||
|
stringToIntList(MMC->settings()->get("ShownNotifications").toString());
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case InstanceFactory::InstExists:
|
case InstanceFactory::InstExists:
|
||||||
{
|
{
|
||||||
@ -836,6 +842,7 @@ void MainWindow::on_actionCopyInstance_triggered()
|
|||||||
{
|
{
|
||||||
case InstanceFactory::NoCreateError:
|
case InstanceFactory::NoCreateError:
|
||||||
newInstance->setName(copyInstDlg.instName());
|
newInstance->setName(copyInstDlg.instName());
|
||||||
|
newInstance->setGroupInitial(copyInstDlg.instGroup());
|
||||||
newInstance->setIconKey(copyInstDlg.iconKey());
|
newInstance->setIconKey(copyInstDlg.iconKey());
|
||||||
MMC->instances()->add(newInstance);
|
MMC->instances()->add(newInstance);
|
||||||
return;
|
return;
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "logic/icons/IconList.h"
|
#include "logic/icons/IconList.h"
|
||||||
#include "logic/tasks/Task.h"
|
#include "logic/tasks/Task.h"
|
||||||
#include "logic/BaseInstance.h"
|
#include "logic/BaseInstance.h"
|
||||||
|
#include <logic/InstanceList.h>
|
||||||
|
|
||||||
CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget *parent)
|
CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget *parent)
|
||||||
:QDialog(parent), ui(new Ui::CopyInstanceDialog), m_original(original)
|
: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->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey));
|
||||||
ui->instNameTextBox->setText(original->name());
|
ui->instNameTextBox->setText(original->name());
|
||||||
ui->instNameTextBox->setFocus();
|
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()
|
CopyInstanceDialog::~CopyInstanceDialog()
|
||||||
@ -65,6 +79,11 @@ QString CopyInstanceDialog::iconKey() const
|
|||||||
return InstIconKey;
|
return InstIconKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString CopyInstanceDialog::instGroup() const
|
||||||
|
{
|
||||||
|
return ui->groupBox->currentText();
|
||||||
|
}
|
||||||
|
|
||||||
void CopyInstanceDialog::on_iconButton_clicked()
|
void CopyInstanceDialog::on_iconButton_clicked()
|
||||||
{
|
{
|
||||||
IconPickerDialog dlg(this);
|
IconPickerDialog dlg(this);
|
||||||
|
@ -37,6 +37,7 @@ public:
|
|||||||
void updateDialogState();
|
void updateDialogState();
|
||||||
|
|
||||||
QString instName() const;
|
QString instName() const;
|
||||||
|
QString instGroup() const;
|
||||||
QString iconKey() const;
|
QString iconKey() const;
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
<string>Copy Instance</string>
|
<string>Copy Instance</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowIcon">
|
<property name="windowIcon">
|
||||||
<iconset resource="../../graphics.qrc">
|
<iconset>
|
||||||
<normaloff>:/icons/toolbar/copy</normaloff>:/icons/toolbar/copy</iconset>
|
<normaloff>:/icons/toolbar/copy</normaloff>:/icons/toolbar/copy</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="modal">
|
<property name="modal">
|
||||||
@ -42,7 +42,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QToolButton" name="iconButton">
|
<widget class="QToolButton" name="iconButton">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="../../graphics.qrc">
|
<iconset>
|
||||||
<normaloff>:/icons/instances/infinity</normaloff>:/icons/instances/infinity</iconset>
|
<normaloff>:/icons/instances/infinity</normaloff>:/icons/instances/infinity</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
@ -82,6 +82,33 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</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>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "logic/icons/IconList.h"
|
#include "logic/icons/IconList.h"
|
||||||
#include "logic/minecraft/MinecraftVersionList.h"
|
#include "logic/minecraft/MinecraftVersionList.h"
|
||||||
#include "logic/tasks/Task.h"
|
#include "logic/tasks/Task.h"
|
||||||
|
#include <logic/InstanceList.h>
|
||||||
|
|
||||||
#include "gui/Platform.h"
|
#include "gui/Platform.h"
|
||||||
#include "VersionSelectDialog.h"
|
#include "VersionSelectDialog.h"
|
||||||
@ -41,6 +42,21 @@ NewInstanceDialog::NewInstanceDialog(QWidget *parent)
|
|||||||
setSelectedVersion(MMC->minecraftlist()->getLatestStable(), true);
|
setSelectedVersion(MMC->minecraftlist()->getLatestStable(), true);
|
||||||
InstIconKey = "infinity";
|
InstIconKey = "infinity";
|
||||||
ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey));
|
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()
|
NewInstanceDialog::~NewInstanceDialog()
|
||||||
@ -79,6 +95,11 @@ QString NewInstanceDialog::instName() const
|
|||||||
return ui->instNameTextBox->text();
|
return ui->instNameTextBox->text();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString NewInstanceDialog::instGroup() const
|
||||||
|
{
|
||||||
|
return ui->groupBox->currentText();
|
||||||
|
}
|
||||||
|
|
||||||
QString NewInstanceDialog::iconKey() const
|
QString NewInstanceDialog::iconKey() const
|
||||||
{
|
{
|
||||||
return InstIconKey;
|
return InstIconKey;
|
||||||
@ -118,3 +139,4 @@ void NewInstanceDialog::on_instNameTextBox_textChanged(const QString &arg1)
|
|||||||
{
|
{
|
||||||
updateDialogState();
|
updateDialogState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@ public:
|
|||||||
void loadVersionList();
|
void loadVersionList();
|
||||||
|
|
||||||
QString instName() const;
|
QString instName() const;
|
||||||
|
QString instGroup() const;
|
||||||
QString iconKey() const;
|
QString iconKey() const;
|
||||||
BaseVersionPtr selectedVersion() const;
|
BaseVersionPtr selectedVersion() const;
|
||||||
|
|
||||||
|
@ -9,15 +9,15 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>220</width>
|
<width>345</width>
|
||||||
<height>234</height>
|
<height>261</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>New Instance</string>
|
<string>New Instance</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowIcon">
|
<property name="windowIcon">
|
||||||
<iconset resource="../../graphics.qrc">
|
<iconset>
|
||||||
<normaloff>:/icons/toolbar/new</normaloff>:/icons/toolbar/new</iconset>
|
<normaloff>:/icons/toolbar/new</normaloff>:/icons/toolbar/new</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="modal">
|
<property name="modal">
|
||||||
@ -42,7 +42,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QToolButton" name="iconButton">
|
<widget class="QToolButton" name="iconButton">
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="../../graphics.qrc">
|
<iconset>
|
||||||
<normaloff>:/icons/instances/infinity</normaloff>:/icons/instances/infinity</iconset>
|
<normaloff>:/icons/instances/infinity</normaloff>:/icons/instances/infinity</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
@ -83,25 +83,51 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item>
|
<item row="0" column="2">
|
||||||
<widget class="QLabel" name="labelVersion">
|
<widget class="QToolButton" name="btnChangeVersion">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Version:</string>
|
<string>...</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item row="0" column="1">
|
||||||
<widget class="QLineEdit" name="versionTextBox">
|
<widget class="QLineEdit" name="versionTextBox">
|
||||||
<property name="readOnly">
|
<property name="readOnly">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item row="0" column="0">
|
||||||
<widget class="QToolButton" name="btnChangeVersion">
|
<widget class="QLabel" name="labelVersion">
|
||||||
<property name="text">
|
<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>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user