Web Developer's Library 1.7
  Legal notice
  Change history
  Guide to Web Developer's Library
    Library contents
  Introduction to S60 Web development
    What you need to know
  Browsing
    Introduction to the Web Browser for S60
      Web Browser for S60 versions and device support
      Browser 7.1 features
      S60 Browser 7.0 features
      OSS Browser (3.1) features
    Getting started
      Before you start
      Mobile website naming conventions
      Adapting full screen web pages for use on mobile device
    Designing websites for S60 Browser
      Designing simple pages
      Mobile web page design examples
      Best Practices
    Developing websites for S60 Browser
      Creating web content
        Laying out pages
        Media content
        Flash content
        Supported image formats
        IFrames
        S60 Browser URI scheme support
        WRT support for AJAX
      Customizing style sheets for S60
        S60 Browser default CSS
        Using style sheets for dynamic content
        Inline styles vs. external style sheets
        Font style recommendations for the S60 Browser
        Using multiple CSS
      Managing user interaction
        Navigating in the S60 Browser
        Navigational aid
        Navigational aid example code
        Linking to a widget
      Device resource considerations
        Using scripting effectively
        Using graphics effectively
        Using cache effectively
        Dealing with network issues
      Server-side solutions
        Joomla! plug-in for S60 Browser
        phpBB add-on for S60 Browser
  Web Runtime widgets
    Introduction to widgets
      Widget features
      Web Runtime standards
      Web Runtime versions and device support
      Widget security
        Runtime Security Manager
        Runtime Security Manager access policy
    Designing widgets
      Laying out pages
        Designing for a specific audience
        Designing simple pages
        Performing one task in a view
        Presenting content on screens
        Working with images
          Supported image formats
          Using images in the HTML
          Setting the widget background
        Incorporating Flash content
      Designing for mobile devices
        Designing for small screens
        Designing for dynamic screen orientation
      Customizing style sheets for S60 devices
        Creating styles for dynamic content
        Using multiple CSS
      Porting widgets
      Managing user interaction
        Using softkeys
        Using screen controls
          Creating HTML controls
          Handling text input
          Handling selection lists
          Using JavaScript controls
          Creating touch controls
          Customizing screen controls
        Checking for touch support
        Providing tactile feedback for user actions
      Moving within widgets
        Navigating on screens
        Key event codes supported by WRT
        Moving between views
        Using focus
      Designing for limited resources
        Using graphics and scripting effectively
        Keeping response times short
        Saving battery power
        Dealing with network issues
        Coping with the processing limits of the device
        Retrieving data
    Developing widgets
      Getting started with widgets
        Before you start
        Widget development process
        Widget component files
          Creating the info.plist file
          Creating the widget HTML file
          Creating a CSS file
          Creating a JavaScript file
          Creating the info.plist file
          Creating the widget HTML file
          Creating a CSS file
          Creating a JavaScript file
      Using platform services
        Accessing and launching installed applications
        Accessing and managing calendar information
        Accessing and managing information about contacts
        Accessing and managing information about landmarks
        Accessing device location information
        Accessing device logs
        Accessing information about media files stored on a device
        Accessing messages and using messaging services
        Accessing data from the physical sensors of a device
        Accessing and modifying system information
        Accessing system information and controlling device features
        Defining the callback handler for an asynchronous method
      Supporting multiple languages
        Language project directory
        Localizing widget display name
        Localizing widget display text
        Localizing widget resources
        Localizing widget layout
      Testing your widget
      JavaScript console
      Example widgets
        Introduction to STEW
          STEW design principles and views
          Designing STEW user interface
            STEW: defining the HTML and CSS structure
            STEW: adding JavaScript to drive the widget logic
            STEW: managing user interaction
            STEW: loading the widget at startup
            STEW: supporting screen rotation
            STEW: supporting different screen sizes
            STEW: adding menu options
          Retrieving STEW data
            STEW: implementing a Twitter service
            STEW: presenting content on screens
            STEW: indicating progress
          Localizing STEW
        Launching a website widget
      Integrating widgets with devices
        Deploying widgets
        Managing widgets on mobile devices
      Web Runtime API reference
        JavaScript widget object
          openURL()
          setPreferenceForKey()
          preferenceForKey()
          prepareForTransition()
          performTransition()
          setNavigationEnabled()
          setNavigationType()
          openApplication()
          setDisplayLandscape()
          setDisplayPortrait()
          identifier
          onshow
          onhide
          isrotationsupported
        JavaScript menu object
          append()
          remove()
          getMenuItemById()
          getMenuItemByName()
          setLeftSoftkeyLabel()
          setRightSoftkeyLabel()
          showSoftkeys()
          hideSoftkeys()
          clear()
          onShow
        JavaScript MenuItem object
          Constructor
          append()
          remove()
          setDimmed()
          onSelect
        JavaScript device object
          getServiceObject()
        JavaScript Service API reference
          JavaScript AppManager Service API
            IAppManager.GetList()
              Criteria for retrieving information about applications
              Returned application information
            IAppManager.LaunchApp()
              Criteria for launching an application
            IAppManager.LaunchDoc()
              Criteria for launching an application
            IAppManager.Cancel()
            AppManager Service API error messages
            AppManager Service API example
          JavaScript Calendar Service API
            IDataSource.GetList()
              Criteria for retrieving calendar information
              Returned calendar information
            IDataSource.Add()
              Criteria for adding and updating calendar information
            IDataSource.Delete()
              Criteria for deleting calendar information
            IDataSource.Import()
              Criteria for importing calendar entries
            IDataSource.Export()
              Criteria for exporting calendar entries
            IDataSource.RequestNotification()
              Criteria for change notifications
              Returned notification information
            IDataSource.Cancel()
            Calendar entries
              Calendar entry properties
              Properties and calendar entry types
            Calendar Service API error messages
            Calendar Service API example
          JavaScript Contacts Service API
            IDataSource.GetList()
              Criteria for retrieving contact information
              Returned contact information
            IDataSource.Add()
              Criteria for adding and editing contact information
            IDataSource.Delete()
              Criteria for deleting contact information
            IDataSource.Import()
              Criteria for importing a contact
            IDataSource.Export()
              Criteria for exporting a contact
            IDataSource.Organise()
              Criteria for organizing contacts in a contact group
            IDataSource.Cancel()
            Supported contact keys
            Contacts Service API error messages
            Contacts Service API example
          JavaScript Landmarks Service API
            IDataSource.New()
            IDataSource.GetList()
              Criteria for retrieving landmark information
                Filter criteria for landmarks
                Filter criteria for landmark categories
                Filter criteria for landmark databases
              Returned landmark information
            IDataSource.Add()
              Criteria for adding and editing landmark information
            IDataSource.Delete()
              Criteria for deleting landmark information
            IDataSource.Import()
              Criteria for importing landmarks
            IDataSource.Export()
              Criteria for exporting landmarks
            IDataSource.Organise()
              Criteria for organizing landmarks in a landmark category
            IDataSource.Cancel()
            Landmarks, categories, and databases
              Landmark
              Landmark category
              Landmark database
            Landmarks Service API error messages
            Landmarks Service API example
          JavaScript Location Service API
            ILocation.GetLocation()
              Criteria for retrieving location information
              Returned location information
            ILocation.Trace()
            ILocation.Calculate()
              Calculation criteria
              Calculation results
            ILocation.CancelNotification()
            Location Service API error messages
            Location Service API example
          JavaScript Logging Service API
            IDataSource.Add()
              Criteria for adding a log entry
            IDataSource.GetList()
              Criteria for retrieving log events
              Returned log event information
            IDataSource.Delete()
              Criteria for deleting an event
            IDataSource.RequestNotification()
              Criteria for requesting notification
            IDataSource.Cancel()
            Logging Service API error messages
            Logging Service API example
          JavaScript Media Management Service API
            IDataSource.GetList()
              Criteria for retrieving media information
              Returned media information
            IDataSource.Cancel()
            Media Management Service API error messages
            Media Management Service API example
          JavaScript Messaging Service API
            IMessaging.GetList()
              Criteria for retrieving messaging information
              Returned messaging information
            IMessaging.Send()
              Criteria for sending a message
            IMessaging.RegisterNotification()
              Returned notification information
            IMessaging.CancelNotification()
            IMessaging.ChangeStatus()
            IMessaging.Delete()
            IMessaging.Cancel()
            Messaging Service API error messages
            Messaging Service API example
          JavaScript Sensor Service API
            ISensor.FindSensorChannel()
              Criteria for searching sensor channels
            ISensor.RegisterForNotification()
              Criteria for receiving sensor data
              Returned sensor data
            ISensor.Cancel()
            ISensor.GetChannelProperty()
              Criteria for retrieving channel property information
              Returned channel property information
            Sensor channel information
            Sensor Service API error messages
            Sensor Service API example
          JavaScript SystemInfo Service API (WRT 1.1)
            ISysInfo.GetInfo()
              Criteria for retrieving system attribute information
            ISysInfo.SetInfo()
              Criteria for modifying a system attribute value
            ISysInfo.GetNotification()
              Criteria for change notifications
            ISysInfo.Cancel()
            System attributes
              Supported system attributes (entities and keys)
              System data types
            SystemInfo Service API error messages
            SystemInfo Service API example
          JavaScript SystemInfo Service API (WRT 1.0)
            Power information services
              chargelevel
              onchargelevel
              chargerconnected
              onchargerconnected
            Network information services
              signalbars
              networkname
              registrationstatus
            Display and keypad illumination information and control services
              lighton()
              lightoff()
              lightblink()
              lightminintensity
              lightmaxintensity
              lightdefaultintensity
              lightinfiniteduration
              lightmaxduration
              lightdefaultcycletime
              lighttargetprimarydisplayandkeyboard
              lighttargetsystem
            Vibration information and control services
              startvibra()
              stopvibra()
              vibraminintensity
              vibramaxintensity
              vibramaxduration
              vibrasettings
            Beep tone control services
              beep()
            Memory and file system information services
              drivesize()
              drivefree()
              totalram
              freeram
              drivelist
            System language information services
              language
          Service API error codes
    Home screen widgets
      Introduction to home screen widgets
        Life cycle of a home screen widget
        User interaction with home screen widgets
        Home screen widget appearance
        Home screen widget content
        Communication between the home screen and WRT
      Developing home screen widgets
        Determining whether to display home screen or full screen
        Creating content specific to home screen widgets
      Enabling STEW for the home screen
  Developer resources
  Terms and abbreviations
  Discussion about this resource
  Legal notice
  Change history
  Guide to Web Developer's Library
    Library contents
  Introduction to S60 Web development
    What you need to know
  Browsing
    Introduction to the Web Browser for S60
      Web Browser for S60 versions and device support
      Browser 7.1 features
      S60 Browser 7.0 features
      OSS Browser (3.1) features
    Getting started
      Before you start
      Mobile website naming conventions
      Adapting full screen web pages for use on mobile device
    Designing websites for S60 Browser
      Designing simple pages
      Mobile web page design examples
      Best Practices
    Developing websites for S60 Browser
      Creating web content
        Laying out pages
        Media content
        Flash content
        Supported image formats
        IFrames
        S60 Browser URI scheme support
        WRT support for AJAX
      Customizing style sheets for S60
        S60 Browser default CSS
        Using style sheets for dynamic content
        Inline styles vs. external style sheets
        Font style recommendations for the S60 Browser
        Using multiple CSS
      Managing user interaction
        Navigating in the S60 Browser
        Navigational aid
        Navigational aid example code
        Linking to a widget
      Device resource considerations
        Using scripting effectively
        Using graphics effectively
        Using cache effectively
        Dealing with network issues
      Server-side solutions
        Joomla! plug-in for S60 Browser
        phpBB add-on for S60 Browser
  Web Runtime widgets
    Introduction to widgets
      Widget features
      Web Runtime standards
      Web Runtime versions and device support
      Widget security
        Runtime Security Manager
        Runtime Security Manager access policy
    Designing widgets
      Laying out pages
        Designing for a specific audience
        Designing simple pages
        Performing one task in a view
        Presenting content on screens
        Working with images
          Supported image formats
          Using images in the HTML
          Setting the widget background
        Incorporating Flash content
      Designing for mobile devices
        Designing for small screens
        Designing for dynamic screen orientation
      Customizing style sheets for S60 devices
        Creating styles for dynamic content
        Using multiple CSS
      Porting widgets
      Managing user interaction
        Using softkeys
        Using screen controls
          Creating HTML controls
          Handling text input
          Handling selection lists
          Using JavaScript controls
          Creating touch controls
          Customizing screen controls
        Checking for touch support
        Providing tactile feedback for user actions
      Moving within widgets
        Navigating on screens
        Key event codes supported by WRT
        Moving between views
        Using focus
      Designing for limited resources
        Using graphics and scripting effectively
        Keeping response times short
        Saving battery power
        Dealing with network issues
        Coping with the processing limits of the device
        Retrieving data
    Developing widgets
      Getting started with widgets
        Before you start
        Widget development process
        Widget component files
          Creating the info.plist file
          Creating the widget HTML file
          Creating a CSS file
          Creating a JavaScript file
          Creating the info.plist file
          Creating the widget HTML file
          Creating a CSS file
          Creating a JavaScript file
      Using platform services
        Accessing and launching installed applications
        Accessing and managing calendar information
        Accessing and managing information about contacts
        Accessing and managing information about landmarks
        Accessing device location information
        Accessing device logs
        Accessing information about media files stored on a device
        Accessing messages and using messaging services
        Accessing data from the physical sensors of a device
        Accessing and modifying system information
        Accessing system information and controlling device features
        Defining the callback handler for an asynchronous method
      Supporting multiple languages
        Language project directory
        Localizing widget display name
        Localizing widget display text
        Localizing widget resources
        Localizing widget layout
      Testing your widget
      JavaScript console
      Example widgets
        Introduction to STEW
          STEW design principles and views
          Designing STEW user interface
            STEW: defining the HTML and CSS structure
            STEW: adding JavaScript to drive the widget logic
            STEW: managing user interaction
            STEW: loading the widget at startup
            STEW: supporting screen rotation
            STEW: supporting different screen sizes
            STEW: adding menu options
          Retrieving STEW data
            STEW: implementing a Twitter service
            STEW: presenting content on screens
            STEW: indicating progress
          Localizing STEW
        Launching a website widget
      Integrating widgets with devices
        Deploying widgets
        Managing widgets on mobile devices
      Web Runtime API reference
        JavaScript widget object
          openURL()
          setPreferenceForKey()
          preferenceForKey()
          prepareForTransition()
          performTransition()
          setNavigationEnabled()
          setNavigationType()
          openApplication()
          setDisplayLandscape()
          setDisplayPortrait()
          identifier
          onshow
          onhide
          isrotationsupported
        JavaScript menu object
          append()
          remove()
          getMenuItemById()
          getMenuItemByName()
          setLeftSoftkeyLabel()
          setRightSoftkeyLabel()
          showSoftkeys()
          hideSoftkeys()
          clear()
          onShow
        JavaScript MenuItem object
          Constructor
          append()
          remove()
          setDimmed()
          onSelect
        JavaScript device object
          getServiceObject()
        JavaScript Service API reference
          JavaScript AppManager Service API
            IAppManager.GetList()
              Criteria for retrieving information about applications
              Returned application information
            IAppManager.LaunchApp()
              Criteria for launching an application
            IAppManager.LaunchDoc()
              Criteria for launching an application
            IAppManager.Cancel()
            AppManager Service API error messages
            AppManager Service API example
          JavaScript Calendar Service API
            IDataSource.GetList()
              Criteria for retrieving calendar information
              Returned calendar information
            IDataSource.Add()
              Criteria for adding and updating calendar information
            IDataSource.Delete()
              Criteria for deleting calendar information
            IDataSource.Import()
              Criteria for importing calendar entries
            IDataSource.Export()
              Criteria for exporting calendar entries
            IDataSource.RequestNotification()
              Criteria for change notifications
              Returned notification information
            IDataSource.Cancel()
            Calendar entries
              Calendar entry properties
              Properties and calendar entry types
            Calendar Service API error messages
            Calendar Service API example
          JavaScript Contacts Service API
            IDataSource.GetList()
              Criteria for retrieving contact information
              Returned contact information
            IDataSource.Add()
              Criteria for adding and editing contact information
            IDataSource.Delete()
              Criteria for deleting contact information
            IDataSource.Import()
              Criteria for importing a contact
            IDataSource.Export()
              Criteria for exporting a contact
            IDataSource.Organise()
              Criteria for organizing contacts in a contact group
            IDataSource.Cancel()
            Supported contact keys
            Contacts Service API error messages
            Contacts Service API example
          JavaScript Landmarks Service API
            IDataSource.New()
            IDataSource.GetList()
              Criteria for retrieving landmark information
                Filter criteria for landmarks
                Filter criteria for landmark categories
                Filter criteria for landmark databases
              Returned landmark information
            IDataSource.Add()
              Criteria for adding and editing landmark information
            IDataSource.Delete()
              Criteria for deleting landmark information
            IDataSource.Import()
              Criteria for importing landmarks
            IDataSource.Export()
              Criteria for exporting landmarks
            IDataSource.Organise()
              Criteria for organizing landmarks in a landmark category
            IDataSource.Cancel()
            Landmarks, categories, and databases
              Landmark
              Landmark category
              Landmark database
            Landmarks Service API error messages
            Landmarks Service API example
          JavaScript Location Service API
            ILocation.GetLocation()
              Criteria for retrieving location information
              Returned location information
            ILocation.Trace()
            ILocation.Calculate()
              Calculation criteria
              Calculation results
            ILocation.CancelNotification()
            Location Service API error messages
            Location Service API example
          JavaScript Logging Service API
            IDataSource.Add()
              Criteria for adding a log entry
            IDataSource.GetList()
              Criteria for retrieving log events
              Returned log event information
            IDataSource.Delete()
              Criteria for deleting an event
            IDataSource.RequestNotification()
              Criteria for requesting notification
            IDataSource.Cancel()
            Logging Service API error messages
            Logging Service API example
          JavaScript Media Management Service API
            IDataSource.GetList()
              Criteria for retrieving media information
              Returned media information
            IDataSource.Cancel()
            Media Management Service API error messages
            Media Management Service API example
          JavaScript Messaging Service API
            IMessaging.GetList()
              Criteria for retrieving messaging information
              Returned messaging information
            IMessaging.Send()
              Criteria for sending a message
            IMessaging.RegisterNotification()
              Returned notification information
            IMessaging.CancelNotification()
            IMessaging.ChangeStatus()
            IMessaging.Delete()
            IMessaging.Cancel()
            Messaging Service API error messages
            Messaging Service API example
          JavaScript Sensor Service API
            ISensor.FindSensorChannel()
              Criteria for searching sensor channels
            ISensor.RegisterForNotification()
              Criteria for receiving sensor data
              Returned sensor data
            ISensor.Cancel()
            ISensor.GetChannelProperty()
              Criteria for retrieving channel property information
              Returned channel property information
            Sensor channel information
            Sensor Service API error messages
            Sensor Service API example
          JavaScript SystemInfo Service API (WRT 1.1)
            ISysInfo.GetInfo()
              Criteria for retrieving system attribute information
            ISysInfo.SetInfo()
              Criteria for modifying a system attribute value
            ISysInfo.GetNotification()
              Criteria for change notifications
            ISysInfo.Cancel()
            System attributes
              Supported system attributes (entities and keys)
              System data types
            SystemInfo Service API error messages
            SystemInfo Service API example
          JavaScript SystemInfo Service API (WRT 1.0)
            Power information services
              chargelevel
              onchargelevel
              chargerconnected
              onchargerconnected
            Network information services
              signalbars
              networkname
              registrationstatus
            Display and keypad illumination information and control services
              lighton()
              lightoff()
              lightblink()
              lightminintensity
              lightmaxintensity
              lightdefaultintensity
              lightinfiniteduration
              lightmaxduration
              lightdefaultcycletime
              lighttargetprimarydisplayandkeyboard
              lighttargetsystem
            Vibration information and control services
              startvibra()
              stopvibra()
              vibraminintensity
              vibramaxintensity
              vibramaxduration
              vibrasettings
            Beep tone control services
              beep()
            Memory and file system information services
              drivesize()
              drivefree()
              totalram
              freeram
              drivelist
            System language information services
              language
          Service API error codes
    Home screen widgets
      Introduction to home screen widgets
        Life cycle of a home screen widget
        User interaction with home screen widgets
        Home screen widget appearance
        Home screen widget content
        Communication between the home screen and WRT
      Developing home screen widgets
        Determining whether to display home screen or full screen
        Creating content specific to home screen widgets
      Enabling STEW for the home screen
  Developer resources
  Terms and abbreviations
  Discussion about this resource
