kinetic-declarative plasma integration

Alan Alpert alan.alpert at nokia.com
Wed May 13 11:18:27 CEST 2009


Hi Plasma devs,

Those of you following Qt Labs closely will have heard about Qt Kinetic's 
Declarative UI 
http://labs.trolltech.com/blogs/2009/05/13/qt-declarative-ui/ . As 
Declarative UI is targeted towards enhancing the same sorts of applications 
as Plasma, plasma integration is a good real-world fit. So we've throw 
something together (it's in playground/base/plasma/kinetic-declarative) and 
hope that it might be useful in your plans to add Netbook and media center 
components; declarative UI is designed to help create embedded device style 
UIs! The Plasma integration we've done allows plasmoids to be written 
exclusively in QML, or in conjunction with C++. I'll let the blog posting 
handle all the riveting details on Declarative UI itself, and focus on 
providing more technical details about the plasma integration we've done.

Firstly the suggested plan for the plasma integration is that it lives in 
playground and is not intended for general use until Qt Declarative 
stabilizes. Where it goes in terms of technical improvements is unknown; but 
we'd love to see what people do with it. So far it's not complete, but 
provides a good glimpse of how Declarative UI could benefit a project like 
Plasma. Gaps in the integration that we're aware of include setting the 
background hint from QML, using plasma widgets from QML and refactoring the 
QML frontend part of the kinetic plasmoid into a library class you can just 
inherit from and call setQml() on.

If you checkout the plasma integration repository you'll find that it provides 
a script engine that can run packages comprised of QML files, a plasmoid that 
acts like the qmlviewer program and an example of an applet written in C++ 
that draws on a QML file for its fluid UI. There is also a file explaining 
how to use plasma features like the data engines and theme easily in your QML 
files, along with the standard QML described in the labs post. You need only 
the Qt Kinetic Declarative UI repository and KDE trunk as recent as 4.3 beta 
1 (r964546) and you can add Declaratively styled plasmoids to your desktop. 
The attached screenshot shows my desktop covered in QML plasmoids, although 
the animation doesn't get conveyed well in pictures. The plasmoids to the 
left are the plasma-integration examples, and the plasmoids to the right are 
examples for just regular Qt Declarative. Sadly I'm not technically competent 
in graphic design and so the plasma integration repository contains a dearth 
of compelling examples. But on the plus side it's easy to run any of the 
Declarative UI examples as simple plasmoids if you really like them. Note 
that the examples in the screenshot that weren't designed as plasmoids have 
had minor changes (set 'clip: true' on the root item and remove any opaque 
background image) to make them fit in better.

There is only one good example in the plasma integration repository, a weather 
plasmoid. Because there's only one, it has been a little warped so that it 
can be used in a variety of different ways (you can run it as an applet, as a 
non-applet C++, through the script engine and through the kinetic plasmoid). 
Despite this the weather example is still a surprisingly small amount of code 
to get a fairly fluid visualization of the weather data engine. And 
that 'code' does not need to include C++ (although the weather data engine is 
not designed to be set up declaratively). If even I can make something that 
looks decent I can't wait to see what actual designers do with it.

Qt Kinetic Declarative UI is still under development and not ready for general 
use, the plasma integration doubly so. However, we'd love for you to play 
around with it and tell us your thoughts. This will help us improve 
Declarative UI even further before release.

-- 
Alan Alpert
Software Engineer
Nokia, Qt Software


More information about the Plasma-devel mailing list