From ae463f254c5225c75352de447a06c444afc7c51d Mon Sep 17 00:00:00 2001 From: codereader Date: Sat, 17 Jul 2021 18:07:30 +0200 Subject: [PATCH] #5662: Register the git module at startup --- plugins/vcs/GitModule.cpp | 16 +++++++++++++++- plugins/vcs/GitModule.h | 10 +++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/plugins/vcs/GitModule.cpp b/plugins/vcs/GitModule.cpp index dccc5e505c..e8d7015092 100644 --- a/plugins/vcs/GitModule.cpp +++ b/plugins/vcs/GitModule.cpp @@ -16,6 +16,16 @@ namespace vcs { +namespace +{ + constexpr const char* UriPrefix = "git"; +} + +std::string GitModule::getUriPrefix() +{ + return UriPrefix; +} + const std::string& GitModule::getName() const { static std::string _name("GitIntegration"); @@ -25,7 +35,7 @@ const std::string& GitModule::getName() const const StringSet& GitModule::getDependencies() const { static StringSet _dependencies{ MODULE_MAINFRAME, MODULE_STATUSBARMANAGER, - MODULE_PREFERENCESYSTEM, MODULE_MAP }; + MODULE_PREFERENCESYSTEM, MODULE_MAP, MODULE_VERSION_CONTROL_MANAGER }; return _dependencies; } @@ -61,12 +71,16 @@ void GitModule::initialiseModule(const IApplicationContext& ctx) _statusBarWidget->setRepository(_repository); }); + + GlobalVersionControlManager().registerModule(shared_from_this()); } void GitModule::shutdownModule() { rMessage() << getName() << "::shutdownModule called." << std::endl; + GlobalVersionControlManager().unregisterModule(shared_from_this()); + _statusBarWidget.reset(); _repository.reset(); diff --git a/plugins/vcs/GitModule.h b/plugins/vcs/GitModule.h index b7b5dad528..a26708ca50 100644 --- a/plugins/vcs/GitModule.h +++ b/plugins/vcs/GitModule.h @@ -1,6 +1,6 @@ #pragma once -#include "imodule.h" +#include "iversioncontrol.h" #include "icommandsystem.h" #include "Repository.h" @@ -12,8 +12,10 @@ namespace ui { class VcsStatus; } const char* const RKEY_AUTO_FETCH_ENABLED = "user/ui/vcs/git/autoFetchEnabled"; const char* const RKEY_AUTO_FETCH_INTERVAL = "user/ui/vcs/git/autoFetchInterval"; -class GitModule : - public RegisterableModule +class GitModule final : + public IVersionControlModule, + public RegisterableModule, + public std::enable_shared_from_this { private: std::shared_ptr _repository; @@ -21,6 +23,8 @@ class GitModule : std::unique_ptr _statusBarWidget; public: + std::string getUriPrefix() override; + // RegisterableModule implementation const std::string& getName() const override; const StringSet& getDependencies() const override;