Phones intended for different uses tend to require different input mechanisms and form factors. With a very small screen and just a keypad, the main use tends to be voice calls. With pen input, browsing is quite convenient, but data entry is not. A keyboard is obviously the most practical mechanism to enter large amounts of data. These distinctions imply that user interfaces are ultimately both device and market dependent.
Symbian manages this requirement by separating the user interface layer from the operating system. Symbian OS provides core frameworks and services, and the phone manufacturer provides the right UI for their phone. A developer can have various UI-related tasks depending on who they are and the stage of development. These include:
developing the UI itself for a licensee's new phone
developing applications in the pre-platform phase, before the phone UI has been completed
developing applications in the post-platform phase, when the phone UI is available
The rest of this topic gives an overview of the UI architecture that Symbian has developed to support these options.
The elements of the Symbian OS UI architecture are shown below, with the dependency relationships illustrated.
The two key components of these are Uikon, a generic core UI framework, which is present on all Symbian OS phones, and a Product UI, UI libraries developed by a Symbian OS licensee for a particular phone or range of phones.
An extra element of UI specialisation for licensees is provided by the Product Look And Feel (LAF) library. This sets the appearance, such as colour and size, of Uikon controls.
These components are layered above the UI Control Framework, which defines the abstract concepts of the user interface at a basic level, and the Application Architecture, which defines an abstract framework for applications.
Together, these components provide to applications:
a programming framework that provides services required by all applications, such as initialising the application at start-up, channelling user input to the correct part of the application code, and interacting with the shell and file system
controls and dialogs for applications to use
Development Kits produced by licensees supply an appropriate real Product UI.