davidre created this revision. Herald added a project: Plasma. Herald added a subscriber: plasma-devel. davidre requested review of this revision.
REVISION SUMMARY This is a total rewrite of the global shortcuts kcm from scratch. It uses an abstract item model backend with a qml frontend. This resolves some issues the old kcm inherently had because it just stacked KShortcutEditors. First it enables a global serach/filter which either matches the component name, actions, default or set key combinations across components. Secondly KGlobalAccel can have multiple default/active key combinations for each action - the old kcm only exposed two each. The new kcm displays all default or set key combinations. The main visual structure is similiar to the old kcm. On the left there is a list with all components but rather than divided into "Application Launchers" and "Other Shortcuts" the sections are now called "Applications" and "System Services" (cf. notifications kcm) and the components are now assigned whether the service we find for a component is an application or not rather if the component was added via .desktop file. In the main view the shortcuts are displayed. Each item corresponds to one action. Initially each item is collapsed and shows the action name and a list of the currently set key combinations for that action. In the expanded form all default shortcuts are shown which can be activated or deactivated and all other active shortcuts ("Custom Shortcuts"). It is possible to change, remove or add new custom shortcuts. The kcm and model communicate directly with the daemon over DBus. This removes the need to awkwardly construct actions to pass to the KGlobalAccel API. TEST PLAN kcmshel kcm_keys REPOSITORY R119 Plasma Desktop BRANCH kcmkeys2 (branched from master) REVISION DETAIL https://phabricator.kde.org/D28744 AFFECTED FILES kcms/keys/CMakeLists.txt kcms/keys/ChangeLog kcms/keys/Messages.sh kcms/keys/README kcms/keys/export_scheme_dialog.cpp kcms/keys/export_scheme_dialog.h kcms/keys/export_scheme_dialog.ui kcms/keys/filteredmodel.cpp kcms/keys/filteredmodel.h kcms/keys/globalshortcuts.cpp kcms/keys/globalshortcuts.h kcms/keys/kcm_keys.cpp kcms/keys/kcm_keys.desktop kcms/keys/kcm_keys.h kcms/keys/keys.desktop kcms/keys/kglobalshortcutseditor.cpp kcms/keys/kglobalshortcutseditor.h kcms/keys/kglobalshortcutseditor.ui kcms/keys/package/contents/ui/ShortcutActionDelegate.qml kcms/keys/package/contents/ui/main.qml kcms/keys/package/metadata.desktop kcms/keys/select_application.ui kcms/keys/select_scheme_dialog.cpp kcms/keys/select_scheme_dialog.h kcms/keys/select_scheme_dialog.ui kcms/keys/shortcutsmodel.cpp kcms/keys/shortcutsmodel.h To: davidre Cc: plasma-devel, Orage, LeGast00n, The-Feren-OS-Dev, cblack, jraleigh, zachus, fbampaloukas, GB_2, ragreen, ZrenBot, ngraham, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, ahiemstra, mart