rpcsx/rpcs3/rpcs3qt/settings.h

67 lines
1.3 KiB
C++

#pragma once
#include <QSettings>
#include <QDir>
#include <QVariant>
#include <QSize>
#include <memory>
struct gui_save
{
QString key;
QString name;
QVariant def;
gui_save()
{
key = "";
name = "";
def = QVariant();
}
gui_save(const QString& k, const QString& n, const QVariant& d)
{
key = k;
name = n;
def = d;
}
};
typedef QPair<QString, QString> q_string_pair;
typedef QPair<QString, QSize> q_size_pair;
typedef QList<q_string_pair> q_pair_list;
typedef QList<q_size_pair> q_size_list;
// Parent Class for GUI settings
class settings : public QObject
{
Q_OBJECT
public:
explicit settings(QObject* parent = nullptr);
~settings();
QString GetSettingsDir() const;
QVariant GetValue(const gui_save& entry);
QVariant GetValue(const QString& key, const QString& name, const QString& def);
static QVariant List2Var(const q_pair_list& list);
static q_pair_list Var2List(const QVariant& var);
public Q_SLOTS:
/** Remove entry */
void RemoveValue(const QString& key, const QString& name);
/** Write value to entry */
void SetValue(const gui_save& entry, const QVariant& value);
void SetValue(const QString& key, const QString& name, const QVariant& value);
protected:
QString ComputeSettingsDir() const;
std::unique_ptr<QSettings> m_settings;
QDir m_settings_dir;
QString m_current_name;
};