Design and User Experience Library v1.6
  Legal notice
  Guide to Design and User Experience Library v1.6
  User experience overview
    About usability
      Context of use
        Users
        Tasks and goals
        Environment
      Usability measures
      Benefits of usability
    Usability in a mobile application development project
      Know the users
      Consider cultural differences
      Culture-dependent issues in application user interfaces
      Usability methods
      Selecting the best usability research method
      Usability requirements
        How to set the requirements
        When to set the requirements
      Integrating usability to the development process
      Five steps of the iterative development process for mobile applications
      Optimise the User Experience
      Porting the User Experience
      Making security usable
    Design patterns
      Work order list
      Wizard
      Map view
      Settings
      Main menu in S60
        Using no focus
        Using focus
        Using tabs in the first level
        Using tabs or folders in the second level
        Creating the entire menu system from scratch
      Search
    Cost justification
      The user's experience
      Make it right
  Guidelines and checklists
    Usability guidelines
      Navigation
        Basic interaction style
        Main view
        Softkeys
        View design
        Options menu
        Shortcuts
        Actions and feedback
        Multitasking
        Interruptions
        Tabs and folders
      Entering information
        Consider cultural differences
        Make information entry easy
        Respect the user's work
      Information presentation
        Text presentation
        Long text
        Graphics
        Icons
        Full-screen mode
        Colours
        Sounds
        Errors
        Help
      Connectivity
        Handling connections
        Refreshing information
        Terminology and connections
      Usability for administrators
        Some administrative features
      Usability and security
        Mobile security threats
        Access security 
        Password
        Information security
        Security tips for the user
        Security tips for the developer
    Top 10 usability guidelines for S60 applications
    User experience checklists
      Quick checklist
      Installation and startup checklist
      Navigation checklist
      Series 40 UI style checklist
      S60 UI style checklist
      Accessibility and clarity checklist
      Mobility checklist
      Security checklist
      Connectivity checklist
      Games checklist
      Help and documentation checklist
      Exiting and uninstallation checklist
  Visual design
    A guide for newcomers
      The importance of visual design
      Understanding the device
      Platforms
      Screen size
        Mobile Web sites
        Native applications
      Physical screen size
      Colour
      Font support
      Graphics
        Graphics within the browser
        Graphics within native applications
        Scalable Vector Graphics Tiny (SVGT)
      Animation
        Flash Lite
      Getting to know the device landscape
      Using design principles
      The Gestalt principles of perceptual organisation
        Similarity
        Proximity
        Repetition
        Figure-to-ground relationship
        Closure
        Continuation
      Achieving unity in design
        Space
        Visual flow
        Dominance
        Hierarchy
        Colour
        Images and graphical elements
        Animation and transitions
      Putting it all together
    Design update: China
      From crowds to crowded UIs
      Vivid visual design
      User trends
        Personalisation rules
        Widespread mobile Internet
      Applications and services
      Local interpretation of style
      Inspiration from duplication
      Widgets
      Conclusions
  Interaction design
    Interaction design for mobile applications in brief
      Essence of interaction design
      Interaction design for mobile
        Adherence to a consistent UI style
        Hardware limitations
        Mobile use context
      Interaction design in the user-centric design process
    Deliverables of interaction design
      Navigation maps
      Wireframe models
      UI Prototypes
      UI Specifications
    Best practices for interaction design
      Design for the user and recognise constraints
      Learn by doing and participating
      Benchmark the alternatives and utilise good design solutions
      Utilise proven design patterns
      10 point checklist to evaluate mobile interaction design
    Tools for interaction design
      Tools for interaction design and prototyping
  Web Runtime for designers
    What is a widget?
    Why make widgets?
    Development tools
    Widget deployment and installation
    Designing a widget
      A single canvas
      Many views
      Loading content into a widget
      Using Platform Services
      Widget interaction models
      Direct manipulation (touch) devices
      Scrolling
      Using softkeys
      Screen orientation
      Visual design
        Font support
        Graphical and media file format support
        HTML and CSS support
        Using animations and transitions
        Interaction and user-experience design checklist
    Packaging, installation, and distribution
      Designing the icon
      Widget visibility
      Deployment
    Widget design tutorial
      Getting started
        What you will need
        A quick look at the widget structure
      Creating the visual concept
      Get friendly with the data source
      Styling views and controls
        Styling default elements and previewing the changes
          Styling hyperlinks
          Previewing design changes
        Creating the logo header
        Styling the navigation buttons
        Launching the 'About' page
        Creating the icon
          Choosing the widget's name
      Styling dynamic content
        Creating the colour swatches
        Styling the email prompt
      Debugging the design and testing the widget
  Full-screen usage
    Be conscious of your motives to use full screen
      If you got mostly A answers
      If you got mostly B answers
      If you got mostly C answers
    Creating a unique design
    Maintaining consistency
  Scalable UI
    Introduction to the S60 scalable UI
      Benefits of scalable UI
      A process perspective to scalable UI development
    S60 UI panes and changes introduced in S60 3rd Edition, Feature Pack 2
    S60 display modes and resolutions
    S60 display orientation modes
      Portrait mode
      Landscape modes
      Full-screen mode
      Changing between orientation modes
    S60 display resolutions
    Design issues
      Using common or custom components
        Using custom UI components
      Using different display modes
      Designing for custom screen sizes
        Optimisation for landscape
        Working with two separate displays
      Selecting the right orientation for the application
    Implementation issues
      Changing display orientation
        System-level orientation change
        Application-level orientation change
      Positioning UI elements
      Graphics
      Localization
      Testing scalable UIs
  Game design
    Mobile game usability
      Usability return on investment
    Game user experience guidelines
      S60: Top 10 usability guidelines for games
      Main menu design
        Game main menu - S60, Symbian C++
        Game main menu - S60 Java ME
        Navigation diagram - S60
      Pre-game guidelines
        Loading
        Intro
          Intro sounds
        Main menu
        Navigation keys
        Pause menu
        Login menu
        Bluetooth connection menu
        List design
        Handling payments
        Help
          Use pictures in the help
          Help for multiplayer games
        Save the user's time
        Text entry
      Game experience guidelines
        Make the user comfortable
          Do not annoy the user
          Do not force the player to restart from scratch
        Keys and game controls
          Simultaneous key presses
          Diagonal movement
          Key functions
        Graphics
          S60 screen orientation
          Harmonious colours
          Match functionality with appearance
          Use each screen fully
        Backlight
        Sounds
          Use unique sounds
          Relay information
          Do not rely solely on sounds
          Profiles
          Alternative uses of mobile game audio
        Match with the real world
          Realism
          No invisible barriers
          Bonus and special features
          Getting killed
        Feedback
          Display status clearly
        Give control to the user
        Game design
          Challenge
        End key
        Pause
          Disable sounds and music
          To pause or not to pause?
          Pause in multiplayer games
          Actions in pause menu and resuming the game
        In-game help
        Latency in multiplayer games
        Text
          No foul language or offensive terms
          Make text easy to read
      Post-game guidelines
        Restart
        High-score list
          Select appropriate, interesting scoring units
          High-score list in single-player games
          High-score list in multiplayer games
          Only good scorers may enter their name
      Case: Mobile action games
        Mobile considerations
        Keeping the player motivated and interested
        Speed and movement
      Case: One button games
        Turn input limitations into strengths
        Simplifying controls
        One button games
        Game design
      Case: Mixed reality games
        Combine technologies to create innovation
        Alternative input methods
        Location-based possibilities
    Mobile game graphics
      Graphics appeal
      Device restrictions
      Overcoming the display challenge
        Contrast
        Use clear and meaningful graphics
        Limited display space
        Landscape mode
    Selling the game experience
      Developers' dilemma
      Distributing in style
      Quality in possession
    Mobile game playability heuristics
      Using the heuristics in expert evaluations
        Expert evaluations and heuristics in practice
        Expert evaluations support playability testing
      Mobile gameplay heuristics
        Game usability
          GU1. Audio-visual representation supports the gameplay
          GU2. Screen layouts are efficient and visually pleasing
          GU3. Device UI and the game UI are used for their own purposes
          GU4. Indicators are visible
          GU5. The player understands the terminology
          GU6. Navigation is consistent, logical, and minimalist
          GU7. Control keys are consistent and follow standard conventions
          GU8. Game controls are flexible and convenient
          GU9. The game gives feedback on the player's actions
          GU10. The player cannot make irreversible errors
          GU11. The player does not have to memorize things unnecessarily
          GU12. The game contains help
        Mobility
          MO1. The game and play sessions can be started quickly
          MO2. The game accommodates with surroundings
          MO3. Interruptions are handled reasonably
        Gameplay
          GP1. The game provides clear goals or supports player-created goals
          GP2. The player sees progress in the game and can compare the results
          GP3. The player is rewarded and the rewards are meaningful
          GP4. The player is in control
          GP5. The challenge, strategy, and pace are in balance
          GP6. First-time experience is encouraging
          GP7. The game story supports the gameplay and is meaningful
          GP8. There are no repetitive or boring tasks
          GP9. The players can express themselves
          GP10. The game supports different playing styles
          GP11. The game does not stagnate
          GP12. The game is consistent
          GP13. The game design uses orthogonal unit differentiation
          GP14. The player does not lose any hard-won possessions
      Adding new modules: Multiplayer game heuristics
        Mobile multiplayer game heuristics
          MP1. The game supports communication
          MP2. There are reasons to communicate
          MP3. The game helps the player to find other players and game instances
          MP4. The game supports groups and communities
          MP5. The design minimises deviant behaviour
          MP6. The game design hides the effects of the network
        Supplements to core heuristics with multiplayer games
          GU5. The player understands the terminology
          GP6. First-time experience is encouraging
          GP9. The players can express themselves in the game
          GP2. The player sees the progress in the game and can compare the results
          GP10. The game supports different playing styles
      Terms and abbreviations
      Mobile game playability heuristics reference sheets
  Theme design
    General theme information
      Themes and creativity
      Themes and usability
        Creating theme components with high usability
          Idle background
          Active background
          Background for different applications, pop-ups, and fields
          Active standby
          Scalable UI
          Keep consistency and contrast in mind
          Clear focus indication is a must
          Icons and metaphors
          Usable clocks, signals, and status bars
          Guidelines for creating a user-friendly theme
      Themes and sounds
    Carbide.ui Theme Edition tutorial
      Getting started
      Designing the theme
        Using the Adobe Illustrator template
        Creating reusable colour swatches (optional)
      Constructing the theme
        Creating a new theme file
        A brief introduction to Carbide.ui
        Replacing the Background element
        Setting colours
          Creating Referenced Colours
          Applying a Referenced Colour
        Working with areas
        Replacing single- and multi-piece components
          Styling a nine-piece highlight
          Styling a single-piece element
        Completing the theme
          Styling icons
          Adding animation
          Designing for backwards compatibility
      Packaging and testing the theme
        Packaging and installing the theme
        Activating the theme
        Testing
        Distributing your theme
    Theme templates
  Multimedia
    Mobile video and streaming
      Video capabilities in Nokia devices
        Device categories and supported video formats
        Differences in video capabilities between Nokia platforms
      Video encoding guidelines
        Video coding
        Audio Coding
        Video file formats
      Video distribution channels
        Progressive download
        Streaming video
        Mass distribution channels
        Nokia Web Browser as a video platform
      Example conversion workflow with Adobe Premiere Elements
      Streaming video creation
        Streaming video creation – Basic steps
        3GPP-compatible content authoring tools
        3GPP video creation tips and tricks
        Content creation with 3GPP codecs
        Suggested video encoder configurations
        Network and bit rate options for streaming
      Video client application development
      Video and streaming specifications
  S60 touch
    Touch strategies
    Touch-enabled vs. touch-optimised
    Usability considerations
      Scale and positioning of controls
      Finger vs. stylus
      Sensor interaction
      Feedback
      Tactile feedback
        Feedback quality and quantity
        Feedback delay
    Touch components
      Adaptive search
      Touch down and hold-event and the stylus pop-up menu
      Slider pop-up
      Touch-specific functionality in Preview pop-up
      Text input methods
      Scroll bars
      Toolbar and toolbar extension
      Touch-specific issues in lists
      Application-specific use for Touch down and drag-event
    Designing for S60 touch
      Finger use: Case universal remote controller
        Universal remote controller: Key features
        Universal remote controller: Advanced features
        Universal remote controller: Design summary
      Stylus use: Case sudoku game
        Sudoku game: Key features
        Sudoku game: Design summary
    Custom input methods
      Utilising strokes
      Utilising gestures
      Designing custom buttons
    S60 design summary
  Standard S60 UI components
    Lists
    Forms
    Setting lists
    Grids
    Notifications and queries
    Viewers and editors
  Discussion about this resource
  Legal notice
  Guide to Design and User Experience Library v1.6
  User experience overview
    About usability
      Context of use
        Users
        Tasks and goals
        Environment
      Usability measures
      Benefits of usability
    Usability in a mobile application development project
      Know the users
      Consider cultural differences
      Culture-dependent issues in application user interfaces
      Usability methods
      Selecting the best usability research method
      Usability requirements
        How to set the requirements
        When to set the requirements
      Integrating usability to the development process
      Five steps of the iterative development process for mobile applications
      Optimise the User Experience
      Porting the User Experience
      Making security usable
    Design patterns
      Work order list
      Wizard
      Map view
      Settings
      Main menu in S60
        Using no focus
        Using focus
        Using tabs in the first level
        Using tabs or folders in the second level
        Creating the entire menu system from scratch
      Search
    Cost justification
      The user's experience
      Make it right
  Guidelines and checklists
    Usability guidelines
      Navigation
        Basic interaction style
        Main view
        Softkeys
        View design
        Options menu
        Shortcuts
        Actions and feedback
        Multitasking
        Interruptions
        Tabs and folders
      Entering information
        Consider cultural differences
        Make information entry easy
        Respect the user's work
      Information presentation
        Text presentation
        Long text
        Graphics
        Icons
        Full-screen mode
        Colours
        Sounds
        Errors
        Help
      Connectivity
        Handling connections
        Refreshing information
        Terminology and connections
      Usability for administrators
        Some administrative features
      Usability and security
        Mobile security threats
        Access security 
        Password
        Information security
        Security tips for the user
        Security tips for the developer
    Top 10 usability guidelines for S60 applications
    User experience checklists
      Quick checklist
      Installation and startup checklist
      Navigation checklist
      Series 40 UI style checklist
      S60 UI style checklist
      Accessibility and clarity checklist
      Mobility checklist
      Security checklist
      Connectivity checklist
      Games checklist
      Help and documentation checklist
      Exiting and uninstallation checklist
  Visual design
    A guide for newcomers
      The importance of visual design
      Understanding the device
      Platforms
      Screen size
        Mobile Web sites
        Native applications
      Physical screen size
      Colour
      Font support
      Graphics
        Graphics within the browser
        Graphics within native applications
        Scalable Vector Graphics Tiny (SVGT)
      Animation
        Flash Lite
      Getting to know the device landscape
      Using design principles
      The Gestalt principles of perceptual organisation
        Similarity
        Proximity
        Repetition
        Figure-to-ground relationship
        Closure
        Continuation
      Achieving unity in design
        Space
        Visual flow
        Dominance
        Hierarchy
        Colour
        Images and graphical elements
        Animation and transitions
      Putting it all together
    Design update: China
      From crowds to crowded UIs
      Vivid visual design
      User trends
        Personalisation rules
        Widespread mobile Internet
      Applications and services
      Local interpretation of style
      Inspiration from duplication
      Widgets
      Conclusions
  Interaction design
    Interaction design for mobile applications in brief
      Essence of interaction design
      Interaction design for mobile
        Adherence to a consistent UI style
        Hardware limitations
        Mobile use context
      Interaction design in the user-centric design process
    Deliverables of interaction design
      Navigation maps
      Wireframe models
      UI Prototypes
      UI Specifications
    Best practices for interaction design
      Design for the user and recognise constraints
      Learn by doing and participating
      Benchmark the alternatives and utilise good design solutions
      Utilise proven design patterns
      10 point checklist to evaluate mobile interaction design
    Tools for interaction design
      Tools for interaction design and prototyping
  Web Runtime for designers
    What is a widget?
    Why make widgets?
    Development tools
    Widget deployment and installation
    Designing a widget
      A single canvas
      Many views
      Loading content into a widget
      Using Platform Services
      Widget interaction models
      Direct manipulation (touch) devices
      Scrolling
      Using softkeys
      Screen orientation
      Visual design
        Font support
        Graphical and media file format support
        HTML and CSS support
        Using animations and transitions
        Interaction and user-experience design checklist
    Packaging, installation, and distribution
      Designing the icon
      Widget visibility
      Deployment
    Widget design tutorial
      Getting started
        What you will need
        A quick look at the widget structure
      Creating the visual concept
      Get friendly with the data source
      Styling views and controls
        Styling default elements and previewing the changes
          Styling hyperlinks
          Previewing design changes
        Creating the logo header
        Styling the navigation buttons
        Launching the 'About' page
        Creating the icon
          Choosing the widget's name
      Styling dynamic content
        Creating the colour swatches
        Styling the email prompt
      Debugging the design and testing the widget
  Full-screen usage
    Be conscious of your motives to use full screen
      If you got mostly A answers
      If you got mostly B answers
      If you got mostly C answers
    Creating a unique design
    Maintaining consistency
  Scalable UI
    Introduction to the S60 scalable UI
      Benefits of scalable UI
      A process perspective to scalable UI development
    S60 UI panes and changes introduced in S60 3rd Edition, Feature Pack 2
    S60 display modes and resolutions
    S60 display orientation modes
      Portrait mode
      Landscape modes
      Full-screen mode
      Changing between orientation modes
    S60 display resolutions
    Design issues
      Using common or custom components
        Using custom UI components
      Using different display modes
      Designing for custom screen sizes
        Optimisation for landscape
        Working with two separate displays
      Selecting the right orientation for the application
    Implementation issues
      Changing display orientation
        System-level orientation change
        Application-level orientation change
      Positioning UI elements
      Graphics
      Localization
      Testing scalable UIs
  Game design
    Mobile game usability
      Usability return on investment
    Game user experience guidelines
      S60: Top 10 usability guidelines for games
      Main menu design
        Game main menu - S60, Symbian C++
        Game main menu - S60 Java ME
        Navigation diagram - S60
      Pre-game guidelines
        Loading
        Intro
          Intro sounds
        Main menu
        Navigation keys
        Pause menu
        Login menu
        Bluetooth connection menu
        List design
        Handling payments
        Help
          Use pictures in the help
          Help for multiplayer games
        Save the user's time
        Text entry
      Game experience guidelines
        Make the user comfortable
          Do not annoy the user
          Do not force the player to restart from scratch
        Keys and game controls
          Simultaneous key presses
          Diagonal movement
          Key functions
        Graphics
          S60 screen orientation
          Harmonious colours
          Match functionality with appearance
          Use each screen fully
        Backlight
        Sounds
          Use unique sounds
          Relay information
          Do not rely solely on sounds
          Profiles
          Alternative uses of mobile game audio
        Match with the real world
          Realism
          No invisible barriers
          Bonus and special features
          Getting killed
        Feedback
          Display status clearly
        Give control to the user
        Game design
          Challenge
        End key
        Pause
          Disable sounds and music
          To pause or not to pause?
          Pause in multiplayer games
          Actions in pause menu and resuming the game
        In-game help
        Latency in multiplayer games
        Text
          No foul language or offensive terms
          Make text easy to read
      Post-game guidelines
        Restart
        High-score list
          Select appropriate, interesting scoring units
          High-score list in single-player games
          High-score list in multiplayer games
          Only good scorers may enter their name
      Case: Mobile action games
        Mobile considerations
        Keeping the player motivated and interested
        Speed and movement
      Case: One button games
        Turn input limitations into strengths
        Simplifying controls
        One button games
        Game design
      Case: Mixed reality games
        Combine technologies to create innovation
        Alternative input methods
        Location-based possibilities
    Mobile game graphics
      Graphics appeal
      Device restrictions
      Overcoming the display challenge
        Contrast
        Use clear and meaningful graphics
        Limited display space
        Landscape mode
    Selling the game experience
      Developers' dilemma
      Distributing in style
      Quality in possession
    Mobile game playability heuristics
      Using the heuristics in expert evaluations
        Expert evaluations and heuristics in practice
        Expert evaluations support playability testing
      Mobile gameplay heuristics
        Game usability
          GU1. Audio-visual representation supports the gameplay
          GU2. Screen layouts are efficient and visually pleasing
          GU3. Device UI and the game UI are used for their own purposes
          GU4. Indicators are visible
          GU5. The player understands the terminology
          GU6. Navigation is consistent, logical, and minimalist
          GU7. Control keys are consistent and follow standard conventions
          GU8. Game controls are flexible and convenient
          GU9. The game gives feedback on the player's actions
          GU10. The player cannot make irreversible errors
          GU11. The player does not have to memorize things unnecessarily
          GU12. The game contains help
        Mobility
          MO1. The game and play sessions can be started quickly
          MO2. The game accommodates with surroundings
          MO3. Interruptions are handled reasonably
        Gameplay
          GP1. The game provides clear goals or supports player-created goals
          GP2. The player sees progress in the game and can compare the results
          GP3. The player is rewarded and the rewards are meaningful
          GP4. The player is in control
          GP5. The challenge, strategy, and pace are in balance
          GP6. First-time experience is encouraging
          GP7. The game story supports the gameplay and is meaningful
          GP8. There are no repetitive or boring tasks
          GP9. The players can express themselves
          GP10. The game supports different playing styles
          GP11. The game does not stagnate
          GP12. The game is consistent
          GP13. The game design uses orthogonal unit differentiation
          GP14. The player does not lose any hard-won possessions
      Adding new modules: Multiplayer game heuristics
        Mobile multiplayer game heuristics
          MP1. The game supports communication
          MP2. There are reasons to communicate
          MP3. The game helps the player to find other players and game instances
          MP4. The game supports groups and communities
          MP5. The design minimises deviant behaviour
          MP6. The game design hides the effects of the network
        Supplements to core heuristics with multiplayer games
          GU5. The player understands the terminology
          GP6. First-time experience is encouraging
          GP9. The players can express themselves in the game
          GP2. The player sees the progress in the game and can compare the results
          GP10. The game supports different playing styles
      Terms and abbreviations
      Mobile game playability heuristics reference sheets
  Theme design
    General theme information
      Themes and creativity
      Themes and usability
        Creating theme components with high usability
          Idle background
          Active background
          Background for different applications, pop-ups, and fields
          Active standby
          Scalable UI
          Keep consistency and contrast in mind
          Clear focus indication is a must
          Icons and metaphors
          Usable clocks, signals, and status bars
          Guidelines for creating a user-friendly theme
      Themes and sounds
    Carbide.ui Theme Edition tutorial
      Getting started
      Designing the theme
        Using the Adobe Illustrator template
        Creating reusable colour swatches (optional)
      Constructing the theme
        Creating a new theme file
        A brief introduction to Carbide.ui
        Replacing the Background element
        Setting colours
          Creating Referenced Colours
          Applying a Referenced Colour
        Working with areas
        Replacing single- and multi-piece components
          Styling a nine-piece highlight
          Styling a single-piece element
        Completing the theme
          Styling icons
          Adding animation
          Designing for backwards compatibility
      Packaging and testing the theme
        Packaging and installing the theme
        Activating the theme
        Testing
        Distributing your theme
    Theme templates
  Multimedia
    Mobile video and streaming
      Video capabilities in Nokia devices
        Device categories and supported video formats
        Differences in video capabilities between Nokia platforms
      Video encoding guidelines
        Video coding
        Audio Coding
        Video file formats
      Video distribution channels
        Progressive download
        Streaming video
        Mass distribution channels
        Nokia Web Browser as a video platform
      Example conversion workflow with Adobe Premiere Elements
      Streaming video creation
        Streaming video creation – Basic steps
        3GPP-compatible content authoring tools
        3GPP video creation tips and tricks
        Content creation with 3GPP codecs
        Suggested video encoder configurations
        Network and bit rate options for streaming
      Video client application development
      Video and streaming specifications
  S60 touch
    Touch strategies
    Touch-enabled vs. touch-optimised
    Usability considerations
      Scale and positioning of controls
      Finger vs. stylus
      Sensor interaction
      Feedback
      Tactile feedback
        Feedback quality and quantity
        Feedback delay
    Touch components
      Adaptive search
      Touch down and hold-event and the stylus pop-up menu
      Slider pop-up
      Touch-specific functionality in Preview pop-up
      Text input methods
      Scroll bars
      Toolbar and toolbar extension
      Touch-specific issues in lists
      Application-specific use for Touch down and drag-event
    Designing for S60 touch
      Finger use: Case universal remote controller
        Universal remote controller: Key features
        Universal remote controller: Advanced features
        Universal remote controller: Design summary
      Stylus use: Case sudoku game
        Sudoku game: Key features
        Sudoku game: Design summary
    Custom input methods
      Utilising strokes
      Utilising gestures
      Designing custom buttons
    S60 design summary
  Standard S60 UI components
    Lists
    Forms
    Setting lists
    Grids
    Notifications and queries
    Viewers and editors
  Discussion about this resource
