Symbian/C++ Documentation
Areas of interest
UI - S60/Symbian C++

SNAP Mobile: Standard Game Requirements
This document contains the technical, usability, and publishing requirements for SNAP Mobile games. These requirements apply to developers who use the SNAP Mobile Client API to create SNAP Mobile games for mobile devices that support the Java™ Platform, Micro Edition (Java ME) technology. This document serves as a standard reference document for SNAP Mobile game compliance testing.

S60 Platform: Rich Text Editor Example
This C++ code example demonstrates the usage of Rich Text Editor. Most of the features are handled automatically when the dialog framework creates the editor. However, some steps, such as inserting an image, setting the text input type, or showing the scroller require the use of methods or classes. Main classes: CEikRichTextEditor, CFbsBitmap, TPictureHeader, CPicture.

Designing for the Big Screen: Developing Applications for the Nokia E90 Communicator
This article discusses designing high-quality applications for the Nokia E90 Communicator and gives tips and tricks on designing for a large display. The article describes how to achieve a good balance in terms of both the visual layout of the UI elements and the amount of information presented on the screen, still fully utilizing the big screen.

S60 Platform: Chinese Display Example
This C++ application demonstrates how to display Chinese characters
from resource files. The application supports internationalization and localization. In the
updated version also the context-sensitive help has been added.
The application supports following languages:
English, Taiwan Chinese, Taiwan English,
HongKong Chinese, HongKong English,
Mainland Chinese, and Mainland English.
Main classes: TFontSpec, CCnvCharacterSetConverter

S60 Platform: Scalable Screen-Drawing Example
This C++ application demonstrates scalable screen drawing with Direct Screen Access and
custom drawing routines using SVG-T icons and bitmaps. The application scales to multiple
display resolutions in portrait and landscape orientations supported by the S60 platform. This
example is targeted especially at games and multimedia developers who prefer developing a
custom UI instead of using an automatically scaling UI, such as S60 Avkon components.
Labeling for the middle softkey is added in the updated version. Important classes:
CIconFileProvider,
MDirectScreenAccess,
MAknIconFileProvider,
CCoeControl (HandleResourceChange() method and KEikDynamicLayoutVariantSwitch)
CEikAppUi (ApplicationRect(), Orientation(), and SetOrientationL() methods).

Getting Started with the Nokia Web Browser - a Web Designer's Guide
An overview for Web designers starting to look into developing Web sites that offer a good experience on mobile devices. The document deals with the "Full" Web experience currently offered by Nokia Nseries and Eseries devices, and is a useful starting point for further reading. With the industry waking up to the capabilites offered by the latest Nokia browser, this article helps point out the first steps needed to develop a great mobile Internet experience.

S60 Platform: Scalable UI Example
This package includes a C++ example application (Noughts and Crosses) that supports scalable UI using either bitmaps or SVG-T icons. The example is useful to C++ developers who wish to port code written for S60 2nd Edition to S60 2nd Edition, Feature Pack 3 and S60 3rd Edition. Documentation is included in the package. Main classes: AknLayoutUtils, especially AknLayoutUtils::LayoutMetricsRect() (=UI Metrics API).

S60 UI
S60 UI section in the C++ Developer's Library explains how application UIs work in the Symbian OS, and the connections between code and UI appearance/functionality.

Series 40 UI Style Guide
Get an overview of the Series 40 user interface and learn its essential parts. This document is targeted for anybody who needs a general overview of UI design principles for designing well-integrated, consistent, and usable Series 40 mobile services and applications.

S60 Scalable UI Guidelines eLearning
This module begins with an introduction the S60 Scalable UI, looking at the benefits it can bring to the developer. The module then moves on to look at some of the issues involved with developing a scalable application, from the design phase through the implementation and testing phases.

S60 UI & Usability eLearning
This module covers the basic UI principles for mobile device development before moving on to introduce the basic features of S60 and how they promote good usability.

S60 Platform: How to Prototype Applications with Flash
Learn how to develop UI prototypes for S60 mobile devices with Adobe Flash Lite. Although the focus is on the S60 platform, most of the techniques in this document are applicable to other mobile platforms, too.

