feat: allow specifying fallbacks to INI files

Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
flow 2022-10-18 11:00:28 -03:00
parent 2cf1ab7ec5
commit 801e7da5ee
No known key found for this signature in database
GPG Key ID: 8D0F221F0A59F469
2 changed files with 26 additions and 2 deletions

View File

@ -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;

View File

@ -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.