From c5dfa1f2bff3061b58ef5e0ed1bcf2242324b805 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Wed, 5 Mar 2014 11:27:21 +0100 Subject: VcsManager: Add method to get additionalToolsPaths from all IVcsControls Change-Id: I87910a5a3ccc8e9e00d1b9081ea860832b9fe576 Reviewed-by: Orgad Shaneh --- src/plugins/coreplugin/vcsmanager.cpp | 23 ++++++++++++++++++++++- src/plugins/coreplugin/vcsmanager.h | 7 +++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp index 9a8e164831..b2bb8c9b3b 100644 --- a/src/plugins/coreplugin/vcsmanager.cpp +++ b/src/plugins/coreplugin/vcsmanager.cpp @@ -85,7 +85,7 @@ public: QString topLevel; }; - VcsManagerPrivate() : m_unconfiguredVcs(0) + VcsManagerPrivate() : m_unconfiguredVcs(0), m_cachedAdditionalToolsPathsDirty(true) { } ~VcsManagerPrivate() @@ -180,6 +180,9 @@ public: QMap m_cachedMatches; QList m_vcsInfoList; IVersionControl *m_unconfiguredVcs; + + QStringList m_cachedAdditionalToolsPaths; + bool m_cachedAdditionalToolsPathsDirty; }; static VcsManagerPrivate *d = 0; @@ -213,6 +216,8 @@ void VcsManager::extensionsInitialized() DocumentManager::instance(), SIGNAL(filesChangedInternally(QStringList))); connect(versionControl, SIGNAL(repositoryChanged(QString)), m_instance, SIGNAL(repositoryChanged(QString))); + connect(versionControl, SIGNAL(configurationChanged()), + m_instance, SLOT(handleConfigurationChanges())); } } @@ -411,6 +416,17 @@ QString VcsManager::msgToAddToVcsFailed(const QStringList &files, const IVersion .arg(vc->displayName(), files.join(QString(QLatin1Char('\n')))); } +QStringList VcsManager::additionalToolsPath() +{ + if (d->m_cachedAdditionalToolsPathsDirty) { + d->m_cachedAdditionalToolsPaths.clear(); + foreach (IVersionControl *vc, allVersionControls()) + d->m_cachedAdditionalToolsPaths.append(vc->additionalToolsPath()); + d->m_cachedAdditionalToolsPathsDirty = false; + } + return d->m_cachedAdditionalToolsPaths; +} + void VcsManager::promptToAdd(const QString &directory, const QStringList &fileNames) { IVersionControl *vc = findVersionControlForDirectory(directory); @@ -462,6 +478,11 @@ void VcsManager::configureVcs() d->m_unconfiguredVcs->id()); } +void VcsManager::handleConfigurationChanges() +{ + d->m_cachedAdditionalToolsPathsDirty = true; +} + } // namespace Core #if defined(WITH_TESTS) diff --git a/src/plugins/coreplugin/vcsmanager.h b/src/plugins/coreplugin/vcsmanager.h index cb27af193c..bf5ec15ed1 100644 --- a/src/plugins/coreplugin/vcsmanager.h +++ b/src/plugins/coreplugin/vcsmanager.h @@ -90,6 +90,12 @@ public: static QString msgAddToVcsFailedTitle(); static QString msgToAddToVcsFailed(const QStringList &files, const IVersionControl *vc); + /*! + * Return a list of paths where tools that came with the VCS may be installed. + * This is helpful on windows where e.g. git comes with a lot of nice unix tools. + */ + static QStringList additionalToolsPath(); + signals: void repositoryChanged(const QString &repository); @@ -98,6 +104,7 @@ public slots: private slots: static void configureVcs(); + void handleConfigurationChanges(); private: explicit VcsManager(QObject *parent = 0); -- cgit v1.2.1