diff options
Diffstat (limited to 'src/plugins/vcsbase/commonvcssettings.cpp')
-rw-r--r-- | src/plugins/vcsbase/commonvcssettings.cpp | 111 |
1 files changed, 43 insertions, 68 deletions
diff --git a/src/plugins/vcsbase/commonvcssettings.cpp b/src/plugins/vcsbase/commonvcssettings.cpp index 160095d38dc..d286164b5b9 100644 --- a/src/plugins/vcsbase/commonvcssettings.cpp +++ b/src/plugins/vcsbase/commonvcssettings.cpp @@ -20,8 +20,7 @@ using namespace Utils; -namespace VcsBase { -namespace Internal { +namespace VcsBase::Internal { // Return default for the ssh-askpass command (default to environment) static QString sshPasswordPromptDefault() @@ -39,27 +38,21 @@ CommonVcsSettings::CommonVcsSettings() 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::tr("User/&alias configuration file:")); nickNameMailMap.setToolTip(Tr::tr("A file listing nicknames in a 4-column mailmap format:\n" "'name <email> alias <email>'.")); - registerAspect(&nickNameFieldListFile); nickNameFieldListFile.setSettingsKey("NickNameFieldListFile"); - nickNameFieldListFile.setDisplayStyle(StringAspect::PathChooserDisplay); nickNameFieldListFile.setExpectedKind(PathChooser::File); nickNameFieldListFile.setHistoryCompleter("Vcs.NickFields.History"); nickNameFieldListFile.setLabelText(Tr::tr("User &fields configuration file:")); nickNameFieldListFile.setToolTip(Tr::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::tr("Submit message &check script:")); @@ -67,9 +60,7 @@ CommonVcsSettings::CommonVcsSettings() "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()); @@ -78,12 +69,10 @@ CommonVcsSettings::CommonVcsSettings() "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(true); lineWrap.setLabelText(Tr::tr("Wrap submit message at:")); - registerAspect(&lineWrapWidth); lineWrapWidth.setSettingsKey("LineWrapWidth"); lineWrapWidth.setSuffix(Tr::tr(" characters")); lineWrapWidth.setDefaultValue(72); @@ -94,61 +83,48 @@ CommonVcsSettings::CommonVcsSettings() class CommonSettingsWidget final : public Core::IOptionsPageWidget { 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(Tr::tr("Reset VCS Cache")); - cacheResetButton->setToolTip(Tr::tr("Reset information about which " - "version control system handles which directory.")); - - updatePath(); - - using namespace Layouting; - Column { - Row { s.lineWrap, s.lineWrapWidth, st }, - 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); -} - -void CommonSettingsWidget::updatePath() -{ - EnvironmentChange change; - change.addAppendToPath(Core::VcsManager::additionalToolsPath()); - m_page->settings().sshPasswordPrompt.setEnvironmentChange(change); -} - -void CommonSettingsWidget::apply() -{ - CommonVcsSettings &s = m_page->settings(); - if (s.isDirty()) { - s.apply(); - s.writeSettings(Core::ICore::settings()); - emit m_page->settingsChanged(); + 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); + }; + + using namespace Layouting; + Column { + Row { s.lineWrap, s.lineWrapWidth, st }, + Form { + s.submitMessageCheckScript, br, + s.nickNameMailMap, br, + s.nickNameFieldListFile, br, + s.sshPasswordPrompt, br, + {}, cacheResetButton + } + }.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 @@ -165,5 +141,4 @@ CommonOptionsPage::CommonOptionsPage() setWidgetCreator([this] { return new CommonSettingsWidget(this); }); } -} // namespace Internal -} // namespace VcsBase +} // VcsBase::Internal |