summaryrefslogtreecommitdiffstats
path: root/data
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 /data
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 'data')
-rw-r--r--data/appsettings.cpp22
-rw-r--r--data/appsettings.h89
-rw-r--r--data/settingsbase.cpp22
-rw-r--r--data/settingsbase.h33
-rw-r--r--data/stdinstance.cpp4
-rw-r--r--data/stdinstance.h2
6 files changed, 110 insertions, 62 deletions
diff --git a/data/appsettings.cpp b/data/appsettings.cpp
index 525def6e..1d9c4312 100644
--- a/data/appsettings.cpp
+++ b/data/appsettings.cpp
@@ -15,8 +15,26 @@
#include "appsettings.h"
-AppSettings::AppSettings(QString fileName) :
- SettingsBase(fileName)
+AppSettings* settings;
+
+SettingsBase::SettingsBase(QObject *parent) :
+ QObject(parent)
+{
+
+}
+
+AppSettings::AppSettings(QObject *parent) :
+ SettingsBase(parent)
{
}
+
+QVariant AppSettings::getValue(const QString& name, QVariant defVal) const
+{
+ return config.value(name, defVal);
+}
+
+void AppSettings::setValue(const QString& name, QVariant val)
+{
+ config.setValue(name, val);
+}
diff --git a/data/appsettings.h b/data/appsettings.h
index f8c7ff73..eff22b11 100644
--- a/data/appsettings.h
+++ b/data/appsettings.h
@@ -16,12 +16,97 @@
#ifndef APPSETTINGS_H
#define APPSETTINGS_H
-#include "settingsbase.h"
+#include <QObject>
+#include <QSettings>
+#include <QColor>
+
+#include "util/apputils.h"
+#include "util/osutils.h"
+
+#if WINDOWS
+#define JPATHKEY "JavaPathWindows"
+#elif OSX
+#define JPATHKEY "JavaPathOSX"
+#else
+#define JPATHKEY "JavaPathLinux"
+#endif
+
+#define DEFINE_SETTING_ADVANCED(funcName, name, valType, defVal) \
+ virtual valType get ## funcName() const { return getValue(name, defVal).value<valType>(); } \
+ virtual void set ## funcName(valType value) { setValue(name, value); }
+
+#define DEFINE_SETTING(name, valType, defVal) \
+ DEFINE_SETTING_ADVANCED(name, STR_VAL(name), valType, defVal)
+
+#define DEFINE_OVERRIDE_SETTING(overrideName) \
+
+
+class SettingsBase : public QObject
+{
+ Q_OBJECT
+public:
+ explicit SettingsBase(QObject *parent = 0);
+
+ // Updates
+ DEFINE_SETTING(UseDevBuilds, bool, false)
+ DEFINE_SETTING(AutoUpdate, bool, true)
+
+ // Folders
+ DEFINE_SETTING(InstanceDir, QString, "instances")
+ DEFINE_SETTING(CentralModsDir, QString, "mods")
+ DEFINE_SETTING(LWJGLDir, QString, "lwjgl")
+
+ // Console
+ DEFINE_SETTING(ShowConsole, bool, true)
+ DEFINE_SETTING(AutoCloseConsole, bool, true)
+
+ // Console Colors
+ DEFINE_SETTING(SysMessageColor, QColor, QColor(Qt::blue))
+ DEFINE_SETTING(StdOutColor, QColor, QColor(Qt::black))
+ DEFINE_SETTING(StdErrColor, QColor, QColor(Qt::red))
+
+ // Window Size
+ DEFINE_SETTING(LaunchCompatMode, bool, false)
+ DEFINE_SETTING(LaunchMaximized, bool, false)
+ DEFINE_SETTING(MinecraftWinWidth, int, 854)
+ DEFINE_SETTING(MinecraftWinHeight, int, 480)
+
+ // Auto login
+ DEFINE_SETTING(AutoLogin, bool, false)
+
+ // Memory
+ DEFINE_SETTING(MinMemAlloc, int, 512)
+ DEFINE_SETTING(MaxMemAlloc, int, 1024)
+
+ // Java Settings
+ DEFINE_SETTING_ADVANCED(JavaPath, JPATHKEY, QString, "java")
+ DEFINE_SETTING(JvmArgs, QString, "")
+
+ // Custom Commands
+ DEFINE_SETTING(PreLaunchCommand, QString, "")
+ DEFINE_SETTING(PostExitCommand, QString, "")
+
+protected:
+ virtual QVariant getValue(const QString& name, QVariant defVal = QVariant()) const = 0;
+ virtual void setValue(const QString& name, QVariant val) = 0;
+};
class AppSettings : public SettingsBase
{
+ Q_OBJECT
public:
- AppSettings(QString fileName);
+ explicit AppSettings(QObject *parent = 0);
+
+protected:
+ virtual QVariant getValue(const QString &name, QVariant defVal = QVariant()) const;
+ virtual void setValue(const QString& name, QVariant val);
+
+ QSettings config;
};
+#undef DEFINE_SETTING_ADVANCED
+#undef DEFINE_SETTING
+
+extern AppSettings* settings;
+
#endif // APPSETTINGS_H
diff --git a/data/settingsbase.cpp b/data/settingsbase.cpp
deleted file mode 100644
index 66195603..00000000
--- a/data/settingsbase.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2013 MultiMC Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "settingsbase.h"
-
-SettingsBase::SettingsBase(QString fileName) :
- QSettings(fileName, QSettings::IniFormat)
-{
-
-}
diff --git a/data/settingsbase.h b/data/settingsbase.h
deleted file mode 100644
index 71f0e30d..00000000
--- a/data/settingsbase.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright 2013 MultiMC Contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef SETTINGSBASE_H
-#define SETTINGSBASE_H
-
-#include <QSettings>
-
-#include "settingsmacros.h"
-
-class SettingsBase : public QSettings
-{
-public:
- SettingsBase(QString fileName);
-
-
-};
-
-#include "settingsmacrosundef.h"
-
-#endif // SETTINGSBASE_H
diff --git a/data/stdinstance.cpp b/data/stdinstance.cpp
index 1324b510..4618f5ca 100644
--- a/data/stdinstance.cpp
+++ b/data/stdinstance.cpp
@@ -15,8 +15,8 @@
#include "stdinstance.h"
-StdInstance::StdInstance(QString rootDir) :
- InstanceBase(rootDir)
+StdInstance::StdInstance(QString rootDir, QObject* parent) :
+ InstanceBase(rootDir, parent)
{
}
diff --git a/data/stdinstance.h b/data/stdinstance.h
index 59b1c8ab..79b87601 100644
--- a/data/stdinstance.h
+++ b/data/stdinstance.h
@@ -22,7 +22,7 @@
class StdInstance : public InstanceBase
{
public:
- explicit StdInstance(QString rootDir);
+ explicit StdInstance(QString rootDir, QObject *parent = 0);
};
#endif // STDINSTANCE_H