summaryrefslogtreecommitdiffstats
path: root/libsettings
diff options
context:
space:
mode:
authorOrochimarufan <orochimarufan.x3@gmail.com>2013-02-21 20:40:32 +0100
committerOrochimarufan <orochimarufan.x3@gmail.com>2013-02-21 20:40:32 +0100
commitca1fd44637ad5ce9ec287ff71addd38e98f66f4f (patch)
tree3642ff488dd144b014131de48bf926c6e3d1043c /libsettings
parent576e979df4a54df9bf5ffeae3559f488b3045268 (diff)
parent50d1f62bf4a8d70466100463238228bc8305a5c7 (diff)
downloadMultiMC-ca1fd44637ad5ce9ec287ff71addd38e98f66f4f.tar
MultiMC-ca1fd44637ad5ce9ec287ff71addd38e98f66f4f.tar.gz
MultiMC-ca1fd44637ad5ce9ec287ff71addd38e98f66f4f.tar.lz
MultiMC-ca1fd44637ad5ce9ec287ff71addd38e98f66f4f.tar.xz
MultiMC-ca1fd44637ad5ce9ec287ff71addd38e98f66f4f.zip
Merge branch 'master' of http://github.com/peterix/MultiMC5
Conflicts: CMakeLists.txt gui/mainwindow.cpp main.cpp
Diffstat (limited to 'libsettings')
-rw-r--r--libsettings/CMakeLists.txt30
-rw-r--r--libsettings/include/appsettings.h119
-rw-r--r--libsettings/include/libsettings_config.h27
-rw-r--r--libsettings/src/appsettings.cpp40
4 files changed, 216 insertions, 0 deletions
diff --git a/libsettings/CMakeLists.txt b/libsettings/CMakeLists.txt
new file mode 100644
index 00000000..2cf72365
--- /dev/null
+++ b/libsettings/CMakeLists.txt
@@ -0,0 +1,30 @@
+project(libmmcsettings)
+
+# Find Qt
+find_package(Qt5Core REQUIRED)
+
+# Include Qt headers.
+include_directories(${Qt5Base_INCLUDE_DIRS})
+include_directories(${Qt5Network_INCLUDE_DIRS})
+
+# Include utils library headers.
+include_directories(${CMAKE_SOURCE_DIR}/libutil/include)
+
+SET(LIBSETTINGS_HEADERS
+include/libsettings_config.h
+
+include/appsettings.h
+)
+
+SET(LIBSETTINGS_SOURCES
+src/appsettings.cpp
+)
+
+# Set the include dir path.
+SET(LIBMMCSETTINGS_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include" PARENT_SCOPE)
+
+add_definitions(-DLIBMMCSETTINGS_LIBRARY)
+
+add_library(libmmcsettings SHARED ${LIBSETTINGS_SOURCES} ${LIBSETTINGS_HEADERS})
+qt5_use_modules(libmmcsettings Core)
+target_link_libraries(libmmcsettings libmmcutil)
diff --git a/libsettings/include/appsettings.h b/libsettings/include/appsettings.h
new file mode 100644
index 00000000..79515618
--- /dev/null
+++ b/libsettings/include/appsettings.h
@@ -0,0 +1,119 @@
+/* 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 APPSETTINGS_H
+#define APPSETTINGS_H
+
+#include <QObject>
+#include <QSettings>
+//#include <QColor>
+#include <QPoint>
+
+#include <apputils.h>
+#include <osutils.h>
+
+#include "libsettings_config.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)
+
+
+class LIBMMCSETTINGS_EXPORT 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)
+
+ // Toolbar settings
+ DEFINE_SETTING(InstanceToolbarVisible, bool, true)
+ DEFINE_SETTING(InstanceToolbarPosition, QPoint, QPoint())
+
+ // Console Colors
+ // Currently commented out because QColor is a part of QtGUI
+// 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, "")
+
+ virtual QVariant getValue(const QString& name, QVariant defVal = QVariant()) const = 0;
+ virtual void setValue(const QString& name, QVariant val) = 0;
+};
+
+class LIBMMCSETTINGS_EXPORT AppSettings : public SettingsBase
+{
+ Q_OBJECT
+public:
+ explicit AppSettings(QObject *parent = 0);
+
+ QSettings& getConfig() { return config; }
+
+ virtual QVariant getValue(const QString &name, QVariant defVal = QVariant()) const;
+ virtual void setValue(const QString& name, QVariant val);
+
+protected:
+ QSettings config;
+};
+
+#undef DEFINE_SETTING_ADVANCED
+#undef DEFINE_SETTING
+
+LIBMMCSETTINGS_EXPORT extern AppSettings* settings;
+
+#endif // APPSETTINGS_H
diff --git a/libsettings/include/libsettings_config.h b/libsettings/include/libsettings_config.h
new file mode 100644
index 00000000..05df5bfa
--- /dev/null
+++ b/libsettings/include/libsettings_config.h
@@ -0,0 +1,27 @@
+/* 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 LIBINSTANCE_CONFIG_H
+#define LIBINSTANCE_CONFIG_H
+
+#include <QtCore/QtGlobal>
+
+#ifdef LIBMMCSETTINGS_LIBRARY
+# define LIBMMCSETTINGS_EXPORT Q_DECL_EXPORT
+#else
+# define LIBMMCSETTINGS_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif // LIBINSTANCE_CONFIG_H
diff --git a/libsettings/src/appsettings.cpp b/libsettings/src/appsettings.cpp
new file mode 100644
index 00000000..8fe9b8ad
--- /dev/null
+++ b/libsettings/src/appsettings.cpp
@@ -0,0 +1,40 @@
+/* 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 "include/appsettings.h"
+
+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);
+}