aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/fakevim/fakevimactions.h
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2021-02-26 17:55:55 +0100
committerhjk <hjk@qt.io>2021-03-03 07:12:21 +0000
commit50f93710b71ea6c27d46d867b37add378dde72e9 (patch)
treefa0c300099ce0c4abe0f8e74fac4b14b8de1615b /src/plugins/fakevim/fakevimactions.h
parent3e082109980df5b6f10d7a91fee3e819bf2b976b (diff)
FakeVim: Aspectify settings
Change-Id: Ic73edce82e192779ed3efe86a5cb747a52d94d36 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/fakevim/fakevimactions.h')
-rw-r--r--src/plugins/fakevim/fakevimactions.h164
1 files changed, 91 insertions, 73 deletions
diff --git a/src/plugins/fakevim/fakevimactions.h b/src/plugins/fakevim/fakevimactions.h
index 419232aeb8..69131c7669 100644
--- a/src/plugins/fakevim/fakevimactions.h
+++ b/src/plugins/fakevim/fakevimactions.h
@@ -26,23 +26,25 @@
#pragma once
#ifndef FAKEVIM_STANDALONE
-# include <utils/savedaction.h>
+# include <utils/aspects.h>
#endif
#include <QCoreApplication>
#include <QHash>
#include <QObject>
#include <QString>
-#include <QSettings>
#include <QVariant>
namespace FakeVim {
namespace Internal {
-class DummyAction
+#ifdef FAKEVIM_STANDALONE
+class FvBaseAspect
{
public:
- DummyAction(void *parent);
+ FvBaseAspect();
+ virtual ~FvBaseAspect() {}
+
void setValue(const QVariant &value);
QVariant value() const;
void setDefaultValue(const QVariant &value);
@@ -50,105 +52,121 @@ public:
void setSettingsKey(const QString &group, const QString &key);
QString settingsKey() const;
void setCheckable(bool) {}
+ void setDisplayName(const QString &) {}
+ void setToolTip(const QString &) {}
- void readSettings(QSettings *) {}
- void writeSettings(QSettings *) {}
-
+private:
QVariant m_value;
QVariant m_defaultValue;
QString m_settingsGroup;
QString m_settingsKey;
};
-#ifdef FAKEVIM_STANDALONE
-using FakeVimAction = DummyAction;
+class FvBoolAspect : public FvBaseAspect
+{
+public:
+ bool value() const { return FvBaseAspect::value().toBool(); }
+};
+
+class FvIntegerAspect : public FvBaseAspect
+{
+public:
+ qint64 value() const { return FvBaseAspect::value().toLongLong(); }
+};
+
+class FvStringAspect : public FvBaseAspect
+{
+public:
+ QString value() const { return FvBaseAspect::value().toString(); }
+};
+
+class FvAspectContainer : public FvBaseAspect
+{
+public:
+};
+
#else
-using FakeVimAction = Utils::SavedAction;
+
+using FvAspectContainer = Utils::AspectContainer;
+using FvBaseAspect = Utils::BaseAspect;
+using FvBoolAspect = Utils::BoolAspect;
+using FvIntegerAspect = Utils::IntegerAspect;
+using FvStringAspect = Utils::StringAspect;
+
#endif
-enum FakeVimSettingsCode
+class FakeVimSettings final : public FvAspectContainer
{
- ConfigUseFakeVim,
- ConfigReadVimRc,
- ConfigVimRcPath,
-
- ConfigStartOfLine,
- ConfigHlSearch,
- ConfigTabStop,
- ConfigSmartTab,
- ConfigShiftWidth,
- ConfigExpandTab,
- ConfigAutoIndent,
- ConfigSmartIndent,
-
- ConfigIncSearch,
- ConfigUseCoreSearch,
- ConfigSmartCase,
- ConfigIgnoreCase,
- ConfigWrapScan,
+ Q_DECLARE_TR_FUNCTIONS(FakeVim)
+
+public:
+ FakeVimSettings();
+ ~FakeVimSettings();
+
+ FvBaseAspect *item(const QString &name);
+ QString trySetValue(const QString &name, const QString &value);
+
+ FvBoolAspect useFakeVim;
+ FvBoolAspect readVimRc;
+ FvStringAspect vimRcPath;
+
+ FvBoolAspect startOfLine;
+ FvIntegerAspect tabStop;
+ FvBoolAspect hlSearch;
+ FvBoolAspect smartTab;
+ FvIntegerAspect shiftWidth;
+ FvBoolAspect expandTab;
+ FvBoolAspect autoIndent;
+ FvBoolAspect smartIndent;
+
+ FvBoolAspect incSearch;
+ FvBoolAspect useCoreSearch;
+ FvBoolAspect smartCase;
+ FvBoolAspect ignoreCase;
+ FvBoolAspect wrapScan;
// command ~ behaves as g~
- ConfigTildeOp,
+ FvBoolAspect tildeOp;
// indent allow backspacing over autoindent
// eol allow backspacing over line breaks (join lines)
// start allow backspacing over the start of insert; CTRL-W and CTRL-U
// stop once at the start of insert.
- ConfigBackspace,
+ FvStringAspect backspace;
// @,48-57,_,192-255
- ConfigIsKeyword,
+ FvStringAspect isKeyword;
// other actions
- ConfigShowMarks,
- ConfigPassControlKey,
- ConfigPassKeys,
- ConfigClipboard,
- ConfigShowCmd,
- ConfigScrollOff,
- ConfigRelativeNumber,
- ConfigFormatOptions,
+ FvBoolAspect showMarks;
+ FvBoolAspect passControlKey;
+ FvBoolAspect passKeys;
+ FvStringAspect clipboard;
+ FvBoolAspect showCmd;
+ FvIntegerAspect scrollOff;
+ FvBoolAspect relativeNumber;
+ FvStringAspect formatOptions;
// Plugin emulation
- ConfigEmulateVimCommentary,
- ConfigEmulateReplaceWithRegister,
- ConfigEmulateExchange,
- ConfigEmulateArgTextObj,
- ConfigEmulateSurround,
-
- ConfigBlinkingCursor
-};
-
-class FakeVimSettings
-{
- Q_DECLARE_TR_FUNCTIONS(FakeVim)
-
-public:
- FakeVimSettings();
- ~FakeVimSettings();
- void insertItem(int code, FakeVimAction *item,
- const QString &longname = QString(),
- const QString &shortname = QString());
-
- FakeVimAction *item(int code);
- FakeVimAction *item(const QString &name);
- QString trySetValue(const QString &name, const QString &value);
+ FvBoolAspect emulateVimCommentary;
+ FvBoolAspect emulateReplaceWithRegister;
+ FvBoolAspect emulateExchange;
+ FvBoolAspect emulateArgTextObj;
+ FvBoolAspect emulateSurround;
- void readSettings(QSettings *settings);
- void writeSettings(QSettings *settings);
+ FvBoolAspect blinkingCursor;
private:
- void createAction(int code, const QVariant &value,
- const QString &settingsKey = QString(),
- const QString &shortKey = QString());
+ void setup(FvBaseAspect *aspect, const QVariant &value,
+ const QString &settingsKey,
+ const QString &shortName,
+ const QString &label);
- QHash<int, FakeVimAction *> m_items;
- QHash<QString, int> m_nameToCode;
- QHash<int, QString> m_codeToName;
+ QHash<QString, FvBaseAspect *> m_nameToAspect;
+ QHash<FvBaseAspect *, QString> m_aspectToName;
};
-FakeVimSettings *theFakeVimSettings();
-FakeVimAction *theFakeVimSetting(int code);
+FakeVimSettings *fakeVimSettings();
} // namespace Internal
} // namespace FakeVim