Qt for S60 Developer's Library v 0.8
  Legal notice
  Change history and release notes
  Getting started
    Introduction to Qt
    Introduction to the S60 platform
    Installation guide
      PC requirements
      Choosing an SDK
      Installing the S60 platform SDK
      Using Qt for S60 and S60 3rd Edition Feature Pack 1
      Installing the Carbide.c++ IDE
      Installing Qt for S60
      Configure Carbide.c++ 2.0 for Qt
      Known issues with Carbide.c++ and Qt for S60 integration
    Simple Qt example with Carbide.c++
      Setup the Carbide.c++ workspace
      Create a Qt Project
        Choosing the Qt project type
        Naming the Qt project
        Choosing the build configurations
        Choosing Qt modules
      Create a Qt widget
        Example widget header file
        Example widget source file
      Building the example widget
      Running the widget on the emulator
      Build the widget for the phone
  S60 Platform considerations
    Supported Qt modules in Qt for S60 Tower release
    Extensions to the project file
      DEFINES in symbian scope
      DEPLOYMENT in symbian scope
      INCLUDEPATH in symbian scope
      LIB extensions in symbian scope
      QT variable in symbian scope
      TARGET in symbian scope
      TARGET.CAPABILITY in symbian scope
      TARGET.EPOCALLOWDLLDATA in symbian scope
      TARGET.EPOCHEAPSIZE and TARGET.EPOCSTACKSIZE in symbian scope
      TARGET.UIDs in symbian scope
      TEMPLATE in symbian scope
    Platform security
      Platform security - UIDs
      Platform security - capabilities
      Platform security - signed installation files
      Platform security - data caging
    Managing different screen sizes
    Creating a DLL
    Localisation process with Qt
      Using Qt translation
      Localisation phrases
    Getting the application onto a phone
      Package files
      Creating an installation file
      Signing an application
      Deploying an application onto a phone
      Distributing your application to a wider audience
  Porting from S60 to Qt
    Qt in the S60 environment
    Integration of Qt and S60 build systems
    Separating Qt and S60 implementations
    Using error codes
    Memory management
    Visibility in the application shell
    UI building blocks
      Lists and grids
      Menus
      Softkey API
      Notification dialogs
      Queries
      Views in Qt applications
      Managing different screen sizes
    S60 to Qt conversion
      Active Objects
        Active object example
      Exception handling
      Converting descriptors
      Converting lists
      Converting geometry
      Converting images
      Qt and S60 SVG usage comparison
      Qt and S60 mouse/touch/pen events comparison
      Qt and S60 key event handling comparison
      Qt and S60 Idle timer usage comparison
      Qt and S60 HTTP connection usage comparison
      Qt and S60 Socket usage comparison
      Qt and S60 SAX parsing usage comparison
      Managing sub-project build order
    Other issues
    Examples
      Messaging
      Internet Access Points
      Retrieving contacts
      Active Object to signal-slot connection
  Porting from Desktop Qt
    Porting Qt desktop application to S60 environment
      Porting considerations
      Software development in the S60 environment
        User interface
        Memory
    Porting steps
      Setting up the Qt for S60 development environment
      Choosing the porting strategy and redesigning application
      Analyzing memory usage
      Taking care of platform security
      Modifying the project file
      Building the project and making modifications to the code according to the selected porting approach
      Creating installation file
  Qt reference documentation
    All namespaces
    All classes
    Main classes
    Grouped classes
    Modules
    Functions
  Developer resources
    Qt-related books and URLs
    Example code for Qt for S60
    Terms and abbreviations
  Legal notice
  Change history and release notes
  Getting started
    Introduction to Qt
    Introduction to the S60 platform
    Installation guide
      PC requirements
      Choosing an SDK
      Installing the S60 platform SDK
      Using Qt for S60 and S60 3rd Edition Feature Pack 1
      Installing the Carbide.c++ IDE
      Installing Qt for S60
      Configure Carbide.c++ 2.0 for Qt
      Known issues with Carbide.c++ and Qt for S60 integration
    Simple Qt example with Carbide.c++
      Setup the Carbide.c++ workspace
      Create a Qt Project
        Choosing the Qt project type
        Naming the Qt project
        Choosing the build configurations
        Choosing Qt modules
      Create a Qt widget
        Example widget header file
        Example widget source file
      Building the example widget
      Running the widget on the emulator
      Build the widget for the phone
  S60 Platform considerations
    Supported Qt modules in Qt for S60 Tower release
    Extensions to the project file
      DEFINES in symbian scope
      DEPLOYMENT in symbian scope
      INCLUDEPATH in symbian scope
      LIB extensions in symbian scope
      QT variable in symbian scope
      TARGET in symbian scope
      TARGET.CAPABILITY in symbian scope
      TARGET.EPOCALLOWDLLDATA in symbian scope
      TARGET.EPOCHEAPSIZE and TARGET.EPOCSTACKSIZE in symbian scope
      TARGET.UIDs in symbian scope
      TEMPLATE in symbian scope
    Platform security
      Platform security - UIDs
      Platform security - capabilities
      Platform security - signed installation files
      Platform security - data caging
    Managing different screen sizes
    Creating a DLL
    Localisation process with Qt
      Using Qt translation
      Localisation phrases
    Getting the application onto a phone
      Package files
      Creating an installation file
      Signing an application
      Deploying an application onto a phone
      Distributing your application to a wider audience
  Porting from S60 to Qt
    Qt in the S60 environment
    Integration of Qt and S60 build systems
    Separating Qt and S60 implementations
    Using error codes
    Memory management
    Visibility in the application shell
    UI building blocks
      Lists and grids
      Menus
      Softkey API
      Notification dialogs
      Queries
      Views in Qt applications
      Managing different screen sizes
    S60 to Qt conversion
      Active Objects
        Active object example
      Exception handling
      Converting descriptors
      Converting lists
      Converting geometry
      Converting images
      Qt and S60 SVG usage comparison
      Qt and S60 mouse/touch/pen events comparison
      Qt and S60 key event handling comparison
      Qt and S60 Idle timer usage comparison
      Qt and S60 HTTP connection usage comparison
      Qt and S60 Socket usage comparison
      Qt and S60 SAX parsing usage comparison
      Managing sub-project build order
    Other issues
    Examples
      Messaging
      Internet Access Points
      Retrieving contacts
      Active Object to signal-slot connection
  Porting from Desktop Qt
    Porting Qt desktop application to S60 environment
      Porting considerations
      Software development in the S60 environment
        User interface
        Memory
    Porting steps
      Setting up the Qt for S60 development environment
      Choosing the porting strategy and redesigning application
      Analyzing memory usage
      Taking care of platform security
      Modifying the project file
      Building the project and making modifications to the code according to the selected porting approach
      Creating installation file
  Qt reference documentation
    All namespaces
    All classes
    Main classes
    Grouped classes
    Modules
    Functions
  Developer resources
    Qt-related books and URLs
    Example code for Qt for S60
    Terms and abbreviations
