Skip to content

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.

After:
Screenshot__Y_M_D__H_m_S-1

Before:
Screenshot__Y_M_D__H_m_S

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.

Edited by Friedrich W. H. Kossebau

Merge request reports