Record app launches from window creation so recent and most-used
lists survive after windows close.
Use those models in the convergence launcher and keep the hover
surface in the unified chrome.
A panel between the drawer and the power panel lists the XDG
categories installed on the device as icon-and-label tiles.
Tapping one filters the app list; text search still applies
on top. The filter resets each time the drawer opens. Audio,
Video and Settings fold into their parent groups to match
Kickoff.
Should help reduce the effect of https://invent.kde.org/plasma/plasma-mobile/-/issues/440
Instead of fully resetting the application list when the ksycoca db
changes, calculate which items are removed and added based on the
storageId and emit targeted signals for them.
Currently delegates do not get deleted when removed from models. Due to
the complexity of drag state and other objects, we can't simply delete
the delegate when removed from the model because they might still be
involved in animations or other state at the time of removal. Use smart
pointers to have the delegate objects deleted instead.
QML unfortunately doesn't support QSharedPointer, so we need to expose raw pointers to it.