FakeVim: More compact settings page implementation

Change-Id: Iaca48e8a22f26817442dbf5147f318868dbd1f34
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2023-05-05 14:51:31 +02:00
parent fb50e35db9
commit 7581dcd369

View File

@@ -340,33 +340,8 @@ private:
using ExCommandMap = QMap<QString, QRegularExpression>; using ExCommandMap = QMap<QString, QRegularExpression>;
using UserCommandMap = QMap<int, QString>; using UserCommandMap = QMap<int, QString>;
class FakeVimOptionPage : public IOptionsPage static void layoutPage(QWidget *widget)
{ {
public:
FakeVimOptionPage()
{
setId(SETTINGS_ID);
setDisplayName(Tr::tr("General"));
setCategory(SETTINGS_CATEGORY);
setDisplayCategory(Tr::tr("FakeVim"));
setCategoryIconPath(":/fakevim/images/settingscategory_fakevim.png");
setLayouter([this](QWidget *widget) { return layoutPage(widget); });
setSettings(fakeVimSettings());
}
private:
void layoutPage(QWidget *);
void copyTextEditorSettings();
void setQtStyle();
void setPlainStyle();
};
void FakeVimOptionPage::layoutPage(QWidget *widget)
{
auto copyTextEditorSettings = new QPushButton(Tr::tr("Copy Text Editor Settings"));
auto setQtStyle = new QPushButton(Tr::tr("Set Qt Style"));
auto setPlainStyle = new QPushButton(Tr::tr("Set Plain Style"));
using namespace Layouting; using namespace Layouting;
FakeVimSettings &s = *fakeVimSettings(); FakeVimSettings &s = *fakeVimSettings();
@@ -426,24 +401,10 @@ void FakeVimOptionPage::layoutPage(QWidget *widget)
} }
}, },
Row { copyTextEditorSettings, setQtStyle, setPlainStyle, st }, Row {
st PushButton {
text(Tr::tr("Copy Text Editor Settings")),
}.attachTo(widget); onClicked([&s] {
s.vimRcPath.setEnabler(&s.readVimRc);
connect(copyTextEditorSettings, &QAbstractButton::clicked,
this, &FakeVimOptionPage::copyTextEditorSettings);
connect(setQtStyle, &QAbstractButton::clicked,
this, &FakeVimOptionPage::setQtStyle);
connect(setPlainStyle, &QAbstractButton::clicked,
this, &FakeVimOptionPage::setPlainStyle);
}
void FakeVimOptionPage::copyTextEditorSettings()
{
FakeVimSettings &s = *fakeVimSettings();
TabSettings ts = TextEditorSettings::codeStyle()->tabSettings(); TabSettings ts = TextEditorSettings::codeStyle()->tabSettings();
TypingSettings tps = TextEditorSettings::typingSettings(); TypingSettings tps = TextEditorSettings::typingSettings();
s.expandTab.setValue(ts.m_tabPolicy != TabSettings::TabsOnlyTabPolicy); s.expandTab.setValue(ts.m_tabPolicy != TabSettings::TabsOnlyTabPolicy);
@@ -454,11 +415,11 @@ void FakeVimOptionPage::copyTextEditorSettings()
s.autoIndent.setValue(true); s.autoIndent.setValue(true);
s.smartIndent.setValue(tps.m_autoIndent); s.smartIndent.setValue(tps.m_autoIndent);
s.incSearch.setValue(true); s.incSearch.setValue(true);
} }),
},
void FakeVimOptionPage::setQtStyle() PushButton {
{ text(Tr::tr("Set Qt Style")),
FakeVimSettings &s = *fakeVimSettings(); onClicked([&s] {
s.expandTab.setVolatileValue(true); s.expandTab.setVolatileValue(true);
s.tabStop.setVolatileValue(4); s.tabStop.setVolatileValue(4);
s.shiftWidth.setVolatileValue(4); s.shiftWidth.setVolatileValue(4);
@@ -468,11 +429,11 @@ void FakeVimOptionPage::setQtStyle()
s.incSearch.setVolatileValue(true); s.incSearch.setVolatileValue(true);
s.backspace.setVolatileValue(QString("indent,eol,start")); s.backspace.setVolatileValue(QString("indent,eol,start"));
s.passKeys.setVolatileValue(true); s.passKeys.setVolatileValue(true);
} }),
},
void FakeVimOptionPage::setPlainStyle() PushButton {
{ text(Tr::tr("Set Plain Style")),
FakeVimSettings &s = *fakeVimSettings(); onClicked([&s] {
s.expandTab.setVolatileValue(false); s.expandTab.setVolatileValue(false);
s.tabStop.setVolatileValue(8); s.tabStop.setVolatileValue(8);
s.shiftWidth.setVolatileValue(8); s.shiftWidth.setVolatileValue(8);
@@ -482,8 +443,32 @@ void FakeVimOptionPage::setPlainStyle()
s.incSearch.setVolatileValue(false); s.incSearch.setVolatileValue(false);
s.backspace.setVolatileValue(QString()); s.backspace.setVolatileValue(QString());
s.passKeys.setVolatileValue(false); s.passKeys.setVolatileValue(false);
}),
},
st
},
st
}.attachTo(widget);
s.vimRcPath.setEnabler(&s.readVimRc);
} }
class FakeVimOptionPage : public IOptionsPage
{
public:
FakeVimOptionPage()
{
setId(SETTINGS_ID);
setDisplayName(Tr::tr("General"));
setCategory(SETTINGS_CATEGORY);
setDisplayCategory(Tr::tr("FakeVim"));
setCategoryIconPath(":/fakevim/images/settingscategory_fakevim.png");
setLayouter(&layoutPage);
setSettings(fakeVimSettings());
}
};
/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
// //
// FakeVimPluginPrivate // FakeVimPluginPrivate
@@ -804,16 +789,10 @@ class FakeVimExCommandsPageWidget : public IOptionsPageWidget
public: public:
FakeVimExCommandsPageWidget() FakeVimExCommandsPageWidget()
{ {
m_exCommands = new FakeVimExCommandsMappings; auto exCommands = new FakeVimExCommandsMappings;
auto vbox = new QVBoxLayout(this); setOnApply([exCommands] { exCommands->apply(); });
vbox->addWidget(m_exCommands); Layouting::Column { exCommands, Layouting::noMargin }.attachTo(this);
vbox->setContentsMargins(0, 0, 0, 0);
} }
private:
void apply() final { m_exCommands->apply(); }
FakeVimExCommandsMappings *m_exCommands;
}; };
class FakeVimExCommandsPage : public IOptionsPage class FakeVimExCommandsPage : public IOptionsPage
@@ -840,28 +819,17 @@ public:
FakeVimUserCommandsModel() { m_commandMap = dd->m_userCommandMap; } FakeVimUserCommandsModel() { m_commandMap = dd->m_userCommandMap; }
UserCommandMap commandMap() const { return m_commandMap; } UserCommandMap commandMap() const { return m_commandMap; }
int rowCount(const QModelIndex &parent) const override; int rowCount(const QModelIndex &parent) const final { return parent.isValid() ? 0 : 9; }
int columnCount(const QModelIndex &parent) const override; int columnCount(const QModelIndex &parent) const final { return parent.isValid() ? 0 : 2; }
QVariant data(const QModelIndex &index, int role) const override; QVariant data(const QModelIndex &index, int role) const final;
bool setData(const QModelIndex &index, const QVariant &data, int role) override; bool setData(const QModelIndex &index, const QVariant &data, int role) final;
QVariant headerData(int section, Qt::Orientation orientation, int role) const override; QVariant headerData(int section, Qt::Orientation orientation, int role) const final;
Qt::ItemFlags flags(const QModelIndex &index) const override; Qt::ItemFlags flags(const QModelIndex &index) const final;
private: private:
UserCommandMap m_commandMap; UserCommandMap m_commandMap;
}; };
int FakeVimUserCommandsModel::rowCount(const QModelIndex &parent) const
{
return parent.isValid() ? 0 : 9;
}
int FakeVimUserCommandsModel::columnCount(const QModelIndex &parent) const
{
return parent.isValid() ? 0 : 2;
}
QVariant FakeVimUserCommandsModel::headerData(int section, QVariant FakeVimUserCommandsModel::headerData(int section,
Qt::Orientation orient, int role) const Qt::Orientation orient, int role) const
{ {