feat: allow specifying fallbacks to INI files
Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
parent
2cf1ab7ec5
commit
801e7da5ee
@ -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;
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user