s60 3rd fp2 widgets

38
Petro Soininen 29th September 2007 S60 Web Widgets

Upload: romek

Post on 18-May-2015

25.391 views

Category:

Technology


1 download

DESCRIPTION

Nokia S60 3rd FP2 Widgets presentation.

TRANSCRIPT

Page 1: S60 3rd FP2 Widgets

Petro Soininen29th September 2007

S60 Web Widgets

Page 2: S60 3rd FP2 Widgets

Contents

Web browser and the Web browser as a run-time platform

Web applications•

Widgets•

Desktop widgets•

Mobile widgets•

Web application vs. widget•

Web widget development•

Web widget APIs

Page 3: S60 3rd FP2 Widgets

Web Browser

All web browsers perform the same tasks. The order and how the process is performed is what differentiate browsers.

The tasks

are:•

Fetch

markup

Parse

markup

Construct a document tree

(nowadays a DOM tree)•

Find external references (images, CSS, javascript) and issue load requests for them.

Construct boxes

of content to render

Apply style information

to boxes

Layout

the boxes

Render

boxes

Process

user events

Page 4: S60 3rd FP2 Widgets

Web Browser for S60

Symbian OS

Nokia

UI

features

S60 plug-ins, incl. Flash Lite, SVG, and audio.

Symbian HTTP framework

Netscape

plug-inAPI

(NPL)

WebCoreKHTML

JavaScriptCore

KJS

Browser Control

S60 WebKit

OS adaptations Memory manager

Closed source

(S60, Nokia,

Symbian)

Already open source

Legend

open sourcedby Nokia

Flexible for plug-ins & extensions

Design not limited to particular OS

S60 Browser UI Widget Runtime

APIs supporting application interworking

Page 5: S60 3rd FP2 Widgets

Web Browser as a Run-Time Platform

It is the browser engine, which comprises of some core components such as the XML engine, HTML parser, JavaScript engine, CSS processor, rendering engine etc.

It has web applications

and widgets as client applications

JavaScript

as an application programming language•

Scripts typically cannot directly access the file system or the network

It provides certain access level to the system properties

Traditionally, a browser mainly provides functionality to access data on the Internet, not data on a local storage

It is the Web Run-Time platform (WRT)•

Browser as Development Platform

Page 6: S60 3rd FP2 Widgets

Web Application•

Web application is an application that is accessed with the Web browser over the Internet

Web application uses standard Web-based technologies

such as HTML/XHTML, CSS, JavaScript, DOM etc.

Typical Web applications are Webmail, online auction (eBay), online booking or blogs

Page 7: S60 3rd FP2 Widgets

Widgets

Web page without a browser UI

Widget is a standalone Web application

Runs, feels & acts like a native application

Local on the handset

& distributed like any other application

Not necessarily dependent on network access

Updates via server logic modifications or by redistributing the content to local device

Widget at its core is a

Web page designed for a specific purpose

Widgets use standard web technologies HTML, CSS, JavaScript, AJAX…

Rapid development

-

days -

not months or years

Development to Deployment in “clicks”

Page 8: S60 3rd FP2 Widgets

Desktop Widgets

Page 9: S60 3rd FP2 Widgets

Mobile Widget•

S60 as the 1st mobile platform announcing widget support

Empowered by the mobile widget engine

Fully compliant with standard-based Internet technologies

Page 10: S60 3rd FP2 Widgets

Web Run-Time - Current Goal

Widgets leverage the Web•

use internet services and Web APIs

to access information

use XmlHttpRequest

and AJAX

techniques•

low effort

to port widgets from other platforms

Widgets integrated into S60 user experience•

display the icon in the Application Menu•

can be assigned to Idle screen soft keys and shortcuts•

appear in the Active Applications list•

managed the same way as existing S60 applications•

Familiar (Un)Installer

user experience•

Visible in Application manager

Enable access to Widget specific APIs

(widget, system info, menu)

Page 11: S60 3rd FP2 Widgets

Web Run-Time - Future Goal

Widgets leverage the smart phone platform•

combine

information from Web with platform services

improves user experience•

Location, PIM & media…

information •

integrate widgets into Active Idle•

additional UI enhancements and features

Widgets evolve as a development platform•

Integrated safely/securely with S60 platform services

access platform services

via S60 APIs•

provide security and signing model

for widgets

Page 12: S60 3rd FP2 Widgets

Web Widget Framework

Page 13: S60 3rd FP2 Widgets

Widget component structure•

A widget is constructed by a bundle of files.•

info.plist

(mandatory)•

icon.png•

[name].html

(mandatory)•

[name].css•

[name].js

A widget project is a file-system directory, in which widget’s component files are stored.

Widget’s mandatory files and the icon.png

(if included) MUST be located at the root directory of a widget project.

Page 14: S60 3rd FP2 Widgets

Info.plist –

Property of a Widget

•A manifest file in XML format, containing the property and configuration information of a widget.

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist

PUBLIC "-//Nokia//DTD PLIST 1.0//EN" "http://www.nokia.com/NOKIA_COM_1/DTDs/plist-1.0.dtd">

