From 6d568d07b31ba2ae39703cfd272d3003ea542018 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Sun, 19 Apr 2020 23:36:48 +0800 Subject: Legacy code massacre! Complete reconstruction of the settings infrastructure. All options are now registered using a revamped option API. Legacy configuration files are no longer compatible. Please make a backup. --- qmidiplayer-desktop/qmpsettings.hpp | 88 +++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 qmidiplayer-desktop/qmpsettings.hpp (limited to 'qmidiplayer-desktop/qmpsettings.hpp') diff --git a/qmidiplayer-desktop/qmpsettings.hpp b/qmidiplayer-desktop/qmpsettings.hpp new file mode 100644 index 0000000..ff46970 --- /dev/null +++ b/qmidiplayer-desktop/qmpsettings.hpp @@ -0,0 +1,88 @@ +#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 -- cgit v1.2.3