broulik created this revision. broulik added reviewers: Plasma, VDG. Herald added a project: Plasma. Herald added a subscriber: plasma-devel. broulik requested review of this revision.
REVISION SUMMARY This rewrites the "Background services" KCM in QML using `ScrollViewKCM`. The two separate list views are merged into a single one with the configurable services at the top, and the ones that are loaded on-demand and "only for your convenience" at the bottom. A search field is added searching through name and plugin ID. Since the sortable table headers are gone, a filter combo is provided instead to filter for all, running, or non running services. As an extra Schmankerl when starting a service that immediately disables itself again (which technically isn't an error that would be indicated as such) a hint is shown to the user so they're not left wondering why it doesn't start. Furthermore, the code is cleaned up a lot (quite eerie, adding a 2020 Copyright to an existing 2002 one :), ported to json plugin data, and a proper `QAbstractListModel` added. TEST PLAN F7868523: Screenshot_20200107_223707.png <https://phabricator.kde.org/F7868523> F7868524: Screenshot_20200107_223814.png <https://phabricator.kde.org/F7868524> Trying to start the device automounter which disables itself on load when automounting is disabled in the KCM F7868525: Screenshot_20200107_223859.png <https://phabricator.kde.org/F7868525> Starting or stopping a service shows a little animation F7868531: Screenshot_20200107_224027.png <https://phabricator.kde.org/F7868531> This is mostly for when you apply changes and kded reloads, it will start all autoloaded modules, even if user manually stopped them. Originally I wanted to show an inline message along the lines of "some services were started again when you saved your changes because..." but that turned out to be too brittle/unreliable. Issues remaining: - Somehow that Kirigami listdelegate feature of adding right padding to take into account the scrollbar doesn't work in ScrollViewKCM - Since it's using delegaterecycler, the animation will play as you scroll up and down since as far as the item is concerned, status does change. - Some qt 5.14 adjustments (qregisteranonymoustype) - I get a binding loop on `Kirigami.AbstractListItem.implicitHeight` for my delegate for some reason REPOSITORY R119 Plasma Desktop REVISION DETAIL https://phabricator.kde.org/D26506 AFFECTED FILES kcms/kded/CMakeLists.txt kcms/kded/filterproxymodel.cpp kcms/kded/filterproxymodel.h kcms/kded/kcmkded.cpp kcms/kded/kcmkded.desktop kcms/kded/kcmkded.h kcms/kded/modulesmodel.cpp kcms/kded/modulesmodel.h kcms/kded/package/contents/ui/main.qml kcms/kded/package/metadata.desktop To: broulik, #plasma, #vdg Cc: plasma-devel, LeGast00n, The-Feren-OS-Dev, jraleigh, zachus, fbampaloukas, GB_2, ragreen, ZrenBot, ngraham, alexeymin, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, ahiemstra, mart