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 "INISettingsObject.h"
|
||||||
#include "Setting.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)
|
: SettingsObject(parent)
|
||||||
{
|
{
|
||||||
m_filePath = path;
|
m_filePath = path;
|
||||||
|
@ -28,7 +28,10 @@ class INISettingsObject : public SettingsObject
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
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.
|
* \brief Gets the path to the INI file.
|
||||||
|
Loading…
Reference in New Issue
Block a user