aboutsummaryrefslogtreecommitdiff
path: root/launcher
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-10-18 11:00:28 -0300
committerflow <flowlnlnln@gmail.com>2022-10-18 12:22:42 -0300
commit801e7da5ee07521b81f405dae1af5097be45fccf (patch)
treecaaa1bc3ad46cefe35b1347bae9bd28a0522c224 /launcher
parent2cf1ab7ec51715f7ebb55cb3550df37aa03db509 (diff)
downloadPrismLauncher-801e7da5ee07521b81f405dae1af5097be45fccf.tar.gz
PrismLauncher-801e7da5ee07521b81f405dae1af5097be45fccf.tar.bz2
PrismLauncher-801e7da5ee07521b81f405dae1af5097be45fccf.zip
feat: allow specifying fallbacks to INI files
Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher')
-rw-r--r--launcher/settings/INISettingsObject.cpp23
-rw-r--r--launcher/settings/INISettingsObject.h5
2 files changed, 26 insertions, 2 deletions
diff --git a/launcher/settings/INISettingsObject.cpp b/launcher/settings/INISettingsObject.cpp
index 12513403..3677e238 100644
--- a/launcher/settings/INISettingsObject.cpp
+++ b/launcher/settings/INISettingsObject.cpp
@@ -16,7 +16,28 @@
#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();
+ auto path = paths.takeFirst();
+ while (!QFile::exists(path))
+ path = paths.takeFirst();
+
+ 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;
+ }
+
+ 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.