Report from a recent developer seminar given by UIQ's Daniel Backman:
UIQ's Daniel Backman gave a session introducing delegates to UIQ 3. UIQ is a user interface layer that runs on top of Symbian OS 9.1. UIQ provides two layers above the OS - the UIQ Application Suite (a series of standard applications such as a contacts manager) and the UIQ Development Platform (which enables developers to write applications for the UIQ platform). UIQ has had two major public releases. UIQ 2 is used in devices already on the market such as the Sony Ericsson P910, the Motorola A1000 and the BenQ P30. UIQ 3 is the most recent release and is being used in phones which will reach the market shortly such as the Sony Ericsson P990, the Sony Ericsson M600 and the Sony Ericsson W950. There is therefore a great opportunity to develop applications for a new range of high end handsets using the UIQ 3 platform.
The biggest change in UIQ 3 is the support for a single application code base supporting multiple UI. UIQ 3 ships (to device manufacturers and in the SDK) with three reference UIs. These are PenStyle, SoftkeyStyle and SoftkeyStyleTouch representing pen based input, soft key input and soft key / pen input respectively. Applications automatically receive the look and feel of the device, regardless of screen resolution, input or orientation without the developer having to write extra code. As a result the principal changes for developers in UIQ 3 are the use of more abstract APIs for UI creation, layout and management. At a conceptual level there are general settings for the menubar / softkeys, touchscreen / no touchscreen, hardware keys, portrait / landscape modes depending on the device (and leading to a different layout and command set per UI), but these are changeable at run time. Devices may have more than one UI configuration (e.g. flip closed mode in the P990).
The UI configuration available to the developer is highly customisable. While the default behaviour will automatically create the necessary elements in the appropriate style automatically (e.g. softkeys for one handed devices rather than buttons for pen driven devices) it is also possible for the developer to create custom setting on a per UI basis. Thus it is possible to change the layout to achieve optimum usability for a particular application. While in most cases the automatic configuration is sufficient in some cases optimising on a per UI basis may lead to a better user experience.
As an example of UIQ 3 flexibility Backman demonstrated the style of UI. The P990 uses both PenStyle (flip open mode) and SoftkeyStyle (flip closed mode), while the M600 and W950 both use SoftkeyStyleTouch. The P990 consequently has 6 styles of UI configuration (PenStyleLandscape, PenStylePortait, PenStyleLandscape180, SoftkeyStyleSmallLandscape, SoftkeyStyleSmallPortait, and SoftkeySmallLandscape180), and the M600 and W950 have two (PenStyleTouchLandscape, and PenStyleTouchPortrait).
Backman noted that developers should bear in mind that licensees may provide additional functionality through APIs. Sony Ericsson is providing a Vibrator API, a Bluetooth HID Host API and a MMS API. He also reminded developers that the basic screen layout can be customised by licensees (the default is provided by UIQ) and that therefore developers should avoid making assumptions about layouts.
Backman also briefly discussed the new Command Processing Framework (CPF) which is a new (abstracted) way of handling menu and softkey commands. It uses a client-receiver-invoker pattern which allows distributed commands creation, handling, presentation and the automatic addition of commands. The CPF supports UI configuration which means while you can reuse command lists in different UIs it is also possible to have different command lists for different UIs for complete customisation.
For building layouts in UIQ 3 there are two layout types. The first is Building Blocks which are a line based layout which uses a layout manager. There are about 20 system building blocks provided (e.g. text line) and you there is also support for custom building blocks. This provides a consistent look and feel across third party applications. Building blocks will change shape, size and position in different UI configurations. You can give different weights to building blocks to dictate how they should behave, or you can specify how building blocks should behave in each UI configuration (rather than letting it happen automatically). The second layout is Listbox which is a row and grid based layout and it is similarly customisable.
Backman summarised by explaining that UIQ 3 offers a strong application framework which reduces application complexity and allows an application to be written once, but have a consistent look through different UI configurations. As a result applications become smaller and easier to write. As a final note Backman recommended that developers follow the UIQ guidelines (provided in the SDK and on the developer site) to get the best portability between devices.