summaryrefslogtreecommitdiffhomepage
path: root/options/group.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'options/group.hpp')
-rw-r--r--options/group.hpp70
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
+
+