diff options
Diffstat (limited to 'src/plugins/coreplugin/vcsmanager.h')
-rw-r--r-- | src/plugins/coreplugin/vcsmanager.h | 17 |
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; |