romangg created this revision. romangg added reviewers: Plasma, KWin. Herald added a project: Plasma. Herald added a subscriber: plasma-devel. romangg requested review of this revision.
REVISION SUMMARY The KScreen KCM was still partly Qt Widgets based. Also it did not use a model for the outputs but instead created objects in C++ for visual representation of the outputs. This patch bases the KScreen KCM on ConfigModule removing any dependency on Qt Widgets. The former widgets based settings form is rewritten as Kirigami form layout. The already existing QML part has been also rewritten with a model as data provider for the outputs and input handlers for interacting with the outputs in the overview. On hotplug events the settings dialog is reset and the user is informed. Output retention now is set for the whole config instead of individual outputs what simplifies it. On Wayland output scaling is now fractional via a slider. This has not yet been tested though and there might be some more work necessary in KWin. The output unification has been removed for now. It was broken in certain ways and we should try instead to improve the libkscreen backend to make unficiation more easy to use. For now as a workaround the outputs can be placed on top of each other to create a clone effect. The KScreen maintainership is changed to me. TEST PLAN Manually on X and Wayland. REPOSITORY R104 KScreen BRANCH qmlize REVISION DETAIL https://phabricator.kde.org/D22468 AFFECTED FILES CMakeLists.txt common/utils.cpp common/utils.h kcm/CMakeLists.txt kcm/Messages.sh kcm/config_handler.cpp kcm/config_handler.h kcm/kcm.cpp kcm/kcm.h kcm/kcm_kscreen.desktop kcm/kcm_kscreen.desktop.cmake kcm/output_identifier.cpp kcm/output_identifier.h kcm/output_model.cpp kcm/output_model.h kcm/package/contents/ui/Output.qml kcm/package/contents/ui/OutputIdentifier.qml kcm/package/contents/ui/OutputPanel.qml kcm/package/contents/ui/Panel.qml kcm/package/contents/ui/RotationButton.qml kcm/package/contents/ui/Screen.qml kcm/package/contents/ui/main.qml kcm/package/metadata.desktop kcm/qml/CMakeLists.txt kcm/qml/Output.qml kcm/qml/OutputIdentifier.qml kcm/qml/Tip.qml kcm/qml/main.qml kcm/src/CMakeLists.txt kcm/src/controlpanel.cpp kcm/src/controlpanel.h kcm/src/declarative/qmloutput.cpp kcm/src/declarative/qmloutput.h kcm/src/declarative/qmloutputcomponent.cpp kcm/src/declarative/qmloutputcomponent.h kcm/src/declarative/qmlscreen.cpp kcm/src/declarative/qmlscreen.h kcm/src/kcm_kscreen.cpp kcm/src/kcm_kscreen.h kcm/src/kcm_testapp.cpp kcm/src/kscreen_widget.ui kcm/src/outputconfig.cpp kcm/src/outputconfig.h kcm/src/previewwidget.cpp kcm/src/previewwidget.h kcm/src/resolutionslider.cpp kcm/src/resolutionslider.h kcm/src/scaling.ui kcm/src/scalingconfig.cpp kcm/src/scalingconfig.h kcm/src/stylepreview.ui kcm/src/unifiedoutputconfig.cpp kcm/src/unifiedoutputconfig.h kcm/src/utils.cpp kcm/src/utils.h kcm/src/widget.cpp kcm/src/widget.h kded/CMakeLists.txt kded/osd.cpp tests/osd/CMakeLists.txt To: romangg, #plasma, #kwin Cc: plasma-devel, LeGast00n, jraleigh, fbampaloukas, GB_2, ragreen, Pitel, ZrenBot, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart