BasePlayerControl: Fix repeatMode bindings
BasePlayerControl: Mark some properties as readonly as appropriate
BasePlayerControl: Fix repeatMode de-sync
By removing repeatMode mirroring property we now have only single source of truth left for this data, and we won't end up with broken bindings after manual assignments.
Fixes possible de-sync between the state of the Repeat button and the actual state displayed in its drop-down menu. It can be caused by clicking on the button at least once, and then changing mode either via button's drop-down menu or via global application menu.
BasePlayerControl: Fix shuffle playlist mode de-sync
By removing shuffle mirroring property we now have only single source of truth left for this data, and we won't end up with broken bindings after manual assignments.
Fixes possible de-sync between the state of the Shuffle button and the actual state in mediaPlayListProxyModel. It can be caused by clicking on the button at least once, and then toggling the mode via global application menu.
NativeGlobalMenu: Fix "Decrease Volume" menu item's enabled state
- enabled: ElisaApplication.audioPlayer.volume > 100.0
+ enabled: ElisaApplication.audioPlayer.volume > 0.0
VLC: Clamp volume to acceptable range [0;100] before sending to backend
Otherwise libVLC returns -1 and ignores the request for volume levels higher than 100, so it not possible to max out volume level using global menu item for current values that are not multiples of 5.