#ifndef QMPSETTINGS_H #define QMPSETTINGS_H #include #include #include #include #include #include struct qmpOption { enum ParameterType { parameter_int = 0, parameter_uint, parameter_bool, parameter_double, parameter_str, parameter_enum, parameter_url, parameter_custom = 0x100 }; std::string tab; std::string desc; ParameterType type; QWidget *widget; QVariant defaultval, minv, maxv; std::function save_func; std::function load_func; std::vector enumlist; qmpOption(): widget(nullptr) {} qmpOption(std::string _tab, std::string _desc, ParameterType _t, QWidget *_w = nullptr, QVariant _def = QVariant(), QVariant _min = QVariant(), QVariant _max = QVariant(), std::function _save = nullptr, std::function _load = nullptr): tab(_tab), desc(_desc), type(_t), widget(_w), defaultval(_def), minv(_min), maxv(_max), save_func(_save), load_func(_load) {} }; class qmpSettings { public: qmpSettings(); ~qmpSettings(); void registerOptionInt(std::string tab, std::string desc, std::string key, int min, int max, int defaultval); int getOptionInt(std::string key); void setOptionInt(std::string key, int val); void registerOptionUint(std::string tab, std::string desc, std::string key, unsigned min, unsigned max, unsigned defaultval); unsigned getOptionUint(std::string key); void setOptionUint(std::string key, unsigned val); void registerOptionBool(std::string tab, std::string desc, std::string key, bool defaultval); bool getOptionBool(std::string key); void setOptionBool(std::string key, bool val); void registerOptionDouble(std::string tab, std::string desc, std::string key, double min, double max, double defaultval); double getOptionDouble(std::string key); void setOptionDouble(std::string key, double val); void registerOptionString(std::string tab, std::string desc, std::string key, std::string defaultval, bool is_url); std::string getOptionString(std::string key); void setOptionString(std::string key, std::string val); void registerOptionEnumInt(std::string tab, std::string desc, std::string key, std::vector enumlist, int defaultval); int getOptionEnumInt(std::string key); std::string getOptionEnumIntOptName(std::string key); void setOptionEnumInt(std::string key, int val); void setOptionEnumIntOptName(std::string key, std::string valname); void registerOptionCustom(std::string tab, std::string desc, std::string key, void *widget, void *defaultval, std::function save_func, std::function load_func); void *getOptionCustom(std::string key); void setOptionCustom(std::string key, void *val); void setOptionRaw(QString key, QVariant val); QVariant getOptionRaw(QString key, QVariant defval = QVariant()); private: static QSettings *settings; std::map options; std::vector optionlist; friend class qmpSettingsWindow; }; #endif