aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-06-01 14:30:06 +0200
committerhjk <hjk@qt.io>2023-06-06 12:35:11 +0000
commit9b6ff3fb36ac796f0c4e9f5af3d361fb1460fca7 (patch)
tree13b0aafbd1ff367c575816351a90d0f0b8731e5b
parent1348f0cfe07866bc61df1aa23e7ad54d278299de (diff)
Vcs: Use PagedSettings for common settings
Also restrict the Reset VCS Cache button to the second column, as it was earlier. Change-Id: I291fdceb11df4ecdfdc0887fd521288d0b4544f3 Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
-rw-r--r--src/plugins/vcsbase/commonvcssettings.cpp103
-rw-r--r--src/plugins/vcsbase/commonvcssettings.h21
-rw-r--r--src/plugins/vcsbase/vcsbaseplugin.cpp2
-rw-r--r--src/plugins/vcsbase/vcsbasesubmiteditor.cpp20
-rw-r--r--src/plugins/vcsbase/vcsplugin.cpp14
-rw-r--r--src/plugins/vcsbase/vcsplugin.h5
6 files changed, 54 insertions, 111 deletions
diff --git a/src/plugins/vcsbase/commonvcssettings.cpp b/src/plugins/vcsbase/commonvcssettings.cpp
index d286164b5b..e0c4ba4af6 100644
--- a/src/plugins/vcsbase/commonvcssettings.cpp
+++ b/src/plugins/vcsbase/commonvcssettings.cpp
@@ -6,18 +6,13 @@
#include "vcsbaseconstants.h"
#include "vcsbasetr.h"
-#include <coreplugin/icore.h>
-#include <coreplugin/iversioncontrol.h>
#include <coreplugin/vcsmanager.h>
-#include <utils/algorithm.h>
#include <utils/environment.h>
#include <utils/hostosinfo.h>
#include <utils/layoutbuilder.h>
-#include <QDebug>
-#include <QPushButton>
-
+using namespace Core;
using namespace Utils;
namespace VcsBase::Internal {
@@ -33,10 +28,24 @@ static QString sshPasswordPromptDefault()
return QLatin1String("ssh-askpass");
}
+static CommonVcsSettings *s_instance;
+
+CommonVcsSettings &commonSettings()
+{
+ return *s_instance;
+}
+
CommonVcsSettings::CommonVcsSettings()
{
+ s_instance = this;
+
setSettingsGroup("VCS");
- setAutoApply(false);
+ setId(Constants::VCS_COMMON_SETTINGS_ID);
+ setDisplayName(Tr::tr("General"));
+ setCategory(Constants::VCS_SETTINGS_CATEGORY);
+ // The following act as blueprint for other pages in the same category:
+ setDisplayCategory(Tr::tr("Version Control"));
+ setCategoryIconPath(":/vcsbase/images/settingscategory_vcs.png");
nickNameMailMap.setSettingsKey("NickNameMailMap");
nickNameMailMap.setExpectedKind(PathChooser::File);
@@ -76,69 +85,37 @@ CommonVcsSettings::CommonVcsSettings()
lineWrapWidth.setSettingsKey("LineWrapWidth");
lineWrapWidth.setSuffix(Tr::tr(" characters"));
lineWrapWidth.setDefaultValue(72);
-}
-
-// CommonSettingsWidget
-
-class CommonSettingsWidget final : public Core::IOptionsPageWidget
-{
-public:
- CommonSettingsWidget(CommonOptionsPage *page)
- {
- CommonVcsSettings &s = page->settings();
-
- auto cacheResetButton = new QPushButton(Tr::tr("Reset VCS Cache"));
- cacheResetButton->setToolTip(Tr::tr("Reset information about which "
- "version control system handles which directory."));
-
- auto updatePath = [&s] {
- Environment env;
- env.appendToPath(Core::VcsManager::additionalToolsPath());
- s.sshPasswordPrompt.setEnvironment(env);
- };
+ setLayouter([this] {
using namespace Layouting;
- Column {
- Row { s.lineWrap, s.lineWrapWidth, st },
+ return Column {
+ Row { lineWrap, lineWrapWidth, st },
Form {
- s.submitMessageCheckScript, br,
- s.nickNameMailMap, br,
- s.nickNameFieldListFile, br,
- s.sshPasswordPrompt, br,
- {}, cacheResetButton
+ submitMessageCheckScript, br,
+ nickNameMailMap, br,
+ nickNameFieldListFile, br,
+ sshPasswordPrompt, br,
+ empty,
+ PushButton {
+ text(Tr::tr("Reset VCS Cache")),
+ tooltip(Tr::tr("Reset information about which "
+ "version control system handles which directory.")),
+ onClicked(&VcsManager::clearVersionControlCache)
+ }
}
- }.attachTo(this);
-
- updatePath();
-
- connect(Core::VcsManager::instance(), &Core::VcsManager::configurationChanged,
- this, updatePath);
- connect(cacheResetButton, &QPushButton::clicked,
- Core::VcsManager::instance(), &Core::VcsManager::clearVersionControlCache);
-
- setOnApply([&s] {
- if (s.isDirty()) {
- s.apply();
- s.writeSettings(Core::ICore::settings());
- emit s.settingsChanged();
- }
- });
- }
-};
+ };
+ });
-// CommonOptionsPage
+ auto updatePath = [this] {
+ Environment env;
+ env.appendToPath(VcsManager::additionalToolsPath());
+ sshPasswordPrompt.setEnvironment(env);
+ };
-CommonOptionsPage::CommonOptionsPage()
-{
- m_settings.readSettings(Core::ICore::settings());
+ updatePath();
+ connect(VcsManager::instance(), &VcsManager::configurationChanged, this, updatePath);
- setId(Constants::VCS_COMMON_SETTINGS_ID);
- setDisplayName(Tr::tr("General"));
- setCategory(Constants::VCS_SETTINGS_CATEGORY);
- // The following act as blueprint for other pages in the same category:
- setDisplayCategory(Tr::tr("Version Control"));
- setCategoryIconPath(":/vcsbase/images/settingscategory_vcs.png");
- setWidgetCreator([this] { return new CommonSettingsWidget(this); });
+ readSettings();
}
} // VcsBase::Internal
diff --git a/src/plugins/vcsbase/commonvcssettings.h b/src/plugins/vcsbase/commonvcssettings.h
index a5005f252a..0f591b2711 100644
--- a/src/plugins/vcsbase/commonvcssettings.h
+++ b/src/plugins/vcsbase/commonvcssettings.h
@@ -4,15 +4,12 @@
#pragma once
#include <coreplugin/dialogs/ioptionspage.h>
-
-#include <utils/aspects.h>
+#include <coreplugin/iversioncontrol.h>
namespace VcsBase::Internal {
-class CommonVcsSettings : public Utils::AspectContainer
+class CommonVcsSettings : public Core::PagedSettings
{
- Q_OBJECT
-
public:
CommonVcsSettings();
@@ -26,20 +23,8 @@ public:
Utils::BoolAspect lineWrap{this};
Utils::IntegerAspect lineWrapWidth{this};
-
-signals:
- void settingsChanged();
};
-class CommonOptionsPage final : public Core::IOptionsPage
-{
-public:
- CommonOptionsPage();
-
- CommonVcsSettings &settings() { return m_settings; }
-
-private:
- CommonVcsSettings m_settings;
-};
+CommonVcsSettings &commonSettings();
} // VcsBase::Internal
diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp
index b72657cdb3..b73f97dd79 100644
--- a/src/plugins/vcsbase/vcsbaseplugin.cpp
+++ b/src/plugins/vcsbase/vcsbaseplugin.cpp
@@ -750,7 +750,7 @@ FilePath source(IDocument *document)
void setProcessEnvironment(Environment *e)
{
- const QString prompt = Internal::VcsPlugin::instance()->settings().sshPasswordPrompt.value();
+ const QString prompt = Internal::commonSettings().sshPasswordPrompt().path();
if (!prompt.isEmpty())
e->set("SSH_ASKPASS", prompt);
}
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
index 5ddab0da77..03eaa49c85 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
@@ -103,11 +103,6 @@ namespace VcsBase {
using namespace Internal;
using namespace Utils;
-static inline QString submitMessageCheckScript()
-{
- return VcsPlugin::instance()->settings().submitMessageCheckScript.value();
-}
-
class VcsBaseSubmitEditorPrivate
{
public:
@@ -176,15 +171,15 @@ void VcsBaseSubmitEditor::setParameters(const VcsBaseSubmitEditorParameters &par
connect(descriptionEdit, &QTextEdit::textChanged,
this, &VcsBaseSubmitEditor::fileContentsChanged);
- const CommonVcsSettings &settings = VcsPlugin::instance()->settings();
+ const CommonVcsSettings &settings = commonSettings();
// Add additional context menu settings
- if (!settings.submitMessageCheckScript.value().isEmpty()
+ if (!settings.submitMessageCheckScript().isEmpty()
|| !settings.nickNameMailMap.value().isEmpty()) {
auto sep = new QAction(this);
sep->setSeparator(true);
d->m_widget->addDescriptionEditContextMenuAction(sep);
// Run check action
- if (!settings.submitMessageCheckScript.value().isEmpty()) {
+ if (!settings.submitMessageCheckScript().isEmpty()) {
auto checkAction = new QAction(Tr::tr("Check Message"), this);
connect(checkAction, &QAction::triggered,
this, &VcsBaseSubmitEditor::slotCheckSubmitMessage);
@@ -203,7 +198,7 @@ void VcsBaseSubmitEditor::setParameters(const VcsBaseSubmitEditorParameters &par
// wrapping. etc
slotUpdateEditorSettings();
- connect(VcsPlugin::instance(), &VcsPlugin::settingsChanged,
+ connect(&settings, &CommonVcsSettings::changed,
this, &VcsBaseSubmitEditor::slotUpdateEditorSettings);
connect(Core::EditorManager::instance(), &Core::EditorManager::currentEditorChanged,
this, [this] {
@@ -229,9 +224,8 @@ VcsBaseSubmitEditor::~VcsBaseSubmitEditor()
void VcsBaseSubmitEditor::slotUpdateEditorSettings()
{
- const CommonVcsSettings &s = VcsPlugin::instance()->settings();
- setLineWrapWidth(s.lineWrapWidth());
- setLineWrap(s.lineWrap());
+ setLineWrapWidth(commonSettings().lineWrapWidth());
+ setLineWrap(commonSettings().lineWrap());
}
// Return a trimmed list of non-empty field texts
@@ -527,7 +521,7 @@ void VcsBaseSubmitEditor::slotCheckSubmitMessage()
bool VcsBaseSubmitEditor::checkSubmitMessage(QString *errorMessage) const
{
- const QString checkScript = submitMessageCheckScript();
+ const QString checkScript = commonSettings().submitMessageCheckScript.value();
if (checkScript.isEmpty())
return true;
QApplication::setOverrideCursor(Qt::WaitCursor);
diff --git a/src/plugins/vcsbase/vcsplugin.cpp b/src/plugins/vcsbase/vcsplugin.cpp
index 0596f406b8..c61c8e0bec 100644
--- a/src/plugins/vcsbase/vcsplugin.cpp
+++ b/src/plugins/vcsbase/vcsplugin.cpp
@@ -40,7 +40,7 @@ public:
explicit VcsPluginPrivate(VcsPlugin *plugin)
: q(plugin)
{
- QObject::connect(&m_settingsPage.settings(), &CommonVcsSettings::settingsChanged,
+ QObject::connect(&m_settings, &AspectContainer::changed,
[this] { slotSettingsChanged(); });
slotSettingsChanged();
}
@@ -57,7 +57,7 @@ public:
void populateNickNameModel()
{
QString errorMessage;
- if (!NickNameDialog::populateModelFromMailCapFile(m_settingsPage.settings().nickNameMailMap.filePath(),
+ if (!NickNameDialog::populateModelFromMailCapFile(m_settings.nickNameMailMap(),
m_nickNameModel,
&errorMessage)) {
qWarning("%s", qPrintable(errorMessage));
@@ -71,7 +71,7 @@ public:
}
VcsPlugin *q;
- CommonOptionsPage m_settingsPage;
+ CommonVcsSettings m_settings;
QStandardItemModel *m_nickNameModel = nullptr;
};
@@ -101,9 +101,6 @@ void VcsPlugin::initialize()
return result;
});
- connect(&d->m_settingsPage.settings(), &CommonVcsSettings::settingsChanged,
- this, &VcsPlugin::settingsChanged);
-
JsonWizardFactory::registerPageFactory(new Internal::VcsConfigurationPageFactory);
JsonWizardFactory::registerPageFactory(new Internal::VcsCommandPageFactory);
@@ -146,11 +143,6 @@ VcsPlugin *VcsPlugin::instance()
return m_instance;
}
-CommonVcsSettings &VcsPlugin::settings() const
-{
- return d->m_settingsPage.settings();
-}
-
/* Delayed creation/update of the nick name model. */
QStandardItemModel *VcsPlugin::nickNameModel()
{
diff --git a/src/plugins/vcsbase/vcsplugin.h b/src/plugins/vcsbase/vcsplugin.h
index 6d4b35c11f..44be10b23e 100644
--- a/src/plugins/vcsbase/vcsplugin.h
+++ b/src/plugins/vcsbase/vcsplugin.h
@@ -15,8 +15,6 @@ class VcsBaseSubmitEditor;
namespace Internal {
-class CommonVcsSettings;
-
class VcsPlugin : public ExtensionSystem::IPlugin
{
Q_OBJECT
@@ -30,15 +28,12 @@ public:
static VcsPlugin *instance();
- CommonVcsSettings &settings() const;
-
// Model of user nick names used for the submit
// editor. Stored centrally here to achieve delayed
// initialization and updating on settings change.
QStandardItemModel *nickNameModel();
signals:
- void settingsChanged();
void submitEditorAboutToClose(VcsBase::VcsBaseSubmitEditor *e, bool *result);
private: