78 lines
2.3 KiB
C
78 lines
2.3 KiB
C
|
#ifndef CONFIGRATION_H
|
||
|
#define CONFIGRATION_H
|
||
|
|
||
|
#include <QObject>
|
||
|
#include <QList>
|
||
|
#include <QHash>
|
||
|
#include <QDir>
|
||
|
|
||
|
namespace Config {
|
||
|
class Configration : public QObject
|
||
|
{
|
||
|
public:
|
||
|
explicit Configration(QObject *parent);
|
||
|
virtual ~Configration() = default;
|
||
|
|
||
|
virtual int loadFile(const QString &path) = 0;
|
||
|
virtual QDir currentDir() const = 0;
|
||
|
virtual void save() const = 0;
|
||
|
|
||
|
virtual void deleteX(const QList<QString> &path) = 0;
|
||
|
|
||
|
virtual void setConfig(const QList<QString> &path, const QString &value) = 0;
|
||
|
virtual QString getConfig(const QList<QString> &path) const = 0;
|
||
|
|
||
|
virtual void setList(const QList<QString> &path, const QList<QString> &list) = 0;
|
||
|
virtual QList<QString> getList(const QList<QString> &path) const = 0;
|
||
|
|
||
|
virtual void setMap(const QList<QString> &path, const QHash<QString, QString> &map) = 0;
|
||
|
virtual QHash<QString,QString> getMap(const QList<QString> &path) const = 0;
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
class ConfigHelper
|
||
|
{
|
||
|
public:
|
||
|
static QString getConfigAsDefault(Configration *ins, const QList<QString> &path, const QString & default_v)
|
||
|
{
|
||
|
auto xval = ins->getConfig(path);
|
||
|
if(xval.trimmed() == ""){
|
||
|
ins->setConfig(path, default_v);
|
||
|
ins->save();
|
||
|
xval = default_v;
|
||
|
}
|
||
|
return xval;
|
||
|
}
|
||
|
|
||
|
static QList<QString> getListAsDefault(Configration *ins, const QList<QString> &path, const QList<QString> & default_v)
|
||
|
{
|
||
|
auto xval = ins->getList(path);
|
||
|
if(xval.size() == 0){
|
||
|
ins->setList(path, default_v);
|
||
|
ins->save();
|
||
|
xval = default_v;
|
||
|
}
|
||
|
return xval;
|
||
|
}
|
||
|
|
||
|
static QHash<QString,QString> getHashAsDefault(Configration *ins, const QList<QString> &path, const QHash<QString, QString> & default_v)
|
||
|
{
|
||
|
auto xval = ins->getMap(path);
|
||
|
if(xval.size()==0){
|
||
|
ins->setMap(path, default_v);
|
||
|
ins->save();
|
||
|
xval = default_v;
|
||
|
}
|
||
|
return xval;
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
inline Configration::Configration(QObject *parent)
|
||
|
: QObject(parent){}
|
||
|
|
||
|
}
|
||
|
|
||
|
#endif // CONFIGRATION_H
|