diff --git a/src/plugins/vcsbase/CMakeLists.txt b/src/plugins/vcsbase/CMakeLists.txt index c26bf04ef21..1e25ff911ad 100644 --- a/src/plugins/vcsbase/CMakeLists.txt +++ b/src/plugins/vcsbase/CMakeLists.txt @@ -6,7 +6,6 @@ add_qtc_plugin(VcsBase basevcseditorfactory.cpp basevcseditorfactory.h basevcssubmiteditorfactory.cpp basevcssubmiteditorfactory.h cleandialog.cpp cleandialog.h cleandialog.ui - commonsettingspage.cpp commonsettingspage.h commonsettingspage.ui commonvcssettings.cpp commonvcssettings.h diffandloghighlighter.cpp diffandloghighlighter.h nicknamedialog.cpp nicknamedialog.h nicknamedialog.ui diff --git a/src/plugins/vcsbase/commonsettingspage.cpp b/src/plugins/vcsbase/commonsettingspage.cpp deleted file mode 100644 index f1f2a73f7e1..00000000000 --- a/src/plugins/vcsbase/commonsettingspage.cpp +++ /dev/null @@ -1,144 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "commonsettingspage.h" -#include "vcsbaseconstants.h" - -#include "ui_commonsettingspage.h" - -#include -#include -#include - -#include -#include - -#include - -using namespace Utils; - -namespace VcsBase { -namespace Internal { - -// ------------------ VcsBaseSettingsWidget - -CommonSettingsWidget::CommonSettingsWidget(QWidget *parent) : - QWidget(parent), - m_ui(new Ui::CommonSettingsPage) -{ - m_ui->setupUi(this); - m_ui->submitMessageCheckScriptChooser->setExpectedKind(PathChooser::ExistingCommand); - m_ui->submitMessageCheckScriptChooser->setHistoryCompleter(QLatin1String("Vcs.MessageCheckScript.History")); - m_ui->nickNameFieldsFileChooser->setExpectedKind(PathChooser::File); - m_ui->nickNameFieldsFileChooser->setHistoryCompleter(QLatin1String("Vcs.NickFields.History")); - m_ui->nickNameMailMapChooser->setExpectedKind(PathChooser::File); - m_ui->nickNameMailMapChooser->setHistoryCompleter(QLatin1String("Vcs.NickMap.History")); - m_ui->sshPromptChooser->setExpectedKind(PathChooser::ExistingCommand); - m_ui->sshPromptChooser->setHistoryCompleter(QLatin1String("Vcs.SshPrompt.History")); - - updatePath(); - - connect(Core::VcsManager::instance(), &Core::VcsManager::configurationChanged, - this, &CommonSettingsWidget::updatePath); - connect(m_ui->cacheResetButton, &QPushButton::clicked, - Core::VcsManager::instance(), &Core::VcsManager::clearVersionControlCache); -} - -CommonSettingsWidget::~CommonSettingsWidget() -{ - delete m_ui; -} - -CommonVcsSettings CommonSettingsWidget::settings() const -{ - CommonVcsSettings rc; - rc.nickNameMailMap = m_ui->nickNameMailMapChooser->filePath().toString(); - rc.nickNameFieldListFile = m_ui->nickNameFieldsFileChooser->filePath().toString(); - rc.submitMessageCheckScript = m_ui->submitMessageCheckScriptChooser->filePath().toString(); - rc.lineWrap= m_ui->lineWrapCheckBox->isChecked(); - rc.lineWrapWidth = m_ui->lineWrapSpinBox->value(); - rc.sshPasswordPrompt = m_ui->sshPromptChooser->filePath().toString(); - return rc; -} - -void CommonSettingsWidget::setSettings(const CommonVcsSettings &s) -{ - m_ui->nickNameMailMapChooser->setPath(s.nickNameMailMap); - m_ui->nickNameFieldsFileChooser->setPath(s.nickNameFieldListFile); - m_ui->submitMessageCheckScriptChooser->setPath(s.submitMessageCheckScript); - m_ui->lineWrapCheckBox->setChecked(s.lineWrap); - m_ui->lineWrapSpinBox->setValue(s.lineWrapWidth); - m_ui->sshPromptChooser->setPath(s.sshPasswordPrompt); -} - -void CommonSettingsWidget::updatePath() -{ - Environment env = Environment::systemEnvironment(); - QStringList toAdd = Core::VcsManager::additionalToolsPath(); - env.appendOrSetPath(toAdd.join(HostOsInfo::pathListSeparator())); - m_ui->sshPromptChooser->setEnvironment(env); -} - -// --------------- VcsBaseSettingsPage -CommonOptionsPage::CommonOptionsPage() -{ - m_settings.fromSettings(Core::ICore::settings()); - - setId(Constants::VCS_COMMON_SETTINGS_ID); - setDisplayName(QCoreApplication::translate("VcsBase", Constants::VCS_COMMON_SETTINGS_NAME)); - setCategory(Constants::VCS_SETTINGS_CATEGORY); - // The following act as blueprint for other pages in the same category: - setDisplayCategory(QCoreApplication::translate("VcsBase", "Version Control")); - setCategoryIconPath(":/vcsbase/images/settingscategory_vcs.png"); -} - -QWidget *CommonOptionsPage::widget() -{ - if (!m_widget) { - m_widget = new CommonSettingsWidget; - m_widget->setSettings(m_settings); - } - return m_widget; -} - -void CommonOptionsPage::apply() -{ - if (m_widget) { - const CommonVcsSettings newSettings = m_widget->settings(); - if (newSettings != m_settings) { - m_settings = newSettings; - m_settings.toSettings(Core::ICore::settings()); - emit settingsChanged(m_settings); - } - } -} - -void CommonOptionsPage::finish() -{ - delete m_widget; -} - -} // namespace Internal -} // namespace VcsBase diff --git a/src/plugins/vcsbase/commonsettingspage.h b/src/plugins/vcsbase/commonsettingspage.h deleted file mode 100644 index 8e4ca319a01..00000000000 --- a/src/plugins/vcsbase/commonsettingspage.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include "commonvcssettings.h" - -#include - -#include - -namespace VcsBase { -namespace Internal { - -namespace Ui { class CommonSettingsPage; } - -class CommonSettingsWidget : public QWidget -{ - Q_OBJECT - -public: - explicit CommonSettingsWidget(QWidget *parent = nullptr); - ~CommonSettingsWidget() override; - - CommonVcsSettings settings() const; - void setSettings(const CommonVcsSettings &s); - -private: - void updatePath(); - - Ui::CommonSettingsPage *m_ui; -}; - -class CommonOptionsPage final : public Core::IOptionsPage -{ - Q_OBJECT - -public: - explicit CommonOptionsPage(); - - QWidget *widget() override; - void apply() override; - void finish() override; - - CommonVcsSettings settings() const { return m_settings; } - -signals: - void settingsChanged(const VcsBase::Internal::CommonVcsSettings &s); - -private: - QPointer m_widget; - CommonVcsSettings m_settings; -}; - -} // namespace Internal -} // namespace VcsBase diff --git a/src/plugins/vcsbase/commonsettingspage.ui b/src/plugins/vcsbase/commonsettingspage.ui deleted file mode 100644 index 0368510cff2..00000000000 --- a/src/plugins/vcsbase/commonsettingspage.ui +++ /dev/null @@ -1,181 +0,0 @@ - - - VcsBase::Internal::CommonSettingsPage - - - - 0 - 0 - 350 - 212 - - - - - QFormLayout::ExpandingFieldsGrow - - - - - Wrap submit message at: - - - - - - - false - - - characters - - - 40 - - - 200 - - - 72 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - An executable which is called with the submit message in a temporary file as first argument. It should return with an exit != 0 and a message on standard error to indicate failure. - - - Submit message &check script: - - - submitMessageCheckScriptChooser - - - - - - - - - - A file listing nicknames in a 4-column mailmap format: -'name <email> alias <email>'. - - - User/&alias configuration file: - - - nickNameMailMapChooser - - - - - - - - - - A simple file containing lines with field names like "Reviewed-By:" which will be added below the submit editor. - - - User &fields configuration file: - - - nickNameFieldsFileChooser - - - - - - - - - - Specifies a command that is executed to graphically prompt for a password, -should a repository require SSH-authentication (see documentation on SSH and the environment variable SSH_ASKPASS). - - - &SSH prompt command: - - - sshPromptChooser - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - Reset information about which version control system handles which directory. - - - Reset VCS Cache - - - - - - - - Utils::PathChooser - QWidget -
utils/pathchooser.h
- 1 - - editingFinished() - browsingFinished() - -
-
- - - - lineWrapCheckBox - toggled(bool) - lineWrapSpinBox - setEnabled(bool) - - - 175 - 21 - - - 216 - 21 - - - - -
diff --git a/src/plugins/vcsbase/commonvcssettings.cpp b/src/plugins/vcsbase/commonvcssettings.cpp index b9be1d343ae..03c8ac52389 100644 --- a/src/plugins/vcsbase/commonvcssettings.cpp +++ b/src/plugins/vcsbase/commonvcssettings.cpp @@ -25,87 +25,164 @@ #include "commonvcssettings.h" +#include "vcsbaseconstants.h" + +#include +#include +#include + +#include #include +#include -#include #include +#include -static const char settingsGroupC[] = "VCS"; -static const char nickNameMailMapKeyC[] = "NickNameMailMap"; -static const char nickNameFieldListFileKeyC[] = "NickNameFieldListFile"; -static const char submitMessageCheckScriptKeyC[] = "SubmitMessageCheckScript"; -static const char lineWrapKeyC[] = "LineWrap"; -static const char lineWrapWidthKeyC[] = "LineWrapWidth"; -static const char sshPasswordPromptKeyC[] = "SshPasswordPrompt"; - -static const int lineWrapWidthDefault = 72; -static const bool lineWrapDefault = true; - -// Return default for the ssh-askpass command (default to environment) -static inline QString sshPasswordPromptDefault() -{ - const QByteArray envSetting = qgetenv("SSH_ASKPASS"); - if (!envSetting.isEmpty()) - return QString::fromLocal8Bit(envSetting); - if (Utils::HostOsInfo::isWindowsHost()) - return QLatin1String("win-ssh-askpass"); - return QLatin1String("ssh-askpass"); -} +using namespace Utils; namespace VcsBase { namespace Internal { -CommonVcsSettings::CommonVcsSettings() : - sshPasswordPrompt(sshPasswordPromptDefault()), - lineWrap(lineWrapDefault), - lineWrapWidth(lineWrapWidthDefault) +// Return default for the ssh-askpass command (default to environment) +static QString sshPasswordPromptDefault() { + const QByteArray envSetting = qgetenv("SSH_ASKPASS"); + if (!envSetting.isEmpty()) + return QString::fromLocal8Bit(envSetting); + if (HostOsInfo::isWindowsHost()) + return QLatin1String("win-ssh-askpass"); + return QLatin1String("ssh-askpass"); } -void CommonVcsSettings::toSettings(Utils::QtcSettings *s) const +CommonVcsSettings::CommonVcsSettings() { - s->beginGroup(settingsGroupC); - s->setValueWithDefault(nickNameMailMapKeyC, nickNameMailMap); - s->setValueWithDefault(nickNameFieldListFileKeyC, nickNameFieldListFile); - s->setValueWithDefault(submitMessageCheckScriptKeyC, submitMessageCheckScript); - s->setValueWithDefault(lineWrapKeyC, lineWrap, lineWrapDefault); - s->setValueWithDefault(lineWrapWidthKeyC, lineWrapWidth, lineWrapWidthDefault); - s->setValueWithDefault(sshPasswordPromptKeyC, sshPasswordPrompt, sshPasswordPromptDefault()); - s->endGroup(); + setSettingsGroup("VCS"); + setAutoApply(false); + + registerAspect(&nickNameMailMap); + nickNameMailMap.setSettingsKey("NickNameMailMap"); + nickNameMailMap.setDisplayStyle(StringAspect::PathChooserDisplay); + nickNameMailMap.setExpectedKind(PathChooser::File); + nickNameMailMap.setHistoryCompleter("Vcs.NickMap.History"); + nickNameMailMap.setLabelText(tr("User/&alias configuration file:")); + nickNameMailMap.setToolTip(tr("A file listing nicknames in a 4-column mailmap format:\n" + "'name alias '.")); + + registerAspect(&nickNameFieldListFile); + nickNameFieldListFile.setSettingsKey("NickNameFieldListFile"); + nickNameFieldListFile.setDisplayStyle(StringAspect::PathChooserDisplay); + nickNameFieldListFile.setExpectedKind(PathChooser::File); + nickNameFieldListFile.setHistoryCompleter("Vcs.NickFields.History"); + nickNameFieldListFile.setLabelText(tr("User &fields configuration file:")); + nickNameFieldListFile.setToolTip(tr("A simple file containing lines with field names like " + "\"Reviewed-By:\" which will be added below the submit editor.")); + + registerAspect(&submitMessageCheckScript); + submitMessageCheckScript.setSettingsKey("SubmitMessageCheckScript"); + submitMessageCheckScript.setDisplayStyle(StringAspect::PathChooserDisplay); + submitMessageCheckScript.setExpectedKind(PathChooser::ExistingCommand); + submitMessageCheckScript.setHistoryCompleter("Vcs.MessageCheckScript.History"); + submitMessageCheckScript.setLabelText(tr("Submit message &check script:")); + submitMessageCheckScript.setToolTip(tr("An executable which is called with the submit message " + "in a temporary file as first argument. It should return with an exit != 0 and a message " + "on standard error to indicate failure.")); + + registerAspect(&sshPasswordPrompt); + sshPasswordPrompt.setSettingsKey("SshPasswordPrompt"); + sshPasswordPrompt.setDisplayStyle(StringAspect::PathChooserDisplay); + sshPasswordPrompt.setExpectedKind(PathChooser::ExistingCommand); + sshPasswordPrompt.setHistoryCompleter("Vcs.SshPrompt.History"); + sshPasswordPrompt.setDefaultValue(sshPasswordPromptDefault()); + sshPasswordPrompt.setLabelText(tr("&SSH prompt command:")); + sshPasswordPrompt.setToolTip(tr("Specifies a command that is executed to graphically prompt " + "for a password,\nshould a repository require SSH-authentication " + "(see documentation on SSH and the environment variable SSH_ASKPASS).")); + + registerAspect(&lineWrap); + lineWrap.setSettingsKey("LineWrap"); + lineWrap.setDefaultValue(72); + lineWrap.setLabelText(tr("Wrap submit message at:")); + + registerAspect(&lineWrapWidth); + lineWrapWidth.setSettingsKey("LineWrapWidth"); + lineWrapWidth.setSuffix(tr(" characters")); + lineWrapWidth.setDefaultValue(true); } -void CommonVcsSettings::fromSettings(QSettings *s) +// CommonSettingsWidget + +class CommonSettingsWidget final : public Core::IOptionsPageWidget { - s->beginGroup(QLatin1String(settingsGroupC)); - nickNameMailMap = s->value(QLatin1String(nickNameMailMapKeyC), QString()).toString(); - nickNameFieldListFile = s->value(QLatin1String(nickNameFieldListFileKeyC), QString()).toString(); - submitMessageCheckScript = s->value(QLatin1String(submitMessageCheckScriptKeyC), QString()).toString(); - lineWrap = s->value(QLatin1String(lineWrapKeyC), lineWrapDefault).toBool(); - lineWrapWidth = s->value(QLatin1String(lineWrapWidthKeyC), lineWrapWidthDefault).toInt(); - sshPasswordPrompt = s->value(QLatin1String(sshPasswordPromptKeyC), sshPasswordPromptDefault()).toString(); - s->endGroup(); +public: + CommonSettingsWidget(CommonOptionsPage *page); + + void apply() final; + +private: + void updatePath(); + CommonOptionsPage *m_page; +}; + + +CommonSettingsWidget::CommonSettingsWidget(CommonOptionsPage *page) + : m_page(page) +{ + CommonVcsSettings &s = m_page->settings(); + + auto cacheResetButton = new QPushButton(CommonVcsSettings::tr("Reset VCS Cache")); + cacheResetButton->setToolTip(CommonVcsSettings::tr("Reset information about which " + "version control system handles which directory.")); + + updatePath(); + + using namespace Layouting; + Column { + Row { s.lineWrap, s.lineWrapWidth, Stretch() }, + Form { + s.submitMessageCheckScript, + s.nickNameMailMap, + s.nickNameFieldListFile, + s.sshPasswordPrompt, + {}, cacheResetButton + } + }.attachTo(this); + + connect(Core::VcsManager::instance(), &Core::VcsManager::configurationChanged, + this, &CommonSettingsWidget::updatePath); + connect(cacheResetButton, &QPushButton::clicked, + Core::VcsManager::instance(), &Core::VcsManager::clearVersionControlCache); } -bool CommonVcsSettings::equals(const CommonVcsSettings &rhs) const +void CommonSettingsWidget::updatePath() { - return lineWrap == rhs.lineWrap - && lineWrapWidth == rhs.lineWrapWidth - && nickNameMailMap == rhs.nickNameMailMap - && nickNameFieldListFile == rhs.nickNameFieldListFile - && submitMessageCheckScript == rhs.submitMessageCheckScript - && sshPasswordPrompt == rhs.sshPasswordPrompt; + Environment env = Environment::systemEnvironment(); + QStringList toAdd = Core::VcsManager::additionalToolsPath(); + env.appendOrSetPath(toAdd.join(HostOsInfo::pathListSeparator())); + m_page->settings().sshPasswordPrompt.setEnvironment(env); } -QDebug operator<<(QDebug d,const CommonVcsSettings& s) +void CommonSettingsWidget::apply() { - d.nospace() << " lineWrap=" << s.lineWrap - << " lineWrapWidth=" << s.lineWrapWidth - << " nickNameMailMap='" << s.nickNameMailMap - << "' nickNameFieldListFile='" << s.nickNameFieldListFile - << "'submitMessageCheckScript='" << s.submitMessageCheckScript - << "'sshPasswordPrompt='" << s.sshPasswordPrompt - << "'\n"; - return d; + CommonVcsSettings &s = m_page->settings(); + if (s.isDirty()) { + s.apply(); + emit m_page->settingsChanged(); + } +} + +// CommonOptionsPage + +CommonOptionsPage::CommonOptionsPage() +{ + m_settings.readSettings(Core::ICore::settings()); + + setId(Constants::VCS_COMMON_SETTINGS_ID); + setDisplayName(QCoreApplication::translate("VcsBase", Constants::VCS_COMMON_SETTINGS_NAME)); + setCategory(Constants::VCS_SETTINGS_CATEGORY); + // The following act as blueprint for other pages in the same category: + setDisplayCategory(QCoreApplication::translate("VcsBase", "Version Control")); + setCategoryIconPath(":/vcsbase/images/settingscategory_vcs.png"); + setWidgetCreator([this] { return new CommonSettingsWidget(this); }); } } // namespace Internal diff --git a/src/plugins/vcsbase/commonvcssettings.h b/src/plugins/vcsbase/commonvcssettings.h index 9ecc10a2862..fdcafb0f493 100644 --- a/src/plugins/vcsbase/commonvcssettings.h +++ b/src/plugins/vcsbase/commonvcssettings.h @@ -25,44 +25,51 @@ #pragma once +#include + +#include #include -#include - -QT_BEGIN_NAMESPACE -class QDebug; -QT_END_NAMESPACE - namespace VcsBase { namespace Internal { -// Common VCS settings, message check script and user nick names. -class CommonVcsSettings +class CommonVcsSettings : public Utils::AspectContainer { + Q_DECLARE_TR_FUNCTIONS(VcsBase::Internal::CommonVcsSettings) + public: CommonVcsSettings(); - QString nickNameMailMap; - QString nickNameFieldListFile; + Utils::StringAspect nickNameMailMap; + Utils::StringAspect nickNameFieldListFile; - QString submitMessageCheckScript; + Utils::StringAspect submitMessageCheckScript; // Executable run to graphically prompt for a SSH-password. - QString sshPasswordPrompt; + Utils::StringAspect sshPasswordPrompt; - bool lineWrap; - int lineWrapWidth; - - void toSettings(Utils::QtcSettings *) const; - void fromSettings(QSettings *); - - bool equals(const CommonVcsSettings &rhs) const; + Utils::BoolAspect lineWrap; + Utils::IntegerAspect lineWrapWidth; }; -inline bool operator==(const CommonVcsSettings &s1, const CommonVcsSettings &s2) { return s1.equals(s2); } -inline bool operator!=(const CommonVcsSettings &s1, const CommonVcsSettings &s2) { return !s1.equals(s2); } QDebug operator<<(QDebug, const CommonVcsSettings &); +class CommonOptionsPage final : public Core::IOptionsPage +{ + Q_OBJECT + +public: + explicit CommonOptionsPage(); + + CommonVcsSettings &settings() { return m_settings; } + +signals: + void settingsChanged(); + +private: + CommonVcsSettings m_settings; +}; + } // namespace Internal } // namespace VcsBase diff --git a/src/plugins/vcsbase/vcsbase.pro b/src/plugins/vcsbase/vcsbase.pro index db33e932401..7b1d8f2e35a 100644 --- a/src/plugins/vcsbase/vcsbase.pro +++ b/src/plugins/vcsbase/vcsbase.pro @@ -17,7 +17,6 @@ HEADERS += vcsbase_global.h \ basevcssubmiteditorfactory.h \ submitfilemodel.h \ commonvcssettings.h \ - commonsettingspage.h \ nicknamedialog.h \ vcsoutputwindow.h \ cleandialog.h \ @@ -44,7 +43,6 @@ SOURCES += vcsplugin.cpp \ basevcssubmiteditorfactory.cpp \ submitfilemodel.cpp \ commonvcssettings.cpp \ - commonsettingspage.cpp \ nicknamedialog.cpp \ vcsoutputwindow.cpp \ cleandialog.cpp \ @@ -58,7 +56,7 @@ SOURCES += vcsplugin.cpp \ RESOURCES += vcsbase.qrc -FORMS += commonsettingspage.ui \ +FORMS += \ nicknamedialog.ui \ cleandialog.ui \ submiteditorwidget.ui diff --git a/src/plugins/vcsbase/vcsbase.qbs b/src/plugins/vcsbase/vcsbase.qbs index ac629c450d8..ecbad61f1b0 100644 --- a/src/plugins/vcsbase/vcsbase.qbs +++ b/src/plugins/vcsbase/vcsbase.qbs @@ -28,9 +28,6 @@ QtcPlugin { "cleandialog.cpp", "cleandialog.h", "cleandialog.ui", - "commonsettingspage.cpp", - "commonsettingspage.h", - "commonsettingspage.ui", "commonvcssettings.cpp", "commonvcssettings.h", "diffandloghighlighter.cpp", diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index 9ff8a0b9977..39930de6232 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -721,7 +721,7 @@ QString findRepositoryForDirectory(const QString &dirS, const QString &checkFile // Is SSH prompt configured? QString sshPrompt() { - return Internal::VcsPlugin::instance()->settings().sshPasswordPrompt; + return Internal::VcsPlugin::instance()->settings().sshPasswordPrompt.value(); } bool isSshPromptConfigured() diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp index d3c283da2a4..da4fbb8a308 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp @@ -128,7 +128,7 @@ using namespace Utils; static inline QString submitMessageCheckScript() { - return VcsPlugin::instance()->settings().submitMessageCheckScript; + return VcsPlugin::instance()->settings().submitMessageCheckScript.value(); } class VcsBaseSubmitEditorPrivate @@ -199,32 +199,33 @@ void VcsBaseSubmitEditor::setParameters(const VcsBaseSubmitEditorParameters &par connect(descriptionEdit, &QTextEdit::textChanged, this, &VcsBaseSubmitEditor::fileContentsChanged); - const CommonVcsSettings settings = VcsPlugin::instance()->settings(); + const CommonVcsSettings &settings = VcsPlugin::instance()->settings(); // Add additional context menu settings - if (!settings.submitMessageCheckScript.isEmpty() || !settings.nickNameMailMap.isEmpty()) { + if (!settings.submitMessageCheckScript.value().isEmpty() + || !settings.nickNameMailMap.value().isEmpty()) { auto sep = new QAction(this); sep->setSeparator(true); d->m_widget->addDescriptionEditContextMenuAction(sep); // Run check action - if (!settings.submitMessageCheckScript.isEmpty()) { + if (!settings.submitMessageCheckScript.value().isEmpty()) { auto checkAction = new QAction(tr("Check Message"), this); connect(checkAction, &QAction::triggered, this, &VcsBaseSubmitEditor::slotCheckSubmitMessage); d->m_widget->addDescriptionEditContextMenuAction(checkAction); } // Insert nick - if (!settings.nickNameMailMap.isEmpty()) { + if (!settings.nickNameMailMap.value().isEmpty()) { auto insertAction = new QAction(tr("Insert Name..."), this); connect(insertAction, &QAction::triggered, this, &VcsBaseSubmitEditor::slotInsertNickName); d->m_widget->addDescriptionEditContextMenuAction(insertAction); } } // Do we have user fields? - if (!settings.nickNameFieldListFile.isEmpty()) - createUserFields(settings.nickNameFieldListFile); + if (!settings.nickNameFieldListFile.value().isEmpty()) + createUserFields(settings.nickNameFieldListFile.value()); // wrapping. etc - slotUpdateEditorSettings(settings); + slotUpdateEditorSettings(); connect(VcsPlugin::instance(), &VcsPlugin::settingsChanged, this, &VcsBaseSubmitEditor::slotUpdateEditorSettings); connect(Core::EditorManager::instance(), &Core::EditorManager::currentEditorChanged, @@ -250,10 +251,11 @@ VcsBaseSubmitEditor::~VcsBaseSubmitEditor() delete d; } -void VcsBaseSubmitEditor::slotUpdateEditorSettings(const CommonVcsSettings &s) +void VcsBaseSubmitEditor::slotUpdateEditorSettings() { - setLineWrapWidth(s.lineWrapWidth); - setLineWrap(s.lineWrap); + const CommonVcsSettings &s = VcsPlugin::instance()->settings(); + setLineWrapWidth(s.lineWrapWidth.value()); + setLineWrap(s.lineWrap.value()); } // Return a trimmed list of non-empty field texts diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.h b/src/plugins/vcsbase/vcsbasesubmiteditor.h index 3524de46661..73b4209b6e0 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.h +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.h @@ -153,7 +153,7 @@ private: void slotCheckSubmitMessage(); void slotInsertNickName(); void slotSetFieldNickName(int); - void slotUpdateEditorSettings(const VcsBase::Internal::CommonVcsSettings &); + void slotUpdateEditorSettings(); void createUserFields(const QString &fieldConfigFile); bool checkSubmitMessage(QString *errorMessage) const; diff --git a/src/plugins/vcsbase/vcsplugin.cpp b/src/plugins/vcsbase/vcsplugin.cpp index 43d17145de0..4ac28c46c22 100644 --- a/src/plugins/vcsbase/vcsplugin.cpp +++ b/src/plugins/vcsbase/vcsplugin.cpp @@ -28,7 +28,7 @@ #include "vcsbaseconstants.h" #include "vcsbasesubmiteditor.h" -#include "commonsettingspage.h" +#include "commonvcssettings.h" #include "nicknamedialog.h" #include "vcsoutputwindow.h" #include "wizard/vcscommandpage.h" @@ -140,7 +140,7 @@ VcsPlugin *VcsPlugin::instance() return m_instance; } -CommonVcsSettings VcsPlugin::settings() const +CommonVcsSettings &VcsPlugin::settings() const { return d->m_settingsPage.settings(); } @@ -158,7 +158,7 @@ QStandardItemModel *VcsPlugin::nickNameModel() void VcsPlugin::populateNickNameModel() { QString errorMessage; - if (!NickNameDialog::populateModelFromMailCapFile(settings().nickNameMailMap, + if (!NickNameDialog::populateModelFromMailCapFile(settings().nickNameMailMap.value(), d->m_nickNameModel, &errorMessage)) { qWarning("%s", qPrintable(errorMessage)); diff --git a/src/plugins/vcsbase/vcsplugin.h b/src/plugins/vcsbase/vcsplugin.h index 516a9f57fb0..f236a390485 100644 --- a/src/plugins/vcsbase/vcsplugin.h +++ b/src/plugins/vcsbase/vcsplugin.h @@ -52,7 +52,7 @@ public: static VcsPlugin *instance(); - CommonVcsSettings settings() const; + CommonVcsSettings &settings() const; // Model of user nick names used for the submit // editor. Stored centrally here to achieve delayed @@ -60,7 +60,7 @@ public: QStandardItemModel *nickNameModel(); signals: - void settingsChanged(const VcsBase::Internal::CommonVcsSettings &s); + void settingsChanged(); void submitEditorAboutToClose(VcsBase::VcsBaseSubmitEditor *e, bool *result); private: