sábado, 4 de agosto de 2012

Status Report - QML Plasmoid for Plasma NM

Hello everyone,

A long time has passed since the last post I created here (sorry about that). I have been very busy working on my GSoC proposal and intend to show the results I got so far.

As you could see in my previous post, at LaKademy I could start the creation of the connections List Model to show wireless connections. After talking to Lamarque we decided to create a plasmoid with the same features that exist in the C++ one. So I improved my List Model to support other kinds of connections too (Wired ethernet and VPN e.g.). It's also possible to connect to a network, disconnect and enable or disable the wireless interface just like it can be done in the C++ popup. An example of how the connections tab is organized can be seen below:

Connections List Model in QML
Another thing that I did, was to filter the Normal Connections from the VPN and Shared ones. Every time a user selects a different tab in the plasmoid, the connections' list will change and show different ones corresponding to the tab that it was selected. The next illustration shows what I said before:
Connections shown in each tab.
Besides the Connections List Model I also created the Interfaces List Model, in other words, the list widget that will show what interfaces are available in the machine or not. As it's possible to see inside the C++ plasmoid, when an interface item gets hovered in by the mouse cursor, the connection items that correspond to the interface item changes their states too. Furthermore, each time an interface item gets clicked, the interface details widget for the selected interface appears. An example of the interfaces List Model can be seen below:
Interface and Connection List Widgets
As I said before, when an interface item gets clicked, the interface details widget appears, so, I ported it to QML too, the best thing to do was to embed the C++ object inside the QML Plasmoid, by the end, the result was pretty good and it's possible to see the traffic plotter inside the plasmoid to the interface or connection (if it was connected before) that was clicked. 

So, today, we have a QML Plasmoid for Plasma NM with almost the same features of the C++ one (I didn't show, but the Mobile Broadbad interface is also treated). To compare with what we have today, there you go two screenshots of the C++ Plasmoid for Plasma NM:

C++ Plasmoid for Plasma NM
By this last week before the pencils down date I intend to improve some GUI features, like checking relative positioning in QML, find some bugs to fix (and fix them, of course) and create the "Show %1 more connections" widget, it's present inside the C++ plasmoid but I didn't create it in the QML version yet.

I intend to post more frequently here, so, I will post soon to show the improved QML plasmoid and some things about all the experience too.

That's all for today. Thanks for reading! :) Bye!

11 comentários:

  1. A intenção é de apenas reproduzir a funcionalidade do plasmoid atual para QML para melhorar a manutenção do código ou será adicionado algo novo ?

  2. Cheers, keep up the good work!

    Incidentally, do you know if plasma will ever support right-click events? Not being able to right-click listed connections seriously hurts usability (in my own snowflake opinion).

  3. One more step, thanks ! :)

    But I can't help but thinking that often, the layout of some KDE UIs don't looks so good... the items seems to "float" in the windows :/

  4. A intenção é portar o plasmoid C++ para QML e a partir daí implementar as melhorias. Não é fácil imlementar coisas novas no plasmoid C++, com QML fica muito mais fácil, inclusive criar versões diferentes do plasmoid (para desktop e tablet por examplo)

    In English: the intention is to port the C++ plasmoid to QML and from there implement new features. It is not easy to implement new features in the C++ plasmoid. On the other hand that is much easier with QML, we can even create different plasmoid versions: one for desktop and another for tablets.

    Right menu buttons are disencouraged in plasmoids. None of the main plasmois shipped with KDE SC (battery and device notifier) uses them, except for launching the configuration module. Anyway, I do not think it is possible to create a right menu button for an element inside the plasmoid. The menu for the entire plasmoid would get called instead.

    The layout is going be improved, Arthur wrote that in the post. The UI usuability changes are going to continue after GSoC too now that the work in the background (mainly the list models) are almost done.

  5. Este comentário foi removido pelo autor.

  6. Great work Arthur, congratulations! =)
    And congratulations to Lamarque too!

  7. Ok... as it goes for coding and doing your job - it's great and keep it up my friend BUT... you need to learn about something called "pixel perfect layout". Please look at this: http://imgur.com/s2u7n

    1. thanks, a few things are already corrected, the other ones I'm going to take a better look. Sometime the problem is that the space comes from the QML Plasma Widget (for the Tool Button used in 'Settings...' and 'Show Connections' e.g.)