#include #include #include "qmpsettingsro.hpp" qmpSettingsRO::qmpSettingsRO() { } void qmpSettingsRO::registerOptionInt(std::string tab,std::string desc,std::string key,int min,int max,int defaultval) { Q_UNUSED(tab) optionlist.push_back(key); options[key]=qmpOptionR(desc,qmpOptionR::ParameterType::parameter_int,defaultval,min,max); } int qmpSettingsRO::getOptionInt(std::string key) { if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_int) return settings.value(QString(key.c_str()),options[key].defaultval).toInt(); return options[key].defaultval.toInt(); } void qmpSettingsRO::setOptionInt(std::string key,int val) { if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_int) settings.insert(QString(key.c_str()),val); } void qmpSettingsRO::registerOptionUint(std::string tab,std::string desc,std::string key,unsigned min,unsigned max,unsigned defaultval) { Q_UNUSED(tab) optionlist.push_back(key); options[key]=qmpOptionR(desc,qmpOptionR::ParameterType::parameter_uint,defaultval,min,max); } unsigned qmpSettingsRO::getOptionUint(std::string key) { if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_uint) return settings.value(QString(key.c_str()),options[key].defaultval).toUInt(); return options[key].defaultval.toUInt(); } void qmpSettingsRO::setOptionUint(std::string key,unsigned val) { if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_uint) settings.insert(QString(key.c_str()),val); } void qmpSettingsRO::registerOptionBool(std::string tab,std::string desc,std::string key,bool defaultval) { Q_UNUSED(tab) optionlist.push_back(key); options[key]=qmpOptionR(desc,qmpOptionR::ParameterType::parameter_bool,defaultval); } bool qmpSettingsRO::getOptionBool(std::string key) { if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_bool) return settings.value(QString(key.c_str()),options[key].defaultval).toBool(); return options[key].defaultval.toBool(); } void qmpSettingsRO::setOptionBool(std::string key,bool val) { if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_bool) settings.insert(QString(key.c_str()),val); } void qmpSettingsRO::registerOptionDouble(std::string tab,std::string desc,std::string key,double min,double max,double defaultval) { Q_UNUSED(tab) optionlist.push_back(key); options[key]=qmpOptionR(desc,qmpOptionR::ParameterType::parameter_double,defaultval,min,max); } double qmpSettingsRO::getOptionDouble(std::string key) { if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_double) return settings.value(QString(key.c_str()),options[key].defaultval).toDouble(); return options[key].defaultval.toDouble(); } void qmpSettingsRO::setOptionDouble(std::string key,double val) { if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_double) settings.insert(QString(key.c_str()),val); } void qmpSettingsRO::registerOptionString(std::string tab,std::string desc,std::string key,std::string defaultval,bool is_url) { Q_UNUSED(tab) optionlist.push_back(key); options[key]=qmpOptionR(desc, is_url?qmpOptionR::ParameterType::parameter_url:qmpOptionR::ParameterType::parameter_str, QString(defaultval.c_str())); } std::string qmpSettingsRO::getOptionString(std::string key) { if(options.find(key)!=options.end()&& (options[key].type==qmpOptionR::ParameterType::parameter_str||options[key].type==qmpOptionR::ParameterType::parameter_url)) return settings.value(QString(key.c_str()),options[key].defaultval).toString().toStdString(); return options[key].defaultval.toString().toStdString(); } void qmpSettingsRO::setOptionString(std::string key,std::string val) { if(options.find(key)!=options.end()&& (options[key].type==qmpOptionR::ParameterType::parameter_str||options[key].type==qmpOptionR::ParameterType::parameter_url)) settings.insert(QString(key.c_str()),QString(val.c_str())); } void qmpSettingsRO::registerOptionEnumInt(std::string tab,std::string desc,std::string key,std::vector enumlist,int defaultval) { Q_UNUSED(tab) optionlist.push_back(key); options[key]=qmpOptionR(desc,qmpOptionR::ParameterType::parameter_enum,defaultval); options[key].enumlist=enumlist; } int qmpSettingsRO::getOptionEnumInt(std::string key) { if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_enum) { std::string curitm=settings.value(QString(key.c_str()),options[key].defaultval).toString().toStdString(); auto curidx=std::find(options[key].enumlist.begin(),options[key].enumlist.end(),curitm); if(curidx!=options[key].enumlist.end()) return static_cast(curidx-options[key].enumlist.begin()); else { return options[key].defaultval.toInt(); } } return options[key].defaultval.toInt(); } std::string qmpSettingsRO::getOptionEnumIntOptName(std::string key) { if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_enum) { std::string curitm=settings.value(QString(key.c_str()),options[key].defaultval).toString().toStdString(); auto curidx=std::find(options[key].enumlist.begin(),options[key].enumlist.end(),curitm); if(curidx!=options[key].enumlist.end()) return curitm; else { return options[key].enumlist[static_cast(options[key].defaultval.toInt())]; } } return options[key].enumlist[static_cast(options[key].defaultval.toInt())]; } void qmpSettingsRO::setOptionEnumInt(std::string key,int val) { if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_enum) { if(static_cast(val)(val)].c_str())); } } void qmpSettingsRO::setOptionEnumIntOptName(std::string key,std::string valname) { if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_enum) { auto curidx=std::find(options[key].enumlist.begin(),options[key].enumlist.end(),valname); if(curidx!=options[key].enumlist.end()) settings.insert(QString(key.c_str()),QString(valname.c_str())); } } void qmpSettingsRO::load(const char *path) { QScopedPointer qsettings(new QSettings(path,QSettings::Format::IniFormat)); settings.clear(); for(QString&k:qsettings->allKeys()) { settings.insert(k,qsettings->value(k)); } }