VcsManager: Add method to get additionalToolsPaths from all IVcsControls

Change-Id: I87910a5a3ccc8e9e00d1b9081ea860832b9fe576
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Tobias Hunger
2014-03-05 11:27:21 +01:00
parent 85d3cc84c7
commit c5dfa1f2bf
2 changed files with 29 additions and 1 deletions

View File

@@ -85,7 +85,7 @@ public:
QString topLevel; QString topLevel;
}; };
VcsManagerPrivate() : m_unconfiguredVcs(0) VcsManagerPrivate() : m_unconfiguredVcs(0), m_cachedAdditionalToolsPathsDirty(true)
{ } { }
~VcsManagerPrivate() ~VcsManagerPrivate()
@@ -180,6 +180,9 @@ public:
QMap<QString, VcsInfo *> m_cachedMatches; QMap<QString, VcsInfo *> m_cachedMatches;
QList<VcsInfo *> m_vcsInfoList; QList<VcsInfo *> m_vcsInfoList;
IVersionControl *m_unconfiguredVcs; IVersionControl *m_unconfiguredVcs;
QStringList m_cachedAdditionalToolsPaths;
bool m_cachedAdditionalToolsPathsDirty;
}; };
static VcsManagerPrivate *d = 0; static VcsManagerPrivate *d = 0;
@@ -213,6 +216,8 @@ void VcsManager::extensionsInitialized()
DocumentManager::instance(), SIGNAL(filesChangedInternally(QStringList))); DocumentManager::instance(), SIGNAL(filesChangedInternally(QStringList)));
connect(versionControl, SIGNAL(repositoryChanged(QString)), connect(versionControl, SIGNAL(repositoryChanged(QString)),
m_instance, 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')))); .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) void VcsManager::promptToAdd(const QString &directory, const QStringList &fileNames)
{ {
IVersionControl *vc = findVersionControlForDirectory(directory); IVersionControl *vc = findVersionControlForDirectory(directory);
@@ -462,6 +478,11 @@ void VcsManager::configureVcs()
d->m_unconfiguredVcs->id()); d->m_unconfiguredVcs->id());
} }
void VcsManager::handleConfigurationChanges()
{
d->m_cachedAdditionalToolsPathsDirty = true;
}
} // namespace Core } // namespace Core
#if defined(WITH_TESTS) #if defined(WITH_TESTS)

View File

@@ -90,6 +90,12 @@ public:
static QString msgAddToVcsFailedTitle(); static QString msgAddToVcsFailedTitle();
static QString msgToAddToVcsFailed(const QStringList &files, const IVersionControl *vc); 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: signals:
void repositoryChanged(const QString &repository); void repositoryChanged(const QString &repository);
@@ -98,6 +104,7 @@ public slots:
private slots: private slots:
static void configureVcs(); static void configureVcs();
void handleConfigurationChanges();
private: private:
explicit VcsManager(QObject *parent = 0); explicit VcsManager(QObject *parent = 0);