aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/mercurial
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/mercurial
parentd3100774f9b2b342fe36b9b3d213934f79e96b64 (diff)
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/mercurial')
-rw-r--r--src/plugins/mercurial/clonewizard.cpp3
-rw-r--r--src/plugins/mercurial/mercurialclient.cpp17
-rw-r--r--src/plugins/mercurial/mercurialclient.h4
-rw-r--r--src/plugins/mercurial/mercurialcontrol.cpp7
-rw-r--r--src/plugins/mercurial/mercurialcontrol.h1
-rw-r--r--src/plugins/mercurial/mercurialplugin.cpp16
-rw-r--r--src/plugins/mercurial/mercurialplugin.h3
-rw-r--r--src/plugins/mercurial/optionspage.cpp24
-rw-r--r--src/plugins/mercurial/optionspage.h10
9 files changed, 32 insertions, 53 deletions
diff --git a/src/plugins/mercurial/clonewizard.cpp b/src/plugins/mercurial/clonewizard.cpp
index bd4e432819..036e6018a6 100644
--- a/src/plugins/mercurial/clonewizard.cpp
+++ b/src/plugins/mercurial/clonewizard.cpp
@@ -30,6 +30,7 @@
#include "clonewizard.h"
#include "clonewizardpage.h"
+#include "mercurialclient.h"
#include "mercurialplugin.h"
#include "mercurialsettings.h"
@@ -74,7 +75,7 @@ VcsCommand *CloneWizard::createCommand(Utils::FileName *checkoutDir)
if (!cwp)
return 0;
- const MercurialSettings &settings = MercurialPlugin::settings();
+ const VcsBaseClientSettings &settings = MercurialPlugin::client()->settings();
QString path = cwp->path();
QString directory = cwp->directory();
diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp
index 11d82b4ec0..31c50f0f32 100644
--- a/src/plugins/mercurial/mercurialclient.cpp
+++ b/src/plugins/mercurial/mercurialclient.cpp
@@ -58,25 +58,20 @@ class MercurialDiffParameterWidget : public VcsBaseEditorParameterWidget
{
Q_OBJECT
public:
- MercurialDiffParameterWidget(MercurialSettings *settings, QWidget *parent = 0) :
+ MercurialDiffParameterWidget(VcsBaseClientSettings &settings, QWidget *parent = 0) :
VcsBaseEditorParameterWidget(parent)
{
mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace")),
- settings->boolPointer(MercurialSettings::diffIgnoreWhiteSpaceKey));
+ settings.boolPointer(MercurialSettings::diffIgnoreWhiteSpaceKey));
mapSetting(addToggleButton(QLatin1String("-B"), tr("Ignore Blank Lines")),
- settings->boolPointer(MercurialSettings::diffIgnoreBlankLinesKey));
+ settings.boolPointer(MercurialSettings::diffIgnoreBlankLinesKey));
}
};
-MercurialClient::MercurialClient(MercurialSettings *settings) :
- VcsBaseClient(settings)
+MercurialClient::MercurialClient() :
+ VcsBaseClient(new MercurialSettings)
{
- setDiffParameterWidgetCreator([=] { return new MercurialDiffParameterWidget(settings); });
-}
-
-MercurialSettings *MercurialClient::settings() const
-{
- return dynamic_cast<MercurialSettings *>(VcsBaseClient::settings());
+ setDiffParameterWidgetCreator([this] { return new MercurialDiffParameterWidget(settings()); });
}
bool MercurialClient::manifestSync(const QString &repository, const QString &relativeFilename)
diff --git a/src/plugins/mercurial/mercurialclient.h b/src/plugins/mercurial/mercurialclient.h
index cae751fce8..80c9067e1c 100644
--- a/src/plugins/mercurial/mercurialclient.h
+++ b/src/plugins/mercurial/mercurialclient.h
@@ -42,9 +42,7 @@ class MercurialClient : public VcsBase::VcsBaseClient
{
Q_OBJECT
public:
- MercurialClient(MercurialSettings *settings);
-
- MercurialSettings *settings() const;
+ MercurialClient();
bool synchronousClone(const QString &workingDir,
const QString &srcLocation,
diff --git a/src/plugins/mercurial/mercurialcontrol.cpp b/src/plugins/mercurial/mercurialcontrol.cpp
index 8482d70353..6f5ad95fb1 100644
--- a/src/plugins/mercurial/mercurialcontrol.cpp
+++ b/src/plugins/mercurial/mercurialcontrol.cpp
@@ -98,7 +98,7 @@ bool MercurialControl::managesFile(const QString &workingDirectory, const QStrin
bool MercurialControl::isConfigured() const
{
- const Utils::FileName binary = mercurialClient->settings()->binaryPath();
+ const Utils::FileName binary = mercurialClient->vcsBinary();
if (binary.isEmpty())
return false;
QFileInfo fi = binary.toFileInfo();
@@ -186,10 +186,5 @@ void MercurialControl::changed(const QVariant &v)
}
}
-void MercurialControl::emitConfigurationChanged()
-{
- emit configurationChanged();
-}
-
} // namespace Internal
} // namespace Mercurial
diff --git a/src/plugins/mercurial/mercurialcontrol.h b/src/plugins/mercurial/mercurialcontrol.h
index e3db1a0893..31dc0063f3 100644
--- a/src/plugins/mercurial/mercurialcontrol.h
+++ b/src/plugins/mercurial/mercurialcontrol.h
@@ -70,7 +70,6 @@ public slots:
// files changed signals according to the variant's type:
// String -> repository, StringList -> files
void changed(const QVariant&);
- void emitConfigurationChanged();
private:
MercurialClient *mercurialClient;
diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp
index a7dcb65b26..4f0799407a 100644
--- a/src/plugins/mercurial/mercurialplugin.cpp
+++ b/src/plugins/mercurial/mercurialplugin.cpp
@@ -136,12 +136,11 @@ bool MercurialPlugin::initialize(const QStringList & /* arguments */, QString *
{
Core::Context context(Constants::MERCURIAL_CONTEXT);
- m_client = new MercurialClient(&mercurialSettings);
+ m_client = new MercurialClient;
initializeVcs(new MercurialControl(m_client), context);
optionsPage = new OptionsPage();
addAutoReleasedObject(optionsPage);
- mercurialSettings.readSettings(core->settings());
connect(m_client, SIGNAL(changed(QVariant)), versionControl(), SLOT(changed(QVariant)));
connect(m_client, SIGNAL(needUpdate()), this, SLOT(update()));
@@ -176,19 +175,6 @@ bool MercurialPlugin::initialize(const QStringList & /* arguments */, QString *
return true;
}
-const MercurialSettings &MercurialPlugin::settings()
-{
- return m_instance->mercurialSettings;
-}
-
-void MercurialPlugin::setSettings(const MercurialSettings &settings)
-{
- if (settings != m_instance->mercurialSettings) {
- m_instance->mercurialSettings = settings;
- static_cast<MercurialControl *>(m_instance->versionControl())->emitConfigurationChanged();
- }
-}
-
void MercurialPlugin::createMenu(const Core::Context &context)
{
// Create menu item for Mercurial
diff --git a/src/plugins/mercurial/mercurialplugin.h b/src/plugins/mercurial/mercurialplugin.h
index c2c5c80f92..e2386e78ad 100644
--- a/src/plugins/mercurial/mercurialplugin.h
+++ b/src/plugins/mercurial/mercurialplugin.h
@@ -75,9 +75,6 @@ public:
static MercurialPlugin *instance() { return m_instance; }
static MercurialClient *client() { return m_instance->m_client; }
- static const MercurialSettings &settings();
- static void setSettings(const MercurialSettings &settings);
-
private slots:
// File menu action slots
void addCurrentFile();
diff --git a/src/plugins/mercurial/optionspage.cpp b/src/plugins/mercurial/optionspage.cpp
index ffeb84dd0f..924ea2a03a 100644
--- a/src/plugins/mercurial/optionspage.cpp
+++ b/src/plugins/mercurial/optionspage.cpp
@@ -29,6 +29,8 @@
****************************************************************************/
#include "optionspage.h"
+
+#include "mercurialclient.h"
#include "mercurialsettings.h"
#include "mercurialplugin.h"
@@ -38,6 +40,8 @@
#include <QTextStream>
+using namespace VcsBase;
+
namespace Mercurial {
namespace Internal {
@@ -50,9 +54,9 @@ OptionsPageWidget::OptionsPageWidget(QWidget *parent) :
m_ui.commandChooser->setPromptDialogTitle(tr("Mercurial Command"));
}
-MercurialSettings OptionsPageWidget::settings() const
+VcsBaseClientSettings OptionsPageWidget::settings() const
{
- MercurialSettings s = MercurialPlugin::settings();
+ MercurialSettings s;
s.setValue(MercurialSettings::binaryPathKey, m_ui.commandChooser->rawPath());
s.setValue(MercurialSettings::userNameKey, m_ui.defaultUsernameLineEdit->text().trimmed());
s.setValue(MercurialSettings::userEmailKey, m_ui.defaultEmailLineEdit->text().trimmed());
@@ -61,7 +65,7 @@ MercurialSettings OptionsPageWidget::settings() const
return s;
}
-void OptionsPageWidget::setSettings(const MercurialSettings &s)
+void OptionsPageWidget::setSettings(const VcsBaseClientSettings &s)
{
m_ui.commandChooser->setPath(s.stringValue(MercurialSettings::binaryPathKey));
m_ui.defaultUsernameLineEdit->setText(s.stringValue(MercurialSettings::userNameKey));
@@ -80,7 +84,7 @@ QWidget *OptionsPage::widget()
{
if (!optionsPageWidget)
optionsPageWidget = new OptionsPageWidget;
- optionsPageWidget->setSettings(MercurialPlugin::settings());
+ optionsPageWidget->setSettings(MercurialPlugin::client()->settings());
return optionsPageWidget;
}
@@ -88,13 +92,15 @@ void OptionsPage::apply()
{
if (!optionsPageWidget)
return;
- const MercurialSettings newSettings = optionsPageWidget->settings();
- if (newSettings != MercurialPlugin::settings()) {
- //assume success and emit signal that settings are changed;
- MercurialPlugin::setSettings(newSettings);
- newSettings.writeSettings(Core::ICore::settings());
+
+ const VcsBaseClientSettings newSettings = optionsPageWidget->settings();
+ VcsBaseClientSettings &s = MercurialPlugin::instance()->client()->settings();
+ if (s != newSettings) {
+ s = newSettings;
+ s.writeSettings(Core::ICore::settings());
emit settingsChanged();
}
+
}
void OptionsPage::finish()
diff --git a/src/plugins/mercurial/optionspage.h b/src/plugins/mercurial/optionspage.h
index 15e84096dd..24dcac25dd 100644
--- a/src/plugins/mercurial/optionspage.h
+++ b/src/plugins/mercurial/optionspage.h
@@ -38,11 +38,13 @@
#include <QWidget>
#include <QPointer>
+namespace VcsBase {
+class VcsBaseClientSettings;
+} // namespace VcsBase
+
namespace Mercurial {
namespace Internal {
-class MercurialSettings;
-
class OptionsPageWidget : public QWidget
{
Q_OBJECT
@@ -50,8 +52,8 @@ class OptionsPageWidget : public QWidget
public:
explicit OptionsPageWidget(QWidget *parent = 0);
- MercurialSettings settings() const;
- void setSettings(const MercurialSettings &s);
+ VcsBase::VcsBaseClientSettings settings() const;
+ void setSettings(const VcsBase::VcsBaseClientSettings &s);
private:
Ui::OptionsPage m_ui;