The Unusual Suspect: Layouts for sleeker KDE applications

20
The Unusual Suspect: Layouts for sleeker KDE applications Caio Marcelo de Oliveira Filho Eduardo Madeira Fleury July 6th, 2009

description

Now that KDE 4 has been available for some time, we can see that its good looks is one of its most appealing features. In the meanwhile, fluid and rich UIs became a standard in the mobile world. Together, these trends made users see their desktop from a new perspective, where software must go beyond functionality and look nice too. High level initiatives like the Plasma new generation desktop, KWin composite effects and the new Oxygen themes, as well as low level ones like the Qt Animation Framework and the Declarative UI, are enabling us to reach such high level of user experience, something that used to be a 'plus' but is now a 'must'. An often overlooked tool that helps making KDE aesthetically better is the Layouting mechanism. The simple idea of describing how things look instead of moving elements to hardcoded positions on the screen has great and unexplored potential. We want to show how KDE projects can take advantage of that. This talk will cover flexible layouts, self-animated layouts and animation between different layouts, recent features we have been developing for Qt framework, together with Qt Software. Subjects will include the use cases that drove us, implementation constraints we had, APIs, usage and the benefits that arise from the use of such technologies.

Transcript of The Unusual Suspect: Layouts for sleeker KDE applications

Page 1: The Unusual Suspect: Layouts for sleeker KDE applications

The Unusual Suspect:

Layouts for sleeker KDE applications

Caio Marcelo de Oliveira FilhoEduardo Madeira FleuryJuly 6th, 2009

Page 2: The Unusual Suspect: Layouts for sleeker KDE applications

Who are we?

• Nokia research institute in Brazil – INdT

• openBossa – FOSS stream at INdT

• Collaborating with Qt Software / KDE:

- Qt Kinetic that's us :-)←

- Qt Webkit

- Plasma Netbook

- ItemViews-NG

Page 3: The Unusual Suspect: Layouts for sleeker KDE applications

Background

• Fluid and Rich UIs have become a standard

• Collaborative work: designers and developers

• Several initiatives to enhance KDE looks

- High level

- Low level

• Layouting tools needed to evolve

Page 4: The Unusual Suspect: Layouts for sleeker KDE applications

Layouts in Qt

• Engine that handles geometry of items

• Widgets can use layouts to manage its children

• Today: Linear, Grid, Stacked and Form

Page 5: The Unusual Suspect: Layouts for sleeker KDE applications

Covered in this presentation

• Flexible Layouts

• Custom Layouts

• Application of Layouts and Widgets

• Multiple Layouts

• Integration with Declarative UI

Page 6: The Unusual Suspect: Layouts for sleeker KDE applications

FLEXIBLE LAYOUTS

Page 7: The Unusual Suspect: Layouts for sleeker KDE applications

Flexible Layouts

• Layout behavior based on its configuration

• Designers can interact with the layout

• More power, less layouts

• AnchorLayout available at Qt Gitorious

• Edje relative positioning is similar

Page 8: The Unusual Suspect: Layouts for sleeker KDE applications

CUSTOM LAYOUTS

Page 9: The Unusual Suspect: Layouts for sleeker KDE applications

Custom Layouts

• Layout behavior rules based on its engine

• Developers implement custom algorithms

• Abstract / Hide internal decisions

• Powerful handling of item addition / removal

• Internal animations

Page 10: The Unusual Suspect: Layouts for sleeker KDE applications

Usage of Flexible vs Custom

• C++: Call methods x Create subclass

• Call methods: Good for high level tool or QML

• Subclasses: More control, require a developer

Page 11: The Unusual Suspect: Layouts for sleeker KDE applications

LAYOUTSOR

CONTAINER WIDGETS

Page 12: The Unusual Suspect: Layouts for sleeker KDE applications

Container Widgets

• Also responsible for children geometries

• Usually create its own items

• ItemViews: “delegates” or “item creators”

• Can be flexible too (e.g. ItemViews-NG)

• Container Widget = Engine + Widget Factory

Page 13: The Unusual Suspect: Layouts for sleeker KDE applications

Layouts or Container Widgets?

• Layouts handle child widgets

• Container Widgets handle data (e.g. models)

• Container Widget = Layout + Widget Factory

Page 14: The Unusual Suspect: Layouts for sleeker KDE applications

MULTIPLE LAYOUTS

Page 15: The Unusual Suspect: Layouts for sleeker KDE applications

Multiple Layouts

• Application screens are dynamic

• Different states associated to the interface

• Single set of widgets, multiple layouts

• Animate from one layout to another

Page 16: The Unusual Suspect: Layouts for sleeker KDE applications

DECLARATIVE UI INTEGRATION

Page 17: The Unusual Suspect: Layouts for sleeker KDE applications

Declarative UI Integration

• Layouts are declarative!

• Layout integration still in discussion

• Use property propagation to “anchor” items

• Support for layouts would be useful:

- Different layouts

- Optimization

Page 18: The Unusual Suspect: Layouts for sleeker KDE applications

Thank you! :-)

Page 19: The Unusual Suspect: Layouts for sleeker KDE applications

Qt Labs America

• Qt / KDE place in America, starting in Brazil

• Promotion and mentoring of FOSS projects

• Tech-days in universities

• Working together with KDE

Page 20: The Unusual Suspect: Layouts for sleeker KDE applications

Caio Marcelo de Oliveira [email protected]

Eduardo Madeira [email protected]

http://eduardofleury.com

Freenode #qt-kinetic