aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/fakevim/fakevimactions.h
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-06-26 11:02:42 +0200
committerhjk <hjk@qt.io>2023-06-29 11:25:44 +0000
commit379e7f906e6f1dd8656364f5a2cf4feed2127d0f (patch)
tree05a457b51212749f5e0622cf79c93b88b8bb8966 /src/plugins/fakevim/fakevimactions.h
parent900ea82fd1a4a629768b71abaf9117f90b7fd951 (diff)
Utils: Rework aspect implementation
This avoids some repetition and could be a step towards having type storage in (or rather accessible from) the base, so we can have aspects for more complex data (treemodels...) that are not easily converted to QVariant. Change-Id: I9797b3d5646195705212db1830d2b415291ac651 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/fakevim/fakevimactions.h')
-rw-r--r--src/plugins/fakevim/fakevimactions.h58
1 files changed, 34 insertions, 24 deletions
diff --git a/src/plugins/fakevim/fakevimactions.h b/src/plugins/fakevim/fakevimactions.h
index e3b14b0d47..a3907dc117 100644
--- a/src/plugins/fakevim/fakevimactions.h
+++ b/src/plugins/fakevim/fakevimactions.h
@@ -19,13 +19,14 @@ namespace FakeVim::Internal {
class FvBaseAspect
{
public:
- FvBaseAspect();
- virtual ~FvBaseAspect() {}
+ FvBaseAspect() = default;
+ virtual ~FvBaseAspect() = default;
+
+ virtual void setVariantValue(const QVariant &value) = 0;
+ virtual void setDefaultVariantValue(const QVariant &value) = 0;
+ virtual QVariant variantValue() const = 0;
+ virtual QVariant defaultVariantValue() const = 0;
- void setValue(const QVariant &value);
- QVariant value() const;
- void setDefaultValue(const QVariant &value);
- QVariant defaultValue() const;
void setSettingsKey(const QString &group, const QString &key);
QString settingsKey() const;
void setCheckable(bool) {}
@@ -33,32 +34,41 @@ public:
void setToolTip(const QString &) {}
private:
- QVariant m_value;
- QVariant m_defaultValue;
QString m_settingsGroup;
QString m_settingsKey;
};
-class FvBoolAspect : public FvBaseAspect
-{
-public:
- bool value() const { return FvBaseAspect::value().toBool(); }
- bool operator()() const { return value(); }
-};
-
-class FvIntegerAspect : public FvBaseAspect
+template <class ValueType>
+class FvTypedAspect : public FvBaseAspect
{
public:
- qint64 value() const { return FvBaseAspect::value().toLongLong(); }
- qint64 operator()() const { return value(); }
+ void setVariantValue(const QVariant &value) override
+ {
+ m_value = value.value<ValueType>();
+ }
+ void setDefaultVariantValue(const QVariant &value) override
+ {
+ m_defaultValue = value.value<ValueType>();
+ }
+ QVariant variantValue() const override
+ {
+ return QVariant::fromValue<ValueType>(m_value);
+ }
+ QVariant defaultVariantValue() const override
+ {
+ return QVariant::fromValue<ValueType>(m_defaultValue);
+ }
+
+ ValueType value() const { return m_value; }
+ ValueType operator()() const { return m_value; }
+
+ ValueType m_value;
+ ValueType m_defaultValue;
};
-class FvStringAspect : public FvBaseAspect
-{
-public:
- QString value() const { return FvBaseAspect::value().toString(); }
- QString operator()() const { return value(); }
-};
+using FvBoolAspect = FvTypedAspect<bool>;
+using FvIntegerAspect = FvTypedAspect<qint64>;
+using FvStringAspect = FvTypedAspect<QString>;
class FvAspectContainer : public FvBaseAspect
{