summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--opentrack-compat/options.cpp22
-rw-r--r--opentrack-compat/options.hpp41
2 files changed, 38 insertions, 25 deletions
diff --git a/opentrack-compat/options.cpp b/opentrack-compat/options.cpp
index 9dcb10ab..4f8da9f7 100644
--- a/opentrack-compat/options.cpp
+++ b/opentrack-compat/options.cpp
@@ -26,7 +26,7 @@ group::group(const QString& name) : name(name)
conf->endGroup();
}
-void group::save()
+void group::save() const
{
auto s = ini_file();
s->beginGroup(name);
@@ -41,7 +41,7 @@ void group::put(const QString &s, const QVariant &d)
kvs[s] = d;
}
-bool group::contains(const QString &s)
+bool group::contains(const QString &s) const
{
return kvs.count(s) != 0;
}
@@ -120,9 +120,9 @@ void impl_bundle::store_kv(const QString &name, const QVariant &datum)
}
}
-bool impl_bundle::contains(const QString &name)
+bool impl_bundle::contains(const QString &name) const
{
- QMutexLocker l(&mtx);
+ QMutexLocker l(const_cast<QMutex*>(&mtx));
return transient.contains(name);
}
@@ -137,9 +137,9 @@ void impl_bundle::save()
emit saving();
}
-bool impl_bundle::modifiedp()
+bool impl_bundle::modifiedp() const
{
- QMutexLocker l(&mtx);
+ QMutexLocker l(const_cast<QMutex*>(&mtx));
return modified;
}
@@ -156,7 +156,7 @@ pbundle opt_singleton::bundle(const opt_singleton::k &key)
if (shared != nullptr)
return shared;
}
-
+
qDebug() << "bundle +" << key;
auto shr = std::make_shared<v>(key);
@@ -196,4 +196,12 @@ opts::~opts()
opts::opts(const QString &name) : b(bundle(name)) {}
+pbundle bundle(const QString& name)
+{
+ return detail::singleton().bundle(name);
+}
+
+
+
+// end
}
diff --git a/opentrack-compat/options.hpp b/opentrack-compat/options.hpp
index cb40b705..c15b9874 100644
--- a/opentrack-compat/options.hpp
+++ b/opentrack-compat/options.hpp
@@ -78,9 +78,9 @@ namespace options {
QString name;
public:
group(const QString& name);
- void save();
+ void save() const;
void put(const QString& s, const QVariant& d);
- bool contains(const QString& s);
+ bool contains(const QString& s) const;
static QString ini_directory();
static QString ini_filename();
static QString ini_pathname();
@@ -88,9 +88,12 @@ namespace options {
static const mem<QSettings> ini_file();
template<typename t>
- t get(const QString& k)
+ t get(const QString& k) const
{
- return qcruft_to_t<t>(kvs[k]);
+ auto value = kvs.find(k);
+ if (value != kvs.cend())
+ return qcruft_to_t<t>(value->second);
+ return t();
}
};
@@ -106,20 +109,20 @@ namespace options {
impl_bundle& operator=(const impl_bundle&) = delete;
signals:
void reloading();
- void saving();
+ void saving() const;
public:
impl_bundle(const QString& group_name);
QString name() { return group_name; }
void reload();
void store_kv(const QString& name, const QVariant& datum);
- bool contains(const QString& name);
+ bool contains(const QString& name) const;
void save();
- bool modifiedp();
-
+ bool modifiedp() const;
+
template<typename t>
- t get(const QString& name)
+ t get(const QString& name) const
{
- QMutexLocker l(&mtx);
+ QMutexLocker l(const_cast<QMutex*>(&mtx));
return transient.get<t>(name);
}
};
@@ -144,13 +147,13 @@ namespace options {
pbundle bundle(const k& key);
void bundle_decf(const k& key);
};
-
+
OPENTRACK_COMPAT_EXPORT opt_singleton& singleton();
}
-
+
using pbundle = std::shared_ptr<opt_bundle>;
-
- static inline pbundle bundle(const QString name) { return detail::singleton().bundle(name); }
+
+ pbundle bundle(const QString& name);
class OPENTRACK_COMPAT_EXPORT opt_bundle : public impl_bundle
{
@@ -166,7 +169,7 @@ namespace options {
#define DEFINE_SLOT(t) void setValue(t datum) { store(datum); }
#define DEFINE_SIGNAL(t) void valueChanged(t)
public:
- QString name() { return self_name; }
+ QString name() const { return self_name; }
base_value(pbundle b, const QString& name);
signals:
DEFINE_SIGNAL(double);
@@ -236,12 +239,14 @@ namespace options {
private:
underlying_t def;
};
-
+
struct OPENTRACK_COMPAT_EXPORT opts
{
pbundle b;
opts(const QString& name);
- ~opts();
+ opts& operator=(const opts&) = delete;
+ opts(const opts&) = delete;
+ virtual ~opts();
};
template<typename t, typename q>
@@ -383,7 +388,7 @@ namespace options {
lb->setText(v);
base_value::connect(&v, SIGNAL(valueChanged(QString)), lb, SLOT(setText(QString)), v.DIRECT_CONNTYPE);
}
-
+
template<>
inline void tie_setting(value<int>& v, QTabWidget* t)
{