diff options
Diffstat (limited to 'src/plugins/fakevim')
-rw-r--r-- | src/plugins/fakevim/fakevimactions.cpp | 28 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimactions.h | 58 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimhandler.cpp | 8 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimplugin.cpp | 12 |
4 files changed, 46 insertions, 60 deletions
diff --git a/src/plugins/fakevim/fakevimactions.cpp b/src/plugins/fakevim/fakevimactions.cpp index 916fea16097..2d4b5420328 100644 --- a/src/plugins/fakevim/fakevimactions.cpp +++ b/src/plugins/fakevim/fakevimactions.cpp @@ -28,30 +28,6 @@ using namespace Utils; namespace FakeVim::Internal { #ifdef FAKEVIM_STANDALONE -FvBaseAspect::FvBaseAspect() -{ -} - -void FvBaseAspect::setValue(const QVariant &value) -{ - m_value = value; -} - -QVariant FvBaseAspect::value() const -{ - return m_value; -} - -void FvBaseAspect::setDefaultValue(const QVariant &value) -{ - m_defaultValue = value; - m_value = value; -} - -QVariant FvBaseAspect::defaultValue() const -{ - return m_defaultValue; -} void FvBaseAspect::setSettingsKey(const QString &group, const QString &key) { @@ -294,7 +270,7 @@ QString FakeVimSettings::trySetValue(const QString &name, const QString &value) return Tr::tr("Argument must be positive: %1=%2") .arg(name).arg(value); } - aspect->setValue(value); + aspect->setVariantValue(value); return QString(); } @@ -305,7 +281,7 @@ void FakeVimSettings::setup(FvBaseAspect *aspect, const QString &labelText) { aspect->setSettingsKey("FakeVim", settingsKey); - aspect->setDefaultValue(value); + aspect->setDefaultVariantValue(value); #ifndef FAKEVIM_STANDALONE aspect->setLabelText(labelText); aspect->setAutoApply(false); 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 { diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index edfa315af98..bb3586b6329 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -6139,13 +6139,13 @@ bool FakeVimHandler::Private::handleExSetCommand(const ExCommand &cmd) FvBaseAspect *act = s.item(optionName); if (!act) { showMessage(MessageError, Tr::tr("Unknown option:") + ' ' + cmd.args); - } else if (act->defaultValue().type() == QVariant::Bool) { - bool oldValue = act->value().toBool(); + } else if (act->defaultVariantValue().type() == QVariant::Bool) { + bool oldValue = act->variantValue().toBool(); if (printOption) { showMessage(MessageInfo, QLatin1String(oldValue ? "" : "no") + act->settingsKey().toLower()); } else if (toggleOption || negateOption == oldValue) { - act->setValue(!oldValue); + act->setVariantValue(!oldValue); } } else if (negateOption && !printOption) { showMessage(MessageError, Tr::tr("Invalid argument:") + ' ' + cmd.args); @@ -6153,7 +6153,7 @@ bool FakeVimHandler::Private::handleExSetCommand(const ExCommand &cmd) showMessage(MessageError, Tr::tr("Trailing characters:") + ' ' + cmd.args); } else { showMessage(MessageInfo, act->settingsKey().toLower() + "=" - + act->value().toString()); + + act->variantValue().toString()); } } updateEditor(); diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index 5b51cb5f969..fb3049a7b06 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -1089,16 +1089,16 @@ void FakeVimPluginPrivate::initialize() this, &FakeVimPluginPrivate::documentRenamed); FakeVimSettings &s = settings(); - connect(&s.useFakeVim, &FvBoolAspect::valueChanged, - this, &FakeVimPluginPrivate::setUseFakeVim); + connect(&s.useFakeVim, &FvBoolAspect::changed, + this, [this, &s] { setUseFakeVim(s.useFakeVim()); }); connect(&s.readVimRc, &FvBaseAspect::changed, this, &FakeVimPluginPrivate::maybeReadVimRc); connect(&s.vimRcPath, &FvBaseAspect::changed, this, &FakeVimPluginPrivate::maybeReadVimRc); - connect(&s.relativeNumber, &FvBoolAspect::valueChanged, - this, &FakeVimPluginPrivate::setShowRelativeLineNumbers); - connect(&s.blinkingCursor, &FvBoolAspect::valueChanged, - this, &FakeVimPluginPrivate::setCursorBlinking); + connect(&s.relativeNumber, &FvBoolAspect::changed, + this, [this, &s] { setShowRelativeLineNumbers(s.relativeNumber()); }); + connect(&s.blinkingCursor, &FvBoolAspect::changed, + this, [this, &s] { setCursorBlinking(s.blinkingCursor()); }); // Delayed operations. connect(this, &FakeVimPluginPrivate::delayedQuitRequested, |