Reimplement welcome page plugin using QWidgets (re: KF6 branch)
While helping to fix the missing icon image provider for the welcome plugin, I was remembered about being unhappy with that decade-old one-time effort to move to QtQuick UI for KDevelop, and even more the small glitches there (like sessions without projects not listed) or the KXmlGui action id ignoring approach to find menu entries.
So last night and this afternoon entertained myself in seeing how much work it is to try to reimplement things again using QWidgets. This is the result, for now as separate plugin so one can switch forward and backward when trying it.
Summary of motivation:
- QtQuick implementation bitrotted for many years:
- only one area (Development) working
- does not list sessions without any project
- a single UI library (QWidgets) across the app:
- easier to maintain for developers, do not need to know 2 technologies
- more consistent UI style
- less rendering glitches now and then (like on resizing)
- less runtime/install resources needed
- follows other QWidget-using apps and their newer welcome pages also only using QWidgets for that purpose
Not using QtQuick and bundling all the QML files as qrc sources cuts a good number of kBs:
binary | size (stripped debug build) |
---|---|
KDevWelcomePage2.so | 135064 |
KDevWelcomePage.so | 222104 |
And staring an empty session with respective plugin got top
to list these numbers
active plugin | VIRT | RES | SHR |
---|---|---|---|
KDevWelcomePage2.so | 2038016 | 374244 | 213492 |
KDevWelcomePage.so | 2163948 | 410264 | 218580 |
While Ark, Kate & Okular all share a principle style for the welcome UI different from the KDevelop one, for now tried to resemble the old KDevelop design, to separate concerns. If people then prefer to also redesign the UI, that can happen at a second stage, which should be easier e.g. in sharing code/logic by then all implementations using QWidgets.
What do you think?
It seems like an antagonistic step, also to me :) But at the same time, for the reasons given above, for now the right thing to do, before one day hopefully a serious effort is started to embrace and see to fully move to the QtQuick side of the UI worlds.
If people agree, would then later move to make this patch actually replace the old plugin, reusing the translations and ids etc, so it is the drop-in replacement it could be.