S60 3rd Edition FP2: UI Style Guide
Read this document to get an overview of the S60 user interface in S60 3rd Edition, Feature Pack 2 and to familiarize yourself with its essential parts. The document can be used as an introduction to the style or as reference material but it also provides background material to help user interface designers make decisions about their products.

Open C: SMS Crypto Example (with Python UI) v1.1
This Open C code example demonstrates usage of Python for S60 to provide a GUI for functionality implemented in standard C code. The use case of the example is encrypting/decrypting and sending/receiving of SMS messages. The example contains a simple C library for encryption that is ported to Symbian using Open C and called from the GUI. The package also contains a version with Symbian C++ GUI. The comparison and architectures of the Python and Symbian C++ implementations are provided in the Implementation Notes document available in the example package. Version 1.1 of the package includes updates to the document only.

S60 UI Style Guide v1.3
Read this document to get an overview of the S60 user interface and to familiarize yourself with its essential parts. The updated document describes the new features introduced in S60 3rd Edition and S60 3rd Edition, Feature Pack 1, but it is also valid for earlier S60 platform releases. The document can be used as an introduction to the style or as reference material but it also provides background material to help user interface designers make decisions about their products.

S60 Platform: Custom UI and Screen Rotation Example
Use this C++ example application to learn the key functionalities of the screen rotation, custom component handling, status pane handling, and picture scaling on the S60 UI layer. Main classes CAknViewAppUi, CAknView, CCoeControl.

S60 Platform: Scalable UI Guideline
Learn how to develop scalable S60 applications. The document contains the latest information for features introduced in S60 3rd Edition, Feature Pack 2.

S60 List Controls eLearning
This eLearning module covers the various types of lists available in S60 and then goes into further detail concerning standard layouts.

S60 UI Controls eLearning
This module introduces what a S60 UI control is and how key events are handled in S60.

S60 UI Architecture eLearning
This module gives a brief overview of the three kinds of application architectures that are possible when writing an S60 application. The various classes that are associated with the particular architecture are described, as well as the relative advantage and disadvantages of the architecture when writing an S60 application. The module then moves on to describe the S60 UI layout in terms of the various windows and panes that are supported.

S60 Platform: Application Views (with Examples) v2.0
This updated package covers the usage of application views in C++ applications. A Symbian C++ application can launch not only its own views but also certain external applications and their views. The package includes one document and two example applications. The document includes application and view UIDs of certain S60 core applications. The MyView example demonstrates how to build your own GUI application using the view architecture and how to use external application views. The second example, AppUidViewer, is a utility that can be used to find out all installed applications and their application UIDs on a device at run time. The updated package adds S60 3rd Edition support to the document and code examples.

S60 Platform: Settings Screen Example v2.0
This C++ code example explains the basic construction of settings screens, including setting item lists, setting items, and setting pages. The application consists of a single view - a Setting List that has a variety of different types of settings that can be manipulated. The usage of settings screens is discussed in the document S60 Platform: Implementing Settings Screens published at www.forum.nokia.com. Main classes: CAknView, CAknSettingItem, CAknSettingItemList, CAknEnumeratedTextSettingItem, CSelectionItemList.

S60 Platform: Implementing Settings Screens v2.0
This document describes how settings screens are created for S60 C++ applications. Settings screens enable a user to view and manipulate application settings. They are usually implemented with setting item lists. When the user selects a setting item, the item can be edited either directly or via a setting page. The document discusses the basic construction and resource structure of settings screens, including setting item lists, setting items, and setting pages. Most of the available setting pages as well as pop-up fields and pop-up lists are also described. The document refers to the S60 Platform: Setting Screens Example that is published at www.forum.nokia.com. Note that settings are also discussed in the S60 Platform: Avkon UI Resources document package.

Nokia Series 40 Theme Studio 2.2 Handset Guidelines
Handset Guideline for Nokia Series 40 Theme Studio 2.2

