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 <mavridisf@gmail.com>
pull/527/head
Mavridis Philippe 2 months ago
parent ae5dd34217
commit e91257a7c7
No known key found for this signature in database
GPG Key ID: F8D2D7E2F989A494

@ -284,9 +284,9 @@ bool ConfigModuleList::readDesktopEntriesRecursive(const TQString &path)
KService *s = static_cast<KService*>(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;

Loading…
Cancel
Save