This merge request expands upon the folio and halcyon background blur effects, making the folio background blur include the backgrounds of folder icons, the favorites bar, and wallpaper selector, and for halcyon, it now includes the folder icons, app library, search, and wallpaper selector. To accomplish this, a mask layer plugin was created to easily attach to these elements. This way, we can use a `OpacityMask` to cut out from the existing blur layer, thus hopefully keeping the performance cost low. And with my limited testing, it does at least seems to run about the same on my oneplus 6t, though it is not really a low end device, so I can not fairly judge the impact for something slower (eg. PinePhone). To be on the safe side, a third option was also added to the folio settings, allowing for the ability to toggle back to the old functionality if needed.




Add a settings page to halcyon, which allows for toggling whether the
wallpaper is blurred and double tapping on the homescreen to lock the
device. This also does a bit of refactoring for folio and halcyon to
share the same wallpaper blurring item.
Contributes to #317
This refactor changes WindowMaximizedTracker from being a Singleton, and allows for it to be created in a way such that screens can be filtered out.
This fixes external screens from having their homescreen "zoom out" when an app is maximized on another screen.
Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/333
There is some behavior with "show desktop" mode that we do not want (as it self-restores under certain focus conditions).
Just simply minimize all windows instead.
Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/306
I added a ShaderEffectSource in between so that the blur only samples the wallpaper when necessary
I also switched to FastBlur which seems to be much, much faster than MultiEffect on the PinePhone.
From testing, this made the performance about on-par with no blur at all.
The wallpaper blur causes extreme lag on the PinePhone, best to disable it for now by default, and hide it behind a setting. :C
https://invent.kde.org/plasma/plasma-mobile/-/issues/306
PS: is there a string freeze ongoing? this introduces 2 new strings
The eventual goal is to have as few singletons with state as possible in the mobileshell component when it is imported into components such as the lockscreen.
This doesn't fully accomplish it, but moves the audio provider singleton to MobileShellState, which will eventually need to be prevented from importing into non plasmashell processes.
This also disables the sound feedback when changing volume, since it can be a source of lag when showing the applet.
Having a global set margins and orientation (that were calculated from the panel containment) caused a lot of issues with the way bindings were evaluated across panels, and with high coupling.
Now use properties from within containments to determine shell margins instead, which removes the dependency on other containments for measurements. This allows us to get rid of TaskPanelControls as well!
Fixes: https://invent.kde.org/teams/plasma-mobile/issues/-/issues/198