MIDP: Scalable 2D Vector Graphics API Developer's Guide v1.1
This updated document describes the Scalable 2D Vector Graphics (JSR-226) API (M2G), which is the JSR-226 Java API for Scalable Vector Graphics (SVG) technology. The document demonstrates the capabilities of the API in creating scalable vector images and animation. The Scalable 2D Vector Graphics API is currently supported by the Series 40 platform, from Series 40 3rd Edition, Feature Pack 1 onwards. It is also supported in S60 3rd Edition, Feature Pack 1.

MIDP: Scalable 2D Vector Graphics API Examples v1.1
These MIDP applications demonstrate the capabilities of the Scalable 2D Vector Graphics API (JSR-226) by several different scalable images and an animation. The Scalable 2D Vector Graphics API is currently supported by the Series 40 platform, from Series 40 3rd Edition, Feature Pack 1 onwards. It is also supported in S60 3rd Edition, Feature Pack 1.

S60 Platform: Visualization and Graphic Design Guideline
This document explains the basic principles of visualization and graphic design, and provides examples of good and bad design. The document discusses graphic design for the mobile world, for example, colors, contrast, animation, and icon design, and gives tips on how to make the most of the small screen of a mobile device. The example images relate to the S60 platform and the QVGA display resolution, but the same design principles can be applied to virtually any mobile platform, device, or display.

Getting started with Carbide.ui S60 Theme Edition Screencast
Getting started with Carbide.ui S60 Theme Edition -screencast showcases the phases when creating themes for devices based on S60 platform.

S60 Platform: Scalable UI Support v4.3
This updated document specifies how S60 2nd Edition, Feature Pack 3 and S60 3rd Edition support creating applications for a scalable UI. The scalability requires developers to take different screen resolutions into account when creating their application designs, and without a solid support from the S60 platform, applications may become fragmented to specific resolutions. The document also contains an FAQ and several code examples.

Using Icons in MIDlets (with Example)
This technical note describes how icons are used in MIDlets and what the correct icon sizes in different devices are. This document focuses on S60 3rd Edition and Series 40 3rd Edition devices, but some older devices are covered as well. The package also includes a test MIDlet that can be used to test the suitable icon sizes.

Series 80 2nd Edition: MIDP UI Guide (with Example)
This MIDP document discusses UI layout practices and functionalities of some LCDUI components on Series 80 2nd Edition and command handling differences compared to Series 40 and S60 platforms. An example MIDlet is provided with the document.

Flash Lite: Visual Guide v1.1
This updated document describes how to develop usable S60 Mobile Flash user interfaces that take the best out of the possibilities that Flash Lite offers. Also other factors that affect the total user experience of Flash Lite applications, such as performance, are shortly explained.

MIDP 2.0: LCDUI Example
This MIDP application demonstrates the capabilities of the JSR-118 MIDP 2.0 API's LCDUI component by creating an example MIDlet, which allows developers to see an implementation of a high-level API class (the Gauge class) and of a low-level implementation of the Canvas class. The MIDP 2.0 API is currently supported by the S60 platform, from S60 2nd Edition onwards and the Series 40 platform, from Series 40 2nd Edition onwards. This example is related to document "Creating applications using LCDUI", which can be found in Java™ ME Developer's Library.

Creating Themes for Series 40 and S60 Devices: Visual Guide v2.1
This updated document helps you create effective, high-quality Themes for Series 40 and S60 devices as well as the Nokia 7710 multimedia smartphone. It gives instructions on designing usable but unique style, backgrounds, icons, and other elements. The document has been updated to cover the features of the new Series 40 and S60 Theme Studios and to introduce new supported features e.g. in Series 40 3rd Edition and S60 3rd Edition devices. The S60 Themes Illustrator Sketching Templates and the S60 Themes Photoshop Sketching Template are closely related to this document.

S60 Platform: Avkon UI Resources v1.1
This series of documents describes how to use the Avkon UI components of the S60 platform in C++ applications. The following components are introduced: dialogs, editors, forms, grids, listboxes, notes, and setting lists. The document S60 Platform: Avkon UI Resources — Listboxes has been updated.

