diff options
author | cerf <delorme.hugues@gmail.com> | 2011-09-14 09:13:44 +0000 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@nokia.com> | 2011-09-14 13:22:30 +0200 |
commit | 10b667ad588ddb85c858fe30e042e75bbea040a9 (patch) | |
tree | 04f580a851a5e8dc8051f2b65fcb620fbe65a057 /src/plugins/mercurial | |
parent | a67d8205b19784b1b8237b7d4ecd1c13ca09c547 (diff) | |
download | qt-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.cpp | 4 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialclient.cpp | 4 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialcontrol.cpp | 2 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialplugin.cpp | 14 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialplugin.h | 2 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialsettings.cpp | 51 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialsettings.h | 11 | ||||
-rw-r--r-- | src/plugins/mercurial/optionspage.cpp | 28 |
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 |