#ifndef SETTINGS_H
#define SETTINGS_H

#include <QObject>
#include <QSettings>

#include "global.h"

class Settings
{
public:
    //获取单例实例
    static Settings& instance();
    //基础读写接口
    void setValue(const QString& group, const QString& name, const QVariant& value);
    QVariant value(const QString& group, const QString& name);
    void clearValue(const QString& group, const QString& name);
    //数据库配置读写接口
    QStringList getConnectionList();
    DatabaseConfig loadDatabaseConfig(const QString& configID);
    void saveDatabaseConfig(const DatabaseConfig& config);
    void removeDatabaseConfig(const QString& configID);

private:
    explicit Settings();
    ~Settings();
    // 禁止拷贝
    Settings(const Settings&) = delete; //delete关键字表示该函数不可用，包括编译器自动生成的函数
    Settings& operator=(const Settings&) = delete;

    QVariant getDefaultValue(const QString& group, const QString& name);

    QSettings* m_settings;
    QString m_settingsFile;
    bool m_isVaildSettingsFile;
};

#endif // SETTINGS_H
