diff options
author | flow <flowlnlnln@gmail.com> | 2022-10-18 11:00:28 -0300 |
---|---|---|
committer | flow <flowlnlnln@gmail.com> | 2022-10-18 12:22:42 -0300 |
commit | 801e7da5ee07521b81f405dae1af5097be45fccf (patch) | |
tree | caaa1bc3ad46cefe35b1347bae9bd28a0522c224 /launcher | |
parent | 2cf1ab7ec51715f7ebb55cb3550df37aa03db509 (diff) | |
download | PrismLauncher-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.cpp | 23 | ||||
-rw-r--r-- | launcher/settings/INISettingsObject.h | 5 |
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. |