aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/fakevim/fakevimactions.h
diff options
context:
space:
mode:
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 e3b14b0d47a..a3907dc117f 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
{