From 63178a8866996791c95b349988a064c26a826025 Mon Sep 17 00:00:00 2001 From: Mavridis Philippe Date: Wed, 4 Sep 2024 23:28:04 +0300 Subject: KControl: implement dynamic module tests Since KDE 3.4 there is underlying support for dynamically determining whether a module should be loaded or not, depending on an exported test function which would return a boolean value depending on the success of one or more tests (e.g. for presence of specific hardware). This approach is documented but has so far not been implemented by the TDE Control Centre. This commit adds a check to the TCC which performs the test function if needed (that is, if the X-TDE-Test-Module property is true) and, if it returns false, prevents showing the module in the tree list, which is the intended behaviour of the test function feature. For more information see: https://wiki.trinitydesktop.org/index.php?title=TDEConfig_Module_HOWTO&oldid=1893#Making_a_KCModule_dynamically_available Signed-off-by: Mavridis Philippe (cherry picked from commit e91257a7c75a50b69bde8189f336acc89fa4fec0) --- kcontrol/kcontrol/modules.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kcontrol/kcontrol/modules.cpp b/kcontrol/kcontrol/modules.cpp index c419e0d4e..0d6c9f7fc 100644 --- a/kcontrol/kcontrol/modules.cpp +++ b/kcontrol/kcontrol/modules.cpp @@ -284,9 +284,9 @@ bool ConfigModuleList::readDesktopEntriesRecursive(const TQString &path) KService *s = static_cast(p); if (!kapp->authorizeControlModule(s->menuId())) continue; - + ConfigModule *module = new ConfigModule(s); - if (module->library().isEmpty()) + if (module->library().isEmpty() || (module->needsTest() && !TDECModuleLoader::testModule(*module))) { delete module; continue; -- cgit v1.2.1