diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2018-12-28 03:18:31 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2019-01-16 07:48:18 +0100 |
commit | 74b401e24b9b3c9333f6e435860e1bc1f44a3b6f (patch) | |
tree | 1f1c022b2d55e7a3c42042987a5c32e3e81b4ac1 | |
parent | 7e07b216d6dddc2bd832bf85e2e5870cd4e48638 (diff) |
options/{value,connector}: workaround friend declaration
-rw-r--r-- | options/base-value.cpp | 6 | ||||
-rw-r--r-- | options/base-value.hpp | 6 | ||||
-rw-r--r-- | options/connector.cpp | 4 | ||||
-rw-r--r-- | options/value.hpp | 13 |
4 files changed, 10 insertions, 19 deletions
diff --git a/options/base-value.cpp b/options/base-value.cpp index ec96fe6c..be18bbfd 100644 --- a/options/base-value.cpp +++ b/options/base-value.cpp @@ -13,13 +13,9 @@ value_::~value_() b->on_value_destructed(this); } -void value_::notify() const -{ - bundle_value_changed(); -} - namespace options::detail { +// necessary due to circular dependency void set_value_to_default(value_* val) { val->set_to_default(); diff --git a/options/base-value.hpp b/options/base-value.hpp index 14eaeb10..7baff0b3 100644 --- a/options/base-value.hpp +++ b/options/base-value.hpp @@ -26,8 +26,6 @@ class OTR_OPTIONS_EXPORT value_ : public QObject { Q_OBJECT - friend class detail::connector; - template<typename t> using signal_sig = void(value_::*)(cv_qualified<t>) const; @@ -91,10 +89,8 @@ public slots: OTR_OPTIONS_SLOT(const QList<slider_value>&) OTR_OPTIONS_SLOT(const QList<QPointF>&) - virtual void bundle_value_changed() const = 0; virtual void set_to_default() = 0; - - void notify() const; + virtual void notify() const = 0; friend void ::options::detail::set_value_to_default(value_* val); }; diff --git a/options/connector.cpp b/options/connector.cpp index 838a2e0e..90770167 100644 --- a/options/connector.cpp +++ b/options/connector.cpp @@ -68,14 +68,14 @@ void connector::notify_values(const QString& name) const auto it = connected_values.find(name); if (it != connected_values.cend()) for (value_type val : it->second) - val->bundle_value_changed(); + val->notify(); } void connector::notify_all_values() const { for (const auto& [k, v] : connected_values) for (value_type val : v) - val->bundle_value_changed(); + val->notify(); } } // ns options::detail diff --git a/options/value.hpp b/options/value.hpp index 3a58f74c..898f6b05 100644 --- a/options/value.hpp +++ b/options/value.hpp @@ -57,13 +57,6 @@ class value final : public value_ return traits::pass_value(traits::value_with_default(traits::value_from_qvariant(variant), def)); } - friend class detail::connector; - void bundle_value_changed() const override - { - if (!self_name.isEmpty()) - emit valueChanged(traits::storage_from_value(get())); - } - void store_variant(const QVariant& value) override { if (self_name.isEmpty()) @@ -80,6 +73,12 @@ class value final : public value_ public: cc_noinline + void notify() const override + { + if (!self_name.isEmpty()) + emit valueChanged(traits::storage_from_value(get())); + } + value<u>& operator=(const t& datum) { store_variant(traits::qvariant_from_value(traits::pass_value(datum))); |