<plist

version="1.0"><dict><key>DisplayName</key><string>WidgetName</string><key>Identifier</key><string>com.company.widget.project</string<key>MainHTML</key><string>Main.html</string>

</dict>

</plist>

Page 15: S60 3rd FP2 Widgets

WRT Supported Properties

Name Type Use Description

DisplayName String Required Specify the actual name of the widget listed on the Installed application bar

Identifier String Required Specify unique string identifier for the widget in reverse domain format

MainHTML String Required Specify the name of the main HTML page that points to the widget

AllowNetworkAccess Boolean Optional Specify access to the network based resources from the widget

ShortVersionString String Optional Specify release version of the widget bundle

Version Number Optional Specify build version of the widget bundle

Page 16: S60 3rd FP2 Widgets

Icon.png

PNG image to be used as application icon•

Recommended size 88x88 px•

Default S60 application icon used if icon.png

is missing

Page 17: S60 3rd FP2 Widgets

…just to clarify (or confuse?)

Page 18: S60 3rd FP2 Widgets

HTML – The Backbone of a Widget

Defines the structure

of the widget.

Recommended HTML 4.01 specification.

Use the <div> (block-level) element to construct the widget’s views.

Views can be constructed with static HTML elements or can be dynamically created by JavaScript at runtime.

<html><head>..</head><body id="body"><div id=‘mainView’>

<span class=‘title’>Front view</span></div><div id=‘subView1’

class=‘subView’><p class=‘title’>Back view</p>

</div><div id=‘subView2’

class=‘subView’><p class=‘title’>Config

view</p></div>

</body></html>

Page 19: S60 3rd FP2 Widgets

CSS – Makeup for a Widget

Style and layout

information•

Defines how to display HTML element: position, color, background color etc.

CSS information can be embedded in the HTML file

Or imported from an external stylesheet

// Class selector to define common style for similar components

.title {font-size: 26px;color: blue;

}.subView

{display: none

}

// Id selector to define a unique style for a unique component

#mainView

{font-size: 16px;color: red;text-align: center;

}

// Pseudo-class selector to design a pattern style

div.subview

div {margin: 10px 0 0 0;padding: 20px 20px 20px 20px;font-size: 22px;text-align: left;color: blue;

}

Page 20: S60 3rd FP2 Widgets

JS – The Brain of a Widget

The intelligence of a widget?•

Without JavaScript code, a widget is just a passive Web page

JavaScript code can be embedded in the HTML file within <script> elements

JavaScript API, Java DOM API, AJAX API•

ECMAScript

standard; Extension JavaScript objects•

Core DOM and HTML DOM APIs•

XMLHttpRequest

object

Platform services via Nokia-specific extended JavaScript API:

Available only from Widget JavaScript code

Page 21: S60 3rd FP2 Widgets

JavaScript// define some global variablevar

globalVariable

= 0;// function multiply(xValue, yValue){return xValue

* yValue;}// create a new element with DOM functionvar

newElement

= document.createElement(‘div’);newElement.setAttribute(‘id’, ‘extraView’);newElement.setAttribute(‘class’, ‘subView’);

// show/hide viewsfunction changeView(activeViewId, hiddenViewId){var

activeView

= document.getElementById(activeViewId);var

hiddenView

= document.getElementById(hiddenViewId);activeView.style.display

= ‘block’;hiddenView.style.display

= ‘none’;}

Page 22: S60 3rd FP2 Widgets

Widget APIs Introduction

Page 23: S60 3rd FP2 Widgets

Widget Object•

Widget object is a built-in module of the widget enginewidget

or window.widget

Widget object provides basic utility functions

to manipulate widget’s properties

Widget methods• openURL(String:url)• setPreferenceForKey(String:prefere

nce, String:key)• preferenceForKey(String:key)• prepareForTransition

(String:transitionState)• performTransition(void)• setNavigationEnabled(Boolean:flag)• openApplication(Uid, param)•

setDisplayLandscape(void)•

setDisplayPortrait

(void)•

Widget properties• identifier [readonly, String]• onshow [assigned callback function]• onhide [assigned callback function]• isRotationSupported [readonly,

Booloean]

var

h = window.screen.height;var

w = window.screen.width;if (h < w)

widget.setDisplayLanscape();

widget.onhide

= pause;function pause(){

clearTimeout(timer);}

Page 24: S60 3rd FP2 Widgets

Menu Object•

Menu object is an extension from the widget objectmenu or window.menu

Menu object provides interfaces to manipulate the options menu and softkeys

(right and middle keys) of a widget

Menu methods• append(MenuItem menuItem)• remove(MenuItem menuItem)• replace (MenuItem oldMenuItem, MenuItem

newMenuItem)• getMenuItemById(Integer:id)• getMenuItemByName(String:label)• setRightSoftKeyLabel(String:label,

function:callbackfunction)• showSoftkeys(void)• hideSoftkeys(void)• clear(void)

Menu properties• onShow [assigned callback function]

