aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/module/ModuleManager.cpp
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-04-12 09:14:37 +0000
committersaturneric <[email protected]>2024-04-12 09:14:37 +0000
commit26e24222e434036e5ec13f8ec99b958faf325154 (patch)
tree2a7145ae6f480713a529a20a29a90de4c436c399 /src/core/module/ModuleManager.cpp
parentfix: find and solve some issues on module management (diff)
downloadGpgFrontend-26e24222e434036e5ec13f8ec99b958faf325154.tar.gz
GpgFrontend-26e24222e434036e5ec13f8ec99b958faf325154.zip
feat: add auto activate function and optimums for some structures
Diffstat (limited to 'src/core/module/ModuleManager.cpp')
-rw-r--r--src/core/module/ModuleManager.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/core/module/ModuleManager.cpp b/src/core/module/ModuleManager.cpp
index 253ea8eb..0e1f6984 100644
--- a/src/core/module/ModuleManager.cpp
+++ b/src/core/module/ModuleManager.cpp
@@ -34,9 +34,11 @@
#include "GpgConstants.h"
#include "core/function/SecureMemoryAllocator.h"
#include "core/function/basic/GpgFunctionObject.h"
+#include "core/model/SettingsObject.h"
#include "core/module/GlobalModuleContext.h"
#include "core/module/GlobalRegisterTable.h"
#include "core/module/Module.h"
+#include "core/struct/settings_object/ModuleSO.h"
#include "core/thread/Task.h"
#include "core/thread/TaskRunnerGetter.h"
#include "core/utils/MemoryUtils.h"
@@ -75,7 +77,22 @@ class ModuleManager::Impl {
}
module->SetGPC(gmc_.get());
- return gmc_->RegisterModule(module) ? 0 : -1;
+ if (!gmc_->RegisterModule(module)) return -1;
+
+ SettingsObject so(
+ QString("module.%1.so").arg(module->GetModuleIdentifier()));
+ ModuleSO module_so(so);
+
+ // if user has set auto active enable
+ if (module_so.module_id == module->GetModuleIdentifier() &&
+ module_so.module_hash == module->GetModuleHash() &&
+ module_so.auto_activate) {
+ if (gmc_->ActiveModule(module->GetModuleIdentifier())) {
+ return -1;
+ }
+ }
+
+ return 0;
},
__func__, nullptr));
}