Flash Lite Developer's Library 1.5
  Legal notice
  Change history
  Guide to Flash Lite Developer's Library
    Library contents
  Introduction to Flash Lite
    What you need to know
    Flash Lite application types
    Flash Lite versions
      Flash Lite in the Web Browser for S60
      Software Update for S60
    Flash Lite security
      OMA DRM
  Getting started
    Before you start
    Flash Lite development process
    Creating your first Flash Lite application
  Designing Flash Lite applications
    Basic Flash Lite design considerations
    Designing user interaction
      Key input
      Touch input
        Touch interaction
        Basic touch UI design considerations
        Touch toolbar
        Touch keypad
      Text fields
      Feedback
      Focus and visual guidance
    Designing graphical user interfaces
      Planning usability and functionality
      Selecting the Flash Lite version and target devices
      Designing the layout
        Element dimensions
        Dynamic element layouts
        Screen resolution and scaling
          Fonts
          Bitmap graphics
        Screen orientation
      Laying out the softkeys
    Example: Designing the Sudokumaster UI
      Defining the Sudokumaster UI and functionality
        Use cases
        UI main view and states
        UI elements
        Feedback
      Defining the Sudokumaster target platform
      Designing the Sudokumaster layout
        Categorizing the layouts
        Selecting the default layout
        Defining the layout logic
        Designing UI element scaling
          Manual scaling
          Element proportions
        Designing the final layouts
      Designing the Sudokumaster UI elements
        User input listeners
        Game board
          Number input using keys
          Number input using touch
        Game title
        Game information
        Softkeys
        Options menu
        Final screen
      Implementing the Sudokumaster layout
      Conclusion
  Developing Flash Lite applications
    Flash Lite authoring and optimization tips
      General authoring tips
        Working with numeric text entries
        Using the [] operator in Flash Lite 1.1
        Detecting the Flash Lite version on a device
        Detecting the device platform
        Loading data with Flash Lite 2.0
        Validating shared objects with Flash Lite 2.0
        Adding metadata to SWF
        Distributing SWF over the air
        Playing screen savers on Series 40 Nokia devices
      Performance optimization tips
        Optimizing content
        Optimizing ActionScript
    Handling user input
      Detecting the input method
      Handling key input
        Key input in Flash Lite 1.1
        Key input in Flash Lite 2.0 and newer
      Handling touch input
        Button event handlers
        Mouse event handlers
        Drag and drop
      Disabling the touch keypad
    Accessing mobile device functions
    Using platform services
      Accessing and launching installed applications
      Accessing and managing calendar information
      Accessing and managing information about contacts
      Accessing and managing information about landmarks
      Accessing device location information
      Accessing device logs
      Accessing information about media files stored on a device
      Accessing messages and using messaging services
      Accessing data from the physical sensors of a device
      Accessing and modifying system information
      Defining the callback handler for an asynchronous method
        Callback status codes
    Media playback
      Video playback
      Audio playback
      Playing a video file in Flash Lite
        Encoding the video into mobile-compliant format
        Creating the video player application
    Saving persistent data
    Setting up XML socket connectivity
  Deploying Flash Lite applications
    Packaging and signing a Flash Lite application
      Certificates
      Creating and signing a SIS package
      Creating an NFL package
    Creating a stub application
      Software requirements
      Creating the project files
        Files you do not need to edit
        Files you need to edit
      Creating an icon for the stub application
      Building the project
      Packaging and signing the stub application
        Creating a PKG file
        Creating a SIS package
        Creating a certificate and private key
        Signing the SIS package
  Flash Lite API reference
    ActionScript Device object
      DisableAutoRotation()
      ExpediteConnection()
    ActionScript Service object
      Calling Service API methods
      Resuming applications in the background
      Canceling asynchronous methods
      Unloading services
    ActionScript Service API reference
      ActionScript AppManager Service API
        GetList()
          Parameters for retrieving information about applications
          Returned application information
        LaunchApp()
          Parameters for launching an application
        LaunchDoc()
          Parameters for launching an application
      ActionScript Calendar Service API
        GetList()
          Parameters for retrieving calendar information
          Returned calendar information
        Add()
          Parameters for adding and updating calendar information
        Delete()
          Parameters for deleting calendar information
        Import()
          Parameters for importing calendar entries
        Export()
          Parameters for exporting calendar entries
        RequestNotification()
          Parameters for change notifications
          Returned notification information
        Calendar entries
          Calendar entry properties
          Properties and calendar entry types
      ActionScript Contacts Service API
        GetList()
          Parameters for retrieving contact information
          Returned contact information
        Add()
          Parameters for adding and editing contact information
        Delete()
          Parameters for deleting contact information
        Import()
          Parameters for importing a contact
        Export()
          Parameters for exporting a contact
        Organise()
          Parameters for organizing contacts in a contact group
        Supported contact keys
      ActionScript Landmarks Service API
        New()
        GetList()
          Parameters for retrieving landmark information
            Filter criteria for landmarks
            Filter criteria for landmark categories
            Filter criteria for landmark databases
          Returned landmark information
        Add()
          Parameters for adding and editing landmark information
        Delete()
          Parameters for deleting landmark information
        Import()
          Parameters for importing landmarks
        Export()
          Parameters for exporting landmarks
        Organise()
          Parameters for organizing landmarks in a landmark category
        Landmarks, categories, and databases
          Landmark
          Landmark category
          Landmark database
      ActionScript Location Service API
        GetLocation()
          Parameters for retrieving location information
          Returned location information
        Trace()
        Calculate()
          Calculation parameters
          Calculation results
        CancelNotification()
      ActionScript Logging Service API
        Add()
          Parameters for adding a log entry
        GetList()
          Parameters for retrieving log events
          Returned log event information
        Delete()
          Parameters for deleting an event
        RequestNotification()
          Parameters for requesting notification
      ActionScript Media Management Service API
        GetList()
          Parameters for retrieving media information
          Returned media information
      ActionScript Messaging Service API
        GetList()
          Parameters for retrieving messaging information
          Returned messaging information
        Send()
          Parameters for sending a message
        RegisterNotification()
          Returned notification information
        CancelNotification()
        ChangeStatus()
        Delete()
      ActionScript Sensor Service API
        FindSensorChannel()
          Parameters for searching sensor channels
        RegisterForNotification()
          Parameters for receiving sensor data
          Returned sensor data
        GetChannelProperty()
          Parameters for retrieving channel property information
          Returned channel property information
        Sensor channel information
      ActionScript SystemInfo Service API
        GetInfo()
          Parameters for retrieving system attribute information
        SetInfo()
          Parameters for modifying a system attribute value
        GetNotification()
          Parameters for change notifications
        System attributes
          Supported system attributes (entities and keys)
          System data types
      Service API error codes
  Developer resources
  Discussion about this resource
  Flash Lite examples
    Flash Lite applications
    Flash Lite components and code snippets
  Legal notice
  Change history
  Guide to Flash Lite Developer's Library
    Library contents
  Introduction to Flash Lite
    What you need to know
    Flash Lite application types
    Flash Lite versions
      Flash Lite in the Web Browser for S60
      Software Update for S60
    Flash Lite security
      OMA DRM
  Getting started
    Before you start
    Flash Lite development process
    Creating your first Flash Lite application
  Designing Flash Lite applications
    Basic Flash Lite design considerations
    Designing user interaction
      Key input
      Touch input
        Touch interaction
        Basic touch UI design considerations
        Touch toolbar
        Touch keypad
      Text fields
      Feedback
      Focus and visual guidance
    Designing graphical user interfaces
      Planning usability and functionality
      Selecting the Flash Lite version and target devices
      Designing the layout
        Element dimensions
        Dynamic element layouts
        Screen resolution and scaling
          Fonts
          Bitmap graphics
        Screen orientation
      Laying out the softkeys
    Example: Designing the Sudokumaster UI
      Defining the Sudokumaster UI and functionality
        Use cases
        UI main view and states
        UI elements
        Feedback
      Defining the Sudokumaster target platform
      Designing the Sudokumaster layout
        Categorizing the layouts
        Selecting the default layout
        Defining the layout logic
        Designing UI element scaling
          Manual scaling
          Element proportions
        Designing the final layouts
      Designing the Sudokumaster UI elements
        User input listeners
        Game board
          Number input using keys
          Number input using touch
        Game title
        Game information
        Softkeys
        Options menu
        Final screen
      Implementing the Sudokumaster layout
      Conclusion
  Developing Flash Lite applications
    Flash Lite authoring and optimization tips
      General authoring tips
        Working with numeric text entries
        Using the [] operator in Flash Lite 1.1
        Detecting the Flash Lite version on a device
        Detecting the device platform
        Loading data with Flash Lite 2.0
        Validating shared objects with Flash Lite 2.0
        Adding metadata to SWF
        Distributing SWF over the air
        Playing screen savers on Series 40 Nokia devices
      Performance optimization tips
        Optimizing content
        Optimizing ActionScript
    Handling user input
      Detecting the input method
      Handling key input
        Key input in Flash Lite 1.1
        Key input in Flash Lite 2.0 and newer
      Handling touch input
        Button event handlers
        Mouse event handlers
        Drag and drop
      Disabling the touch keypad
    Accessing mobile device functions
    Using platform services
      Accessing and launching installed applications
      Accessing and managing calendar information
      Accessing and managing information about contacts
      Accessing and managing information about landmarks
      Accessing device location information
      Accessing device logs
      Accessing information about media files stored on a device
      Accessing messages and using messaging services
      Accessing data from the physical sensors of a device
      Accessing and modifying system information
      Defining the callback handler for an asynchronous method
        Callback status codes
    Media playback
      Video playback
      Audio playback
      Playing a video file in Flash Lite
        Encoding the video into mobile-compliant format
        Creating the video player application
    Saving persistent data
    Setting up XML socket connectivity
  Deploying Flash Lite applications
    Packaging and signing a Flash Lite application
      Certificates
      Creating and signing a SIS package
      Creating an NFL package
    Creating a stub application
      Software requirements
      Creating the project files
        Files you do not need to edit
        Files you need to edit
      Creating an icon for the stub application
      Building the project
      Packaging and signing the stub application
        Creating a PKG file
        Creating a SIS package
        Creating a certificate and private key
        Signing the SIS package
  Flash Lite API reference
    ActionScript Device object
      DisableAutoRotation()
      ExpediteConnection()
    ActionScript Service object
      Calling Service API methods
      Resuming applications in the background
      Canceling asynchronous methods
      Unloading services
    ActionScript Service API reference
      ActionScript AppManager Service API
        GetList()
          Parameters for retrieving information about applications
          Returned application information
        LaunchApp()
          Parameters for launching an application
        LaunchDoc()
          Parameters for launching an application
      ActionScript Calendar Service API
        GetList()
          Parameters for retrieving calendar information
          Returned calendar information
        Add()
          Parameters for adding and updating calendar information
        Delete()
          Parameters for deleting calendar information
        Import()
          Parameters for importing calendar entries
        Export()
          Parameters for exporting calendar entries
        RequestNotification()
          Parameters for change notifications
          Returned notification information
        Calendar entries
          Calendar entry properties
          Properties and calendar entry types
      ActionScript Contacts Service API
        GetList()
          Parameters for retrieving contact information
          Returned contact information
        Add()
          Parameters for adding and editing contact information
        Delete()
          Parameters for deleting contact information
        Import()
          Parameters for importing a contact
        Export()
          Parameters for exporting a contact
        Organise()
          Parameters for organizing contacts in a contact group
        Supported contact keys
      ActionScript Landmarks Service API
        New()
        GetList()
          Parameters for retrieving landmark information
            Filter criteria for landmarks
            Filter criteria for landmark categories
            Filter criteria for landmark databases
          Returned landmark information
        Add()
          Parameters for adding and editing landmark information
        Delete()
          Parameters for deleting landmark information
        Import()
          Parameters for importing landmarks
        Export()
          Parameters for exporting landmarks
        Organise()
          Parameters for organizing landmarks in a landmark category
        Landmarks, categories, and databases
          Landmark
          Landmark category
          Landmark database
      ActionScript Location Service API
        GetLocation()
          Parameters for retrieving location information
          Returned location information
        Trace()
        Calculate()
          Calculation parameters
          Calculation results
        CancelNotification()
      ActionScript Logging Service API
        Add()
          Parameters for adding a log entry
        GetList()
          Parameters for retrieving log events
          Returned log event information
        Delete()
          Parameters for deleting an event
        RequestNotification()
          Parameters for requesting notification
      ActionScript Media Management Service API
        GetList()
          Parameters for retrieving media information
          Returned media information
      ActionScript Messaging Service API
        GetList()
          Parameters for retrieving messaging information
          Returned messaging information
        Send()
          Parameters for sending a message
        RegisterNotification()
          Returned notification information
        CancelNotification()
        ChangeStatus()
        Delete()
      ActionScript Sensor Service API
        FindSensorChannel()
          Parameters for searching sensor channels
        RegisterForNotification()
          Parameters for receiving sensor data
          Returned sensor data
        GetChannelProperty()
          Parameters for retrieving channel property information
          Returned channel property information
        Sensor channel information
      ActionScript SystemInfo Service API
        GetInfo()
          Parameters for retrieving system attribute information
        SetInfo()
          Parameters for modifying a system attribute value
        GetNotification()
          Parameters for change notifications
        System attributes
          Supported system attributes (entities and keys)
          System data types
      Service API error codes
  Developer resources
  Discussion about this resource
  Flash Lite examples
    Flash Lite applications
    Flash Lite components and code snippets
