Skip to content

Zchydem's Blog

#Qt, #Linux, #Programming, #MeeGo…

Archive

Tag: Maemo 6 UI Framework

Probably many of the readers of this blog have noticed that Nokia released a preview of UI Extensions for MObile aka Uiemo this week. In my opinion this is very interesting because Nokia has been developing two, very large, expensive UI frameworks and both of them are built on top of Qt. The development has been done at the same time also. Some time ago I wrote a blog article of “Maemo 6 and Concerns of the Community” where I referred couple of ongoing discussions in maemo.org. In that specific blog post I was guessing little bit how Orbit would probably work on top of Qt. I wasn’t so wrong after all:)

Now many of you readers will think that “Oh no… Now this guys is doing another Peek to XXX series of Uiemo”:) Don’t worry I won’t do that. I just don’t have time for doing such a large review at the moment. Instead I want to go through couple of things related on Uiemo. One interesting detail is that the following diagram from my previous post was not so far from the truth.

DirectUI vs. DirectUI

The only difference is that the underlying platform can be Symbian, Windows or Linux/Maemo. Yes, there is a support for Maemo also. Check Kypeli’s post from his blog where he built Uiemo for Maemo 5. Current version of Uiemo is not a cross platform though. It doesn’t support Mac (OS X) at the moment  which would be nice to have at some point.

continue reading…

This article of Maemo 6 Service Framework continues the series of “A Peek to Maemo 6 UI Framework” articles. There are older articles parts I, II, and III if you haven’t read them yet. The Maemo 6 UI Framework is quite large (almost 100 000 lines of c++ code) therefore I want to introduce larger modules rather than smaller things like single widgets. I want to make the reader to understand what you can do with the UI framework, how you can design your application (MVC + layouts) and how you can use services that platform provides or introduce your own services.

Because we are dealing a huge UI/Application Framework  which each application in Maemo 6 device should use, there must be some kind of centralized way to make applications provide public interfaces for other applications. This is where Service Framework comes to the picture.

I checked a doxygen documentation of the Maemo 6 UI framework and there is own section for Service Framework. The following bullet list is derived from the Service Framework documentation. The objectives of Service Framework are:

  1. Provide a simple IPC mechanism
  2. Remove run time binary dependancy between the service user and provider
  3. User of an interface doesn’t need to worry about the logic of choosing or connecting to an interface.
  4. Provides an interface for querying a list of providers and choose one of them

They also state in the documentation that Service Framework can be used for example launching another application such as a web browser or showing recent contacts. I guess this means that each application in Maemo 6 platform can provide a specialized interface to other applications that may be interested in such a service.

continue reading…

My last article of Maemo 6 UI Framework was about the layouts and how they work and are designed. In that article, I criticized a bit the implementation because in  my opinion they could have used QStateMachine and Qt Animation Framework combination to make the design simpler. One of my principles is that if I criticize something, I need to be able to provide an alternative solution, but it might not be a better than the orignal one:) I guess there’s no sense review anything if you are not able to provide any feedback and alternative ways to do things. So the result speaks most. Here’s a youtube video running animated layouts on N900.

continue reading…

One of the greatest thing in Qt has always been a sophisticated layout management. There are actually two different layout systems in Qt: a layout management for QWidget based widgets and a layout management for QGraphicsWidget based widgets. This article will focus on the latter one, but the basic idea in both layout management systems is similar – the application developer doesn’t need to hardcode widget’s size and position in relative its parent, all this is done automatically by the Qt. Qt also tries to fill in all the available space so for example when resizing the application window, the layout always fills the free space (I know this can be prevented also). At this point if you are not familiar of Qt’s layout management it is worth to spend some time with reading documentation  from here.

continue reading…

This article continues the series of Maemo 6 UI Framework review. In the first article I did couple simple metrics measurement using basic unix/linux tools. I also showed how to create a simple Maemo 6 UI application. In this article I want to introduce a consept which is heavily used in the framework. It’s called MVC model i.e. Model-View-Controller. For those who are not familiar with this consept, just google it and you will find thousands of refers to it.

In general the MVC model works in the following way:

  • Model – contains data
  • View – Visualizes Model’s data. Same model can also have arbitrary amount of views e.g. one view presents data in table and the other view visualizes it in a list or graph etc.
  • Controller – handles e.g. events such as mouse clicks, keyboards events and so on

continue reading…