Question about the shutdown dialog's reboot list implementation

Konstantinos Smanis konstantinos.smanis at gmail.com
Fri Jul 6 23:33:21 BST 2012


On Sat, Jul 7, 2012 at 1:02 AM, Lamarque V. Souza <lamarque at kde.org> wrote:
> Em Friday 06 July 2012, Konstantinos Smanis escreveu:
>
>> Hi,
>
>
>
> Hi,
>
>> I am working on a patch for bug #297209
>
>> (https://bugs.kde.org/show_bug.cgi?id=297209) and couldn't help but
>
>> notice that since the Shutdown Dialog was QMLified, the code that
>
>> shows the reboot list (when long-clicking the Reboot button) has been
>
>> moved in the QML code of the theme
>
>>
>> (http://lxr.kde.org/source/kde/kde-workspace/ksmserver/themes/default/main.
>
>> qml#319), which means that every theme should duplicate this code. I have
>> a
>
>> proper fix for the above mentioned bug written in C++ (generate a
>
>> proper QMenu with submenus) which applies perfectly on the 4.8 branch
>
>> (which is C++ only), so I was thinking maybe generate the menu in the
>
>> C++ part of the code and pass it on to the QML theme? Being a total
>
>> QML newbie I don't know if that's possible, plus after a quick search
>
>> I can't figure out how to implement submenus for the context menu in
>
>> QML (it uses a custom ContextMenu component).
>
>>
>
>> I wouldn't like to dig in QML just for this and I think it makes more
>
>> sense if the list was centrally generated and not in every theme.
>
>> Still, if the code should reside in the theme, I would appreciate any
>
>> pointers as to how implement submenus in the context menu.
>
>
>
> I am the one that implemented the QML shutdown menu. I moved the code that
> creates the reboot menu to QML to give the possibility to create different
> QML themes that do not necessarily need to handle all the options ksmserver
> implements or to show the reboot entries using any QML component available
> (not necessarily a menu).
>
>
>
> It's not possible to use QMenu (or other QWidgets subclasses) in QML as far
> as I know. I think we can implement submenus in the default theme (in QML).
> For a quick fix you can try passing the correct grub index to the
> rebootOptions context variable (this must be done in shutdowndlg.cpp) and
> then assign it to variable itemData["itemIndex"] in main.qml. That should
> make it select the correct boot option. The menu will still be linear
> (without submenus), we can fix that later.
>
>
>
> --
>
> Lamarque V. Souza
>
> KDE's Network Management maintainer
>
> http://planetkde.org/pt-br

It already works fine without even touching the ksmserver stuff (my
only modifications are in kdm's parsing) but it looks quite ugly
without submenus: http://i50.tinypic.com/96bw35.png
In the screenshot above, the root menu should only contain 4 items,
the second of which should be a submenu.

As I mentioned, I have already implemented the transformation from a
linear list to a menu with levels, but it is in C++ if that's going to
be of any help at all.

PS: The 'nested test' submenu in the screenshot is in fact 'ne&sted
test' in the config file (for my testing purposes). I guess the
ampersand is erroneously treated as an accelerator while it shouldn't.
Needs to be fixed as well.

-- 
Konstantinos Smanis

>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<




More information about the kde-core-devel mailing list