Porting C++ plasmoid+dataengine to plasma5

Simone Gaiarin simgunz at gmail.com
Sun Jul 10 15:42:51 UTC 2016


Hi all,
time ago I've designed  a Plasma 4 plasmoid together with a dataengine to
configure and control a process (redshift).

The structure is the following:
- The plasmoid allow the user to start and stop the process, this is done
by running a servicejob provided by the dataengine
- The dataengine controls the process (start and stop it) [I need a custom
dataengine and I cannot use the executable dataengine]
- Multiple instances of the plasmoid and the dataengine share the
configuaration via KConfigXT in this way when the user access the plasmoid
configuration this is propagated to the dataengine and synced with other
instances of the plasmoid

Now I want to port this to plasma 5 but I'm facing huge difficulties. I've
managed to port the dataengine, rewrite the CMakeFiles and I've partially
rewritten the apple in QML.

The problem now is how to manage the configuration.

I know that the plasmoid configuration can be accessed  via
plasmoid.configuration and that I can map the fields in main.xml to the ui
elements of the config dialog. The problem is how to synchronize this
configuration with the other instances of the plasmoid (each plasmoid has
his own configuration in plasma 5).
How to pass this configuration to the dataengine?
Any idea to do this in a simple way?

I've tried to extend my plasmoid with a C++ plugin so that in C++ I can
still use the old KConfigXT system in order to share a config file between
the plasmoid and the dataengine (somehow works) but I don't know how  to
sync this with the plasmoid configuration.
In particular how can I know when the user finished editing the settings in
the UI so that I can notify the dataengine? It seems there are no signal to
notify this.


Various doubt:
1) The plasmoid configuration system is explained here:
http://aseigo.blogspot.dk/2013/02/elegant-plasmoid-configuration.html. Is
it there any other page of documentation for this?

2) Which is the proper way to extend the QML plasmoid in C++. I've seen two
approaches.
- plasmoid.nativeInterface as suggested
in plasma-framework/templates/cpp-plasmoid/ (<- This should be documented
in techbase, it's quite hidden)
- The other as explained here
http://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html and how
I've seen implemented in many plasmoids

3) How can I catch a signal emitted by the 'plasmoid' object in QML?
Let's say I want to catch the signal '*userConfiguringChanged' how can I do
it?*

Regards
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20160710/0f792e86/attachment.html>


More information about the Plasma-devel mailing list