summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-05-15 10:24:35 +0200
committerhjk <hjk@qt.io>2023-05-15 09:54:44 +0000
commite6d574ee775f724aac0e4ea0e1175649281d6f22 (patch)
tree41e833321d0a9a3eeac700e500f9e6ef8432b3f1
parentfe74e6d43bba607d0543164ff380fceaa54d0bb7 (diff)
downloadqt-creator-e6d574ee775f724aac0e4ea0e1175649281d6f22.tar.gz
Fossil: Consolidate optionpage/apply further
Change-Id: I345c6f38421864630d99a45fd2176ba0836536e9 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
-rw-r--r--src/plugins/fossil/fossilplugin.cpp5
-rw-r--r--src/plugins/fossil/fossilsettings.cpp100
-rw-r--r--src/plugins/fossil/fossilsettings.h12
3 files changed, 50 insertions, 67 deletions
diff --git a/src/plugins/fossil/fossilplugin.cpp b/src/plugins/fossil/fossilplugin.cpp
index 4386c4a6a4..825a81bbca 100644
--- a/src/plugins/fossil/fossilplugin.cpp
+++ b/src/plugins/fossil/fossilplugin.cpp
@@ -190,7 +190,7 @@ public:
FossilSettings m_fossilSettings;
FossilClient m_client{&m_fossilSettings};
- OptionsPage optionPage{[this] { configurationChanged(); }, &m_fossilSettings};
+ OptionsPage optionPage{&m_fossilSettings};
VcsSubmitEditorFactory submitEditorFactory {
submitEditorParameters,
@@ -300,6 +300,9 @@ FossilPluginPrivate::FossilPluginPrivate()
return new FossilJsExtension(&m_fossilSettings);
});
+ connect(&m_fossilSettings, &AspectContainer::changed,
+ this, &IVersionControl::configurationChanged);
+
createMenu(context);
}
diff --git a/src/plugins/fossil/fossilsettings.cpp b/src/plugins/fossil/fossilsettings.cpp
index 130ff5c2c5..7fdea5f075 100644
--- a/src/plugins/fossil/fossilsettings.cpp
+++ b/src/plugins/fossil/fossilsettings.cpp
@@ -15,8 +15,7 @@
using namespace Utils;
-namespace Fossil {
-namespace Internal {
+namespace Fossil::Internal {
FossilSettings::FossilSettings()
{
@@ -95,80 +94,63 @@ FossilSettings::FossilSettings()
logCount.setLabelText(Tr::tr("Log count:"));
logCount.setToolTip(Tr::tr("The number of recent commit log entries to show. "
"Choose 0 to see all entries."));
-};
+}
// OptionsPage
class OptionsPageWidget final : public Core::IOptionsPageWidget
{
public:
- OptionsPageWidget(const std::function<void()> &onApply, FossilSettings *settings);
- void apply() final;
+ OptionsPageWidget(FossilSettings *settings)
+ {
+ FossilSettings &s = *settings;
-private:
- const std::function<void()> m_onApply;
- FossilSettings *m_settings;
-};
+ using namespace Layouting;
-void OptionsPageWidget::apply()
-{
- if (!m_settings->isDirty())
- return;
+ Column {
+ Group {
+ title(Tr::tr("Configuration")),
+ Row { s.binaryPath }
+ },
- m_settings->apply();
- m_onApply();
-}
+ Group {
+ title(Tr::tr("Local Repositories")),
+ Row { s.defaultRepoPath }
+ },
+ Group {
+ title(Tr::tr("User")),
+ Form {
+ s.userName, br,
+ s.sslIdentityFile
+ }
+ },
-OptionsPageWidget::OptionsPageWidget(const std::function<void()> &onApply, FossilSettings *settings) :
- m_onApply(onApply),
- m_settings(settings)
-{
- FossilSettings &s = *m_settings;
-
- using namespace Layouting;
-
- Column {
- Group {
- title(Tr::tr("Configuration")),
- Row { s.binaryPath }
- },
-
- Group {
- title(Tr::tr("Local Repositories")),
- Row { s.defaultRepoPath }
- },
- Group {
- title(Tr::tr("User")),
- Form {
- s.userName, br,
- s.sslIdentityFile
- }
- },
-
- Group {
- title(Tr::tr("Miscellaneous")),
- Column {
- Row {
- s.logCount,
- s.timelineWidth,
- s.timeout,
- st
+ Group {
+ title(Tr::tr("Miscellaneous")),
+ Column {
+ Row {
+ s.logCount,
+ s.timelineWidth,
+ s.timeout,
+ st
+ },
+ s.disableAutosync
},
- s.disableAutosync
},
- },
- st
+ st
- }.attachTo(this);
-}
+ }.attachTo(this);
+
+ setOnApply([settings] { settings->apply(); });
+ }
+};
-OptionsPage::OptionsPage(const std::function<void()> &onApply, FossilSettings *settings)
+OptionsPage::OptionsPage(FossilSettings *settings)
{
setId(Constants::VCS_ID_FOSSIL);
setDisplayName(Tr::tr("Fossil"));
- setWidgetCreator([onApply, settings]() { return new OptionsPageWidget(onApply, settings); });
+ setWidgetCreator([settings] { return new OptionsPageWidget(settings); });
setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY);
}
-} // Internal
-} // Fossil
+} // Fossil::Internal
diff --git a/src/plugins/fossil/fossilsettings.h b/src/plugins/fossil/fossilsettings.h
index e4133393f6..f1a872ee0d 100644
--- a/src/plugins/fossil/fossilsettings.h
+++ b/src/plugins/fossil/fossilsettings.h
@@ -6,12 +6,13 @@
#include <coreplugin/dialogs/ioptionspage.h>
#include <vcsbase/vcsbaseclientsettings.h>
-namespace Fossil {
-namespace Internal {
+namespace Fossil::Internal {
class FossilSettings : public VcsBase::VcsBaseSettings
{
public:
+ FossilSettings();
+
Utils::StringAspect defaultRepoPath;
Utils::StringAspect sslIdentityFile;
Utils::BoolAspect diffIgnoreAllWhiteSpace;
@@ -23,8 +24,6 @@ public:
Utils::BoolAspect timelineVerbose;
Utils::StringAspect timelineItemType;
Utils::BoolAspect disableAutosync;
-
- FossilSettings();
};
struct RepositorySettings
@@ -46,8 +45,7 @@ inline bool operator==(const RepositorySettings &lh, const RepositorySettings &r
class OptionsPage : public Core::IOptionsPage
{
public:
- OptionsPage(const std::function<void()> &onApply, FossilSettings *settings);
+ explicit OptionsPage(FossilSettings *settings);
};
-} // namespace Internal
-} // namespace Fossil
+} // Fossil::Internal