Last week I was continuing my work on the client UI.
The week was quite productive with many significant changes applied in the client UI and the UI framework itself. The biggest thing was the introduction of an abstract data model that unifies the way items are set up and handled in widgets (menus, lists, popups, etc.). This approach will also allow very large data sets of which only a portion is actually concretely present on the screen (virtualization).
Another significant refactoring was that I separated the layout logic present in a number of widgets into two classes dedicated for laying out things (in Sequential or Grid mode). This makes it easier to construct more complicated widgets as one doesn't have to manually define all the layout rules.
These two large changes affected virtually all the existing widgets. They also allowed me to introduce a couple of new ones: a combination of a button and popup menu for making choices (cf. dropdown list) and popup dialogs.
(All of these changes are still in my UI work branch and not yet in the unstable builds.)
I also noticed and fixed a problem in the project's qmake files that was causing everything to load very slowly when the project files were being parsed. Note to self: starting several external processes from every single sub-project is not a good idea. This is a nice fix as daily development work is no longer hindered by the sometimes excruciatingly long load times.
This week I will still continue on the UI. I've pretty much now made it possible for the autoupdater dialogs to be implemented with Doomsday's own widgets; that is my next major objective.