aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-04-30 17:58:36 +0000
committersaturneric <[email protected]>2024-04-30 17:58:36 +0000
commit46870f10fdbc18d695242c945c0c39e4d832ec39 (patch)
tree600d14c9f89dd3de8fcd2df34622f705dbfee73f
parentfeat: add progress bar at gnupg info tab (diff)
downloadGpgFrontend-46870f10fdbc18d695242c945c0c39e4d832ec39.tar.gz
GpgFrontend-46870f10fdbc18d695242c945c0c39e4d832ec39.zip
fix: reset module settings object in a proper way
-rw-r--r--src/core/module/Event.h4
-rw-r--r--src/core/module/GlobalModuleContext.cpp10
-rw-r--r--src/core/module/GlobalModuleContext.h4
-rw-r--r--src/core/module/Module.cpp4
-rw-r--r--src/core/module/Module.h2
-rw-r--r--src/core/module/ModuleManager.cpp39
-rw-r--r--src/core/module/ModuleManager.h6
-rw-r--r--src/core/struct/settings_object/ModuleSO.h6
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;
}
};