Observer Pattern
The observer defines a one-to-many dependency between collaborating objects. The observer enables the partitioning of a system into observers that react when their subjects change state. It is used in many event-based systems to separate the event source from the event monitors. The observer design pattern is shown in Figure 3.5. The concrete observers attach themselves to the subject in a way that the subject knows which observers to notify when its state changes. The observers register...
Playing
The Series 60 Platform includes three player classes for different purposes one for playing sinewave tones, one for playing WAV sound clips and other supported formats, and one for streaming audio. The support for additional audio formats is done by media server plugins. Currently, in Series 60 there is a plug-in for polyphonic MIDI songs. All playing requests have to have a priority. Through the priority value, Media Server chooses the client that has the highest priority to play and gives the...
MMS Protocol Data Unit Structure
MMS PDUs are delivered inside WSP or HTTP messages. In the WSP header the content type is defined to be an application nvd.wap.mms-message. The WSP body contains the MMS PDU WAP Forum, 2002b . The header of each MMS PDU starts with the same parameters, which should be given in this order X-Mms-Message-Type, which defines the PDU, e.g. M-Send.req X-Mms-Transaction-ID, which identifies the M-Send.conf PDU and the corresponding M-Send.req X-Mms-MMS-Version, which is currently 1.0. Other parameters...
Challenges in Smartphone Interaction Design
When designing an application for a smartphone, the designer's main problem is to find a usable solution that works for the small screen size and different environment of usage. Use of a portable device is totally different from that of a stationary desktop computer. This should always be kept in mind when designing applications for smartphones. Some of the main characteristics affecting interaction design of the They are usually designed for special purposes. Mobile phones are used mainly as...
Brainstorming Product Ideas
In a hectic product development lifecycle it is quite easy to skip the user-needs studies and start a new product development by brainstorming the product ideas. If the earlier phase is skipped, the company may lose the opportunity of finding something special that makes the developed product move far ahead of competition, or the development team may develop a product that nobody wants to use. The product may lose the essential ingredient that can be seen only after the big picture is known....
Standard Panes and Application Windows
In the Series 60 Platform, the term screen corresponds to the entire pixel area of the physical screen. Windows are components of the screen. One window may fill up the entire screen or a part of it, leaving other parts visible. Each application runs in its own window. Panes are subcomponents of windows and are sometimes called subwindows as well. One window may contain many panes, and each pane may contain subpanes, and so on. The Application window is the main window, which fills up the...
Dialogs
In the Series 60 Platform, the dialog architecture has some newfeatures. The dialogs are capable of having menus. This is implemented in the CAknDialog class, which derives from CEikDialog. Applications should use dialogs derived from this class if they need dialogs with a menu. If they do not, they can still derive from CEikDialog e.g., if one needs only the softkey buttons for selection . An example dialog is shown in Figure 11.1. The CAknDialog uses the same dialog resource, DIALOG, as in...
SyncML 1
SyncML is an initiative for device synchronization standardization and will be supported by most of the synchronization service providers and handheld, smartphone, and traditional mass-market phone manufacturers. The SyncML initiative was formed in Paris, in February 2000, and the sponsor members are September 2002 Ericsson, IBM, Lotus Development Corporation, Motorola, Nokia, Openwave Systems Inc., Matsushita Communication Industrial Panasonic , Starfish Software, and Symbian. The sponsor...
Sms
SMS enables the transfer of short messages 160 characters, at the most, of 7-bit text, or 140 bytes of 8-bit binary data to and from a mobile phone, even while a call is in progress. The 8-bit messages are often used for smart messaging in addition to 8-bit text. The 16-bit messages of 70 characters or less are used for Unicode UCS2 text messages for Chinese and Arabic characters, for example. Unlike e-mail, SMS uses a push model to deliver the messages. The messages are stored in the SMSC...
Example Application
Examples in this chapter are taken from the simple example midlet called Time Tracker. The main idea of this application is to track how long it takes to complete some tasks or projects. This application is useful, for example, for people who work on many different projects and need to estimate the time they spend on those projects per day. Example pictures can be found in later subsections. The Time Tracker user interface contains three main UI classes List, Form, and FullCanvas. These classes...
Design Patterns for Application Development
Design patterns describe solutions to common software problems. They help software developers to apply good design principles and best practices of software development. Design patterns when applied properly improve the quality of the software with respect to, for example, reusability and maintainability. Design patterns are reusable software building blocks. They provide not only a common language for the designers in some problem area but also class and collaboration diagrams to be applied as...
ETel Server
The telephony server of Symbian OS is called ETel. It provides an interface and client-side API to telephony hardware. The user is not dependent on the vendor, because all applications use the standard API. The client-side session to the server is provided by the RTelServer class, which supports analogous functions to those of the Serial and Socket servers, in order to load telephony modules LoadPhoneModule , enumerate phones EnumeratePhones , and to get information on the specified phone...
Customizing the Look and Feel
In theory, the look and feel of Symbian OS can be changed simply by modifying the LAF module in Uikon, as mentioned above. In practice, this is not sufficient for real customization efforts. The Series 60 graphical user interface GUI , Avkon, has its own LAF module that needs to be modified as well. The Series 60 LAF module is implemented in a similar way to the Uikon LAF module however, certain additions have been made to the Uikon LAF module. These additions extend the possibilities of...
Unit Testing Framework
The following unit testing examples are based on Digia's own unit testing framework developed for testing Symbian OS software. However, these examples apply to unit testing in general. Test suites and cases are executable, and verification of results is done by using assertion conditions. The test suites and cases are packed to dynamic link libraries DLLs , as shown in Figure 7.2. The DLLs are then executed by a test driver. Test drivers are Test suite and executed from console cases are packed...
Other Security Issues in Symbian OS
In addition to security support, built into the protocols supported by Symbian OS, there are other security issues to be taken into account. No security method is useful if one's software does not apply it. For example, use of a Bluetooth connection to a service provider entails a significant risk if we cannot trust the provider. An untrustworthy party may upload harmful software modules into our smartphone when we think that we are downloading the newest and 'coolest' game. Before accepting...
Classes and Interfaces
DirectGraphics is an extension interface for the original the MIDP Graphics class. It contains means of drawing and filling triangles and polygons, drawing rotated or flipped images, alpha channel support transparency , and access to the raw pixel data of the graphics context. The getDirectGraphics method of DirectUtil can be used to convert the javax.microedition.lcdui.Graphics object to Nokia DirectGraphics object. The following example shows the syntax DirectGraphics dg...
Sending Email
New e-mail messages can be created by using the CImEmailOp-eration class. It provides static methods to create new messages, replies, and forwarded messages. In the following example, a new e-mail message is created into the local drafts folder and filled with the sender, recipient, subject, and body text void message parts that are created TMsvPartList partList KMsvMessagePartBody KMsvMessagePartAttachments message attributes, define that message is in preparation TMsvEmailTypeList create...
Mms
Using the SMS it is possible to deliver tones and simple black-and-white pictures up to 72 x 28 pixels in addition to 160-character text greetings. MMS, the multimedia message service, is a new technology to deliver multimedia content between terminals Nokia, 2001d . The content may be a picture, data, text, audio, or video. MMS is implemented on top of WAP 1.2, as shown in Figure 17.2, which describes the MMS architecture WAP Forum, 2001 . Instead of WAP, HTTP may also be used, allowing the...
Control Pane
The control pane holds the left and right softkeys and the scroll indicator. The scroll indicator is present whenever there is a list that can be scrolled vertically. The corresponding keys are usually situated just below the control pane labels. The softkeys are implemented using the Uikon command button array CBA . The array contains the labels for the softkeys and the scroll indicator frame. Any container of control can own a CBA. The softkeys are bound to command IDs. This can be achieved...
Bluetooth Sockets
Bluetooth sockets are based on a Bluetooth host controller interface HCI , which specifies a command interface to a Bluetooth device. There are two client APIs a socket API for new applications, and a serial API for legacy applications Nokia, 2001a . Through the client-side API of the Socket server, it is possible to access L2CAP logical link control and adaptation protocol and the RFCOMM protocol see the Glossary as well as the service discover protocol SDP and Bluetooth Security Managers, as...
kBack
e.g. CAknSinglePopupMenuStyleListBox . They are listed in Table 10.4. A popup menu example is shown in Figure 10.10. To be able to use CAknPopupList class we have to include CEikFormattedCellListBox listBox new ELeave CAknSinglePopupMenuStyleListBox CleanupStack PushL listBox Before we can continue list creation we have to create a popup list. When creating a popup list we have to offer a list, soft keys, and a layout type in the NewL function. Layout types can be found in Table 10.4 and in...
Setting Views
All application-specific settings should be collected to a special settings page. The setting pages are specialized screens for the manipulation of certain controls. These are presented in a list to the user. If the list is long it can be split into different views by using tabs, or into a hierarchical settings tree. The setting structure is presented top-down, starting from the setting listbox. The settings are collected and presented in specialized setting item listboxes. Some of these...
About the Authors
Tino Pyssysalo was the main author and project manager responsible for creating this bookwith the help of the co-authors listed below. Tino holds an MSc Eng., with honors and licentiate of technology with honors majoring in theoretical computer science, graduating from Helsinki University of Technology. He has done research in the areas of data communication and telecommunications software for several years by formally specifying, verifying, and designing communication protocols. Tino worked...
Editors
There are several new editor modes in the Series 60 user interface. These range from telephone number editors to secret editors for passwords and such. With the possibility of having a predictive text-entry system, extra care has to be taken when setting the editor flags. These can depend on the input type for the retrieved data. The mode of the predictive text-entry system has to be controlled and the special character set verified for each editor. These flags can be set through a resource...
SendUI
SendUI offers a simple API to create and send messages, using different messaging protocols from the applications. SendUI is built on top of the Send As API, which is included in Symbian OS generic technology. The interface is implemented by the CSendAs class. SendUI is implemented by the CSendAppUi class, and it offers the whole message creation and sending process, including all UI components, such as the menu items shown in the applications and progress dialogs during sending. Both...
Caknsmallindicator
Eikon notify server's AknNotifier plug-in. The Eikon notifier server forwards its state changes to the signal control. 9.1.5 Battery and Universal Indicator Panes The battery pane is another server-side status pane control. Like the signal pane, there is only a single instance of this in the device, and only system applications can change the value of this pane through the same AknNotifier server interface. Its state changes are forwarded to the battery control. When the battery pane is not...
Messaging Architecture
Symbian OS implements a powerful, extensible framework for multiprotocol messaging. The messaging architecture consists of the message server and layered implementations of different messaging protocols that are implemented as message-type modules MTMs . Series 60 has support for a short message service SMS , a multimedia message service MMS , e-mail, BIO messages smart messaging , infrared, Bluetooth, and fax, although fax is typically used through the Telephony server ETel . New protocols can...
Notifications
Notes are a feedback component that informs the user about the current situation. They contain text and a graphical icon that classifies the notes to the following categories. They do not have softkeys except for the wait note, which can contain a cancellation in some situations. A confirmation note informs the user about a successfully completed process. The duration of the note is short, accompanied with a subtle tone. An example of a confirmation note is shown in Figure 11.6. There are two...
Queries
Queries are used in situations where the user needs to select a way to proceed or requires user input, or validation of the selected action. There are several different types of queries for these situations. The Series 60 Platform contains local and global queries. Local queries are local to a certain application. For instance, switching to another application hides a local query, but is again shown when the user switches back to the original application. Global queries are systemwide queries,...
Symbian Caknlistquerydialog
Figure 11.21 Multiselection list query with two selected items The CAknListQueryDialog constructor takes a CList-BoxView CSelectionIndexArray pointer that will contain the selected items indices after the query has executed. This CSelec-tionIndexArray can be any CArrayFix deriving class. In the example below it is a CArrayFixFlat what you must watch out for here is the cleanup stack - the listbox does not take ownership of it, so it must be on the cleanup stack CArrayFixFlat lt TInt gt array...
Use of Lists
We now present a few examples of how to use lists. First, we give basic construction examples the last example will be little bit more complex. The main focus in the last example is to show a proper way to offer and formulate data for the lists. In the last example you can also see how lists are used in view-based applications see Chapter 12 for more information on view architecture . First, we choose a layout for the list. For now, we are using a single-line item list. Before we can use the...
Select T Cancel
Selection lists are a common way of displaying and accessing data in applications, shown in the main pane. In Figure 10.4, the selection opens a more detailed view. A markable list is the same as a selection list, except that a marking feature has been added. With markable lists it is possible to mark any number of items and execute a single command for all of them. Marking is shown in the right-hand corner of a list item see Figure 10.5 . Selection can be done in the options menu or with the...
Back
by changing the values of the structure. For instance, a volume setting page resource could be RESOURCE AVKON_SETTING_PAGE r_my_volume_setting_page softkey_resource R_AVKON_SOFTKEYS_OK_BACK type EAknCtVolumeControl editor_resource_id r_my_volume_control The editor_resource_id is a link to the setting page control of the type defined by the type line above it. The control would then be RESOURCE VOLUME r_my_volume_control A setting page may have its own menu. This is defined by the menubar link,...
















