aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/coreplugin/vcsmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/coreplugin/vcsmanager.h')
-rw-r--r--src/plugins/coreplugin/vcsmanager.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/plugins/coreplugin/vcsmanager.h b/src/plugins/coreplugin/vcsmanager.h
index 71e3adeaf8..147d7a4aee 100644
--- a/src/plugins/coreplugin/vcsmanager.h
+++ b/src/plugins/coreplugin/vcsmanager.h
@@ -56,9 +56,17 @@ class CORE_EXPORT VcsManager : public QObject
public:
static VcsManager *instance();
+ template <typename T, typename... Args>
+ static T *registerVersionControl(Args&&... args)
+ {
+ T *vc = new T(std::forward<Args>(args)...);
+ addVersionControl(vc);
+ return vc;
+ }
+
static void extensionsInitialized();
- static QList<IVersionControl *> versionControls();
+ static const QList<IVersionControl *> versionControls();
static IVersionControl *versionControl(Id id);
static void resetVersionControlForDirectory(const QString &inputDirectory);
@@ -92,17 +100,18 @@ public:
*/
static QStringList additionalToolsPath();
+ static void clearVersionControlCache();
+
signals:
void repositoryChanged(const QString &repository);
void configurationChanged(const IVersionControl *vcs);
-public slots:
- static void clearVersionControlCache();
-
private:
explicit VcsManager(QObject *parent = 0);
~VcsManager();
+ static void addVersionControl(IVersionControl *vc);
+
void handleConfigurationChanges();
friend class Core::Internal::MainWindow;