diff options
author | saturneric <[email protected]> | 2024-04-30 17:58:36 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-04-30 17:58:36 +0000 |
commit | 46870f10fdbc18d695242c945c0c39e4d832ec39 (patch) | |
tree | 600d14c9f89dd3de8fcd2df34622f705dbfee73f | |
parent | feat: add progress bar at gnupg info tab (diff) | |
download | GpgFrontend-46870f10fdbc18d695242c945c0c39e4d832ec39.tar.gz GpgFrontend-46870f10fdbc18d695242c945c0c39e4d832ec39.zip |
fix: reset module settings object in a proper way
-rw-r--r-- | src/core/module/Event.h | 4 | ||||
-rw-r--r-- | src/core/module/GlobalModuleContext.cpp | 10 | ||||
-rw-r--r-- | src/core/module/GlobalModuleContext.h | 4 | ||||
-rw-r--r-- | src/core/module/Module.cpp | 4 | ||||
-rw-r--r-- | src/core/module/Module.h | 2 | ||||
-rw-r--r-- | src/core/module/ModuleManager.cpp | 39 | ||||
-rw-r--r-- | src/core/module/ModuleManager.h | 6 | ||||
-rw-r--r-- | src/core/struct/settings_object/ModuleSO.h | 6 |
8 files changed, 37 insertions, 38 deletions
diff --git a/src/core/module/Event.h b/src/core/module/Event.h index 8983d560..b629caae 100644 --- a/src/core/module/Event.h +++ b/src/core/module/Event.h @@ -40,7 +40,7 @@ namespace GpgFrontend::Module { class Event; -using EventRefrernce = std::shared_ptr<Event>; +using EventReference = std::shared_ptr<Event>; using EventIdentifier = QString; using EventTriggerIdentifier = QString; using Evnets = std::vector<Event>; @@ -92,7 +92,7 @@ class GPGFRONTEND_CORE_EXPORT Event { template <typename... Args> auto MakeEvent(const EventIdentifier& event_id, Args&&... args, - Event::EventCallback e_cb) -> EventRefrernce { + Event::EventCallback e_cb) -> EventReference { std::initializer_list<Event::ParameterInitializer> params = { Event::ParameterInitializer{std::forward<Args>(args)}...}; return GpgFrontend::SecureCreateSharedObject<Event>(event_id, params, e_cb); diff --git a/src/core/module/GlobalModuleContext.cpp b/src/core/module/GlobalModuleContext.cpp index b5a04d64..e67e48f9 100644 --- a/src/core/module/GlobalModuleContext.cpp +++ b/src/core/module/GlobalModuleContext.cpp @@ -226,7 +226,7 @@ class GlobalModuleContext::Impl { return !module_info->activate; } - auto TriggerEvent(const EventRefrernce& event) -> bool { + auto TriggerEvent(const EventReference& event) -> bool { auto event_id = event->GetIdentifier(); GF_CORE_LOG_DEBUG("attempting to trigger event: {}", event_id); @@ -309,7 +309,7 @@ class GlobalModuleContext::Impl { } auto SearchEvent(const EventTriggerIdentifier& trigger_id) - -> std::optional<EventRefrernce> { + -> std::optional<EventReference> { if (module_on_triggering_events_table_.find(trigger_id) != module_on_triggering_events_table_.end()) { return module_on_triggering_events_table_[trigger_id]; @@ -359,7 +359,7 @@ class GlobalModuleContext::Impl { module_register_table_; std::map<EventIdentifier, std::unordered_set<ModuleIdentifier>> module_events_table_; - std::map<EventTriggerIdentifier, EventRefrernce> + std::map<EventTriggerIdentifier, EventReference> module_on_triggering_events_table_; std::set<int> acquired_channel_; @@ -436,12 +436,12 @@ auto GlobalModuleContext::DeactivateModule(ModuleIdentifier module_id) -> bool { return p_->DeactivateModule(std::move(module_id)); } -auto GlobalModuleContext::TriggerEvent(EventRefrernce event) -> bool { +auto GlobalModuleContext::TriggerEvent(EventReference event) -> bool { return p_->TriggerEvent(event); } auto GlobalModuleContext::SearchEvent(EventTriggerIdentifier trigger_id) - -> std::optional<EventRefrernce> { + -> std::optional<EventReference> { return p_->SearchEvent(trigger_id); } diff --git a/src/core/module/GlobalModuleContext.h b/src/core/module/GlobalModuleContext.h index 3177f984..8942b04d 100644 --- a/src/core/module/GlobalModuleContext.h +++ b/src/core/module/GlobalModuleContext.h @@ -78,9 +78,9 @@ class GPGFRONTEND_CORE_EXPORT GlobalModuleContext : public QObject { auto ListenEvent(ModuleIdentifier, EventIdentifier) -> bool; - auto TriggerEvent(EventRefrernce) -> bool; + auto TriggerEvent(EventReference) -> bool; - auto SearchEvent(EventTriggerIdentifier) -> std::optional<EventRefrernce>; + auto SearchEvent(EventTriggerIdentifier) -> std::optional<EventReference>; auto GetModuleListening(ModuleIdentifier) -> QList<EventIdentifier>; diff --git a/src/core/module/Module.cpp b/src/core/module/Module.cpp index 39f4f4a9..7011f2f5 100644 --- a/src/core/module/Module.cpp +++ b/src/core/module/Module.cpp @@ -152,7 +152,7 @@ class Module::Impl { return -1; } - auto Exec(const EventRefrernce& event) -> int { + auto Exec(const EventReference& event) -> int { if (good_ && execute_api_ != nullptr) { return execute_api_(event->ToModuleEvent()); } @@ -282,7 +282,7 @@ auto Module::Register() -> int { return p_->Register(); } auto Module::Active() -> int { return p_->Active(); } -auto Module::Exec(EventRefrernce event) -> int { +auto Module::Exec(EventReference event) -> int { return p_->Exec(std::move(event)); } diff --git a/src/core/module/Module.h b/src/core/module/Module.h index 615d09b9..c332d455 100644 --- a/src/core/module/Module.h +++ b/src/core/module/Module.h @@ -59,7 +59,7 @@ class GPGFRONTEND_CORE_EXPORT Module : public QObject { virtual auto Active() -> int; - virtual auto Exec(EventRefrernce) -> int; + virtual auto Exec(EventReference) -> int; virtual auto Deactive() -> int; diff --git a/src/core/module/ModuleManager.cpp b/src/core/module/ModuleManager.cpp index 7094b801..d07ca989 100644 --- a/src/core/module/ModuleManager.cpp +++ b/src/core/module/ModuleManager.cpp @@ -31,7 +31,6 @@ #include <memory> #include <utility> -#include "GpgConstants.h" #include "core/function/SecureMemoryAllocator.h" #include "core/function/basic/GpgFunctionObject.h" #include "core/model/SettingsObject.h" @@ -86,31 +85,25 @@ class ModuleManager::Impl { SettingsObject so(QString("module.%1.so").arg(module_id)); ModuleSO module_so(so); - // if user has set auto active enable - if ((module_so.module_id == module_id && - module_so.module_hash == module_hash && - module_so.auto_activate) || - // integrated modules activate by default - ((module_so.module_id.isEmpty() || - module_so.module_hash.isEmpty()) && - integrated_module)) { - if (!gmc_->ActiveModule(module_id)) { - return -1; - } - } - - // reset module settings after change - if ((module_so.module_id.isEmpty() || - module_so.module_id != module_id) || - (module_so.module_hash.isEmpty() || - module_so.module_hash != module_hash)) { + // reset module settings if necessary + if (module_so.module_id != module_id || + module_so.module_hash != module_hash) { module_so.module_id = module_id; module_so.module_hash = module_hash; + // auto active integrated module by default module_so.auto_activate = integrated_module; + module_so.set_by_user = false; so.Store(module_so.ToJson()); } + // if this module need auto active + if (module_so.auto_activate) { + if (!gmc_->ActiveModule(module_id)) { + return -1; + } + } + return 0; }, __func__, nullptr)); @@ -147,7 +140,7 @@ class ModuleManager::Impl { __func__, nullptr)); } - void TriggerEvent(const EventRefrernce& event) { + void TriggerEvent(const EventReference& event) { Thread::TaskRunnerGetter::GetInstance() .GetTaskRunner(Thread::TaskRunnerGetter::kTaskRunnerType_Default) ->PostTask(new Thread::Task( @@ -159,7 +152,7 @@ class ModuleManager::Impl { } auto SearchEvent(EventTriggerIdentifier trigger_id) - -> std::optional<EventRefrernce> { + -> std::optional<EventReference> { return gmc_->SearchEvent(std::move(trigger_id)); } @@ -277,12 +270,12 @@ auto ModuleManager::GetModuleListening(ModuleIdentifier module_id) return p_->GetModuleListening(module_id); } -void ModuleManager::TriggerEvent(EventRefrernce event) { +void ModuleManager::TriggerEvent(EventReference event) { return p_->TriggerEvent(event); } auto ModuleManager::SearchEvent(EventTriggerIdentifier trigger_id) - -> std::optional<EventRefrernce> { + -> std::optional<EventReference> { return p_->SearchEvent(std::move(trigger_id)); } diff --git a/src/core/module/ModuleManager.h b/src/core/module/ModuleManager.h index 5d7c1bdd..ea2d88cb 100644 --- a/src/core/module/ModuleManager.h +++ b/src/core/module/ModuleManager.h @@ -50,7 +50,7 @@ class GlobalModuleContext; class ModuleManager; class GlobalRegisterTable; -using EventRefrernce = std::shared_ptr<Event>; +using EventReference = std::shared_ptr<Event>; using ModuleIdentifier = QString; using ModulePtr = std::shared_ptr<Module>; using ModuleMangerPtr = std::shared_ptr<ModuleManager>; @@ -80,9 +80,9 @@ class GPGFRONTEND_CORE_EXPORT ModuleManager void ListenEvent(ModuleIdentifier, EventIdentifier); - void TriggerEvent(EventRefrernce); + void TriggerEvent(EventReference); - auto SearchEvent(EventTriggerIdentifier) -> std::optional<EventRefrernce>; + auto SearchEvent(EventTriggerIdentifier) -> std::optional<EventReference>; auto GetModuleListening(ModuleIdentifier) -> QList<EventIdentifier>; diff --git a/src/core/struct/settings_object/ModuleSO.h b/src/core/struct/settings_object/ModuleSO.h index a161885c..b0139b1f 100644 --- a/src/core/struct/settings_object/ModuleSO.h +++ b/src/core/struct/settings_object/ModuleSO.h @@ -35,6 +35,7 @@ struct ModuleSO { QString module_version; QString module_hash; bool auto_activate; + bool set_by_user; ModuleSO() = default; @@ -54,6 +55,10 @@ struct ModuleSO { if (const auto v = j["auto_activate"]; v.isBool()) { auto_activate = v.toBool(); } + + if (const auto v = j["set_by_user"]; v.isBool()) { + set_by_user = v.toBool(); + } } [[nodiscard]] auto ToJson() const -> QJsonObject { @@ -62,6 +67,7 @@ struct ModuleSO { j["module_version"] = module_version; j["module_hash"] = module_hash; j["auto_activate"] = auto_activate; + j["set_by_user"] = set_by_user; return j; } }; |