//Chris Xiong 2022 //License: MPL-2.0 #ifndef SETTINGS_HPP #define SETTINGS_HPP #include #include #include #include #include #include struct SettingsItem { enum ParameterType { _int, _bool, _double, _keyseq, _str, _strlist }; ParameterType type; int tab; std::string key; QString desc; QVariant min, max; QVariant defaultv; QWidget *w; }; class SettingsRegistry { public: SettingsRegistry(QString path); ~SettingsRegistry(); int register_tab(QString tab_name); void register_int_option(int tab, std::string key, QString desc, int min, int max, int defaultval); int get_option_int(std::string key); void set_option_int(std::string key, int val); void register_bool_option(int tab, std::string key, QString desc, bool defaultval); bool get_option_bool(std::string key); void set_option_bool(std::string key, bool val); void register_double_option(int tab, std::string key, QString desc, double min, double max, double defaultval); double get_option_double(std::string key); void set_option_double(std::string key, double val); void register_keyseq_option(int tab, std::string key, QString desc, QKeySequence defaultval); QKeySequence get_option_keyseq(std::string key); void set_option_keyseq(std::string key, QKeySequence ks); void register_str_option(int tab, std::string key, QString desc, QString defaultval); QString get_option_str(std::string key); void set_option_str(std::string key, QString str); void register_strlist_option(int tab, std::string key, QString desc, QStringList defaultval); QStringList get_option_strlist(std::string key); void set_option_strlist(std::string key, QStringList str); private: QSettings *s; QStringList tabs; std::map smap; std::vector klist; friend class PreferenceDialog; }; #endif