diff --git a/CMakeLists.txt b/CMakeLists.txt index 9304547b..bd670573 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -252,11 +252,6 @@ add_definitions(-DLIBUTIL_STATIC) add_subdirectory(depends/util) include_directories(${LIBUTIL_INCLUDE_DIR}) -# Add the settings library. -add_definitions(-DLIBSETTINGS_STATIC) -add_subdirectory(depends/settings) -include_directories(${LIBSETTINGS_INCLUDE_DIR}) - # Add the updater add_subdirectory(mmc_updater) @@ -553,6 +548,18 @@ SET(MULTIMC_SOURCES logic/tasks/SequentialTask.h logic/tasks/SequentialTask.cpp + # Settings + logic/settings/INIFile.cpp + logic/settings/INIFile.h + logic/settings/INISettingsObject.cpp + logic/settings/INISettingsObject.h + logic/settings/OverrideSetting.cpp + logic/settings/OverrideSetting.h + logic/settings/Setting.cpp + logic/settings/Setting.h + logic/settings/SettingsObject.cpp + logic/settings/SettingsObject.h + # Java related code logic/java/JavaChecker.h logic/java/JavaChecker.cpp @@ -698,7 +705,7 @@ add_executable(MultiMC MACOSX_BUNDLE WIN32 main.cpp ${MULTIMC_RCS}) # Link target_link_libraries(MultiMC MultiMC_common) -target_link_libraries(MultiMC_common xz-embedded unpack200 quazip libUtil libSettings ${MultiMC_LINK_ADDITIONAL_LIBS}) +target_link_libraries(MultiMC_common xz-embedded unpack200 quazip libUtil ${MultiMC_LINK_ADDITIONAL_LIBS}) qt5_use_modules(MultiMC Core Widgets Network Xml Concurrent ${MultiMC_QT_ADDITIONAL_MODULES}) qt5_use_modules(MultiMC_common Core Widgets Network Xml Concurrent ${MultiMC_QT_ADDITIONAL_MODULES}) diff --git a/MultiMC.cpp b/MultiMC.cpp index bd72c139..7e7c6c88 100644 --- a/MultiMC.cpp +++ b/MultiMC.cpp @@ -42,10 +42,10 @@ #include "pathutils.h" #include "cmdutils.h" -#include -#include +#include "logic/settings/INISettingsObject.h" +#include "logic/settings/Setting.h" #include "logger/QsLog.h" -#include +#include "logger/QsLogDest.h" #ifdef Q_OS_WIN32 #include @@ -219,7 +219,7 @@ MultiMC::MultiMC(int &argc, char **argv, bool root_override) m_instances.reset(new InstanceList(InstDirSetting->get().toString(), this)); QLOG_INFO() << "Loading Instances..."; m_instances->loadList(); - connect(InstDirSetting.get(), SIGNAL(settingChanged(const Setting &, QVariant)), + connect(InstDirSetting.get(), SIGNAL(SettingChanged(const Setting &, QVariant)), m_instances.get(), SLOT(on_InstFolderChanged(const Setting &, QVariant))); // and accounts diff --git a/depends/settings/CMakeLists.txt b/depends/settings/CMakeLists.txt deleted file mode 100644 index 346e15b5..00000000 --- a/depends/settings/CMakeLists.txt +++ /dev/null @@ -1,41 +0,0 @@ -project(libSettings) - -# Find Qt -find_package(Qt5Core REQUIRED) - -# Include Qt headers. -include_directories(${Qt5Base_INCLUDE_DIRS}) - -include(UseCXX11) -include(Coverage) - -set(LIBSETTINGS_SOURCES - libsettings_config.h - - inifile.h - inifile.cpp - - settingsobject.h - settingsobject.cpp - inisettingsobject.h - inisettingsobject.cpp - - setting.h - setting.cpp - overridesetting.h - overridesetting.cpp -) - -# Set the include dir path. -set(LIBSETTINGS_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE) - -# Static link! -add_definitions(-DLIBSETTINGS_STATIC) - -add_definitions(-DLIBSETTINGS_LIBRARY) - -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -add_library(libSettings STATIC ${LIBSETTINGS_SOURCES}) -qt5_use_modules(libSettings Core) -target_link_libraries(libSettings) diff --git a/depends/settings/libsettings_config.h b/depends/settings/libsettings_config.h deleted file mode 100644 index e5beed28..00000000 --- a/depends/settings/libsettings_config.h +++ /dev/null @@ -1,29 +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. - */ - -#pragma once - -#include - -#ifdef LIBSETTINGS_STATIC -#define LIBSETTINGS_EXPORT -#else -#ifdef LIBSETTINGS_LIBRARY -#define LIBSETTINGS_EXPORT Q_DECL_EXPORT -#else -#define LIBSETTINGS_EXPORT Q_DECL_IMPORT -#endif -#endif - diff --git a/gui/dialogs/SettingsDialog.cpp b/gui/dialogs/SettingsDialog.cpp index 87da0c68..5108daa2 100644 --- a/gui/dialogs/SettingsDialog.cpp +++ b/gui/dialogs/SettingsDialog.cpp @@ -32,7 +32,7 @@ #include "logic/tools/BaseProfiler.h" -#include +#include "logic/settings/SettingsObject.h" #include #include #include diff --git a/gui/pagedialog/PageDialog.cpp b/gui/pagedialog/PageDialog.cpp index 07027a84..4dd4a811 100644 --- a/gui/pagedialog/PageDialog.cpp +++ b/gui/pagedialog/PageDialog.cpp @@ -16,7 +16,7 @@ #include "PageDialog.h" #include "gui/Platform.h" #include "MultiMC.h" -#include +#include "logic/settings/SettingsObject.h" #include #include diff --git a/gui/widgets/PageContainer.cpp b/gui/widgets/PageContainer.cpp index 237e7224..928e15dd 100644 --- a/gui/widgets/PageContainer.cpp +++ b/gui/widgets/PageContainer.cpp @@ -27,7 +27,7 @@ #include #include #include -#include +#include "logic/settings/SettingsObject.h" #include "PageContainer_p.h" #include diff --git a/logic/BaseInstance.cpp b/logic/BaseInstance.cpp index 15bf5ab6..9a811577 100644 --- a/logic/BaseInstance.cpp +++ b/logic/BaseInstance.cpp @@ -21,9 +21,9 @@ #include #include "MultiMC.h" -#include "inisettingsobject.h" -#include "setting.h" -#include "overridesetting.h" +#include "logic/settings/INISettingsObject.h" +#include "logic/settings/Setting.h" +#include "logic/settings/OverrideSetting.h" #include "pathutils.h" #include diff --git a/logic/BaseInstance.h b/logic/BaseInstance.h index 5f5378e7..0cd17de9 100644 --- a/logic/BaseInstance.h +++ b/logic/BaseInstance.h @@ -19,9 +19,9 @@ #include #include -#include +#include "logic/settings/SettingsObject.h" -#include "inifile.h" +#include "logic/settings/INIFile.h" #include "logic/BaseVersionList.h" #include "logic/auth/MojangAccount.h" diff --git a/logic/BaseInstance_p.h b/logic/BaseInstance_p.h index 6498454f..77486abc 100644 --- a/logic/BaseInstance_p.h +++ b/logic/BaseInstance_p.h @@ -18,7 +18,7 @@ #include #include -#include +#include "logic/settings/SettingsObject.h" #include "BaseInstance.h" diff --git a/logic/InstanceFactory.cpp b/logic/InstanceFactory.cpp index c0a392e0..f0f7ffb3 100644 --- a/logic/InstanceFactory.cpp +++ b/logic/InstanceFactory.cpp @@ -15,9 +15,10 @@ #include #include -#include -#include -#include + +#include "logic/settings/INIFile.h" +#include "logic/settings/INISettingsObject.h" +#include "logic/settings/Setting.h" #include #include "logger/QsLog.h" diff --git a/logic/LegacyInstance.cpp b/logic/LegacyInstance.cpp index 5c15616a..e3054b27 100644 --- a/logic/LegacyInstance.cpp +++ b/logic/LegacyInstance.cpp @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include diff --git a/logic/LegacyInstance_p.h b/logic/LegacyInstance_p.h index 061847de..50862027 100644 --- a/logic/LegacyInstance_p.h +++ b/logic/LegacyInstance_p.h @@ -15,7 +15,7 @@ #pragma once #include -#include +#include "logic/settings/SettingsObject.h" #include #include "BaseInstance_p.h" diff --git a/logic/Mod.cpp b/logic/Mod.cpp index c6872d6e..534fa796 100644 --- a/logic/Mod.cpp +++ b/logic/Mod.cpp @@ -24,7 +24,7 @@ #include "Mod.h" #include -#include +#include "logic/settings/INIFile.h" #include "logger/QsLog.h" Mod::Mod(const QFileInfo &file) diff --git a/logic/icons/IconList.cpp b/logic/icons/IconList.cpp index 829fc5fc..872d5a8a 100644 --- a/logic/icons/IconList.cpp +++ b/logic/icons/IconList.cpp @@ -15,14 +15,14 @@ #include "IconList.h" #include -#include +#include "logic/settings/SettingsObject.h" #include #include #include #include #include #include -#include +#include #define MAX_SIZE 1024 @@ -45,8 +45,8 @@ IconList::IconList(QObject *parent) : QAbstractListModel(parent) auto setting = MMC->settings()->getSetting("IconsDir"); QString path = setting->get().toString(); - connect(setting.get(), SIGNAL(settingChanged(const Setting &, QVariant)), - SLOT(settingChanged(const Setting &, QVariant))); + connect(setting.get(), SIGNAL(SettingChanged(const Setting &, QVariant)), + SLOT(SettingChanged(const Setting &, QVariant))); directoryChanged(path); } @@ -143,7 +143,7 @@ void IconList::fileChanged(const QString &path) emit iconUpdated(key); } -void IconList::settingChanged(const Setting &setting, QVariant value) +void IconList::SettingChanged(const Setting &setting, QVariant value) { if(setting.id() != "IconsDir") return; diff --git a/logic/icons/IconList.h b/logic/icons/IconList.h index 4ee3f782..e3ff9fab 100644 --- a/logic/icons/IconList.h +++ b/logic/icons/IconList.h @@ -22,7 +22,7 @@ #include #include #include "MMCIcon.h" -#include "setting.h" +#include "logic/settings/Setting.h" class QFileSystemWatcher; @@ -68,7 +68,7 @@ protected slots: void directoryChanged(const QString &path); void fileChanged(const QString &path); - void settingChanged(const Setting & setting, QVariant value); + void SettingChanged(const Setting & setting, QVariant value); private: std::shared_ptr m_watcher; bool is_watching; diff --git a/logic/java/JavaUtils.cpp b/logic/java/JavaUtils.cpp index 09719c73..2b11ddb9 100644 --- a/logic/java/JavaUtils.cpp +++ b/logic/java/JavaUtils.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include "MultiMC.h" diff --git a/depends/settings/inifile.cpp b/logic/settings/INIFile.cpp similarity index 98% rename from depends/settings/inifile.cpp rename to logic/settings/INIFile.cpp index b2098913..9cf76c0a 100644 --- a/depends/settings/inifile.cpp +++ b/logic/settings/INIFile.cpp @@ -13,7 +13,7 @@ * limitations under the License. */ -#include "inifile.h" +#include "logic/settings/INIFile.h" #include #include diff --git a/depends/settings/inifile.h b/logic/settings/INIFile.h similarity index 91% rename from depends/settings/inifile.h rename to logic/settings/INIFile.h index 4fb0054d..991198e6 100644 --- a/depends/settings/inifile.h +++ b/logic/settings/INIFile.h @@ -19,10 +19,8 @@ #include #include -#include "libsettings_config.h" - // Sectionless INI parser (for instance config files) -class LIBSETTINGS_EXPORT INIFile : public QMap +class INIFile : public QMap { public: explicit INIFile(); diff --git a/depends/settings/inisettingsobject.cpp b/logic/settings/INISettingsObject.cpp similarity index 97% rename from depends/settings/inisettingsobject.cpp rename to logic/settings/INISettingsObject.cpp index 2cee8e3c..eb5e6dd4 100644 --- a/depends/settings/inisettingsobject.cpp +++ b/logic/settings/INISettingsObject.cpp @@ -13,8 +13,8 @@ * limitations under the License. */ -#include "inisettingsobject.h" -#include "setting.h" +#include "INISettingsObject.h" +#include "Setting.h" INISettingsObject::INISettingsObject(const QString &path, QObject *parent) : SettingsObject(parent) diff --git a/depends/settings/inisettingsobject.h b/logic/settings/INISettingsObject.h similarity index 90% rename from depends/settings/inisettingsobject.h rename to logic/settings/INISettingsObject.h index 12370896..86b4b098 100644 --- a/depends/settings/inisettingsobject.h +++ b/logic/settings/INISettingsObject.h @@ -17,16 +17,14 @@ #include -#include "inifile.h" +#include "logic/settings/INIFile.h" -#include "settingsobject.h" - -#include "libsettings_config.h" +#include "logic/settings/SettingsObject.h" /*! * \brief A settings object that stores its settings in an INIFile. */ -class LIBSETTINGS_EXPORT INISettingsObject : public SettingsObject +class INISettingsObject : public SettingsObject { Q_OBJECT public: diff --git a/depends/settings/overridesetting.cpp b/logic/settings/OverrideSetting.cpp similarity index 96% rename from depends/settings/overridesetting.cpp rename to logic/settings/OverrideSetting.cpp index 7b5f5418..69d976bd 100644 --- a/depends/settings/overridesetting.cpp +++ b/logic/settings/OverrideSetting.cpp @@ -13,7 +13,7 @@ * limitations under the License. */ -#include "overridesetting.h" +#include "OverrideSetting.h" OverrideSetting::OverrideSetting(std::shared_ptr other) : Setting(other->configKeys(), QVariant()) diff --git a/depends/settings/overridesetting.h b/logic/settings/OverrideSetting.h similarity index 90% rename from depends/settings/overridesetting.h rename to logic/settings/OverrideSetting.h index 5ef901d0..1d1582d2 100644 --- a/depends/settings/overridesetting.h +++ b/logic/settings/OverrideSetting.h @@ -18,9 +18,7 @@ #include #include -#include "setting.h" - -#include "libsettings_config.h" +#include "Setting.h" /*! * \brief A setting that 'overrides another.' @@ -28,7 +26,7 @@ * The other setting can be (and usually is) a part of a different SettingsObject * than this one. */ -class LIBSETTINGS_EXPORT OverrideSetting : public Setting +class OverrideSetting : public Setting { Q_OBJECT public: diff --git a/depends/settings/setting.cpp b/logic/settings/Setting.cpp similarity index 91% rename from depends/settings/setting.cpp rename to logic/settings/Setting.cpp index 0d685771..5bdfe0fc 100644 --- a/depends/settings/setting.cpp +++ b/logic/settings/Setting.cpp @@ -13,8 +13,8 @@ * limitations under the License. */ -#include "setting.h" -#include "settingsobject.h" +#include "Setting.h" +#include "logic/settings/SettingsObject.h" Setting::Setting(QStringList synonyms, QVariant defVal) : QObject(), m_synonyms(synonyms), m_defVal(defVal) @@ -44,7 +44,7 @@ QVariant Setting::defValue() const void Setting::set(QVariant value) { - emit settingChanged(*this, value); + emit SettingChanged(*this, value); } void Setting::reset() diff --git a/depends/settings/setting.h b/logic/settings/Setting.h similarity index 93% rename from depends/settings/setting.h rename to logic/settings/Setting.h index a73474d2..406bdada 100644 --- a/depends/settings/setting.h +++ b/logic/settings/Setting.h @@ -20,14 +20,12 @@ #include #include -#include "libsettings_config.h" - class SettingsObject; /*! * */ -class LIBSETTINGS_EXPORT Setting : public QObject +class Setting : public QObject { Q_OBJECT public: @@ -86,7 +84,7 @@ signals: * \param setting A reference to the Setting that changed. * \param value This Setting object's new value. */ - void settingChanged(const Setting &setting, QVariant value); + void SettingChanged(const Setting &setting, QVariant value); /*! * \brief Signal emitted when this Setting object's value resets to default. @@ -98,7 +96,7 @@ public slots: /*! * \brief Changes the setting's value. - * This is done by emitting the settingChanged() signal which will then be + * This is done by emitting the SettingChanged() signal which will then be * handled by the SettingsObject object and cause the setting to change. * \param value The new value. */ diff --git a/depends/settings/settingsobject.cpp b/logic/settings/SettingsObject.cpp similarity index 71% rename from depends/settings/settingsobject.cpp rename to logic/settings/SettingsObject.cpp index 0e3030df..37f68251 100644 --- a/depends/settings/settingsobject.cpp +++ b/logic/settings/SettingsObject.cpp @@ -13,9 +13,10 @@ * limitations under the License. */ -#include "settingsobject.h" -#include "setting.h" -#include "overridesetting.h" +#include "logic/settings/SettingsObject.h" +#include "logic/settings/Setting.h" +#include "logic/settings/OverrideSetting.h" +#include "logger/QsLog.h" #include @@ -32,9 +33,8 @@ std::shared_ptr SettingsObject::registerOverride(std::shared_ptrid())) { - qDebug(QString("Failed to register setting %1. ID already exists.") - .arg(original->id()) - .toUtf8()); + QLOG_ERROR() << QString("Failed to register setting %1. ID already exists.") + .arg(original->id()); return nullptr; // Fail } auto override = std::make_shared(original); @@ -50,9 +50,8 @@ std::shared_ptr SettingsObject::registerSetting(QStringList synonyms, Q return nullptr; if (contains(synonyms.first())) { - qDebug(QString("Failed to register setting %1. ID already exists.") - .arg(synonyms.first()) - .toUtf8()); + QLOG_ERROR() << QString("Failed to register setting %1. ID already exists.") + .arg(synonyms.first()); return nullptr; // Fail } auto setting = std::make_shared(synonyms, defVal); @@ -62,28 +61,6 @@ std::shared_ptr SettingsObject::registerSetting(QStringList synonyms, Q return setting; } -/* - -bool SettingsObject::registerSetting(Setting *setting) -{ - if (contains(setting->id())) - { - qDebug(QString("Failed to register setting %1. ID already exists.") - .arg(setting->id()) - .toUtf8()); - return false; // Fail - } - - m_settings.insert(setting->id(), setting); - setting->setParent(this); // Take ownership. - - // Connect signals. - connectSignals(*setting); - - // qDebug(QString("Registered setting %1.").arg(setting->id()).toUtf8()); - return true; -} -*/ std::shared_ptr SettingsObject::getSetting(const QString &id) const { // Make sure there is a setting with the given ID. @@ -104,7 +81,7 @@ bool SettingsObject::set(const QString &id, QVariant value) auto setting = getSetting(id); if (!setting) { - qDebug(QString("Error changing setting %1. Setting doesn't exist.").arg(id).toUtf8()); + QLOG_ERROR() << QString("Error changing setting %1. Setting doesn't exist.").arg(id); return false; } else @@ -137,10 +114,10 @@ bool SettingsObject::reload() void SettingsObject::connectSignals(const Setting &setting) { - connect(&setting, SIGNAL(settingChanged(const Setting &, QVariant)), + connect(&setting, SIGNAL(SettingChanged(const Setting &, QVariant)), SLOT(changeSetting(const Setting &, QVariant))); - connect(&setting, SIGNAL(settingChanged(const Setting &, QVariant)), - SIGNAL(settingChanged(const Setting &, QVariant))); + connect(&setting, SIGNAL(SettingChanged(const Setting &, QVariant)), + SIGNAL(SettingChanged(const Setting &, QVariant))); connect(&setting, SIGNAL(settingReset(Setting)), SLOT(resetSetting(const Setting &))); connect(&setting, SIGNAL(settingReset(Setting)), SIGNAL(settingReset(const Setting &))); diff --git a/depends/settings/settingsobject.h b/logic/settings/SettingsObject.h similarity index 95% rename from depends/settings/settingsobject.h rename to logic/settings/SettingsObject.h index b1b26b09..e46a1b7f 100644 --- a/depends/settings/settingsobject.h +++ b/logic/settings/SettingsObject.h @@ -21,8 +21,6 @@ #include #include -#include "libsettings_config.h" - class Setting; /*! @@ -37,7 +35,7 @@ class Setting; * * \sa Setting */ -class LIBSETTINGS_EXPORT SettingsObject : public QObject +class SettingsObject : public QObject { Q_OBJECT public: @@ -123,11 +121,11 @@ signals: /*! * \brief Signal emitted when one of this SettingsObject object's settings changes. * This is usually just connected directly to each Setting object's - * settingChanged() signals. + * SettingChanged() signals. * \param setting A reference to the Setting object that changed. * \param value The Setting object's new value. */ - void settingChanged(const Setting &setting, QVariant value); + void SettingChanged(const Setting &setting, QVariant value); /*! * \brief Signal emitted when one of this SettingsObject object's settings resets. @@ -142,7 +140,7 @@ slots: /*! * \brief Changes a setting. * This slot is usually connected to each Setting object's - * settingChanged() signal. The signal is emitted, causing this slot + * SettingChanged() signal. The signal is emitted, causing this slot * to update the setting's value in the config file. * \param setting A reference to the Setting object that changed. * \param value The setting's new value. diff --git a/logic/tools/JProfiler.cpp b/logic/tools/JProfiler.cpp index 35d5d304..988a875a 100644 --- a/logic/tools/JProfiler.cpp +++ b/logic/tools/JProfiler.cpp @@ -3,7 +3,7 @@ #include #include -#include "settingsobject.h" +#include "logic/settings/SettingsObject.h" #include "logic/MinecraftProcess.h" #include "logic/BaseInstance.h" #include "MultiMC.h" diff --git a/logic/tools/JVisualVM.cpp b/logic/tools/JVisualVM.cpp index 02e7d8b5..09ab1762 100644 --- a/logic/tools/JVisualVM.cpp +++ b/logic/tools/JVisualVM.cpp @@ -3,7 +3,7 @@ #include #include -#include "settingsobject.h" +#include "logic/settings/SettingsObject.h" #include "logic/MinecraftProcess.h" #include "logic/BaseInstance.h" #include "MultiMC.h" diff --git a/logic/tools/MCEditTool.cpp b/logic/tools/MCEditTool.cpp index 36b8d5bd..91643585 100644 --- a/logic/tools/MCEditTool.cpp +++ b/logic/tools/MCEditTool.cpp @@ -5,7 +5,7 @@ #include #include -#include "settingsobject.h" +#include "logic/settings/SettingsObject.h" #include "logic/BaseInstance.h" #include "MultiMC.h" diff --git a/logic/updater/UpdateChecker.cpp b/logic/updater/UpdateChecker.cpp index e47e1c4c..c2895430 100644 --- a/logic/updater/UpdateChecker.cpp +++ b/logic/updater/UpdateChecker.cpp @@ -24,7 +24,7 @@ #include #include -#include +#include "logic/settings/SettingsObject.h" #define API_VERSION 0 #define CHANLIST_FORMAT 0 diff --git a/tests/tst_UpdateChecker.cpp b/tests/tst_UpdateChecker.cpp index ae6fc193..8351ad75 100644 --- a/tests/tst_UpdateChecker.cpp +++ b/tests/tst_UpdateChecker.cpp @@ -1,8 +1,8 @@ #include #include -#include "depends/settings/settingsobject.h" -#include "depends/settings/setting.h" +#include "logic/settings/SettingsObject.h" +#include "logic/settings/Setting.h" #include "BuildConfig.h" #include "TestUtil.h" diff --git a/tests/tst_inifile.cpp b/tests/tst_inifile.cpp index c0f57c12..93930ae9 100644 --- a/tests/tst_inifile.cpp +++ b/tests/tst_inifile.cpp @@ -1,7 +1,7 @@ #include #include "TestUtil.h" -#include "depends/settings/inifile.h" +#include "logic/settings/INIFile.h" class IniFileTest : public QObject {