aboutsummaryrefslogtreecommitdiff
path: root/launcher/settings
diff options
context:
space:
mode:
authorhe3als <65787561+he3als@users.noreply.github.com>2022-10-22 15:30:40 +0100
committerGitHub <noreply@github.com>2022-10-22 15:30:40 +0100
commit89fd84d916b58cb7c82c94bcadc0834de8f5a039 (patch)
treefae8c646ca9b35bc2499a4c39787387686ae2a91 /launcher/settings
parent92dfd659f1a3e11accdbf0ebbdc7cb91f74d9a21 (diff)
parent81f13052701dbec499ef65fe714f107a9b584ebf (diff)
downloadPrismLauncher-89fd84d916b58cb7c82c94bcadc0834de8f5a039.tar.gz
PrismLauncher-89fd84d916b58cb7c82c94bcadc0834de8f5a039.tar.bz2
PrismLauncher-89fd84d916b58cb7c82c94bcadc0834de8f5a039.zip
Merge branch 'PrismLauncher:develop' into develop
Diffstat (limited to 'launcher/settings')
-rw-r--r--launcher/settings/INISettingsObject.cpp25
-rw-r--r--launcher/settings/INISettingsObject.h5
-rw-r--r--launcher/settings/Setting.h2
3 files changed, 29 insertions, 3 deletions
diff --git a/launcher/settings/INISettingsObject.cpp b/launcher/settings/INISettingsObject.cpp
index 12513403..da962ee9 100644
--- a/launcher/settings/INISettingsObject.cpp
+++ b/launcher/settings/INISettingsObject.cpp
@@ -16,7 +16,30 @@
#include "INISettingsObject.h"
#include "Setting.h"
-INISettingsObject::INISettingsObject(const QString &path, QObject *parent)
+#include <QDebug>
+#include <QFile>
+
+INISettingsObject::INISettingsObject(QStringList paths, QObject *parent)
+ : SettingsObject(parent)
+{
+ auto first_path = paths.constFirst();
+ for (auto path : paths) {
+ if (!QFile::exists(path))
+ continue;
+
+ if (path != first_path && QFile::exists(path)) {
+ // Copy the fallback to the preferred path.
+ QFile::copy(path, first_path);
+ qDebug() << "Copied settings from" << path << "to" << first_path;
+ break;
+ }
+ }
+
+ m_filePath = first_path;
+ m_ini.loadFile(first_path);
+}
+
+INISettingsObject::INISettingsObject(QString path, QObject* parent)
: SettingsObject(parent)
{
m_filePath = path;
diff --git a/launcher/settings/INISettingsObject.h b/launcher/settings/INISettingsObject.h
index 26cc32e5..d2f448a9 100644
--- a/launcher/settings/INISettingsObject.h
+++ b/launcher/settings/INISettingsObject.h
@@ -28,7 +28,10 @@ class INISettingsObject : public SettingsObject
{
Q_OBJECT
public:
- explicit INISettingsObject(const QString &path, QObject *parent = 0);
+ /** 'paths' is a list of INI files to try, in order, for fallback support. */
+ explicit INISettingsObject(QStringList paths, QObject* parent = nullptr);
+
+ explicit INISettingsObject(QString path, QObject* parent = nullptr);
/*!
* \brief Gets the path to the INI file.
diff --git a/launcher/settings/Setting.h b/launcher/settings/Setting.h
index 9a5b8210..86007c13 100644
--- a/launcher/settings/Setting.h
+++ b/launcher/settings/Setting.h
@@ -33,7 +33,7 @@ public:
* Construct a Setting
*
* Synonyms are all the possible names used in the settings object, in order of preference.
- * First synonym is the ID, which identifies the setting in PolyMC.
+ * First synonym is the ID, which identifies the setting in Prism Launcher.
*
* defVal is the default value that will be returned when the settings object
* doesn't have any value for this setting.