var

opMenu

= window.menu; // ! menu is reserved

{...opMenu.setRightSoftKeyLabel(

‘Back’, toMainView);}

function toMainView(){

...opMenu.setRightSoftkeyLabel(‘’, null);

}

Page 25: S60 3rd FP2 Widgets

MenuItem Object

MenuItem

provides interfaces to create menu items and submenus (cascading) for the options menu

Menu Item methods•

new MenuItem(String:label, Integer:id)

append(MenuItem:childMenuItem)•

remove(MenuItem:childMenuItem)•

replace(MenuItem:oldMenuItem, MenuItem:newMenuItem)

setDimmed(Boolean:flag)•

Menu Item properties• onSelect [assigned callback function]

function createMenu{var

settings = new MenuItem(‘Settings’, 10);

settings.onSelect

= showSettings;window.menu.append(settings);

}

function showSettings(id){document.getElementById(

‘setting’).style.display

= ‘block’;}

Page 26: S60 3rd FP2 Widgets

System Info Service API• System info service API is a scriptable Netscape

plug-in module• Subset of system properties accessible• Memory, network and battery status, etc.

• System info service plug-in module is loaded via an HTML <embed>

element<embed type="application/x-systeminfo-widget" hidden="yes"></embed>

• System info service plug-in module is not loaded in Browser context

Page 27: S60 3rd FP2 Widgets

System Info Service API•

Power properties• chargelevel [readonly, int]• chargerconnected [readonly, int]• onchargelevel [writeonly, function]• onchargerconnected [writeonly, function]

Network properties• signalbars [readonly, int]• signalstrength [readonly, int]• networkname [readonly, string]• registrationstatus [readonly, int]• onsignalstrength [assigned callback function]• onregistrationstatus [assigned callback function]

Page 28: S60 3rd FP2 Widgets

System Info Service API

var

sysInfo

= null;

function init(){// get the handle to the system info objectsysInfo

=

document.embeds[0];var

battLevel

= sysInfo.chargelevel;sysInfo.onchargelevel

= "batteryStatusCallback()";}

function batteryStatusCallback() {var

battLevel

= sysInfo.chargelevel;}

Page 29: S60 3rd FP2 Widgets

System Info Service API cont.•

Light methods• lighton(Int:lighttarget, Int:duration, Int:intensity,

Int:fadein)• lightblink(Int:lighttarget, Int:duration, Int:onduration,

Int:offduration, Int:intensity) • lightoff(Int:lighttarget, Int:duration, Int:fadeout)

Light properties• lightminintensity [readonly, Int]• lightmaxintensity [readonly, Int]• lightdefaultintensity [readonly, Int]• lightinfiniteduration [readonly, Int]• lightmaxduration [readonly, Int]• lightdefaultcycletime [readonly, Int]• lighttargetprimarydisplayandkeyboard [readonly, Int]• lighttargetsystem [readonly, Int]

Page 30: S60 3rd FP2 Widgets

System Info Service API cont.•

Vibra

methods• startvibra(Integer:duration, Integer:intensity) • stopvibra(void)

Vibra

properties• vibraminintensity [readonly, Integer]• vibramaxintensity [readonly, Integer]• vibramaxintensity [readonly, Integer]• vibrasettings [readonly, Integer]

Beep methods• beep(Integer:frequency, Integer:duration)

Memory properties• totalram [readonly, Integer]• freeram [readonly, Integer]

Page 31: S60 3rd FP2 Widgets

System Info Service API cont.

File system methods• drivesize(String:drive) • drivefree(String:drive)

File system properties• drivelist [readonly, String]

Language properties• language [readonly, String]

Page 32: S60 3rd FP2 Widgets

Web Widget Development

Page 33: S60 3rd FP2 Widgets

What You Need?

For implementing

widget code:•

Text editor or a web IDE

For debugging

a running widget•

Firefox•

firebug•

Greasemonkey•

XmlHttpRequest

Bypass Security" script for free XmlHttpRequest

access from local file.

For testing

a widget:•

S60 3rd

Edition FP2 SDK emulator•

Beta available soon ☺

Compatible S60 device with custom SW

Page 34: S60 3rd FP2 Widgets

Widget Installation Package

•Widget installation file format•

Compressed with any ZIP application•

ZIP file contains html, CSS, js, icons, graphics and the widget info file

•Widget installation file extension•

WidgetName.wgz

•Widget installation MIME type•

x-nokia-widgets

Page 35: S60 3rd FP2 Widgets

Widget Installation Process

Widget.wgz

Widget MIMErecognizer

Symbian

OS system MIMEtype recognizer

WidgetInstaller

S60 SW installerframework

Installed

x-nokia-widgets

Page 36: S60 3rd FP2 Widgets

Demo (fingers crossed)

Page 37: S60 3rd FP2 Widgets

Support

Developer documentation available at S60 3rd FP2 Beta SDK launch

Workshops, eLearning and Developer training

details to be published at forum.nokia.com

Page 38: S60 3rd FP2 Widgets

Thank you.