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>
This commit is contained in:
cerf
2011-09-14 09:13:44 +00:00
committed by Tobias Hunger
parent a67d8205b1
commit 10b667ad58
20 changed files with 471 additions and 366 deletions

View File

@@ -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