summaryrefslogtreecommitdiffstats
path: root/gui
diff options
context:
space:
mode:
authorAndrew <forkk@forkk.net>2013-01-28 15:35:09 -0600
committerAndrew <forkk@forkk.net>2013-01-28 15:35:09 -0600
commita25bedd7706b14cdae91556e4a577e410745f29a (patch)
treeea803a4bcfe8dc25ee8295c406b55c4772909db1 /gui
parent8926b2422628a288fb6a04417f90e0a9739b82d1 (diff)
downloadMultiMC-a25bedd7706b14cdae91556e4a577e410745f29a.tar
MultiMC-a25bedd7706b14cdae91556e4a577e410745f29a.tar.gz
MultiMC-a25bedd7706b14cdae91556e4a577e410745f29a.tar.lz
MultiMC-a25bedd7706b14cdae91556e4a577e410745f29a.tar.xz
MultiMC-a25bedd7706b14cdae91556e4a577e410745f29a.zip
Implemented settings dialog.
Diffstat (limited to 'gui')
-rw-r--r--gui/settingsdialog.cpp112
-rw-r--r--gui/settingsdialog.h7
-rw-r--r--gui/settingsdialog.ui107
3 files changed, 139 insertions, 87 deletions
diff --git a/gui/settingsdialog.cpp b/gui/settingsdialog.cpp
index 46569340..ab4d18ee 100644
--- a/gui/settingsdialog.cpp
+++ b/gui/settingsdialog.cpp
@@ -16,13 +16,19 @@
#include "settingsdialog.h"
#include "ui_settingsdialog.h"
+#include "data/appsettings.h"
+
#include <QFileDialog>
+#include <QMessageBox>
SettingsDialog::SettingsDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SettingsDialog)
{
ui->setupUi(this);
+
+ loadSettings(settings);
+ updateCheckboxStuff();
}
SettingsDialog::~SettingsDialog()
@@ -32,10 +38,10 @@ SettingsDialog::~SettingsDialog()
void SettingsDialog::updateCheckboxStuff()
{
- ui->minMemSpinBox->setEnabled(!(ui->compatModeCheckBox->isChecked() ||
- ui->maximizedCheckBox->isChecked()));
- ui->maxMemSpinBox->setEnabled(!(ui->compatModeCheckBox->isChecked() ||
- ui->maximizedCheckBox->isChecked()));
+ ui->windowWidthSpinBox->setEnabled(!(ui->compatModeCheckBox->isChecked() ||
+ ui->maximizedCheckBox->isChecked()));
+ ui->windowHeightSpinBox->setEnabled(!(ui->compatModeCheckBox->isChecked() ||
+ ui->maximizedCheckBox->isChecked()));
ui->maximizedCheckBox->setEnabled(!ui->compatModeCheckBox->isChecked());
}
@@ -75,3 +81,101 @@ void SettingsDialog::on_maximizedCheckBox_clicked(bool checked)
Q_UNUSED(checked);
updateCheckboxStuff();
}
+
+void SettingsDialog::on_buttonBox_accepted()
+{
+ applySettings(settings);
+}
+
+void SettingsDialog::applySettings(SettingsBase *s)
+{
+ // Special cases
+
+ // Warn about dev builds.
+ if (!ui->devBuildsCheckBox->isChecked())
+ {
+ s->setUseDevBuilds(false);
+ }
+ else if (!s->getUseDevBuilds())
+ {
+ int response = QMessageBox::question(this, "Development builds",
+ "Development builds contain experimental features "
+ "and may be unstable. Are you sure you want to enable them?");
+ if (response == QMessageBox::Yes)
+ {
+ s->setUseDevBuilds(true);
+ }
+ }
+
+
+ // Updates
+ s->setAutoUpdate(ui->autoUpdateCheckBox->isChecked());
+
+ // Folders
+ // TODO: Offer to move instances to new instance folder.
+ s->setInstanceDir(ui->instDirTextBox->text());
+ s->setCentralModsDir(ui->modsDirTextBox->text());
+ s->setLWJGLDir(ui->lwjglDirTextBox->text());
+
+ // Console
+ s->setShowConsole(ui->showConsoleCheck->isChecked());
+ s->setAutoCloseConsole(ui->autoCloseConsoleCheck->isChecked());
+
+ // Window Size
+ s->setLaunchCompatMode(ui->compatModeCheckBox->isChecked());
+ s->setLaunchMaximized(ui->maximizedCheckBox->isChecked());
+ s->setMinecraftWinWidth(ui->windowWidthSpinBox->value());
+ s->setMinecraftWinHeight(ui->windowHeightSpinBox->value());
+
+ // Auto Login
+ s->setAutoLogin(ui->autoLoginCheckBox->isChecked());
+
+ // Memory
+ s->setMinMemAlloc(ui->minMemSpinBox->value());
+ s->setMaxMemAlloc(ui->maxMemSpinBox->value());
+
+ // Java Settings
+ s->setJavaPath(ui->javaPathTextBox->text());
+ s->setJvmArgs(ui->jvmArgsTextBox->text());
+
+ // Custom Commands
+ s->setPreLaunchCommand(ui->preLaunchCmdTextBox->text());
+ s->setPostExitCommand(ui->postExitCmdTextBox->text());
+}
+
+void SettingsDialog::loadSettings(SettingsBase *s)
+{
+ // Updates
+ ui->autoUpdateCheckBox->setChecked(s->getAutoUpdate());
+ ui->devBuildsCheckBox->setChecked(s->getUseDevBuilds());
+
+ // Folders
+ ui->instDirTextBox->setText(s->getInstanceDir());
+ ui->modsDirTextBox->setText(s->getCentralModsDir());
+ ui->lwjglDirTextBox->setText(s->getLWJGLDir());
+
+ // Console
+ ui->showConsoleCheck->setChecked(s->getShowConsole());
+ ui->autoCloseConsoleCheck->setChecked(s->getAutoCloseConsole());
+
+ // Window Size
+ ui->compatModeCheckBox->setChecked(s->getLaunchCompatMode());
+ ui->maximizedCheckBox->setChecked(s->getLaunchMaximized());
+ ui->windowWidthSpinBox->setValue(s->getMinecraftWinWidth());
+ ui->windowHeightSpinBox->setValue(s->getMinecraftWinHeight());
+
+ // Auto Login
+ ui->autoLoginCheckBox->setChecked(s->getAutoLogin());
+
+ // Memory
+ ui->minMemSpinBox->setValue(s->getMinMemAlloc());
+ ui->maxMemSpinBox->setValue(s->getMaxMemAlloc());
+
+ // Java Settings
+ ui->javaPathTextBox->setText(s->getJavaPath());
+ ui->jvmArgsTextBox->setText(s->getJvmArgs());
+
+ // Custom Commands
+ ui->preLaunchCmdTextBox->setText(s->getPreLaunchCommand());
+ ui->postExitCmdTextBox->setText(s->getPostExitCommand());
+}
diff --git a/gui/settingsdialog.h b/gui/settingsdialog.h
index 3e9d9e0f..e223237f 100644
--- a/gui/settingsdialog.h
+++ b/gui/settingsdialog.h
@@ -18,6 +18,8 @@
#include <QDialog>
+class SettingsBase;
+
namespace Ui {
class SettingsDialog;
}
@@ -32,6 +34,9 @@ public:
void updateCheckboxStuff();
+ void applySettings(SettingsBase* s);
+ void loadSettings(SettingsBase* s);
+
private slots:
void on_instDirBrowseBtn_clicked();
@@ -43,6 +48,8 @@ private slots:
void on_maximizedCheckBox_clicked(bool checked);
+ void on_buttonBox_accepted();
+
private:
Ui::SettingsDialog *ui;
};
diff --git a/gui/settingsdialog.ui b/gui/settingsdialog.ui
index 315686ca..d30f56bb 100644
--- a/gui/settingsdialog.ui
+++ b/gui/settingsdialog.ui
@@ -158,88 +158,6 @@
</item>
</layout>
</widget>
- <widget class="QWidget" name="consoleTab">
- <attribute name="title">
- <string>Console</string>
- </attribute>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QGroupBox" name="consoleSettingsBox">
- <property name="title">
- <string>Console Settings</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <item>
- <widget class="QCheckBox" name="showConsoleCheck">
- <property name="text">
- <string>Show console while the game is running?</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="autoCloseConsoleCheck">
- <property name="text">
- <string>Automatically close console when the game quits?</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="consoleColorsBox">
- <property name="title">
- <string>Instance Console Colors</string>
- </property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="0" column="0">
- <widget class="QLabel" name="labelSysMessageColor">
- <property name="text">
- <string>System message color:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QLineEdit" name="sysMsgColorTextBox"/>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="labelOutputMsgColor">
- <property name="text">
- <string>Output message color:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QLineEdit" name="outMsgColorTextBox"/>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="labelErrorMessageColor">
- <property name="text">
- <string>Error message color:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="1">
- <widget class="QLineEdit" name="errMsgColorTextBox"/>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <spacer name="consoleVerticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
<widget class="QWidget" name="minecraftTab">
<attribute name="title">
<string>Minecraft</string>
@@ -316,9 +234,32 @@
</widget>
</item>
<item>
+ <widget class="QGroupBox" name="consoleSettingsBox">
+ <property name="title">
+ <string>Console Settings</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QCheckBox" name="showConsoleCheck">
+ <property name="text">
+ <string>Show console while the game is running?</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="autoCloseConsoleCheck">
+ <property name="text">
+ <string>Automatically close console when the game quits?</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
<widget class="QCheckBox" name="autoLoginCheckBox">
<property name="text">
- <string>Login automatically when an instance launches?</string>
+ <string>Login automatically when an instance icon is double clicked?</string>
</property>
</widget>
</item>