Turn Limitation into Strength: Design One-Button Games
This article describes how to ensure rewarding gameplay experiences with only one button without compromising usability. It discusses strategies for simplifying controls and gives examples of well-designed one-button games.

S60 UI Specification Guideline
This document is a practical guideline that explains how to create a good user interface (UI) specification for any application designed for the S60 platform. The document describes the purpose of the UI specification and the process needed for its creation. The S60 UI Specification Template published with this document can be used to plan UI specifications for S60 applications.

Introduction to S60 UI Components
This document provides an extensive description of the appearance of the most useful S60 UI components. The document shows with the help of several examples how flexibly the UI components can be used in any application UI. Effects of themes to the visual appearance of S60 UI components and customizing standard S60 UI components are also briefly discussed. Due to the visual nature and extensive usage of screen shot images, this document is quite large in megabytes. Note that for programmers there is a separate documentation set, S60 Platform: Avkon UI Resources, with in-depth information on the UI components.

Symbian OS: Building Portable UI v1.1
This updated document presents the best practices for building a portable UI on Symbian OS. It presents practices such as macros, inheritance, and delegation as solutions for porting a UI. It also introduces scalable UI practices and discusses, for example, how to handle various device screen sizes, input methods, and the use of standard UI components for portability across various devices.

Mobile Game Playability Heuristics
This document describes how mobile game heuristics can be used for evaluating mobile games. The heuristics are described in detail and an example of how to expand the model to apply to new kinds of games is given.

S60 Platform: Dynamic Setting List Example
This example demonstrates how to load CAknSettingItemList dynamically at run time instead of defining the list structure into a resource file. In the example, the lists are loaded during application startup. The example can be used as the basis for many different applications where a list has to be loaded dynamically (for instance, based on external feed from a server)

Introduction To The S60 Scalable UI v1.4
This updated document gives a brief introduction to the Scalable UI in the S60 platform. S60 2nd Edition, Feature Pack 3 introduces new screen resolutions and APIs to support the scalable UI.

S60 Platform: Scalable Screen-Drawing How-To
This document describes how to develop C++ applications with custom graphics that scale to multiple display resolutions in portrait and landscape orientations supported by the S60 platform (from S60 2nd Edition, Feature Pack 3 onwards). Direct screen access, bitmaps, scalable vector graphics, and other drawing methods are compared and related APIs are presented. The document includes code snippets from S60 Platform: Scalable Screen-Drawing Example. This document is targeted especially at games and multimedia developers who prefer developing a custom UI instead of using the automatically scaling UI, such as S60 Avkon components.

Well-Designed High-Score Lists In Mobile Games
This article discusses issues related to high-score lists and scoring systems in mobile games. With a well-designed high-score list, game developers are able to motivate players and provide a positive user experience.

From Beeps To Soundscapes - Designing Mobile Game Audio
This article gives guidelines for designing mobile game audio and provides some insight into the future of mobile game audio.

Series 60 Platform 2nd Edition: Screen Saver Example
This example demonstrates the usage of the ScreensaverPlugin API to implement a customized utility screen saver on top of the default Series 60 screen saver.

Nokia 7710: In-Depth Developer's Guide
This documentation package gives you a comprehensive look inside the Nokia 7710 multimedia smartphone. It starts with the UI framework, going through instructions on how to build applications, and finally discusses porting existing software to the Nokia 7710.

Symbian OS: View Architecture v1.1
This updated document provides an overview of the Symbian OS view architecture and how to use it. The view architecture provides the capability to switch quickly between the views established for applications running on a device.

Symbian OS: Creating Custom Controls
This document looks at designing custom controls, how they can be used, and the special design issues associated with them.

Full-Screen Usage in S60
This article discusses usability issues when using the full-screen mode in Symbian C++ or Java MIDP applications. The article concentrates on the S60 platform but many issues are relevant also to other platforms. Revision on June 12, 2006: minor editorial changes including terminology update.




