diff options
author | Petr Mrázek <peterix@gmail.com> | 2013-07-16 00:30:32 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2013-07-16 00:30:32 +0200 |
commit | e2ee6d6d254285284f07b07cb60409fbda0bf7ad (patch) | |
tree | 30810ad496b34ae949aba3a72efb0a0363e8b718 /gui | |
parent | b5450042b5f9ddaad7585f644591b7d009aeb5cb (diff) | |
download | MultiMC-e2ee6d6d254285284f07b07cb60409fbda0bf7ad.tar MultiMC-e2ee6d6d254285284f07b07cb60409fbda0bf7ad.tar.gz MultiMC-e2ee6d6d254285284f07b07cb60409fbda0bf7ad.tar.lz MultiMC-e2ee6d6d254285284f07b07cb60409fbda0bf7ad.tar.xz MultiMC-e2ee6d6d254285284f07b07cb60409fbda0bf7ad.zip |
Finalize the instance settings dialog, add setting reset mechanism
Diffstat (limited to 'gui')
-rw-r--r-- | gui/instancesettings.cpp | 209 | ||||
-rw-r--r-- | gui/instancesettings.h | 19 | ||||
-rw-r--r-- | gui/instancesettings.ui | 35 | ||||
-rw-r--r-- | gui/mainwindow.cpp | 22 |
4 files changed, 191 insertions, 94 deletions
diff --git a/gui/instancesettings.cpp b/gui/instancesettings.cpp index d0e02b8e..eea61ce8 100644 --- a/gui/instancesettings.cpp +++ b/gui/instancesettings.cpp @@ -20,90 +20,161 @@ #include "instancesettings.h" #include "ui_instancesettings.h" -InstanceSettings::InstanceSettings(QWidget *parent) : - QDialog(parent), - ui(new Ui::InstanceSettings) +InstanceSettings::InstanceSettings( SettingsObject * obj, QWidget *parent) : + m_obj(obj), + QDialog(parent), + ui(new Ui::InstanceSettings) { - ui->setupUi(this); + ui->setupUi(this); + loadSettings(); } InstanceSettings::~InstanceSettings() { - delete ui; + delete ui; } void InstanceSettings::on_customCommandsGroupBox_toggled(bool state) { - ui->labelCustomCmdsDescription->setEnabled(state); + ui->labelCustomCmdsDescription->setEnabled(state); } - -void InstanceSettings::applySettings(SettingsObject *s) +void InstanceSettings::on_buttonBox_accepted() { + applySettings(); + accept(); +} - // Console - s->set("ShowConsole", ui->showConsoleCheck->isChecked()); - s->set("AutoCloseConsole", ui->autoCloseConsoleCheck->isChecked()); - s->set("OverrideConsole", ui->consoleSettingsBox->isChecked()); - - // Window Size - s->set("LaunchCompatMode", ui->compatModeCheckBox->isChecked()); - s->set("LaunchMaximized", ui->maximizedCheckBox->isChecked()); - s->set("MinecraftWinWidth", ui->windowWidthSpinBox->value()); - s->set("MinecraftWinHeight", ui->windowHeightSpinBox->value()); - s->set("OverrideWindow", ui->windowSizeGroupBox->isChecked()); - - // Auto Login - s->set("AutoLogin", ui->autoLoginChecBox->isChecked()); - s->set("OverrideLogin", ui->accountSettingsGroupBox->isChecked()); - - // Memory - s->set("MinMemAlloc", ui->minMemSpinBox->value()); - s->set("MaxMemAlloc", ui->maxMemSpinBox->value()); - s->set("OverrideMemory", ui->memoryGroupBox->isChecked()); - - // Java Settings - s->set("JavaPath", ui->javaPathTextBox->text()); - s->set("JvmArgs", ui->jvmArgsTextBox->text()); - s->set("OverrideJava", ui->javaSettingsGroupBox->isChecked()); - - // Custom Commands - s->set("PreLaunchCommand", ui->preLaunchCmdTextBox->text()); - s->set("PostExitCommand", ui->postExitCmdTextBox->text()); - s->set("OverrideCommands", ui->customCommandsGroupBox->isChecked()); +void InstanceSettings::on_buttonBox_rejected() +{ + reject(); } -void InstanceSettings::loadSettings(SettingsObject *s) + +void InstanceSettings::applySettings() { + // Console + bool console = ui->consoleSettingsBox->isChecked(); + m_obj->set("OverrideConsole", console); + if(console) + { + m_obj->set("ShowConsole", ui->showConsoleCheck->isChecked()); + m_obj->set("AutoCloseConsole", ui->autoCloseConsoleCheck->isChecked()); + } + else + { + m_obj->reset("ShowConsole"); + m_obj->reset("AutoCloseConsole"); + } + + // Window Size + bool window = ui->windowSizeGroupBox->isChecked(); + m_obj->set("OverrideWindow", window); + if(window) + { + m_obj->set("LaunchCompatMode", ui->compatModeCheckBox->isChecked()); + m_obj->set("LaunchMaximized", ui->maximizedCheckBox->isChecked()); + m_obj->set("MinecraftWinWidth", ui->windowWidthSpinBox->value()); + m_obj->set("MinecraftWinHeight", ui->windowHeightSpinBox->value()); + } + else + { + m_obj->reset("LaunchCompatMode"); + m_obj->reset("LaunchMaximized"); + m_obj->reset("MinecraftWinWidth"); + m_obj->reset("MinecraftWinHeight"); + } + + + // Auto Login + bool login = ui->accountSettingsGroupBox->isChecked(); + m_obj->set("OverrideLogin", login); + if(login) + { + m_obj->set("AutoLogin", ui->autoLoginChecBox->isChecked()); + } + else + { + m_obj->reset("AutoLogin"); + } + + + // Memory + bool memory = ui->memoryGroupBox->isChecked(); + m_obj->set("OverrideMemory", memory); + if(memory) + { + m_obj->set("MinMemAlloc", ui->minMemSpinBox->value()); + m_obj->set("MaxMemAlloc", ui->maxMemSpinBox->value()); + } + else + { + m_obj->reset("MinMemAlloc"); + m_obj->reset("MaxMemAlloc"); + } + + + // Java Settings + bool java = ui->javaSettingsGroupBox->isChecked(); + m_obj->set("OverrideJava", java); + if(java) + { + m_obj->set("JavaPath", ui->javaPathTextBox->text()); + m_obj->set("JvmArgs", ui->jvmArgsTextBox->text()); + } + else + { + m_obj->reset("JavaPath"); + m_obj->reset("JvmArgs"); + } + + + // Custom Commands + bool custcmd = ui->customCommandsGroupBox->isChecked(); + m_obj->set("OverrideCommands", custcmd); + if(custcmd) + { + m_obj->set("PreLaunchCommand", ui->preLaunchCmdTextBox->text()); + m_obj->set("PostExitCommand", ui->postExitCmdTextBox->text()); + } + else + { + m_obj->reset("PreLaunchCommand"); + m_obj->reset("PostExitCommand"); + } + +} - // Console - ui->showConsoleCheck->setChecked(s->get("ShowConsole").toBool()); - ui->autoCloseConsoleCheck->setChecked(s->get("AutoCloseConsole").toBool()); - ui->consoleSettingsBox->setChecked(s->get("OverrideConsole").toBool()); - - // Window Size - ui->compatModeCheckBox->setChecked(s->get("LaunchCompatMode").toBool()); - ui->maximizedCheckBox->setChecked(s->get("LaunchMaximized").toBool()); - ui->windowWidthSpinBox->setValue(s->get("MinecraftWinWidth").toInt()); - ui->windowHeightSpinBox->setValue(s->get("MinecraftWinHeight").toInt()); - ui->windowSizeGroupBox->setChecked(s->get("OverrideWindow").toBool()); - - // Auto Login - ui->autoLoginChecBox->setChecked(s->get("AutoLogin").toBool()); - ui->accountSettingsGroupBox->setChecked(s->get("OverrideLogin").toBool()); - - // Memory - ui->minMemSpinBox->setValue(s->get("MinMemAlloc").toInt()); - ui->maxMemSpinBox->setValue(s->get("MaxMemAlloc").toInt()); - ui->memoryGroupBox->setChecked(s->get("OverrideMemory").toBool()); - - // Java Settings - ui->javaPathTextBox->setText(s->get("JavaPath").toString()); - ui->jvmArgsTextBox->setText(s->get("JvmArgs").toString()); - ui->javaSettingsGroupBox->setChecked(s->get("OverrideJava").toBool()); - - // Custom Commands - ui->preLaunchCmdTextBox->setText(s->get("PreLaunchCommand").toString()); - ui->postExitCmdTextBox->setText(s->get("PostExitCommand").toString()); - ui->customCommandsGroupBox->setChecked(s->get("OverrideCommands").toBool()); +void InstanceSettings::loadSettings() +{ + // Console + ui->showConsoleCheck->setChecked(m_obj->get("ShowConsole").toBool()); + ui->autoCloseConsoleCheck->setChecked(m_obj->get("AutoCloseConsole").toBool()); + ui->consoleSettingsBox->setChecked(m_obj->get("OverrideConsole").toBool()); + + // Window Size + ui->compatModeCheckBox->setChecked(m_obj->get("LaunchCompatMode").toBool()); + ui->maximizedCheckBox->setChecked(m_obj->get("LaunchMaximized").toBool()); + ui->windowWidthSpinBox->setValue(m_obj->get("MinecraftWinWidth").toInt()); + ui->windowHeightSpinBox->setValue(m_obj->get("MinecraftWinHeight").toInt()); + ui->windowSizeGroupBox->setChecked(m_obj->get("OverrideWindow").toBool()); + + // Auto Login + ui->autoLoginChecBox->setChecked(m_obj->get("AutoLogin").toBool()); + ui->accountSettingsGroupBox->setChecked(m_obj->get("OverrideLogin").toBool()); + + // Memory + ui->minMemSpinBox->setValue(m_obj->get("MinMemAlloc").toInt()); + ui->maxMemSpinBox->setValue(m_obj->get("MaxMemAlloc").toInt()); + ui->memoryGroupBox->setChecked(m_obj->get("OverrideMemory").toBool()); + + // Java Settings + ui->javaPathTextBox->setText(m_obj->get("JavaPath").toString()); + ui->jvmArgsTextBox->setText(m_obj->get("JvmArgs").toString()); + ui->javaSettingsGroupBox->setChecked(m_obj->get("OverrideJava").toBool()); + + // Custom Commands + ui->preLaunchCmdTextBox->setText(m_obj->get("PreLaunchCommand").toString()); + ui->postExitCmdTextBox->setText(m_obj->get("PostExitCommand").toString()); + ui->customCommandsGroupBox->setChecked(m_obj->get("OverrideCommands").toBool()); } diff --git a/gui/instancesettings.h b/gui/instancesettings.h index abd63199..afbd0c16 100644 --- a/gui/instancesettings.h +++ b/gui/instancesettings.h @@ -10,22 +10,25 @@ class InstanceSettings; class InstanceSettings : public QDialog { - Q_OBJECT + Q_OBJECT public: - explicit InstanceSettings(QWidget *parent = 0); - ~InstanceSettings(); + explicit InstanceSettings(SettingsObject *s, QWidget *parent = 0); + ~InstanceSettings(); - void updateCheckboxStuff(); + void updateCheckboxStuff(); - void applySettings(SettingsObject *s); - void loadSettings(SettingsObject* s); + void applySettings(); + void loadSettings(); private slots: - void on_customCommandsGroupBox_toggled(bool arg1); + void on_customCommandsGroupBox_toggled(bool arg1); + void on_buttonBox_accepted(); + void on_buttonBox_rejected(); private: - Ui::InstanceSettings *ui; + Ui::InstanceSettings *ui; + SettingsObject * m_obj; }; #endif // INSTANCESETTINGS_H diff --git a/gui/instancesettings.ui b/gui/instancesettings.ui index 187275de..16e64100 100644 --- a/gui/instancesettings.ui +++ b/gui/instancesettings.ui @@ -162,7 +162,7 @@ <item> <widget class="QCheckBox" name="autoLoginChecBox"> <property name="enabled"> - <bool>true</bool> + <bool>false</bool> </property> <property name="text"> <string>Login automatically when an instance icon is double clicked?</string> @@ -319,6 +319,9 @@ <bool>false</bool> </property> <layout class="QGridLayout" name="gridLayout_4"> + <item row="0" column="1"> + <widget class="QLineEdit" name="preLaunchCmdTextBox"/> + </item> <item row="1" column="0"> <widget class="QLabel" name="labelPostExitCmd"> <property name="text"> @@ -333,9 +336,6 @@ </property> </widget> </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="preLaunchCmdTextBox"/> - </item> <item row="1" column="1"> <widget class="QLineEdit" name="postExitCmdTextBox"/> </item> @@ -362,6 +362,9 @@ <property name="wordWrap"> <bool>true</bool> </property> + <property name="textInteractionFlags"> + <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set> + </property> </widget> </item> </layout> @@ -384,6 +387,30 @@ </property> </widget> </widget> + <tabstops> + <tabstop>settingsTabs</tabstop> + <tabstop>windowSizeGroupBox</tabstop> + <tabstop>compatModeCheckBox</tabstop> + <tabstop>maximizedCheckBox</tabstop> + <tabstop>windowWidthSpinBox</tabstop> + <tabstop>windowHeightSpinBox</tabstop> + <tabstop>consoleSettingsBox</tabstop> + <tabstop>showConsoleCheck</tabstop> + <tabstop>autoCloseConsoleCheck</tabstop> + <tabstop>accountSettingsGroupBox</tabstop> + <tabstop>autoLoginChecBox</tabstop> + <tabstop>memoryGroupBox</tabstop> + <tabstop>minMemSpinBox</tabstop> + <tabstop>maxMemSpinBox</tabstop> + <tabstop>javaSettingsGroupBox</tabstop> + <tabstop>javaPathTextBox</tabstop> + <tabstop>pushButton</tabstop> + <tabstop>jvmArgsTextBox</tabstop> + <tabstop>customCommandsGroupBox</tabstop> + <tabstop>preLaunchCmdTextBox</tabstop> + <tabstop>postExitCmdTextBox</tabstop> + <tabstop>buttonBox</tabstop> + </tabstops> <resources/> <connections/> </ui> diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 4326431e..4bf38424 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -560,19 +560,15 @@ void MainWindow::on_actionChangeInstLWJGLVersion_triggered() void MainWindow::on_actionInstanceSettings_triggered() { - if (view->selectionModel()->selectedIndexes().count() < 1) - return; - - Instance *inst = selectedInstance(); - SettingsObject *s; - s = &inst->settings(); - InstanceSettings *settings = new InstanceSettings (this); - settings->setWindowTitle(QString("Instance settings")); - settings->loadSettings(s); - if (settings->exec()) { - settings->applySettings(s); - } - delete settings; + if (view->selectionModel()->selectedIndexes().count() < 1) + return; + + Instance *inst = selectedInstance(); + SettingsObject *s; + s = &inst->settings(); + InstanceSettings settings(s, this); + settings.setWindowTitle(QString("Instance settings")); + settings.exec(); } void MainWindow::instanceChanged(QModelIndex idx) { |