summaryrefslogtreecommitdiff
path: root/src/plugins/mercurial
diff options
context:
space:
mode:
authorcerf <delorme.hugues@gmail.com>2011-09-14 09:13:44 +0000
committerTobias Hunger <tobias.hunger@nokia.com>2011-09-14 13:22:30 +0200
commit10b667ad588ddb85c858fe30e042e75bbea040a9 (patch)
tree04f580a851a5e8dc8051f2b65fcb620fbe65a057 /src/plugins/mercurial
parenta67d8205b19784b1b8237b7d4ecd1c13ca09c547 (diff)
downloadqt-creator-10b667ad588ddb85c858fe30e042e75bbea040a9.tar.gz
vcsbase: add mechanism to ease management of VCS settings
Management of VCS settings was rather laborious (see BazaarSettings, GitSettings, ...). To overcome this, the base class VCSBaseClientSettings is now equipped with a mechanism factorizing redundant code for VCS settings, like operator=(), operator==(), writeSettings(), ... Heir classes of VCSBaseClientSettings only need to declare the settings (key + default value). Bazaar and Mercurial plugins are impacted. Change-Id: I7e4093a6d9476f3c8954f4d104f1b26ac185beb9 Merge-request: 2204 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com> Reviewed-on: http://codereview.qt-project.org/4889 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Diffstat (limited to 'src/plugins/mercurial')
-rw-r--r--src/plugins/mercurial/clonewizard.cpp4
-rw-r--r--src/plugins/mercurial/mercurialclient.cpp4
-rw-r--r--src/plugins/mercurial/mercurialcontrol.cpp2
-rw-r--r--src/plugins/mercurial/mercurialplugin.cpp14
-rw-r--r--src/plugins/mercurial/mercurialplugin.h2
-rw-r--r--src/plugins/mercurial/mercurialsettings.cpp51
-rw-r--r--src/plugins/mercurial/mercurialsettings.h11
-rw-r--r--src/plugins/mercurial/optionspage.cpp28
8 files changed, 34 insertions, 82 deletions
diff --git a/src/plugins/mercurial/clonewizard.cpp b/src/plugins/mercurial/clonewizard.cpp
index f8c7212fa2..37a6f57230 100644
--- a/src/plugins/mercurial/clonewizard.cpp
+++ b/src/plugins/mercurial/clonewizard.cpp
@@ -86,13 +86,13 @@ QSharedPointer<VCSBase::AbstractCheckoutJob> CloneWizard::createJob(const QList<
const MercurialSettings &settings = MercurialPlugin::instance()->settings();
- QStringList args = settings.standardArguments();
QString path = page->path();
QString directory = page->directory();
+ QStringList args;
args << QLatin1String("clone") << page->repository() << directory;
*checkoutPath = path + QLatin1Char('/') + directory;
VCSBase::ProcessCheckoutJob *job = new VCSBase::ProcessCheckoutJob;
- job->addStep(settings.binary(), args, path);
+ job->addStep(settings.stringValue(MercurialSettings::binaryPathKey), args, path);
return QSharedPointer<VCSBase::AbstractCheckoutJob>(job);
}
diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp
index d2c38a0527..16862444b4 100644
--- a/src/plugins/mercurial/mercurialclient.cpp
+++ b/src/plugins/mercurial/mercurialclient.cpp
@@ -423,9 +423,9 @@ public:
VCSBase::VCSBaseEditorParameterWidget(parent), m_client(client), m_params(p)
{
mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore whitespace")),
- &client->settings()->diffIgnoreWhiteSpace);
+ client->settings()->boolPointer(MercurialSettings::diffIgnoreWhiteSpaceKey));
mapSetting(addToggleButton(QLatin1String("-B"), tr("Ignore blank lines")),
- &client->settings()->diffIgnoreBlankLines);
+ client->settings()->boolPointer(MercurialSettings::diffIgnoreBlankLinesKey));
}
void executeCommand()
diff --git a/src/plugins/mercurial/mercurialcontrol.cpp b/src/plugins/mercurial/mercurialcontrol.cpp
index a38a819b83..1b83eb4b54 100644
--- a/src/plugins/mercurial/mercurialcontrol.cpp
+++ b/src/plugins/mercurial/mercurialcontrol.cpp
@@ -69,7 +69,7 @@ bool MercurialControl::managesDirectory(const QString &directory, QString *topLe
bool MercurialControl::isConfigured() const
{
- const QString binary = mercurialClient->settings()->binary();
+ const QString binary = mercurialClient->settings()->stringValue(MercurialSettings::binaryPathKey);
if (binary.isEmpty())
return false;
QFileInfo fi(binary);
diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp
index 8c27aa914f..8d4cf91f65 100644
--- a/src/plugins/mercurial/mercurialplugin.cpp
+++ b/src/plugins/mercurial/mercurialplugin.cpp
@@ -203,11 +203,6 @@ void MercurialPlugin::setSettings(const MercurialSettings &settings)
}
}
-QStringList MercurialPlugin::standardArguments() const
-{
- return mercurialSettings.standardArguments();
-}
-
void MercurialPlugin::createMenu()
{
Core::Context context(Core::Constants::C_GLOBAL);
@@ -614,8 +609,9 @@ void MercurialPlugin::showCommitWidget(const QList<VCSBase::VCSBaseClient::Statu
QString branch = m_client->branchQuerySync(m_submitRepository);
- commitEditor->setFields(m_submitRepository, branch, mercurialSettings.userName(),
- mercurialSettings.email(), status);
+ commitEditor->setFields(m_submitRepository, branch,
+ mercurialSettings.stringValue(MercurialSettings::userNameKey),
+ mercurialSettings.stringValue(MercurialSettings::userEmailKey), status);
commitEditor->registerActions(editorUndo, editorRedo, editorCommit, editorDiff);
connect(commitEditor, SIGNAL(diffSelectedFiles(QStringList)),
@@ -646,11 +642,11 @@ bool MercurialPlugin::submitEditorAboutToClose(VCSBase::VCSBaseSubmitEditor *sub
if (!editorFile || !commitEditor)
return true;
- bool dummyPrompt = mercurialSettings.prompt();
+ bool dummyPrompt = mercurialSettings.boolValue(MercurialSettings::promptOnSubmitKey);
const VCSBase::VCSBaseSubmitEditor::PromptSubmitResult response =
commitEditor->promptSubmit(tr("Close Commit Editor"), tr("Do you want to commit the changes?"),
tr("Message check failed. Do you want to proceed?"),
- &dummyPrompt, mercurialSettings.prompt());
+ &dummyPrompt, dummyPrompt);
switch (response) {
case VCSBase::VCSBaseSubmitEditor::SubmitCanceled:
diff --git a/src/plugins/mercurial/mercurialplugin.h b/src/plugins/mercurial/mercurialplugin.h
index d6193d8192..2e86c6daf1 100644
--- a/src/plugins/mercurial/mercurialplugin.h
+++ b/src/plugins/mercurial/mercurialplugin.h
@@ -91,8 +91,6 @@ public:
static MercurialPlugin *instance() { return m_instance; }
MercurialClient *client() const { return m_client; }
- QStringList standardArguments() const;
-
const MercurialSettings &settings() const;
void setSettings(const MercurialSettings &settings);
diff --git a/src/plugins/mercurial/mercurialsettings.cpp b/src/plugins/mercurial/mercurialsettings.cpp
index a0643394c3..8db5f6f6ea 100644
--- a/src/plugins/mercurial/mercurialsettings.cpp
+++ b/src/plugins/mercurial/mercurialsettings.cpp
@@ -38,53 +38,16 @@
namespace Mercurial {
namespace Internal {
- const QLatin1String diffIgnoreWhiteSpaceKey("diffIgnoreWhiteSpace");
- const QLatin1String diffIgnoreBlankLinesKey("diffIgnoreBlankLines");
+ const QLatin1String MercurialSettings::diffIgnoreWhiteSpaceKey("diffIgnoreWhiteSpace");
+ const QLatin1String MercurialSettings::diffIgnoreBlankLinesKey("diffIgnoreBlankLines");
- MercurialSettings::MercurialSettings() :
- diffIgnoreWhiteSpace(false),
- diffIgnoreBlankLines(false)
+ MercurialSettings::MercurialSettings()
{
setSettingsGroup(QLatin1String("Mercurial"));
- setDefaultBinary(QLatin1String(Constants::MERCURIALDEFAULT));
+ // Override default binary path
+ declareKey(binaryPathKey, QLatin1String(Constants::MERCURIALDEFAULT));
+ declareKey(diffIgnoreWhiteSpaceKey, false);
+ declareKey(diffIgnoreBlankLinesKey, false);
}
-
- MercurialSettings& MercurialSettings::operator=(const MercurialSettings& other)
- {
- VCSBase::VCSBaseClientSettings::operator=(other);
- if (this != &other) {
- diffIgnoreWhiteSpace = other.diffIgnoreWhiteSpace;
- diffIgnoreBlankLines = other.diffIgnoreBlankLines;
- }
- return *this;
- }
-
- void MercurialSettings::writeSettings(QSettings *settings) const
- {
- VCSBaseClientSettings::writeSettings(settings);
- settings->beginGroup(this->settingsGroup());
- settings->setValue(diffIgnoreWhiteSpaceKey, diffIgnoreWhiteSpace);
- settings->setValue(diffIgnoreBlankLinesKey, diffIgnoreBlankLines);
- settings->endGroup();
- }
-
- void MercurialSettings::readSettings(const QSettings *settings)
- {
- VCSBaseClientSettings::readSettings(settings);
- const QString keyRoot = this->settingsGroup() + QLatin1Char('/');
- diffIgnoreWhiteSpace = settings->value(keyRoot + diffIgnoreWhiteSpaceKey, false).toBool();
- diffIgnoreBlankLines = settings->value(keyRoot + diffIgnoreBlankLinesKey, false).toBool();
- }
-
- bool MercurialSettings::equals(const VCSBaseClientSettings &rhs) const
- {
- const MercurialSettings *hgRhs = dynamic_cast<const MercurialSettings *>(&rhs);
- if (hgRhs == 0)
- return false;
- return VCSBaseClientSettings::equals(rhs)
- && diffIgnoreWhiteSpace == hgRhs->diffIgnoreWhiteSpace
- && diffIgnoreBlankLines == hgRhs->diffIgnoreBlankLines;
- }
-
} // namespace Internal
} // namespace Mercurial
diff --git a/src/plugins/mercurial/mercurialsettings.h b/src/plugins/mercurial/mercurialsettings.h
index 12d199838f..4eea636683 100644
--- a/src/plugins/mercurial/mercurialsettings.h
+++ b/src/plugins/mercurial/mercurialsettings.h
@@ -41,15 +41,10 @@ namespace Internal {
class MercurialSettings : public VCSBase::VCSBaseClientSettings
{
public:
- MercurialSettings();
- MercurialSettings& operator=(const MercurialSettings& other);
-
- virtual void writeSettings(QSettings *settings) const;
- virtual void readSettings(const QSettings *settings);
- virtual bool equals(const VCSBaseClientSettings &rhs) const;
+ static const QLatin1String diffIgnoreWhiteSpaceKey;
+ static const QLatin1String diffIgnoreBlankLinesKey;
- bool diffIgnoreWhiteSpace;
- bool diffIgnoreBlankLines;
+ MercurialSettings();
};
} // namespace Internal
diff --git a/src/plugins/mercurial/optionspage.cpp b/src/plugins/mercurial/optionspage.cpp
index b529c695e3..52cbf7ce08 100644
--- a/src/plugins/mercurial/optionspage.cpp
+++ b/src/plugins/mercurial/optionspage.cpp
@@ -53,24 +53,24 @@ OptionsPageWidget::OptionsPageWidget(QWidget *parent) :
MercurialSettings OptionsPageWidget::settings() const
{
- MercurialSettings rc;
- rc.setBinary(m_ui.commandChooser->path());
- rc.setUserName(m_ui.defaultUsernameLineEdit->text().trimmed());
- rc.setEmail(m_ui.defaultEmailLineEdit->text().trimmed());
- rc.setLogCount(m_ui.logEntriesCount->value());
- rc.setTimeoutSeconds(m_ui.timeout->value());
- rc.setPrompt(m_ui.promptOnSubmitCheckBox->isChecked());
- return rc;
+ MercurialSettings s = MercurialPlugin::instance()->settings();
+ s.setValue(MercurialSettings::binaryPathKey, m_ui.commandChooser->path());
+ s.setValue(MercurialSettings::userNameKey, m_ui.defaultUsernameLineEdit->text().trimmed());
+ s.setValue(MercurialSettings::userEmailKey, m_ui.defaultEmailLineEdit->text().trimmed());
+ s.setValue(MercurialSettings::logCountKey, m_ui.logEntriesCount->value());
+ s.setValue(MercurialSettings::timeoutKey, m_ui.timeout->value());
+ s.setValue(MercurialSettings::promptOnSubmitKey, m_ui.promptOnSubmitCheckBox->isChecked());
+ return s;
}
void OptionsPageWidget::setSettings(const MercurialSettings &s)
{
- m_ui.commandChooser->setPath(s.binary());
- m_ui.defaultUsernameLineEdit->setText(s.userName());
- m_ui.defaultEmailLineEdit->setText(s.email());
- m_ui.logEntriesCount->setValue(s.logCount());
- m_ui.timeout->setValue(s.timeoutSeconds());
- m_ui.promptOnSubmitCheckBox->setChecked(s.prompt());
+ m_ui.commandChooser->setPath(s.stringValue(MercurialSettings::binaryPathKey));
+ m_ui.defaultUsernameLineEdit->setText(s.stringValue(MercurialSettings::userNameKey));
+ m_ui.defaultEmailLineEdit->setText(s.stringValue(MercurialSettings::userEmailKey));
+ m_ui.logEntriesCount->setValue(s.intValue(MercurialSettings::logCountKey));
+ m_ui.timeout->setValue(s.intValue(MercurialSettings::timeoutKey));
+ m_ui.promptOnSubmitCheckBox->setChecked(s.boolValue(MercurialSettings::promptOnSubmitKey));
}
QString OptionsPageWidget::searchKeywords() const