UIQ v3.0

Platforms:

uiq3-1.jpgUIQ version 3.0 was announced in October last year at the Symbian Smartphone Show, the same day as Sony Ericsson unveiled the P990, the first phone to be announced for the new platform. With this offering UIQ Technology now present phone manufacturers with a platform that goes beyond the customary devices with touch screen only input, and which gives developers the possibility of supporting a variety of phone style configurations from a single codeline. The most important changes are the improvements in the application UI framework, and the transition to Symbian OS 9.1, upon which UIQ 3 is based, which entail new APIs and concepts.

This article will focus on the UI framework enhancements of UIQ 3 and provide an overview of the other components of the platform.

UI Configurations

UI configurations comprise a set of parameters that define the look and feel of a phone. UIQ Technology provide five pre-defined configurations, having optimised their own application suite for the two reference configurations.

As we can see from the table below, the main additions to the UI are the support for devices without a touchscreen and the addition of softkey support. Softkeys are onscreen representations of commands mapped to hardware keys and a familiar feature of phone UIs.

uiq3-2.png

Applications can be optimised for the different configurations in their resource file so that the UI can be tailored to the particular features of the UI, reconfiguring the available views and commands as appropriate. Commonly used menu items of a pen style UI could be mapped to the softkeys of a UI with no touch screen, for example.

Phone manufacturers also have the option of adding their own UI configurations or changing the attribute values of a phone configuration. It's worth bearing in mind that a particular phone can support more than one configuration. For example, the P990 has a number pad that can be flipped up or down to switch between the Softkey and Pen Style configurations.

Commands

UIQ 3 introduces the concept of a command, which is basically a more abstract way of describing a UI representation of an action that the user can perform, without tying that action to a particular control type, like a menu item or button. That's not to say that the programmer has no control over where a command is placed in the UI, as each configuration has rules that specify how the commands are distributed amongst the operators, as softkeys, menus etc. are now known. Rather, this concept enables the handling of user interactions by the Command Processing Framework (CPF) and their implementation by the application programmer to take place in a more generic way.

The control over the location is where UIQ Technology's concept of a command differs from MIDP's, whose commands are mapped to particular types of action, and it allows for the optimisation of applications for particular UI configurations.

So how does it work? Commands are typically defined in application resource files. When an application receives focus, the command manager populates its command list with these commands and distributes them to the appropriate operators. The command list can then be updated depending on which controls have focus - for example, the edit options associated with a text-input field could be appended to, or completely overwrite, a menu. When an operator invokes a command, it is handled by a receiver in the application, which is normally the view.

The process is highly configurable. Command lists can be dynamically altered in code and the distribution of commands can be customised so that, for example, commands can be duplicated on softkeys and menus. In addition, applications can have their own custom operators to consume commands if they don't want them placed on the softkeys or menus.

Layout

UIQ Technology aims to standardise the appearance of applications to a greater extent with the introduction of system building blocks, which manage the layout of compound controls. As the name suggests, the application view can then be constructed from building blocks.

Building blocks are, in fact, controls themselves, and have a number of slots into which other controls can be added. They have their own internal layout manager that controls the alignment of the different components of the building block for the current UI configuration. This layout is then updated automatically by the layout manager in response to changes in UI configuration, such as when a P990 user opens or closes the flip. Attributes of the building block, such as alignment and margins, can be configured as required.

The use of system building blocks facilitates a consistent “look and feel” amongst applications on the platform, as well as providing predictable sizes of controls, which is useful when translating the strings used in an application into different languages. It is possible to create custom building blocks, but their use is discouraged, as the automatic support for different UI configurations is lost. This support needs to be implemented for at least the pre-defined configurations if an application that utilises custom building blocks is to provide a consistent user experience, no matter the device that it's running on.

The application view will have a container that houses the component controls, such as building blocks. The layout of the control containers can be configured in the resource file, both of the container as a whole and its individual components. Control collections can be utilised to specify control attributes in a single location, thus avoiding duplication in the resource file.

When an application is run, a control provider uses control factories to construct the controls defined in the resource file to populate the view; so, when creating custom controls, a control factory will need to be implemented to construct them. You can elect to take full control of construction or just create the control from the resource file. Further, there's the option to override view construction and layout methods and customise resource file structures to support dynamically created controls.

Application Suite

The UIQ Platform includes an Application Suite. UIQ 3 sees the addition of some new features, and the introduction of Symbian OS 9.1 brings with it some changes to the application engines.

Messaging now incorporates meeting invitation support so that meeting requests can be sent via email and implemented by 3rd parties that plug into the Messaging Architecture to provide support for additional message types, such as push email from various vendors. The introduction of data caging, which is a mechanism for applications to have their own secure data store, has seen some minor changes to attachment handling.

Agenda now has a new application engine associated with it featuring timezone support, and Contacts now has a Shared UI that is accessible from other applications to display contact information. Instant Messaging clients can also be integrated into Contacts with the addition of the Instant Messaging Integration API.

Customisation

UIQ Technology is keen to stress the configurable nature of its platform, and the extent to which both phone manufacturers and operators are free to be able to customise it. Licensees have always been able to extend the platform to the requirements of their devices, but the addition of the Operator Configuration Package means that application icons, themes, animations and sounds can now be configured over-the-air, with the UI of devices configurable to larger degree than before.

Accompanying the launch of the platform, UIQ Technology announced the UIQ Developer Program to move the overhead of developer support away from the phone manufacturer. Licensees will still be responsible for the support for any extensions that they add, but the main port of call for developers on UIQ 3 and beyond will be the UIQ Developer Web Portal

More information

UIQ
http://www.uiq.com/uiq

UIQ Developer Web Portal
http://developer.uiq.com/

Sony Ericsson P990
http://www.sonyericsson.com/spg.jsp...

Sony Ericsson Developer World
http://developer.sonyericsson.com/

Symbian OS Version 9.1 Functional Description
http://www.symbian.com/technology/s...

About EMCC Software

EMCC Software is a leading provider of mobile solutions and development services. With comprehensive experience in open mobile OS development and enterprise solutions, EMCC Software has been working within the Symbian, Linux, Java and Windows Mobile communities since 1998. Our wide-ranging expertise includes platform development, communications, messaging and UI creation. Our clients include all of the mobile industry leaders. EMCC Software specialises in consulting, development and training services and has developed a portfolio of leading-edge smartphone software solutions.

Further information about EMCC Software Ltd can be found at www.emccsoft.com.

Review posted January 25th, 2006 by emcc