Java Developer's Library 3.3
  Legal notice
  Change history
  Guide to Java ME Developer's Library
  Introduction
    S60 and Series 40 platform
      New features in S60 5th Edition
      New features in Series 40 6th Edition
      S60 device characteristics
      Series 40 device characteristics
    Java Platform Micro Edition (Java ME)
    Java ME on Series 40 and S60 platform
      Supported Java™ APIs
      Java Runtime for S60
      Software Update for S60
  Getting started with Mobile Java
    MIDP applications (MIDlets)
    Development environment requirements
      Configuring NetBeans
      Configuring Eclipse
    Development process overview
      MIDP project structure
      Creating, building and running MIDlets
      Packaging MIDlets
        JAR files
        JAD files
    Creating, building and running your first MIDlet
      Creating and building the example MIDlet
      Creating MIDlets in NetBeans
      Source code for the example
    Implementing MIDlets
      Application Management Software
      Implementing MIDlet lifecycle requirements
      Push applications
      Persistent storage
      System properties
    Designing MIDlets
      Basic considerations
      Designing for multiple devices
    Testing MIDlets
      Mobile device emulator
        Simulating events
        Diagnostics window
        Debug settings in Eclipse and NetBeans
      Diagnostics and tracing
        EcmtAgent
        Device Connectivity Tool
        Output streams
        Other diagnostics options
      On-device debugging
    Deploying MIDlets to a device
      Over-the-Air (OTA)
      Direct PC connection
      E-mail and MMS
      MIDlet pre-deployment
    MIDP FAQ
      Tools
      MIDlets
      Devices
    Where to go next
  Developer's Guides
    UI and graphics
      Introduction to User Interface
        UI elements and controls
        Touch UI
        Themes
        Scalability
      LCDUI
        LCDUI overview
          High-level APIs
          Low-level APIs
          Command handling
          Interplay with Application Management Software
        Using the LCDUI
          Alert
          List
          TextBox
          Form
            ChoiceGroup
            CustomItem
            DateField
            Gauge
            ImageItem
            Spacer
            StringItem
            TextField
          Canvas
          Graphics
          Command
          Media keys
        Example: Creating a simple test MIDlet
          Prerequisites
          Designing the SimpleTest MIDlet
          Developing the SimpleTest MIDlet
            Creating the project environment
            Implementing the MIDlet lifecycle and screen elements
            Creating the interaction with Canvas
          Building and running in an emulator
          Deploying to a device
        LCDUI - Setting softkey label location
      eSWT
        eSWT overview
        Using eSWT
          eSWT considerations for experienced LCDUI developers
          Example: HelloWorld in eSWT
          Basic components
          Browser
          Button
          CaptionedControl
          Combo box
          Command
          DateEditor
          Dialog
          HyperLink
          Label
          Layout
          List and SortedList
          ListBox
          MessageBox
          Slider
          Table
          Text, TextExtension, ConstrainedText
          Tree
        Example: Movie booking MIDlet
          Prerequisites
          Designing MovieBooking
          Developing MovieBooking
            Implementing the main MIDlet
            Implementing splash screen
            Implementing the database connections
            Implementing the UI elements
            Implementing the seat selection screen
          Building and running
          Deploying to a device
      Nokia UI API
        Introduction
        Using Nokia UI API
          Full-Screen Canvas
          Other UI extensions
          Audio extensions
          Other extensions
      MIDP 2.0 games
        MIDP 2.0 Game API overview
        Using the MIDP 2.0 Game API
          GameCanvas
          MIDP 2.0 Media API
        Example: Using basic Game elements
          Prerequisites
          Implementation of the Sheepdog MIDlet
          Developing the Sheepdog MIDlet
            Creating the project environment
            Implementing the main MIDlet
            Implementing the splash screen
            Implementing the UI elements
            Implementing the game environment
            Creating the game characters
            Implementing the game sound
            Implementing the game functionality
            Building and running in an emulator
            Deploying to a device
      Mobile 3D graphics
        Mobile 3-D Graphics API overview
        Using the M3G API
          Graphics3D
          Scene graph
        Example: Using 3D graphics in application development
          Prerequisites
          Implementation of the Maze3DMIDlet
            Implementation of the Scene Graph
            Maze Construction and Geometry
            Camera / Player Movement
            Game Setup
          Developing the Maze3DMIDlet
            Creating the project environment
            Implementing the main MIDlet
            Implementing the environment
            Implementing the UI elements
            Implementing the Graphics3DProperties class
            Building and running in an emulator
            Deploying to a device
      Scalable 2D vector graphics
        Scalable 2D Vector Graphics API overview
          Scalability
          Main use cases
        Example: Creating SVG graphics
          Prerequisites
          Implementation of the HelloWorldMIDlet
          Developing the HelloWorldMIDlet
            Creating the project environment
            Implementing the HelloWorldMIDlet
            Creating the SvgCanvas1 class
            Building and running in an emulator
            Deploying to a device
        Example: Loading and manipulating pre-generated SVG graphics
          Prerequisites
          Implementation of the LoadStaticMIDlet
          Developing the LoadStaticMIDlet
            Creating the project environment
            Implementing the LoadStaticMIDlet
            Creating the SvgCanvas2 class
            Building and running in an emulator
            Deploying to a device
        Example: Playing animated SVG content
          Prerequisites
          Implementation of the LoadStaticMidlet
          Developing the SvgAnimatorMidlet
            Creating the project environment
            Implementing the SvgAnimatorMidlet
            Building and running in an emulator
            Deploying to a device
    Multimedia
      Multimedia in mobile application development
      Multimedia applications
        Mobile Media API overview
        Using the Mobile Media API
          Architecture
          Player State Model
          Player Content Types
          Checking API availability
          Playing Tones and Tone Sequences
          Playing sampled sound and MIDI
          Playing Video
            Saving resources when playing video multiple times
          Recording sound and video
          Time Bases
          Taking photos
          StopTimeControl
          VolumeControl
          Security issues
          SDK versus devices
          Recommended practices
            Content Type selection
            Application resource management
            Player pooling
            Remote resources
            Minimizing media playback delay
            Restarting the Player after being unavailable
            Stopping playback when a MIDlet is switched to the background
            Playing DRM-protected media
        MMAPI Example: Creating a multimedia player
          Media Sampler MIDlet
            AudioCanvas
            Video source selector
            VideoCanvas
            DRM MIDI
            MMAPI support
          Prerequisites
          Implementation of the Media Sampler MIDlet
          Developing the Media Sampler MIDlet
            Creating the project environment
            Creating the main MIDlet
            Creating the media handling classes
            Creating the UI elements
            Building and running in an emulator
            Deploying to a device
      Advanced multimedia supplements
        Advanced Multimedia Supplements API overview
        Using the AMMS API
          EffectModule
          GlobalManager
          Module
          SoundSource3D
          Spectator
          Controls in AMMS
            EffectControl
            PanControl
            PriorityControl
            CommitControl
            DistanceAttenuationControl
            DopplerControl
            LocationControl
            OrientationControl
            AudioVirtualizerControl
            EqualizerControl
            ReverbControl
            ReverbSourceControl
          System property usage
        Example: 3D audio in application development
          Prerequisites
          Implementation of the AMMSMIDlet
          Developing the AMMSMIDlet
            Creating the project environment
            Creating the main MIDlet
            Creating the environment
            Creating the trigonometric functions
            Creating the interactive elements
            Building and running in an emulator
            Deploying to a device
    Security
      Introduction to MIDP security
        Security risks in the MIDP environment
        Permissions
        Security prompts
        Protection domains
        Function groups
        Security policies
          S60 security policy
          MSA security policy
          AT&T security policy
        Trusted MIDlets
        Untrusted MIDlets
        APIs and security
        Developer's guides
      Signed MIDlets
        Example: Signing MIDlets
          Prerequisites
          Creating the project environment
          Creating SignedMIDlet
          Adding permissions
          Signing the MIDlet
            Signing procedure using command line utilities
          Running the MIDlet either as untrusted or trusted
            Untrusted MIDlet
            Trusted MIDlet
          Deploying to a device
          Troubleshooting the signing procedure
        Recommended practices
          Certificate acquisition
          Certificates' trust settings
          Certificate chains
          Certificate expiration
          Certificate revocation
          MIDlet updates
        Appendix A Summary of Protected Methods
          MIDP 2.0
          Bluetooth API (JSR-82)
          Wireless Messaging API (JSR-120)
          Wireless Messaging API 2.0 (JSR-205)
          Mobile Media API 1.1 (JSR-135)
          Advanced Multimedia Supplements API (JSR-234):
          Location API (JSR-179)
          PDA Optional Packages (JSR-75)
            File Connection API
            PIM API
          J2ME™ Web Services (JSR-172)
          Security and Trust Services API (JSR-177)
          SIP API (JSR-180)
          Mobile Sensor API (JSR-256)
      Encrypted messages
        SATSA-CRYPTO overview
        Using SATSA-CRYPTO
          Encryption/Decryption
          Message Digests
          Signatures
        Example: Creating encrypted messages
          Prerequisites
          Implementation of SATSA MIDlet
          Creating the project environment
          Developing SATSA MIDlet
            Implementing the SATSAMIDlet
            Implementing the Codec class
            Implementing the MessageStore class
            Implementing the ListScreen class
            Implementing the NewScreen class
            Implementing the EncryptScreen class
            Implementing the PasswordScreen class
            Implementing the DecryptScreen class
            Implementing the InfoScreen class
          Building and running in an emulator
          Deploying to a device
      Digital signatures
        SATSA-PKI overview
        Using SATSA-PKI
          Creating signing requests and managing user credentials
          Using signature services
        Example: Creating digital signatures
          Prerequisites
          Implementation of the PKI MIDlet
          Developing the PKI MIDlet
          Building and running in an emulator
          Deploying to a device
      APDU messages
        SATSA-APDU overview
        Using SATSA-APDU
        Example: Creating an APDU connection
          Prerequisites
          Implementation of the APDU MIDlet
          Developing the APDU MIDlet
          Building an running in an emulator
          Deploying to a device
    Wireless messaging
      Wireless messaging in Java™ ME
      MMS messages
        Wireless Messaging API 2.0 overview
        Using the Wireless Messaging API 2.0
        Example: Creating and sending MMS messages
          User Interface
          Prerequisites
          Implementing the MMS MIDlet
          Developing the MMS MIDlet
            Creating the project environment
            Implementing the main MIDlet
            Implementing the UI elements
            Building and running in an emulator
            Deploying to a device
    Data handling
      Data Handling in Java™ ME
      File access
        FileConnection API overview
        Using FC API
          FileConnection interface considerations
          Security considerations
          Nokia-Specific Directories
        Example: Creating a file access system
          Prerequisites
          Implementation of ImageViewer
          Creating the project environment
          Developing ImageViewer
            Implementing the main MIDlet
            Implementing MIDlet functionality
            Implementing UI classes
          Building and running in an emulator
          Deploying to a device
      PIM event handling
        PIM API overview
        Using the PIM API
          Security considerations
          PIMList databases
            Contact list database
            Event list database
            ToDo database
        Example: Creating and sending an event
          Prerequisites
          Implementation of Event-Sharing MIDlet
          Creating the project environment
          Developing Event-Sharing MIDlet
            Implementing the main MIDlet
            Implementing the UI classes
            Implementing the back end functions
          Building and running in an emulator