#pragma once #include #include #include #include #include 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 q_string_pair; typedef QPair q_size_pair; typedef QList q_pair_list; typedef QList 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 m_settings; QDir m_settings_dir; QString m_current_name; };