aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/fakevim
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/fakevim')
-rw-r--r--src/plugins/fakevim/fakevimactions.cpp28
-rw-r--r--src/plugins/fakevim/fakevimactions.h58
-rw-r--r--src/plugins/fakevim/fakevimhandler.cpp8
-rw-r--r--src/plugins/fakevim/fakevimplugin.cpp12
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,