#pragma once #include "export.hpp" #include "compat/util.hpp" #include #include #include #include #include #include namespace options { // snapshot of qsettings group at given time class OPENTRACK_OPTIONS_EXPORT group final { QString name; public: std::map kvs; group(const QString& name, mem s); group(const QString& name); void save() const; void save_deferred(QSettings& s) const; void put(const QString& s, const QVariant& d); bool contains(const QString& s) const; static QString ini_directory(); static QString ini_filename(); static QString ini_pathname(); static QString ini_combine(const QString& filename); static QStringList ini_list(); static std::shared_ptr ini_file(); template t get(const QString& k) const { auto value = kvs.find(k); if (value != kvs.cend()) return value->second.value(); return t(); } }; }