diff options
author | Tobias Hunger <tobias.hunger@theqtcompany.com> | 2015-03-26 12:22:29 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@theqtcompany.com> | 2015-04-08 09:30:44 +0000 |
commit | 90ce38da39ba7acf6f7883a86916abcfc7efe23c (patch) | |
tree | 48a34950ff0b1a64d1f052ede5609e3a949837fc /src/plugins/subversion | |
parent | d3100774f9b2b342fe36b9b3d213934f79e96b64 (diff) | |
download | qt-creator-90ce38da39ba7acf6f7883a86916abcfc7efe23c.tar.gz |
Vcs: Move handling of settings from VcsBaseClient to VcsBaseClientImpl
... and update users of that functionality accordingly.
Unexpected plus: Now every supported VCS actually saves their setting
when requested.
Change-Id: I02db7b2ce14e5f52d26409b2a01aea290c2a294a
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/subversion')
-rw-r--r-- | src/plugins/subversion/checkoutwizard.cpp | 5 | ||||
-rw-r--r-- | src/plugins/subversion/settingspage.cpp | 19 | ||||
-rw-r--r-- | src/plugins/subversion/settingspage.h | 13 | ||||
-rw-r--r-- | src/plugins/subversion/subversionclient.cpp | 28 | ||||
-rw-r--r-- | src/plugins/subversion/subversionclient.h | 6 | ||||
-rw-r--r-- | src/plugins/subversion/subversioncontrol.cpp | 9 | ||||
-rw-r--r-- | src/plugins/subversion/subversioncontrol.h | 1 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.cpp | 54 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.h | 6 |
9 files changed, 67 insertions, 74 deletions
diff --git a/src/plugins/subversion/checkoutwizard.cpp b/src/plugins/subversion/checkoutwizard.cpp index c7b655d65a..4fa5fd0ae2 100644 --- a/src/plugins/subversion/checkoutwizard.cpp +++ b/src/plugins/subversion/checkoutwizard.cpp @@ -74,8 +74,9 @@ VcsCommand *CheckoutWizard::createCommand(FileName *checkoutDir) } QTC_ASSERT(cwp, return 0); - const SubversionSettings settings = SubversionPlugin::instance()->settings(); - const FileName binary = settings.binaryPath(); + SubversionClient *client = SubversionPlugin::instance()->client(); + const VcsBaseClientSettings &settings = client->settings(); + const FileName binary = client->vcsBinary(); const QString directory = cwp->directory(); QStringList args; args << QLatin1String("checkout"); diff --git a/src/plugins/subversion/settingspage.cpp b/src/plugins/subversion/settingspage.cpp index 6f2bfa9994..851f8ae2c9 100644 --- a/src/plugins/subversion/settingspage.cpp +++ b/src/plugins/subversion/settingspage.cpp @@ -29,8 +29,10 @@ ****************************************************************************/ #include "settingspage.h" -#include "subversionsettings.h" + +#include "subversionclient.h" #include "subversionplugin.h" +#include "subversionsettings.h" #include <coreplugin/icore.h> #include <extensionsystem/pluginmanager.h> @@ -43,6 +45,7 @@ using namespace Subversion::Internal; using namespace Utils; +using namespace VcsBase; SettingsPageWidget::SettingsPageWidget(QWidget *parent) : QWidget(parent) @@ -53,7 +56,7 @@ SettingsPageWidget::SettingsPageWidget(QWidget *parent) : m_ui.pathChooser->setPromptDialogTitle(tr("Subversion Command")); } -SubversionSettings SettingsPageWidget::settings() const +VcsBase::VcsBaseClientSettings SettingsPageWidget::settings() const { SubversionSettings rc; rc.setValue(SubversionSettings::binaryPathKey, m_ui.pathChooser->rawPath()); @@ -70,7 +73,7 @@ SubversionSettings SettingsPageWidget::settings() const return rc; } -void SettingsPageWidget::setSettings(const SubversionSettings &s) +void SettingsPageWidget::setSettings(const VcsBaseClientSettings &s) { m_ui.pathChooser->setFileName(s.binaryPath()); m_ui.usernameLineEdit->setText(s.stringValue(SubversionSettings::userKey)); @@ -94,14 +97,20 @@ QWidget *SettingsPage::widget() { if (!m_widget) { m_widget = new SettingsPageWidget; - m_widget->setSettings(SubversionPlugin::instance()->settings()); + m_widget->setSettings(SubversionPlugin::instance()->client()->settings()); } return m_widget; } void SettingsPage::apply() { - SubversionPlugin::instance()->setSettings(m_widget->settings()); + const VcsBaseClientSettings newSettings = m_widget->settings(); + VcsBaseClientSettings &s = SubversionPlugin::instance()->client()->settings(); + if (s != newSettings) { + s = newSettings; + s.writeSettings(Core::ICore::settings()); + emit settingsChanged(); + } } void SettingsPage::finish() diff --git a/src/plugins/subversion/settingspage.h b/src/plugins/subversion/settingspage.h index c705122e75..dc9ab2b8d0 100644 --- a/src/plugins/subversion/settingspage.h +++ b/src/plugins/subversion/settingspage.h @@ -43,11 +43,13 @@ QT_BEGIN_NAMESPACE class QSettings; QT_END_NAMESPACE +namespace VcsBase { +class VcsBaseClientSettings; +} // namespace VcsBa + namespace Subversion { namespace Internal { -class SubversionSettings; - class SettingsPageWidget : public QWidget { Q_OBJECT @@ -55,8 +57,8 @@ class SettingsPageWidget : public QWidget public: explicit SettingsPageWidget(QWidget *parent = 0); - SubversionSettings settings() const; - void setSettings(const SubversionSettings &); + VcsBase::VcsBaseClientSettings settings() const; + void setSettings(const VcsBase::VcsBaseClientSettings &s); private: Ui::SettingsPage m_ui; @@ -74,6 +76,9 @@ public: void apply(); void finish(); +signals: + void settingsChanged(); + private: QPointer<SettingsPageWidget> m_widget; }; diff --git a/src/plugins/subversion/subversionclient.cpp b/src/plugins/subversion/subversionclient.cpp index 58045aa281..db1b2be053 100644 --- a/src/plugins/subversion/subversionclient.cpp +++ b/src/plugins/subversion/subversionclient.cpp @@ -62,24 +62,18 @@ class SubversionLogParameterWidget : public VcsBaseEditorParameterWidget { Q_OBJECT public: - SubversionLogParameterWidget(SubversionSettings *settings, QWidget *parent = 0) : + SubversionLogParameterWidget(VcsBaseClientSettings &settings, QWidget *parent = 0) : VcsBaseEditorParameterWidget(parent) { mapSetting(addToggleButton(QLatin1String("--verbose"), tr("Verbose"), tr("Show files changed in each revision")), - settings->boolPointer(SubversionSettings::logVerboseKey)); + settings.boolPointer(SubversionSettings::logVerboseKey)); } }; -SubversionClient::SubversionClient(SubversionSettings *settings) : - VcsBaseClient(settings) +SubversionClient::SubversionClient() : VcsBaseClient(new SubversionSettings) { - setLogParameterWidgetCreator([=] { return new SubversionLogParameterWidget(settings); }); -} - -SubversionSettings *SubversionClient::settings() const -{ - return dynamic_cast<SubversionSettings *>(VcsBaseClient::settings()); + setLogParameterWidgetCreator([this] { return new SubversionLogParameterWidget(settings()); }); } VcsCommand *SubversionClient::createCommitCmd(const QString &repositoryRoot, @@ -89,7 +83,7 @@ VcsCommand *SubversionClient::createCommitCmd(const QString &repositoryRoot, { const QStringList svnExtraOptions = QStringList(extraOptions) - << SubversionClient::addAuthenticationOptions(*settings()) + << SubversionClient::addAuthenticationOptions(settings()) << QLatin1String(Constants::NON_INTERACTIVE_OPTION) << QLatin1String("--encoding") << QLatin1String("utf8") << QLatin1String("--file") << commitMessageFile; @@ -124,9 +118,9 @@ Id SubversionClient::vcsEditorKind(VcsCommandTag cmd) const } // Add authorization options to the command line arguments. -QStringList SubversionClient::addAuthenticationOptions(const SubversionSettings &settings) +QStringList SubversionClient::addAuthenticationOptions(const VcsBaseClientSettings &settings) { - if (!settings.hasAuthentication()) + if (!static_cast<const SubversionSettings &>(settings).hasAuthentication()) return QStringList(); const QString userName = settings.stringValue(SubversionSettings::userKey); @@ -223,7 +217,7 @@ void DiffController::setChangeNumber(int changeNumber) QString DiffController::getDescription() const { QStringList args(QLatin1String("log")); - args << SubversionClient::addAuthenticationOptions(*m_client->settings()); + args << SubversionClient::addAuthenticationOptions(m_client->settings()); args << QLatin1String("-r"); args << QString::number(m_changeNumber); const SubversionResponse logResponse = @@ -247,7 +241,7 @@ void DiffController::postCollectTextualDiffOutput() QStringList args; args << QLatin1String("diff"); - args << m_client->addAuthenticationOptions(*m_client->settings()); + args << m_client->addAuthenticationOptions(m_client->settings()); args << QLatin1String("--internal-diff"); if (ignoreWhitespace()) args << QLatin1String("-x") << QLatin1String("-uw"); @@ -312,10 +306,10 @@ void SubversionClient::log(const QString &workingDir, const QStringList &extraOptions, bool enableAnnotationContextMenu) { - const auto logCount = settings()->intValue(SubversionSettings::logCountKey); + const auto logCount = settings().intValue(SubversionSettings::logCountKey); QStringList svnExtraOptions = QStringList(extraOptions) - << SubversionClient::addAuthenticationOptions(*settings()); + << SubversionClient::addAuthenticationOptions(settings()); if (logCount > 0) svnExtraOptions << QLatin1String("-l") << QString::number(logCount); diff --git a/src/plugins/subversion/subversionclient.h b/src/plugins/subversion/subversionclient.h index 5db0327b16..cd34bb779c 100644 --- a/src/plugins/subversion/subversionclient.h +++ b/src/plugins/subversion/subversionclient.h @@ -48,9 +48,7 @@ class SubversionClient : public VcsBase::VcsBaseClient Q_OBJECT public: - SubversionClient(SubversionSettings *settings); - - SubversionSettings *settings() const; + SubversionClient(); VcsBase::VcsCommand *createCommitCmd(const QString &repositoryRoot, const QStringList &files, @@ -75,7 +73,7 @@ public: StatusItem parseStatusLine(const QString &line) const; // Add authorization options to the command line arguments. - static QStringList addAuthenticationOptions(const SubversionSettings &settings); + static QStringList addAuthenticationOptions(const VcsBase::VcsBaseClientSettings &settings); QString synchronousTopic(const QString &repository); diff --git a/src/plugins/subversion/subversioncontrol.cpp b/src/plugins/subversion/subversioncontrol.cpp index 052abac0eb..a6fe4d48d4 100644 --- a/src/plugins/subversion/subversioncontrol.cpp +++ b/src/plugins/subversion/subversioncontrol.cpp @@ -29,6 +29,8 @@ ****************************************************************************/ #include "subversioncontrol.h" + +#include "subversionclient.h" #include "subversionplugin.h" #include "subversionsettings.h" @@ -80,7 +82,7 @@ Core::Id SubversionControl::id() const bool SubversionControl::isConfigured() const { - const Utils::FileName binary = m_plugin->settings().binaryPath(); + const Utils::FileName binary = m_plugin->client()->vcsBinary(); if (binary.isEmpty()) return false; QFileInfo fi = binary.toFileInfo(); @@ -161,10 +163,5 @@ void SubversionControl::emitFilesChanged(const QStringList &l) emit filesChanged(l); } -void SubversionControl::emitConfigurationChanged() -{ - emit configurationChanged(); -} - } // namespace Internal } // namespace Subversion diff --git a/src/plugins/subversion/subversioncontrol.h b/src/plugins/subversion/subversioncontrol.h index a6530ed695..54f8ac0286 100644 --- a/src/plugins/subversion/subversioncontrol.h +++ b/src/plugins/subversion/subversioncontrol.h @@ -62,7 +62,6 @@ public: void emitRepositoryChanged(const QString &); void emitFilesChanged(const QStringList &); - void emitConfigurationChanged(); private: SubversionPlugin *m_plugin; diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 939a8ae85a..aaef47b008 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -247,8 +247,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e Utils::MimeDatabase::addMimeTypes(QLatin1String(":/trolltech.subversion/Subversion.mimetypes.xml")); - m_settings.readSettings(ICore::settings()); - m_client = new SubversionClient(&m_settings); + m_client = new SubversionClient; addAutoReleasedObject(new SettingsPage); @@ -451,6 +450,12 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e return true; } +SubversionClient *SubversionPlugin::client() const +{ + QTC_CHECK(m_client); + return m_client; +} + bool SubversionPlugin::submitEditorAboutToClose() { if (!isCommitEditorOpen()) @@ -470,7 +475,7 @@ bool SubversionPlugin::submitEditorAboutToClose() // Prompt user. Force a prompt unless submit was actually invoked (that // is, the editor was closed or shutdown). - SubversionSettings newSettings = m_settings; + VcsBaseClientSettings &newSettings = client()->settings(); const VcsBaseSubmitEditor::PromptSubmitResult answer = editor->promptSubmit(tr("Closing Subversion Editor"), tr("Do you want to commit the change?"), @@ -487,7 +492,6 @@ bool SubversionPlugin::submitEditorAboutToClose() default: break; } - setSettings(newSettings); // in case someone turned prompting off const QStringList fileList = editor->checkedFiles(); bool closeEditor = true; if (!fileList.empty()) { @@ -578,7 +582,7 @@ void SubversionPlugin::revertAll() // NoteL: Svn "revert ." doesn not work. QStringList args; args << QLatin1String("revert"); - args << SubversionClient::addAuthenticationOptions(settings()); + args << SubversionClient::addAuthenticationOptions(client()->settings()); args << QLatin1String("--recursive") << state.topLevel(); const SubversionResponse revertResponse = runSvn(state.topLevel(), args, m_client->vcsTimeout() * 1000, @@ -596,7 +600,7 @@ void SubversionPlugin::revertCurrentFile() QTC_ASSERT(state.hasFile(), return); QStringList args(QLatin1String("diff")); - args << SubversionClient::addAuthenticationOptions(settings()); + args << SubversionClient::addAuthenticationOptions(client()->settings()); args.push_back(state.relativeCurrentFile()); const SubversionResponse diffResponse @@ -617,7 +621,7 @@ void SubversionPlugin::revertCurrentFile() // revert args.clear(); args << QLatin1String("revert"); - args << SubversionClient::addAuthenticationOptions(settings()); + args << SubversionClient::addAuthenticationOptions(client()->settings()); args << state.relativeCurrentFile(); const SubversionResponse revertResponse @@ -680,7 +684,7 @@ void SubversionPlugin::startCommit(const QString &workingDir, const QStringList } QStringList args(QLatin1String("status")); - args << SubversionClient::addAuthenticationOptions(settings()); + args << SubversionClient::addAuthenticationOptions(client()->settings()); args += files; const SubversionResponse response @@ -760,7 +764,7 @@ void SubversionPlugin::svnStatus(const QString &workingDir, const QString &relat const VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); QStringList args(QLatin1String("status")); - args << SubversionClient::addAuthenticationOptions(settings()); + args << SubversionClient::addAuthenticationOptions(client()->settings()); if (!relativePath.isEmpty()) args.append(relativePath); VcsOutputWindow::setRepository(workingDir); @@ -786,7 +790,7 @@ void SubversionPlugin::updateProject() void SubversionPlugin::svnUpdate(const QString &workingDir, const QString &relativePath) { QStringList args(QLatin1String("update")); - args << SubversionClient::addAuthenticationOptions(settings()); + args << SubversionClient::addAuthenticationOptions(client()->settings()); args.push_back(QLatin1String(Constants::NON_INTERACTIVE_OPTION)); if (!relativePath.isEmpty()) args.append(relativePath); @@ -820,8 +824,9 @@ void SubversionPlugin::vcsAnnotate(const QString &workingDir, const QString &fil QTextCodec *codec = VcsBaseEditor::getCodec(source); QStringList args(QLatin1String("annotate")); - args << SubversionClient::addAuthenticationOptions(settings()); - if (m_settings.boolValue(SubversionSettings::spaceIgnorantAnnotationKey)) + const VcsBaseClientSettings &s = client()->settings(); + args << SubversionClient::addAuthenticationOptions(s); + if (s.boolValue(SubversionSettings::spaceIgnorantAnnotationKey)) args << QLatin1String("-x") << QLatin1String("-uw"); if (!revision.isEmpty()) args << QLatin1String("-r") << revision; @@ -913,7 +918,7 @@ SubversionResponse SubversionPlugin::runSvn(const QString &workingDir, const QStringList &arguments, int timeOut, unsigned flags, QTextCodec *outputCodec) const { - const FileName executable = m_settings.binaryPath(); + const FileName executable = client()->vcsBinary(); SubversionResponse response; if (executable.isEmpty()) { response.error = true; @@ -960,20 +965,6 @@ IEditor *SubversionPlugin::showOutputInEditor(const QString &title, const QStrin return editor; } -SubversionSettings SubversionPlugin::settings() const -{ - return m_settings; -} - -void SubversionPlugin::setSettings(const SubversionSettings &s) -{ - if (s != m_settings) { - m_settings = s; - m_settings.writeSettings(ICore::settings()); - subVersionControl()->emitConfigurationChanged(); - } -} - SubversionPlugin *SubversionPlugin::instance() { QTC_ASSERT(m_subversionPluginInstance, return m_subversionPluginInstance); @@ -1004,7 +995,7 @@ bool SubversionPlugin::vcsAdd(const QString &workingDir, const QString &rawFileN const QString file = QDir::toNativeSeparators(rawFileName); QStringList args; args << QLatin1String("add") - << SubversionClient::addAuthenticationOptions(settings()) + << SubversionClient::addAuthenticationOptions(client()->settings()) << QLatin1String("--parents") << file; const SubversionResponse response = runSvn(workingDir, args, m_client->vcsTimeout() * 1000, @@ -1018,7 +1009,8 @@ bool SubversionPlugin::vcsDelete(const QString &workingDir, const QString &rawFi QStringList args; args << QLatin1String("delete"); - args << SubversionClient::addAuthenticationOptions(settings()) << QLatin1String("--force") << file; + args << SubversionClient::addAuthenticationOptions(client()->settings()) + << QLatin1String("--force") << file; const SubversionResponse response = runSvn(workingDir, args, m_client->vcsTimeout() * 1000, @@ -1029,7 +1021,7 @@ bool SubversionPlugin::vcsDelete(const QString &workingDir, const QString &rawFi bool SubversionPlugin::vcsMove(const QString &workingDir, const QString &from, const QString &to) { QStringList args(QLatin1String("move")); - args << SubversionClient::addAuthenticationOptions(settings()); + args << SubversionClient::addAuthenticationOptions(client()->settings()); args << QDir::toNativeSeparators(from) << QDir::toNativeSeparators(to); const SubversionResponse response = runSvn(workingDir, args, m_client->vcsTimeout() * 1000, @@ -1093,7 +1085,7 @@ bool SubversionPlugin::managesFile(const QString &workingDirectory, const QStrin { QStringList args; args << QLatin1String("status"); - args << SubversionClient::addAuthenticationOptions(settings()) << fileName; + args << SubversionClient::addAuthenticationOptions(client()->settings()) << fileName; SubversionResponse response = runSvn(workingDirectory, args, m_client->vcsTimeout() * 1000, 0); return response.stdOut.isEmpty() || response.stdOut.at(0) != QLatin1Char('?'); diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h index ffbbc7b2dc..4ce214c923 100644 --- a/src/plugins/subversion/subversionplugin.h +++ b/src/plugins/subversion/subversionplugin.h @@ -75,10 +75,9 @@ public: bool initialize(const QStringList &arguments, QString *errorMessage); - SubversionSubmitEditor *openSubversionSubmitEditor(const QString &fileName); + SubversionClient *client() const; - SubversionSettings settings() const; - void setSettings(const SubversionSettings &s); + SubversionSubmitEditor *openSubversionSubmitEditor(const QString &fileName); // IVersionControl bool vcsAdd(const QString &workingDir, const QString &fileName); @@ -150,7 +149,6 @@ private: const QStringList m_svnDirectories; - SubversionSettings m_settings; SubversionClient *m_client; QString m_commitMessageFileName; QString m_commitRepository; |