Subversion: Use the new AspectContainer::applied signal

Change-Id: Ie16ed5afc59a2f98f0564b9956550cdd08fa4b09
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
hjk
2021-03-31 17:15:52 +02:00
parent b9e15cc459
commit 6102405a06
3 changed files with 36 additions and 59 deletions

View File

@@ -321,7 +321,7 @@ private:
QAction *m_menuAction = nullptr;
bool m_submitActionTriggered = false;
SubversionSettingsPage m_settingsPage{[this] { configurationChanged(); }, &m_settings};
SubversionSettingsPage m_settingsPage{&m_settings};
public:
VcsSubmitEditorFactory submitEditorFactory {
@@ -557,6 +557,8 @@ SubversionPluginPrivate::SubversionPluginPrivate()
connect(m_revertRepositoryAction, &QAction::triggered, this, &SubversionPluginPrivate::revertAll);
subversionMenu->addAction(command);
m_commandLocator->appendCommand(command);
connect(&m_settings, &AspectContainer::applied, this, &IVersionControl::configurationChanged);
}
bool SubversionPluginPrivate::isVcsDirectory(const FilePath &fileName) const

View File

@@ -108,66 +108,41 @@ bool SubversionSettings::hasAuthentication() const
return useAuthentication.value() && !userName.value().isEmpty();
}
// SubversionSettingsPage
class SubversionSettingsPageWidget final : public Core::IOptionsPageWidget
{
Q_DECLARE_TR_FUNCTIONS(Subversion::Internal::SettingsPageWidget)
public:
SubversionSettingsPageWidget(const std::function<void()> &onApply, SubversionSettings *settings);
void apply() final;
private:
std::function<void()> m_onApply;
SubversionSettings *m_settings;
};
SubversionSettingsPageWidget::SubversionSettingsPageWidget(const std::function<void()> &onApply,
SubversionSettings *settings)
: m_onApply(onApply), m_settings(settings)
{
SubversionSettings &s = *m_settings;
using namespace Layouting;
Column {
Group {
Title(tr("Configuration")),
s.binaryPath
},
Group {
Title(tr("Authentication"), &s.useAuthentication),
Form {
s.userName,
s.password,
}
},
Group {
Title(tr("Miscellaneous")),
Row { s.logCount, s.timeout, Stretch() },
s.promptOnSubmit,
s.spaceIgnorantAnnotation,
},
Stretch()
}.attachTo(this);
}
void SubversionSettingsPageWidget::apply()
{
m_settings->apply();
m_onApply();
}
SubversionSettingsPage::SubversionSettingsPage(const std::function<void()> &onApply, SubversionSettings *settings)
SubversionSettingsPage::SubversionSettingsPage(SubversionSettings *settings)
{
setId(VcsBase::Constants::VCS_ID_SUBVERSION);
setDisplayName(SubversionSettingsPageWidget::tr("Subversion"));
setDisplayName(SubversionSettings::tr("Subversion"));
setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY);
setWidgetCreator([onApply, settings] { return new SubversionSettingsPageWidget(onApply, settings); });
setSettings(settings);
setLayouter([settings](QWidget *widget) {
SubversionSettings &s = *settings;
using namespace Layouting;
Column {
Group {
Title(SubversionSettings::tr("Configuration")),
s.binaryPath
},
Group {
Title(SubversionSettings::tr("Authentication"), &s.useAuthentication),
Form {
s.userName,
s.password,
}
},
Group {
Title(SubversionSettings::tr("Miscellaneous")),
Row { s.logCount, s.timeout, Stretch() },
s.promptOnSubmit,
s.spaceIgnorantAnnotation,
},
Stretch()
}.attachTo(widget);
});
}
} // Internal

View File

@@ -50,7 +50,7 @@ public:
class SubversionSettingsPage final : public Core::IOptionsPage
{
public:
SubversionSettingsPage(const std::function<void()> &onApply, SubversionSettings *settings);
explicit SubversionSettingsPage(SubversionSettings *settings);
};
} // namespace Internal