- Battery and device notifier go into Hardware category
- Clipboard goes to SystemServices category
- Notifications and media controller go to ApplicationStatus category
- Fix controls to the bottom so they don't jump around
- Always reserve space for album art (needs proper vdg awesomeness[tm] placeholder)
so layout doesn't jump around
- ++pixel perfection
Before setting it in response to some event we set a variable, change the
slider and set it back. Similar to what battery does with brightness.
This makes seeking media with mouse wheel possible
Systray is really broken when you have a DBus activated task that starts
passively. It adds it to some model and then moves it around and then eventually
everything will just break. This needs fixing in the systray, since there
will eventually be plasmoids which should start passively but atm the
mediacontroller is the only one. So I'm trying to make it look okay here.
You can now control the player even if it is stopped and kick off playback.
This means that you now just need to have e.g. Amarok running and then you can
at least cause music to play without ever touching the Amarok window.
We can just use onStateChanged directly instead of having a superfluous property.
Also now the plasmoid becomes active immediately but goes passive only after
250ms. Amarok really takes an insanely long time to load the next track.
100ms wasn't enough to prevent flickering all the time. I guess for users without
SSD 250 will also be scarce.
This way you can easily bring your player to the front without needing it to have a
system tray icon and without opening the mediacontroller first
Unfortunately VLC player doesn't support being raised via mpris :(
fixes "No media playing" message in case of videos w/o metadata
and "ghost" entries (without icon) in the system tray, subsequently
messing up the tray layout when the player has finished the playback
QML is a declarative language with some imperative addons. Although
you can always set properties imperatively, this is not the
recommended approach. This patch replaces the onDataChanged slot by
corresponding bindings.
Moreover it replaces play and pause functions by playPause, which
removes a little bit of unneeded complexity.
The DataEngine mpris2 provides datasources for each registered mpris2
mediaplayer plus a datasource "@multiplex" which uses the most decent
mediaplayer (~= the one being active at last).
The mediacontroller plasmoid used which ever source was added last,
that caused problems when using multiple media players at the same
time (starting player1, starting player2 and then start playing music
with player1 would not cause the plasmoid to show player1).
With this patch the plasmoid simply uses "@multiplex" all the time and
thus gets all the magic for free.