You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.1 KiB

3 years ago
#ifndef CONV_SETTINGS_H
#define CONV_SETTINGS_H
#include <QObject>
#include <QSettings>
#include <QPointer>
3 years ago
#include <QQmlEngine>
3 years ago
#include <QDir>
3 years ago
namespace ConfigKeys
{
Q_NAMESPACE
enum ConfigKey {
MaemoTest,
ChatTheme,
FooBar
};
Q_ENUM_NS(ConfigKey)
}
3 years ago
class Config : public QObject
{
Q_OBJECT
public:
Q_DISABLE_COPY(Config)
~Config() override;
3 years ago
Q_INVOKABLE QVariant get(unsigned int configKey);
QVariant get(ConfigKeys::ConfigKey key);
3 years ago
QString getFileName();
3 years ago
void set(ConfigKeys::ConfigKey key, const QVariant& value);
3 years ago
void sync();
void resetToDefaults();
static Config* instance();
signals:
3 years ago
void changed(ConfigKeys::ConfigKey key);
3 years ago
private:
Config(const QString& fileName, QObject* parent = nullptr);
explicit Config(QObject* parent);
void init(const QString& configFileName);
static QPointer<Config> m_instance;
QScopedPointer<QSettings> m_settings;
QHash<QString, QVariant> m_defaults;
};
inline Config* config()
{
return Config::instance();
}
#endif