summaryrefslogtreecommitdiff
path: root/src/plugins/subversion
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@theqtcompany.com>2015-03-26 12:22:29 +0100
committerTobias Hunger <tobias.hunger@theqtcompany.com>2015-04-08 09:30:44 +0000
commit90ce38da39ba7acf6f7883a86916abcfc7efe23c (patch)
tree48a34950ff0b1a64d1f052ede5609e3a949837fc /src/plugins/subversion
parentd3100774f9b2b342fe36b9b3d213934f79e96b64 (diff)
downloadqt-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.cpp5
-rw-r--r--src/plugins/subversion/settingspage.cpp19
-rw-r--r--src/plugins/subversion/settingspage.h13
-rw-r--r--src/plugins/subversion/subversionclient.cpp28
-rw-r--r--src/plugins/subversion/subversionclient.h6
-rw-r--r--src/plugins/subversion/subversioncontrol.cpp9
-rw-r--r--src/plugins/subversion/subversioncontrol.h1
-rw-r--r--src/plugins/subversion/subversionplugin.cpp54
-rw-r--r--src/plugins/subversion/subversionplugin.h6
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;