New plugins loading system
Current plugins loading system crashes KMyMoney very often after quit
and doesn't allow unpluging plugins. This patch aims to improve on those
two deficiencies.
Changes:
- use of KPluginLoader instead of QPluginLoader
KCM modules of plugins cannot use QPluginLoader, so load all plugins
with single type of plugin loader.
Loading with QPluginLoader directly causes some strange valgrind
errors(invalid read size), which are untrackable. However, it doesn't
occur with KPluginLoader.
- create new KSettingsPlugins page
The page has changing Apply button depending on selection. The page
allows unloading/loading plugins. The page causes plugin system to
update after changes.
- no method for plugins handling in KMyMoneyApp, because all is
encapsulated in pluginloader.h
- don't store KPluginSelector because it's needed only during
configuration
- use plugin diagnostics in console that looks like "Plugins: xxxplugin
(un)loaded" which allows debugging,
- use kcmshell5 instead of kcmshell4,
- use of qobject_cast instead of dynamic_cast to test plugin's
interfaces, which is faster,
- remove "kmm_" prefix from KMM plugins as they're private and not
public, so no name clash shouldn't occur,
- rename classes from something like KMMXXXImporterPlugin to something
like XXXImporter, which is shorter,
- allow enabling Weboob and using printcheck plugins,
- new m_plugins member to store all plugin interfaces.
Differential Revision: https://phabricator.kde.org/D9566