diff options
Diffstat (limited to 'options/group.hpp')
| -rw-r--r-- | options/group.hpp | 70 |
1 files changed, 33 insertions, 37 deletions
diff --git a/options/group.hpp b/options/group.hpp index e2a8058c..11bab965 100644 --- a/options/group.hpp +++ b/options/group.hpp @@ -1,43 +1,39 @@ #pragma once +#include "options/defs.hpp" + +#include "compat/base-path.hpp" +#include "compat/library-path.hpp" +#include "compat/macros.h" +#include "compat/qhash.hpp" #include "export.hpp" -#include "compat/util.hpp" -#include <map> -#include <memory> + +#include <optional> +#include <unordered_map> + #include <QString> -#include <QList> #include <QVariant> -#include <QSettings> - -namespace options { - -// snapshot of qsettings group at given time -class OTR_OPTIONS_EXPORT group final -{ - QString name; -public: - std::map<QString, QVariant> kvs; - group(const QString& name, mem<QSettings> 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<QSettings> ini_file(); - - template<typename t> - t get(const QString& k) const + +#include <QDebug> + +// XXX TODO remove qsettings usage -sh 20180624 + +namespace options::detail { + // snapshot of qsettings group at given time + class OTR_OPTIONS_EXPORT group final { - auto value = kvs.find(k); - if (value != kvs.cend()) - return value->second.value<t>(); - return t(); - } -}; - -} + QString name; + + public: + std::unordered_map<QString, QVariant> kvs; + explicit group(const QString& name); + void save() const; + void put(const QString& s, const QVariant& d); + void put(const QString& s, QVariant&& d); + bool contains(const QString& s) const; + + never_inline QVariant get_variant(const QString& name) const; + }; +} // ns options::detail + + |
