From 8c7e8966b80b2c21578218dc94164dfbb574bde6 Mon Sep 17 00:00:00 2001 From: cerf Date: Tue, 16 Aug 2011 08:29:37 +0000 Subject: [PATCH] vcsbase: fix confusing error when no binary specified A special case is now supported when no VCS binary is specified (left blank in options) then a default (fallback) binary is used instead. Class VCSBaseClientSettings is now equipped with defaultBinary() and setDefaultBinary(). Descendant classes can define the default binary to be used when needed (see BazaarClientSettings for example). Task-number: QTCREATORBUG-5666 Change-Id: I74c79df03f820996b31a1cd05201bd88ba5dd081 Merge-request: 364 Reviewed-by: Tobias Hunger Reviewed-on: http://codereview.qt.nokia.com/2996 --- src/plugins/bazaar/bazaarsettings.cpp | 2 +- src/plugins/mercurial/mercurialsettings.cpp | 2 +- src/plugins/vcsbase/vcsbaseclientsettings.cpp | 15 +++++++++++++-- src/plugins/vcsbase/vcsbaseclientsettings.h | 5 +++++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/plugins/bazaar/bazaarsettings.cpp b/src/plugins/bazaar/bazaarsettings.cpp index c0d650c4ca0..bede461bc5f 100644 --- a/src/plugins/bazaar/bazaarsettings.cpp +++ b/src/plugins/bazaar/bazaarsettings.cpp @@ -54,7 +54,7 @@ BazaarSettings::BazaarSettings() : logFormat(QLatin1String("long")) { setSettingsGroup(QLatin1String(Constants::BAZAAR)); - setBinary(QLatin1String(Constants::BAZAARDEFAULT)); + setDefaultBinary(QLatin1String(Constants::BAZAARDEFAULT)); } BazaarSettings& BazaarSettings::operator=(const BazaarSettings& other) diff --git a/src/plugins/mercurial/mercurialsettings.cpp b/src/plugins/mercurial/mercurialsettings.cpp index 6c52885262d..a0643394c30 100644 --- a/src/plugins/mercurial/mercurialsettings.cpp +++ b/src/plugins/mercurial/mercurialsettings.cpp @@ -46,7 +46,7 @@ namespace Internal { diffIgnoreBlankLines(false) { setSettingsGroup(QLatin1String("Mercurial")); - setBinary(QLatin1String(Constants::MERCURIALDEFAULT)); + setDefaultBinary(QLatin1String(Constants::MERCURIALDEFAULT)); } MercurialSettings& MercurialSettings::operator=(const MercurialSettings& other) diff --git a/src/plugins/vcsbase/vcsbaseclientsettings.cpp b/src/plugins/vcsbase/vcsbaseclientsettings.cpp index 65e85dcf221..df83a1b5903 100644 --- a/src/plugins/vcsbase/vcsbaseclientsettings.cpp +++ b/src/plugins/vcsbase/vcsbaseclientsettings.cpp @@ -47,7 +47,6 @@ enum { timeOutDefaultSeconds = 30 }; */ VCSBaseClientSettings::VCSBaseClientSettings() : - m_binary(), m_logCount(0), m_prompt(true), m_timeoutSeconds(timeOutDefaultSeconds) @@ -59,6 +58,8 @@ VCSBaseClientSettings::~VCSBaseClientSettings() QString VCSBaseClientSettings::binary() const { + if (m_binary.isEmpty()) + return defaultBinary(); // Fallback binary if not specified return m_binary; } @@ -154,7 +155,7 @@ void VCSBaseClientSettings::writeSettings(QSettings *settings) const void VCSBaseClientSettings::readSettings(const QSettings *settings) { const QString keyRoot = settingsGroup() + QLatin1Char('/'); - m_binary = settings->value(keyRoot + QLatin1String("VCS_Path"), QString()).toString(); + m_binary = settings->value(keyRoot + QLatin1String("VCS_Path"), defaultBinary()).toString(); m_user = settings->value(keyRoot + QLatin1String("VCS_Username"), QString()).toString(); m_mail = settings->value(keyRoot + QLatin1String("VCS_Email"), QString()).toString(); m_logCount = settings->value(keyRoot + QLatin1String("VCS_LogCount"), QString()).toInt(); @@ -169,3 +170,13 @@ bool VCSBaseClientSettings::equals(const VCSBaseClientSettings &rhs) const && m_logCount == rhs.m_logCount && m_prompt == rhs.m_prompt && m_timeoutSeconds == rhs.m_timeoutSeconds; } + +QString VCSBaseClientSettings::defaultBinary() const +{ + return m_defaultBinary; +} + +void VCSBaseClientSettings::setDefaultBinary(const QString &bin) +{ + m_defaultBinary = bin; +} diff --git a/src/plugins/vcsbase/vcsbaseclientsettings.h b/src/plugins/vcsbase/vcsbaseclientsettings.h index 38171500b1e..9553b009e3a 100644 --- a/src/plugins/vcsbase/vcsbaseclientsettings.h +++ b/src/plugins/vcsbase/vcsbaseclientsettings.h @@ -79,8 +79,13 @@ public: virtual bool equals(const VCSBaseClientSettings &rhs) const; +protected: + QString defaultBinary() const; + void setDefaultBinary(const QString &bin); + private: QString m_binary; + QString m_defaultBinary; QStringList m_standardArguments; QString m_user; QString m_mail;