SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
Web RunTime and Widget Development
Phong Vu – Forum Nokia
Senior Architect – Emerging Technology
Austin - 07.09.2008
Discussion Topics

   • Web RunTime for S60 Platform
   • What is inside a S60 Web Widget
   • S60 Web Widget Development
   • WRT APIs Introduction
Web RunTime for S60 Platform
Web RunTime for S60 Platform
 • A technology that enables Web applications alike
   called widgets to run independently from the Web
   browser for S60
 • Supports standard-based Internet technologies
     •   HTML 4.01, XHTML 1.0 (basic and mobile profile)
     •   CSS 2.1
     •   JavaScript 1.5 (standard ECMA-262)
     •   XMLHttpRequest (AJAX)
     •   DOM Level 2
 • Includes built-in JavaScript extension libraries
   supporting widget’s specific features (widget, menu,
   system info)
 • Integrated to S60 3rd Edition, Feature Pack 2 and
   onward
 • Provides new opportunity for Web application
   developers to enter mobile application business.
Web Browser for S60


    Flexible for plug-ins &
          extensions
                                      Traditional Web pages                Widgets

                                                   Browser control
                                  S60 Browser UI                         Web Runtime
                                                       clients

   S60 plug-ins,       Netscape
                        plug-in                    Browser control API
   incl. Flash Lite,
   SVG, and audio.        API

                                   S60             WebCore               JavaScript
    Browser plugins                                                         Core
                        Nokia     WebKit              KHTML
                          UI                                                KJS
                       features

                                     OS adaptations              Memory manager

                          Symbian OS               Symbian HTTP framework
Break out the Web Browser Sandbox

                                 Implements application
                                     specific native
   Extensions via                     functionality
  Netscape plug-in
                                    Web pages/apps             Widgets

                              S60 Browser UI    BCTR clients    WRT
                   Netscape
  S60 plug-ins,     plug-in              Browser Control
                      API
  incl. Flash        (NPL)
  Lite, SVG, and                                           JavaScript
  audio.                       S60       WebCore
                    Nokia                                     Core
                              WebKit       KHTML                         SAPI
                      UI                                       KJS
                   features
                               OS adaptations        Memory manager

                       Symbian OS          Symbian HTTP framework



                                                               Extensions thru
                                                               SAPI Framework
Web RunTime - Current Goal
• Widgets leverage the Web
   •   use internet services and Web APIs to access information
   •   use XMLHttpRequest and AJAX techniques
   •   provide basic widget’s specifics features
   •   secured behide the browser “sandbox”
• Widgets integrated into S60 user experience
   •   managed the same as existing S60 applications
   •   download and install like applications
   •   can be assigned to Idle screen soft keys and shortcuts
   •   appear in the Active Applications list
   •   are registered as installed software in the Application Manager
   •   display the icon in the Application Menu
   •   are uninstalled from Application Menu and Application Manager
Web RunTime - Future Goal (beyond S60 3rd Ed. FP2)
•    Widgets leverage the smart phone platform
      • combine information from Web with platform services
      • improves user experience
      • location information
      • integrate widgets into Active Idle
      • additional UI enhancements and features
•    Widgets evolve as a development platform
      • integrate S60 platform services in a safely / securely
      • access platform services via S60 LIW / SAPI
      • provide security and signing model for widgets
Web RunTime – Widget
• Widget is a standalone Web application
    • Runs, feels & acts like a native application   Web page without a browser UI
    • Local on the handset & distributed like
      any other application
• Widget at its core is a Web page designed
  for a specific purpose
    • Widgets use same technologies, HTML,
      CSS, JavaScript, AJAX, as Web pages &
    • Developed in days - not months or years
    • Development to Deployment in “clicks”
• Types of Widget
    • Accessory widgets (clock, calendar …)
    • Application widgets (games, address
      book …)
    • Information widgets (weather, stocks …)
Web RunTime – Web Application Vs. Widget
                                                Browser view on N95   Widget view
• One click access to your favourite services
    • Less scrolling and typing


• Optimized web experience
S60 Web Widget Designs Paradigms
• Design for small screen devices
    • Break down a large page into logical multiple views
    • Hide elements when they are not needed to be visible
    • Use widget menu to replace buttons to save screen space
    • Scroll the contents rather than scrolling the screen
• Design for different screen resolutions
    • Detect screen size then dynamically calculate “absolute” positions
• Design for using with a keypad
    • Use cursor and tabbed browsing mode wisely
    • Make use of the right soft-key and the options menu
• Design to save device’s resources
    • Reset objects (set null) as soon as they are no longer needed
    • Create HTML elements dynamically and remove them as soon as they are no
      longer needed
    • Minimize operations when a widget is in the background
What is Inside a S60 Web Widget?
S60 Web Widget Component File
• A widget is constructed by a bundle of files.
    info.plist      (required)
    [name].html     (required)
    icon.png        (optional)
    [name].css      (optional)
    [name].js       (optional)
    resources       (optional)


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


• Widget’s required components and the icon.png (if included) MUST be
  located at the root directory of a widget project.
Info.plist – Property of a Widget
•A manifest file in XML format, containing the property and
 configuration information of a widget.
<?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
<!DOCTYPE plist PUBLIC quot;-//Nokia//DTD PLIST 1.0//ENquot;
  quot;http://www.nokia.com/NOKIA_COM_1/DTDs/plist-1.0.dtdquot;>
   <plist version=quot;1.0quot;>
     <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>
WRT Supported Property

          Name         Type      Status                   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
Icon.png
• The icon of a widget is an image saved in Portable
  Network Graphics (.png) format
• The recommended size of the icon is 88x88 pixels
• If the icon.png is omitted from the widget
  installation package, the widget will appear with a
  default S60 application icon.
Inside a S60 WRT Widget




If you know how to create a Web page, then you know how to create a Widget.
           Existing Web based tools can be used to create Widgets
S60 Web Widget Installation Package
   Symbian App Code          Widget UI

                            Contents: HTML, JavaScript, CSS, images, etc.

      Symbian DLL            Widget-enabled browser control


• Widget installation file format
    • Compressed with any ZIP application
• Widget installation file extension
    • WidgetName.wgz
• Widget installation MIME type
    • application/x-nokia-widget
S60 Web Widget Development
4 Steps in S60 Web Widget Development
1. Create a file-system directory on your PC. E.g.:
    C:helloworld
2. Create and implement the info.plist file then save it under
   the root directory created in step 1
    C:helloworld
        info.plist
3. Create and implement the HTML file, with the file name as
   predefined in the info.plist at the MainHTML tag
    C:helloworld
        info.plist
        Helloworld.html
4. Create and implement any other optional files. E.g.:
    C:helloworld
        info.plist
        Helloworld.html
        helloworld.css
        helloworld.js
3 Steps in S60 Web Widget Deployment

1. Use WinZip to archive the widget’s directory into a zip file

 C:helloworld                     C:helloworld.zip
     info.plist
     helloworld.html
     helloworld.css
     helloworld.js
2. Change the file name extension from .zip to .wgz
    C:helloworld.zip                 C:helloworld.wgz

3. Send the helloworld.wgz file to a device via Bluetooth. Or open
   the helloworld.wgz file by the File open tool in the S60
   emulator
S60 Web Widget Deployment

 •To S60 target devices
    • Via Bluetooth and Infrared to the Messaging Inbox
    • Via MMC card or USB port to phone memory
    • Via the Web browser
 •To S60 emulator
    • Copy to simulated phone memory under any folder where the File
      manager can access. E.g.
        epoc32winscwcDatainstalls
    • Use the emulator’s File menu
What You Need?
• For implementing widget’s code:
    • Any text editor program that allows you to save the text in ANSI?
• For debugging a running widget
    • On Firefox
      - Firebug
      - JavaScript debugger plug-in
      - Implement S60 Web widget’s specific object stubs!
    • On S60 emulator
      - Use alert() method
      - Send log data to a server
      - Enable Java/ECMA Script Error from the browser settings (S60 3rd Ed. FP2 v1.1)
• For testing a widget:
    • S60 3.2 SDK emulator, or
    • Nokia devices, which support WRT
Running Web Widgets on the S60 Emulator
Using Tools on the S60 Emulator
Developing Web Widget In S60 Emulator




S60/devices/S60_3rd_FP2_SDK_v1.1/epoc32/winscw/c/
WRT APIs Introduction
Widget Object
• Widget object is a build-in module of the widget engine
  widget or window.widget
• Widget object provides basic utility functions to manipulate widget’s
  properties
Widget Object
• Widget methods
    •   openURL(String:url)
    •   setPreferenceForKey(String:preference, String:key)
    •   preferenceForKey(String:key)
    •   prepareForTransition (String:transitionState)
    •   performTransition(void)
    •   setNavigationEnabled(Boolean:flag)
    •   openApplication(Hex:Uid, String:param)
    •   setDisplayLandscape(void)
    •   setDisplayPortrait (void)
• Widget properties
    •   identifier [readonly, String]
    •   onshow [assigned callback function]
    •   onhide [assigned callback function]
    •   isrotationsupported [readonly, Booloean]
Widget Object
        window.onresize = handleOrientation;
• Widget methods
   •   openURL(String:url)
        function handleOrientation() {
   •   setPreferenceForKey(String:preference, String:key)
           if (window.screen.height < window.screen.width)
   •   preferenceForKey(String:key)
                widget.setDisplayLandscape();
   •       else
       prepareForTransition (String:transitionState)
   •            widget.setDisplayPortrait();
       performTransition(void)
   •   setNavigationEnabled(Boolean:flag)
   •   openApplication(Uid, param)
   •   setDisplayLandscape(void)
   •   setDisplayPortrait (void)
                   widget.onhide = pause;
• Widget properties
                widget.onshow = restore;
   •   identifier [readonly, String]
   •                 function pause(){
       onshow [assigned callback function]
   •   onhide [assigned// free resources
                          callback function]
   •                 }
       isRotationSupported [readonly, Booloean]
                  function restore() {
                     // resume
                  }
Widget Object
 • Widget methods          This breaks the
     • openURL(String:url)widget framework!
     • setPreferenceForKey(String:preference, String:key)
     • preferenceForKey(String:key)
<a href=quot;www.nokia.comquot;>Click here</a>
     • prepareForTransition (String:transitionState)
 <!-- performTransition(void)
     • Replace with this -->
     • setNavigationEnabled(Boolean:flag)
<a onclick=quot;javascript:widget.openURL(‘www.nokia.com’);quot;>Click
     • openApplication(Uid, param)
here</a>
     • setDisplayLandscape(void)
     • setDisplayPortrait (void)                   This breaks the
 • Widget properties               widget framework!
     • identifier [readonly, String]
<form• action=quot;http://www.abc.net/echo.phpquot; method=quot;getquot;>
       onshow [assigned callback function]
     • onhide [assigned callback function]
    <input id=quot;testquot; name=quot;contentquot; type=quot;textquot; />
    <input type=quot;submitquot; />Booloean]
     • isRotationSupported [readonly,
</form>
Menu Object
• Menu object is an extension from the widget object
  menu or window.menu
• Menu object provides interfaces to manipulate the options menu and
  softkeys of a widget
Menu Object
• Menu methods
   • append(MenuItem menuItem)
   • remove(MenuItem menuItem)
   • getMenuItemById(Integer:id)
   • getMenuItemByName(String:label)
   • setRightSoftkeyLabel(String:label, function:callbackfunction)
   • showSoftkeys(void)
   • hideSoftkeys(void)
   • clear(void)
• Menu properties
   • onShow [assigned callback function]
Menu Object
• Menu methods
   • append(MenuItem menuItem)
   • remove(MenuItem menuItem)
   • getMenuItemById(Integer:id)
   • getMenuItemByName(String:label)
       function setting(){
         ...
   • setRightSoftKeyLabel(String:label, the right SK label
          if (window.menu) // change
     function:callbackfunction)
            menu.setRightSoftkeyLabel(‘Back’, toMainView);
       }
   • showSoftkeys(void)
   • hideSoftkeys(void)
       function toMainView(){
         ...
   • clear(void)
          if (window.menu) // restore the right SK label
• Menu properties
       }
           menu.setRightSoftkeyLabel(‘’, null);

   • onShow [assigned callback function]
MenuItem Object
• MenuItem is a build-in object of the widget engine
  var menuItem = new MenuItem(...);
• MenuItem provides interfaces to create menu items and submenus
  (cascading) for the options menu
Menu Item Object
• Menu Item methods
    • new MenuItem(String:label, Integer:id)
    • append(MenuItem:childMenuItem)
    • remove(MenuItem:childMenuItem)
    • setDimmed(Boolean:flag)
• Menu Item properties
    • onSelect [assigned callback function]
Menu Item Object
• Menu Item methods
    • new MenuItem(String:label, Integer:id)
    • append(MenuItem:childMenuItem)
    • remove(MenuItem:childMenuItem)
    • function createMenu
       setDimmed(Boolean:flag)
      {
• Menu var settings = new MenuItem(‘Settings’, 10);
        Item properties
    • onSelect [assigned callback function]
        settings.onSelect = showSettings;
        window.menu.append(settings);
    }

    function showSettings(id)
    {
      widget.prepareForTransition(quot;fadequot;);
      document.getElementById(‘main’).style.display = ‘none’;
      document.getElementById(‘setting’).style.display = ‘block’;
      setTimeout(quot;widget.performTransition();quot;, 0);
    }
System Info Service API
• System info service API is provided thru a scriptable NetScape plug-in
  module.

• System info service object provides interfaces to access to limited
  system properties such as memory, network strength etc.

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

  <embed type=quot;application/x-systeminfo-widgetquot; hidden=quot;yesquot;></embed>


• System info service plug-in module is not loaded in Browser context
System Info Service API
• Power properties
   •   chargelevel [readonly, int]
   •   chargerconnected [readonly, int]
   •   onchargelevel [writeonly, function]
   •   onchargerconnected [writeonly, function]
• Network properties
   • signalbars [readonly, int]
   • networkname [readonly, string]
   • registrationstatus [readonly, int]
System Info Service API
• Power properties
   •   chargelevel [readonly, int]
           var sysInfo = null;
   •   chargerconnected [readonly, int]
   •       function init()
       onchargelevel [writeonly, function]
           {
   •   onchargerconnectedhandle to function]
             // get the [writeonly, the system info object
• Network properties document.embeds[0];
           sysInfo =
              var battLevel = sysInfo.chargelevel;
   • signalbars [readonly, int]
             sysInfo.onchargelevel = quot;batteryStatusCallback()quot;;
   • networkname [readonly, string]
             sysInfo.onchargerconnected = quot;chargerStatusCallback()quot;;
   • registrationstatus [readonly, int]
          }

          function batteryStatusCallback() {
            var battLevel = sysInfo.chargelevel;
          }

          function batteryStatusCallback() {
            var chargerStatus = sysInfo.chargerconnected;
          }
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]
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]
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]
Localization
• Localized resources
    • Widget’s name, text strings, images, stylish information (CSS) and even
      JavaScript functions
• Localized resource loading contexts
    • When the @import directive is used in the widget’s main HTML document
     @import quot;localizedStyle.cssquot;
    • When a resource is loaded dynamically using JavaScript code
     var image document.getElementById(‘image’);
     image.setAttribute(‘src’, ‘image.jpg’);
    • When the ‘src’ attribute of an HTML tag is used
     <script src='localizedScript.js' />
     <img src=quot;localizedImage.gifquot; />
Localization cont.
• Language project directory
   • Localized resources are stored under local language
     project directory
   • Directory naming convention
        xx.lproj
          where xx is the language code e.g. “en” for English and “fi”
          for Finnish
   • Is a direct subdirectory of a widget’s root directory
        C:helloworld
              en.lproj
              fi.lproj
Localization cont.
• Localizing widget’s name
   • Widget’s name is localized at installation time
   • Name in a local language is defined in the infoplist.strings
     DisplayName = quot;Localized namequot;;
   • Default name must be defined in the Info.plist!
Localization cont.
• Localizing widget’s text content
    • Localized text strings are defined in a JavaScript file for each supported local
      language
      var localizedText = new Array();               en.lproj
      localizedText[‘info1’] = quot;Helloquot;;
                                                           localizedSctipt.js
      localizedText[‘info2’] = quot;Goodbyequot;;


      var localizedText = new Array();              es.lproj
      localizedText[‘info1’] = quot;Holaquot;;
                                                           localizedSctipt.js
      localizedText[‘info2’] = quot;Adiosquot;;


      var localizedText = new Array();              fi.lproj
      localizedText[‘info1’] = quot;Moiquot;;
      localizedText[‘info2’] = quot;Hei heiquot;;
                                                           localizedSctipt.js


    • Name of the Javascript file should be identical for all supported languages
      <script type=quot;text/javascriptquot; src=quot;localizedScript.jsquot;></script>
Localization cont.
• Localizing widget’s layout
    • Localized layout are defined in external .CSS resource file
    Specified in the main HTML document
    <style type=quot;text/cssquot;>
        @import quot;localizedLayout.cssquot;;
    </style>

    Localized resource location
    [root]ar.lproj
      localizedLayout.css            // layout for text flow from RTL
     [root]es.lproj
      localizedLayout.css            // layout for text flow from LTR

    Default resource location
    [root]
             localizedLayout.css
Localization cont.
• Localizing widget’s image resource
    • Localized image resources are stored in language project directory
    Finnish flag for the Finnish system language
    [root]fi.lproj
                         flag.png // finnish flag


    English flag for the English system language
    [root]en.lproj
                         flag.png // english flag


    UN flag for any other system language
    [root]
            flag.png                 // UN flag


    Load and show the flag dynamically
    var flag = document.createElement(‘img’);
    flag.setAttribute(‘src’, ‘flag.png’);
JavaScript Library for WRT


 •   ListBox
     http://wiki.forum.nokia.com/index.php/CS000941_-_WRT_Listbox_Widget




 •   GridBox




     http://wiki.forum.nokia.com/index.php/CS000940_-_WRT_Gridbox_Widget
JavaScript Library for WRT cont.


 •   Calendar
     http://wiki.forum.nokia.com/index.php/CS000942_-_WRT_Calendar_Widget




 •   KeyEvent




     http://wiki.forum.nokia.com/index.php/CS000943_-_WRT_NumKeyTranslator_Widget
More Information
• www.forum.nokia.com/main/resources/technologies/browsing/widgets.html
Thank you!

Más contenido relacionado

La actualidad más candente

“Secure Portal” or WebSphere Portal – Security with Everything
“Secure Portal” or WebSphere Portal – Security with Everything“Secure Portal” or WebSphere Portal – Security with Everything
“Secure Portal” or WebSphere Portal – Security with EverythingDave Hay
 
JUDCon 2014: Gearing up for mobile development with AeroGear
JUDCon 2014: Gearing up for mobile development with AeroGearJUDCon 2014: Gearing up for mobile development with AeroGear
JUDCon 2014: Gearing up for mobile development with AeroGearprajods
 
Android Introduction
Android IntroductionAndroid Introduction
Android Introductionaswapnal
 
Magnolia CMS on Jelastic
Magnolia CMS on JelasticMagnolia CMS on Jelastic
Magnolia CMS on JelasticEdgar Vonk
 
Unica netinsight custom tagging
Unica netinsight custom taggingUnica netinsight custom tagging
Unica netinsight custom taggingvani_shree03
 
Adaptive Web Design Workshop [inspire 2011]
Adaptive Web Design Workshop [inspire 2011]Adaptive Web Design Workshop [inspire 2011]
Adaptive Web Design Workshop [inspire 2011]Aaron Gustafson
 
Meet Magento Belarus 2015: Jurģis Lukss
Meet Magento Belarus 2015: Jurģis LukssMeet Magento Belarus 2015: Jurģis Lukss
Meet Magento Belarus 2015: Jurģis LukssAmasty
 
Adaptive Web Design Workshop [WebVisions NYC 2012]
Adaptive Web Design Workshop [WebVisions NYC 2012]Adaptive Web Design Workshop [WebVisions NYC 2012]
Adaptive Web Design Workshop [WebVisions NYC 2012]Aaron Gustafson
 
Sid K
Sid KSid K
Sid KSid K
 
Protecting Online Identities - MIX09
Protecting Online Identities - MIX09Protecting Online Identities - MIX09
Protecting Online Identities - MIX09Jorgen Thelin
 
WebBee rapid web app development teck stack
WebBee rapid web app development teck stackWebBee rapid web app development teck stack
WebBee rapid web app development teck stackALDAN3
 
12 asp.net session17
12 asp.net session1712 asp.net session17
12 asp.net session17Niit Care
 
WebClient Overview and 1.8 Roadmap
WebClient Overview and 1.8 RoadmapWebClient Overview and 1.8 Roadmap
WebClient Overview and 1.8 RoadmapCM First Group
 
Php apache vs iis By Hafedh Yahmadi
Php apache vs iis  By Hafedh YahmadiPhp apache vs iis  By Hafedh Yahmadi
Php apache vs iis By Hafedh YahmadiTechdaysTunisia
 
Partying with PHP (…and the Microsoft Platform)
Partying with PHP (…and the Microsoft Platform)Partying with PHP (…and the Microsoft Platform)
Partying with PHP (…and the Microsoft Platform)goodfriday
 
Community Code: Pega Mobile
Community Code: Pega MobileCommunity Code: Pega Mobile
Community Code: Pega MobileSencha
 

La actualidad más candente (20)

“Secure Portal” or WebSphere Portal – Security with Everything
“Secure Portal” or WebSphere Portal – Security with Everything“Secure Portal” or WebSphere Portal – Security with Everything
“Secure Portal” or WebSphere Portal – Security with Everything
 
JUDCon 2014: Gearing up for mobile development with AeroGear
JUDCon 2014: Gearing up for mobile development with AeroGearJUDCon 2014: Gearing up for mobile development with AeroGear
JUDCon 2014: Gearing up for mobile development with AeroGear
 
DotNetNuke
DotNetNukeDotNetNuke
DotNetNuke
 
Android Introduction
Android IntroductionAndroid Introduction
Android Introduction
 
Santosh_Resume_Java
Santosh_Resume_JavaSantosh_Resume_Java
Santosh_Resume_Java
 
Arun Kumar(7.8Yrs).DOC
Arun Kumar(7.8Yrs).DOCArun Kumar(7.8Yrs).DOC
Arun Kumar(7.8Yrs).DOC
 
Magnolia CMS on Jelastic
Magnolia CMS on JelasticMagnolia CMS on Jelastic
Magnolia CMS on Jelastic
 
Unica netinsight custom tagging
Unica netinsight custom taggingUnica netinsight custom tagging
Unica netinsight custom tagging
 
Adaptive Web Design Workshop [inspire 2011]
Adaptive Web Design Workshop [inspire 2011]Adaptive Web Design Workshop [inspire 2011]
Adaptive Web Design Workshop [inspire 2011]
 
Meet Magento Belarus 2015: Jurģis Lukss
Meet Magento Belarus 2015: Jurģis LukssMeet Magento Belarus 2015: Jurģis Lukss
Meet Magento Belarus 2015: Jurģis Lukss
 
Adaptive Web Design Workshop [WebVisions NYC 2012]
Adaptive Web Design Workshop [WebVisions NYC 2012]Adaptive Web Design Workshop [WebVisions NYC 2012]
Adaptive Web Design Workshop [WebVisions NYC 2012]
 
Sid K
Sid KSid K
Sid K
 
Chalam_JAVA_Portal
Chalam_JAVA_PortalChalam_JAVA_Portal
Chalam_JAVA_Portal
 
Protecting Online Identities - MIX09
Protecting Online Identities - MIX09Protecting Online Identities - MIX09
Protecting Online Identities - MIX09
 
WebBee rapid web app development teck stack
WebBee rapid web app development teck stackWebBee rapid web app development teck stack
WebBee rapid web app development teck stack
 
12 asp.net session17
12 asp.net session1712 asp.net session17
12 asp.net session17
 
WebClient Overview and 1.8 Roadmap
WebClient Overview and 1.8 RoadmapWebClient Overview and 1.8 Roadmap
WebClient Overview and 1.8 Roadmap
 
Php apache vs iis By Hafedh Yahmadi
Php apache vs iis  By Hafedh YahmadiPhp apache vs iis  By Hafedh Yahmadi
Php apache vs iis By Hafedh Yahmadi
 
Partying with PHP (…and the Microsoft Platform)
Partying with PHP (…and the Microsoft Platform)Partying with PHP (…and the Microsoft Platform)
Partying with PHP (…and the Microsoft Platform)
 
Community Code: Pega Mobile
Community Code: Pega MobileCommunity Code: Pega Mobile
Community Code: Pega Mobile
 

Destacado

ISCA final presentation - Runtime
ISCA final presentation - RuntimeISCA final presentation - Runtime
ISCA final presentation - RuntimeHSA Foundation
 
Intel and Amazon - Powering your innovation together.
Intel and Amazon - Powering your innovation together. Intel and Amazon - Powering your innovation together.
Intel and Amazon - Powering your innovation together. Eran Shlomo
 
Microsoft Really Loves Linux – a Virtual Love Story
Microsoft Really Loves Linux – a Virtual Love StoryMicrosoft Really Loves Linux – a Virtual Love Story
Microsoft Really Loves Linux – a Virtual Love StoryChristian Heitkamp
 
Valgrind overview: runtime memory checker and a bit more aka использование #v...
Valgrind overview: runtime memory checker and a bit more aka использование #v...Valgrind overview: runtime memory checker and a bit more aka использование #v...
Valgrind overview: runtime memory checker and a bit more aka использование #v...Minsk Linux User Group
 
OpenContrail, Real Speed: Offloading vRouter
OpenContrail, Real Speed: Offloading vRouterOpenContrail, Real Speed: Offloading vRouter
OpenContrail, Real Speed: Offloading vRouterOpen-NFP
 
Using GPUs to Achieve Massive Parallelism in Java 8
Using GPUs to Achieve Massive Parallelism in Java 8Using GPUs to Achieve Massive Parallelism in Java 8
Using GPUs to Achieve Massive Parallelism in Java 8Dev_Events
 
Java garbage collection & GC friendly coding
Java garbage collection  & GC friendly codingJava garbage collection  & GC friendly coding
Java garbage collection & GC friendly codingMd Ayub Ali Sarker
 
Cilium - BPF & XDP for containers
Cilium - BPF & XDP for containersCilium - BPF & XDP for containers
Cilium - BPF & XDP for containersThomas Graf
 
20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会Minehiko Nohara
 
Serverless Application - Who the heck needs a Server?
Serverless Application - Who the heck needs a Server?Serverless Application - Who the heck needs a Server?
Serverless Application - Who the heck needs a Server?OPEN KNOWLEDGE GmbH
 
Serverless Architecture
Serverless ArchitectureServerless Architecture
Serverless Architecturejuly mon
 
Cilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPThomas Graf
 
Accelerating Hadoop, Spark, and Memcached with HPC Technologies
Accelerating Hadoop, Spark, and Memcached with HPC TechnologiesAccelerating Hadoop, Spark, and Memcached with HPC Technologies
Accelerating Hadoop, Spark, and Memcached with HPC Technologiesinside-BigData.com
 
BPF: Next Generation of Programmable Datapath
BPF: Next Generation of Programmable DatapathBPF: Next Generation of Programmable Datapath
BPF: Next Generation of Programmable DatapathThomas Graf
 
Introduction to OpenCV 3.x (with Java)
Introduction to OpenCV 3.x (with Java)Introduction to OpenCV 3.x (with Java)
Introduction to OpenCV 3.x (with Java)Luigi De Russis
 
Google ART (Android RunTime)
Google ART (Android RunTime)Google ART (Android RunTime)
Google ART (Android RunTime)Niraj Solanke
 
SOC Processors Used in SOC
SOC Processors Used in SOCSOC Processors Used in SOC
SOC Processors Used in SOCA B Shinde
 
BigchainDB: A Scalable Blockchain Database, In Python
BigchainDB: A Scalable Blockchain Database, In PythonBigchainDB: A Scalable Blockchain Database, In Python
BigchainDB: A Scalable Blockchain Database, In PythonTrent McConaghy
 
A Year of Innovation Using the DGX-1 AI Supercomputer
A Year of Innovation Using the DGX-1 AI SupercomputerA Year of Innovation Using the DGX-1 AI Supercomputer
A Year of Innovation Using the DGX-1 AI SupercomputerNVIDIA
 

Destacado (20)

ISCA final presentation - Runtime
ISCA final presentation - RuntimeISCA final presentation - Runtime
ISCA final presentation - Runtime
 
Intel and Amazon - Powering your innovation together.
Intel and Amazon - Powering your innovation together. Intel and Amazon - Powering your innovation together.
Intel and Amazon - Powering your innovation together.
 
Microsoft Really Loves Linux – a Virtual Love Story
Microsoft Really Loves Linux – a Virtual Love StoryMicrosoft Really Loves Linux – a Virtual Love Story
Microsoft Really Loves Linux – a Virtual Love Story
 
Valgrind overview: runtime memory checker and a bit more aka использование #v...
Valgrind overview: runtime memory checker and a bit more aka использование #v...Valgrind overview: runtime memory checker and a bit more aka использование #v...
Valgrind overview: runtime memory checker and a bit more aka использование #v...
 
OpenContrail, Real Speed: Offloading vRouter
OpenContrail, Real Speed: Offloading vRouterOpenContrail, Real Speed: Offloading vRouter
OpenContrail, Real Speed: Offloading vRouter
 
Using GPUs to Achieve Massive Parallelism in Java 8
Using GPUs to Achieve Massive Parallelism in Java 8Using GPUs to Achieve Massive Parallelism in Java 8
Using GPUs to Achieve Massive Parallelism in Java 8
 
Markus Tessmann, InnoGames
Markus Tessmann, InnoGames	Markus Tessmann, InnoGames
Markus Tessmann, InnoGames
 
Java garbage collection & GC friendly coding
Java garbage collection  & GC friendly codingJava garbage collection  & GC friendly coding
Java garbage collection & GC friendly coding
 
Cilium - BPF & XDP for containers
Cilium - BPF & XDP for containersCilium - BPF & XDP for containers
Cilium - BPF & XDP for containers
 
20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会
 
Serverless Application - Who the heck needs a Server?
Serverless Application - Who the heck needs a Server?Serverless Application - Who the heck needs a Server?
Serverless Application - Who the heck needs a Server?
 
Serverless Architecture
Serverless ArchitectureServerless Architecture
Serverless Architecture
 
Cilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDP
 
Accelerating Hadoop, Spark, and Memcached with HPC Technologies
Accelerating Hadoop, Spark, and Memcached with HPC TechnologiesAccelerating Hadoop, Spark, and Memcached with HPC Technologies
Accelerating Hadoop, Spark, and Memcached with HPC Technologies
 
BPF: Next Generation of Programmable Datapath
BPF: Next Generation of Programmable DatapathBPF: Next Generation of Programmable Datapath
BPF: Next Generation of Programmable Datapath
 
Introduction to OpenCV 3.x (with Java)
Introduction to OpenCV 3.x (with Java)Introduction to OpenCV 3.x (with Java)
Introduction to OpenCV 3.x (with Java)
 
Google ART (Android RunTime)
Google ART (Android RunTime)Google ART (Android RunTime)
Google ART (Android RunTime)
 
SOC Processors Used in SOC
SOC Processors Used in SOCSOC Processors Used in SOC
SOC Processors Used in SOC
 
BigchainDB: A Scalable Blockchain Database, In Python
BigchainDB: A Scalable Blockchain Database, In PythonBigchainDB: A Scalable Blockchain Database, In Python
BigchainDB: A Scalable Blockchain Database, In Python
 
A Year of Innovation Using the DGX-1 AI Supercomputer
A Year of Innovation Using the DGX-1 AI SupercomputerA Year of Innovation Using the DGX-1 AI Supercomputer
A Year of Innovation Using the DGX-1 AI Supercomputer
 

Similar a Nokia Web-Runtime Presentation (Phong Vu)

S60 3rd FP2 Widgets
S60 3rd FP2 WidgetsS60 3rd FP2 Widgets
S60 3rd FP2 Widgetsromek
 
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.DALEZ
 
S60 Web Runtime - Web2.0 Expo Europe 2008
S60 Web Runtime - Web2.0 Expo Europe 2008S60 Web Runtime - Web2.0 Expo Europe 2008
S60 Web Runtime - Web2.0 Expo Europe 2008petrosoininen
 
Nokia Developer Offering Series 40
Nokia Developer Offering Series 40Nokia Developer Offering Series 40
Nokia Developer Offering Series 40Mohamad Iqbal
 
WRT Widgets Masterclass - OverTheAir
WRT Widgets Masterclass - OverTheAirWRT Widgets Masterclass - OverTheAir
WRT Widgets Masterclass - OverTheAirpetrosoininen
 
Introducing S40 Web Apps | CodeLabs
Introducing S40 Web Apps | CodeLabsIntroducing S40 Web Apps | CodeLabs
Introducing S40 Web Apps | CodeLabsMohamad Iqbal
 
"BlackBerry Webworks : Apps for The Smartphone and Tablet"
"BlackBerry Webworks : Apps for The Smartphone and Tablet""BlackBerry Webworks : Apps for The Smartphone and Tablet"
"BlackBerry Webworks : Apps for The Smartphone and Tablet"Software Park Thailand
 
Developing Applications with Nokia WRT
Developing Applications with Nokia WRTDeveloping Applications with Nokia WRT
Developing Applications with Nokia WRTPrashanth GN
 
What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5Vinayak Tavargeri
 
IBM WebSphere Portal 6.1 Preview - What's New
IBM WebSphere Portal 6.1 Preview - What's NewIBM WebSphere Portal 6.1 Preview - What's New
IBM WebSphere Portal 6.1 Preview - What's NewDvir Reznik
 
Meego Widget Development using Qt WRT @iRajLal
Meego Widget Development using Qt WRT @iRajLalMeego Widget Development using Qt WRT @iRajLal
Meego Widget Development using Qt WRT @iRajLalRaj Lal
 
Miha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web RuntimeMiha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web RuntimeNokiaAppForum
 
Basics of WRT (Web Runtime)
Basics of WRT (Web Runtime)Basics of WRT (Web Runtime)
Basics of WRT (Web Runtime)Andreas Jakl
 

Similar a Nokia Web-Runtime Presentation (Phong Vu) (20)

S60 3rd FP2 Widgets
S60 3rd FP2 WidgetsS60 3rd FP2 Widgets
S60 3rd FP2 Widgets
 
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
Forum Nokia Dev. Camp - WRT training Paris_17&18 Nov.
 
S60 Web Runtime - Web2.0 Expo Europe 2008
S60 Web Runtime - Web2.0 Expo Europe 2008S60 Web Runtime - Web2.0 Expo Europe 2008
S60 Web Runtime - Web2.0 Expo Europe 2008
 
Nokia Developer Offering Series 40
Nokia Developer Offering Series 40Nokia Developer Offering Series 40
Nokia Developer Offering Series 40
 
WRT Widgets Masterclass - OverTheAir
WRT Widgets Masterclass - OverTheAirWRT Widgets Masterclass - OverTheAir
WRT Widgets Masterclass - OverTheAir
 
Introducing S40 Web Apps | CodeLabs
Introducing S40 Web Apps | CodeLabsIntroducing S40 Web Apps | CodeLabs
Introducing S40 Web Apps | CodeLabs
 
"BlackBerry Webworks : Apps for The Smartphone and Tablet"
"BlackBerry Webworks : Apps for The Smartphone and Tablet""BlackBerry Webworks : Apps for The Smartphone and Tablet"
"BlackBerry Webworks : Apps for The Smartphone and Tablet"
 
Developing Applications with Nokia WRT
Developing Applications with Nokia WRTDeveloping Applications with Nokia WRT
Developing Applications with Nokia WRT
 
What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5
 
IBM WebSphere Portal 6.1 Preview - What's New
IBM WebSphere Portal 6.1 Preview - What's NewIBM WebSphere Portal 6.1 Preview - What's New
IBM WebSphere Portal 6.1 Preview - What's New
 
Meego Widget Development using Qt WRT @iRajLal
Meego Widget Development using Qt WRT @iRajLalMeego Widget Development using Qt WRT @iRajLal
Meego Widget Development using Qt WRT @iRajLal
 
Web works presso
Web works pressoWeb works presso
Web works presso
 
Widgets Final
Widgets FinalWidgets Final
Widgets Final
 
Miha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web RuntimeMiha Lesjak Mobilizing The Web with Web Runtime
Miha Lesjak Mobilizing The Web with Web Runtime
 
Basics of WRT (Web Runtime)
Basics of WRT (Web Runtime)Basics of WRT (Web Runtime)
Basics of WRT (Web Runtime)
 
Basics of web runtime
Basics of web runtimeBasics of web runtime
Basics of web runtime
 
Basics of web runtime
Basics of web runtimeBasics of web runtime
Basics of web runtime
 
Basics of web runtime
Basics of web runtimeBasics of web runtime
Basics of web runtime
 
Basics of web runtime
Basics of web runtimeBasics of web runtime
Basics of web runtime
 
Transforming the web into a real application platform
Transforming the web into a real application platformTransforming the web into a real application platform
Transforming the web into a real application platform
 

Más de Daniel Appelquist

Why we need a more Ethical Web
Why we need a more Ethical Web   Why we need a more Ethical Web
Why we need a more Ethical Web Daniel Appelquist
 
You're Doing it Wrong – How App Developers Can Leverage the Web (June 2015 fo...
You're Doing it Wrong – How App Developers Can Leverage the Web (June 2015 fo...You're Doing it Wrong – How App Developers Can Leverage the Web (June 2015 fo...
You're Doing it Wrong – How App Developers Can Leverage the Web (June 2015 fo...Daniel Appelquist
 
"The Web - You're Doing it Wrong" for Forum Oxford May 2014
"The Web - You're Doing it Wrong" for Forum Oxford May 2014"The Web - You're Doing it Wrong" for Forum Oxford May 2014
"The Web - You're Doing it Wrong" for Forum Oxford May 2014Daniel Appelquist
 
What is a Capability URL (and why do I care?)
What is a Capability URL (and why do I care?)What is a Capability URL (and why do I care?)
What is a Capability URL (and why do I care?)Daniel Appelquist
 
What's new in web standards?
What's new in web standards?What's new in web standards?
What's new in web standards?Daniel Appelquist
 
Application Development Guidelines: Developing fit-for-purpose applications
Application Development Guidelines: Developing fit-for-purpose applicationsApplication Development Guidelines: Developing fit-for-purpose applications
Application Development Guidelines: Developing fit-for-purpose applicationsDaniel Appelquist
 
Smartphone Challenge: Guidelines for development of network friendly applicat...
Smartphone Challenge: Guidelines for development of network friendly applicat...Smartphone Challenge: Guidelines for development of network friendly applicat...
Smartphone Challenge: Guidelines for development of network friendly applicat...Daniel Appelquist
 
Rise of Mobile and Web Runtimes - for Standards-Next
Rise of Mobile and Web Runtimes - for Standards-NextRise of Mobile and Web Runtimes - for Standards-Next
Rise of Mobile and Web Runtimes - for Standards-NextDaniel Appelquist
 
SXSW 2010 Future15 : Rise of Mobile, APIs and Web Runtimes
SXSW 2010 Future15 : Rise of Mobile, APIs and Web RuntimesSXSW 2010 Future15 : Rise of Mobile, APIs and Web Runtimes
SXSW 2010 Future15 : Rise of Mobile, APIs and Web RuntimesDaniel Appelquist
 
Emerging Widgets Ecosystem - for Vodacom Widget Developer Camp
Emerging Widgets Ecosystem - for Vodacom Widget Developer CampEmerging Widgets Ecosystem - for Vodacom Widget Developer Camp
Emerging Widgets Ecosystem - for Vodacom Widget Developer CampDaniel Appelquist
 
Yahoo Blueprint for Mobile Widget Aamp Austin (Markus Spiering)
Yahoo Blueprint for Mobile Widget Aamp Austin (Markus Spiering)Yahoo Blueprint for Mobile Widget Aamp Austin (Markus Spiering)
Yahoo Blueprint for Mobile Widget Aamp Austin (Markus Spiering)Daniel Appelquist
 
Mobile Ajax and the Future of the Web
Mobile Ajax and the Future of the WebMobile Ajax and the Future of the Web
Mobile Ajax and the Future of the WebDaniel Appelquist
 
Over The Air Keynote - Dan Appelquist
Over The Air Keynote - Dan AppelquistOver The Air Keynote - Dan Appelquist
Over The Air Keynote - Dan AppelquistDaniel Appelquist
 

Más de Daniel Appelquist (13)

Why we need a more Ethical Web
Why we need a more Ethical Web   Why we need a more Ethical Web
Why we need a more Ethical Web
 
You're Doing it Wrong – How App Developers Can Leverage the Web (June 2015 fo...
You're Doing it Wrong – How App Developers Can Leverage the Web (June 2015 fo...You're Doing it Wrong – How App Developers Can Leverage the Web (June 2015 fo...
You're Doing it Wrong – How App Developers Can Leverage the Web (June 2015 fo...
 
"The Web - You're Doing it Wrong" for Forum Oxford May 2014
"The Web - You're Doing it Wrong" for Forum Oxford May 2014"The Web - You're Doing it Wrong" for Forum Oxford May 2014
"The Web - You're Doing it Wrong" for Forum Oxford May 2014
 
What is a Capability URL (and why do I care?)
What is a Capability URL (and why do I care?)What is a Capability URL (and why do I care?)
What is a Capability URL (and why do I care?)
 
What's new in web standards?
What's new in web standards?What's new in web standards?
What's new in web standards?
 
Application Development Guidelines: Developing fit-for-purpose applications
Application Development Guidelines: Developing fit-for-purpose applicationsApplication Development Guidelines: Developing fit-for-purpose applications
Application Development Guidelines: Developing fit-for-purpose applications
 
Smartphone Challenge: Guidelines for development of network friendly applicat...
Smartphone Challenge: Guidelines for development of network friendly applicat...Smartphone Challenge: Guidelines for development of network friendly applicat...
Smartphone Challenge: Guidelines for development of network friendly applicat...
 
Rise of Mobile and Web Runtimes - for Standards-Next
Rise of Mobile and Web Runtimes - for Standards-NextRise of Mobile and Web Runtimes - for Standards-Next
Rise of Mobile and Web Runtimes - for Standards-Next
 
SXSW 2010 Future15 : Rise of Mobile, APIs and Web Runtimes
SXSW 2010 Future15 : Rise of Mobile, APIs and Web RuntimesSXSW 2010 Future15 : Rise of Mobile, APIs and Web Runtimes
SXSW 2010 Future15 : Rise of Mobile, APIs and Web Runtimes
 
Emerging Widgets Ecosystem - for Vodacom Widget Developer Camp
Emerging Widgets Ecosystem - for Vodacom Widget Developer CampEmerging Widgets Ecosystem - for Vodacom Widget Developer Camp
Emerging Widgets Ecosystem - for Vodacom Widget Developer Camp
 
Yahoo Blueprint for Mobile Widget Aamp Austin (Markus Spiering)
Yahoo Blueprint for Mobile Widget Aamp Austin (Markus Spiering)Yahoo Blueprint for Mobile Widget Aamp Austin (Markus Spiering)
Yahoo Blueprint for Mobile Widget Aamp Austin (Markus Spiering)
 
Mobile Ajax and the Future of the Web
Mobile Ajax and the Future of the WebMobile Ajax and the Future of the Web
Mobile Ajax and the Future of the Web
 
Over The Air Keynote - Dan Appelquist
Over The Air Keynote - Dan AppelquistOver The Air Keynote - Dan Appelquist
Over The Air Keynote - Dan Appelquist
 

Último

Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Último (20)

Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

Nokia Web-Runtime Presentation (Phong Vu)

  • 1. Web RunTime and Widget Development Phong Vu – Forum Nokia Senior Architect – Emerging Technology Austin - 07.09.2008
  • 2. Discussion Topics • Web RunTime for S60 Platform • What is inside a S60 Web Widget • S60 Web Widget Development • WRT APIs Introduction
  • 3. Web RunTime for S60 Platform
  • 4. Web RunTime for S60 Platform • A technology that enables Web applications alike called widgets to run independently from the Web browser for S60 • Supports standard-based Internet technologies • HTML 4.01, XHTML 1.0 (basic and mobile profile) • CSS 2.1 • JavaScript 1.5 (standard ECMA-262) • XMLHttpRequest (AJAX) • DOM Level 2 • Includes built-in JavaScript extension libraries supporting widget’s specific features (widget, menu, system info) • Integrated to S60 3rd Edition, Feature Pack 2 and onward • Provides new opportunity for Web application developers to enter mobile application business.
  • 5. Web Browser for S60 Flexible for plug-ins & extensions Traditional Web pages Widgets Browser control S60 Browser UI Web Runtime clients S60 plug-ins, Netscape plug-in Browser control API incl. Flash Lite, SVG, and audio. API S60 WebCore JavaScript Browser plugins Core Nokia WebKit KHTML UI KJS features OS adaptations Memory manager Symbian OS Symbian HTTP framework
  • 6. Break out the Web Browser Sandbox Implements application specific native Extensions via functionality Netscape plug-in Web pages/apps Widgets S60 Browser UI BCTR clients WRT Netscape S60 plug-ins, plug-in Browser Control API incl. Flash (NPL) Lite, SVG, and JavaScript audio. S60 WebCore Nokia Core WebKit KHTML SAPI UI KJS features OS adaptations Memory manager Symbian OS Symbian HTTP framework Extensions thru SAPI Framework
  • 7. Web RunTime - Current Goal • Widgets leverage the Web • use internet services and Web APIs to access information • use XMLHttpRequest and AJAX techniques • provide basic widget’s specifics features • secured behide the browser “sandbox” • Widgets integrated into S60 user experience • managed the same as existing S60 applications • download and install like applications • can be assigned to Idle screen soft keys and shortcuts • appear in the Active Applications list • are registered as installed software in the Application Manager • display the icon in the Application Menu • are uninstalled from Application Menu and Application Manager
  • 8. Web RunTime - Future Goal (beyond S60 3rd Ed. FP2) • Widgets leverage the smart phone platform • combine information from Web with platform services • improves user experience • location information • integrate widgets into Active Idle • additional UI enhancements and features • Widgets evolve as a development platform • integrate S60 platform services in a safely / securely • access platform services via S60 LIW / SAPI • provide security and signing model for widgets
  • 9. Web RunTime – Widget • Widget is a standalone Web application • Runs, feels & acts like a native application Web page without a browser UI • Local on the handset & distributed like any other application • Widget at its core is a Web page designed for a specific purpose • Widgets use same technologies, HTML, CSS, JavaScript, AJAX, as Web pages & • Developed in days - not months or years • Development to Deployment in “clicks” • Types of Widget • Accessory widgets (clock, calendar …) • Application widgets (games, address book …) • Information widgets (weather, stocks …)
  • 10. Web RunTime – Web Application Vs. Widget Browser view on N95 Widget view • One click access to your favourite services • Less scrolling and typing • Optimized web experience
  • 11. S60 Web Widget Designs Paradigms • Design for small screen devices • Break down a large page into logical multiple views • Hide elements when they are not needed to be visible • Use widget menu to replace buttons to save screen space • Scroll the contents rather than scrolling the screen • Design for different screen resolutions • Detect screen size then dynamically calculate “absolute” positions • Design for using with a keypad • Use cursor and tabbed browsing mode wisely • Make use of the right soft-key and the options menu • Design to save device’s resources • Reset objects (set null) as soon as they are no longer needed • Create HTML elements dynamically and remove them as soon as they are no longer needed • Minimize operations when a widget is in the background
  • 12. What is Inside a S60 Web Widget?
  • 13. S60 Web Widget Component File • A widget is constructed by a bundle of files. info.plist (required) [name].html (required) icon.png (optional) [name].css (optional) [name].js (optional) resources (optional) • A widget project is a file-system directory, in which widget’s component files are stored. • Widget’s required components and the icon.png (if included) MUST be located at the root directory of a widget project.
  • 14. Info.plist – Property of a Widget •A manifest file in XML format, containing the property and configuration information of a widget. <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <!DOCTYPE plist PUBLIC quot;-//Nokia//DTD PLIST 1.0//ENquot; quot;http://www.nokia.com/NOKIA_COM_1/DTDs/plist-1.0.dtdquot;> <plist version=quot;1.0quot;> <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>
  • 15. WRT Supported Property Name Type Status 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
  • 16. Icon.png • The icon of a widget is an image saved in Portable Network Graphics (.png) format • The recommended size of the icon is 88x88 pixels • If the icon.png is omitted from the widget installation package, the widget will appear with a default S60 application icon.
  • 17. Inside a S60 WRT Widget If you know how to create a Web page, then you know how to create a Widget. Existing Web based tools can be used to create Widgets
  • 18. S60 Web Widget Installation Package Symbian App Code Widget UI Contents: HTML, JavaScript, CSS, images, etc. Symbian DLL Widget-enabled browser control • Widget installation file format • Compressed with any ZIP application • Widget installation file extension • WidgetName.wgz • Widget installation MIME type • application/x-nokia-widget
  • 19. S60 Web Widget Development
  • 20. 4 Steps in S60 Web Widget Development 1. Create a file-system directory on your PC. E.g.: C:helloworld 2. Create and implement the info.plist file then save it under the root directory created in step 1 C:helloworld info.plist 3. Create and implement the HTML file, with the file name as predefined in the info.plist at the MainHTML tag C:helloworld info.plist Helloworld.html 4. Create and implement any other optional files. E.g.: C:helloworld info.plist Helloworld.html helloworld.css helloworld.js
  • 21. 3 Steps in S60 Web Widget Deployment 1. Use WinZip to archive the widget’s directory into a zip file C:helloworld C:helloworld.zip info.plist helloworld.html helloworld.css helloworld.js 2. Change the file name extension from .zip to .wgz C:helloworld.zip C:helloworld.wgz 3. Send the helloworld.wgz file to a device via Bluetooth. Or open the helloworld.wgz file by the File open tool in the S60 emulator
  • 22. S60 Web Widget Deployment •To S60 target devices • Via Bluetooth and Infrared to the Messaging Inbox • Via MMC card or USB port to phone memory • Via the Web browser •To S60 emulator • Copy to simulated phone memory under any folder where the File manager can access. E.g. epoc32winscwcDatainstalls • Use the emulator’s File menu
  • 23. What You Need? • For implementing widget’s code: • Any text editor program that allows you to save the text in ANSI? • For debugging a running widget • On Firefox - Firebug - JavaScript debugger plug-in - Implement S60 Web widget’s specific object stubs! • On S60 emulator - Use alert() method - Send log data to a server - Enable Java/ECMA Script Error from the browser settings (S60 3rd Ed. FP2 v1.1) • For testing a widget: • S60 3.2 SDK emulator, or • Nokia devices, which support WRT
  • 24. Running Web Widgets on the S60 Emulator
  • 25. Using Tools on the S60 Emulator
  • 26. Developing Web Widget In S60 Emulator S60/devices/S60_3rd_FP2_SDK_v1.1/epoc32/winscw/c/
  • 28. Widget Object • Widget object is a build-in module of the widget engine widget or window.widget • Widget object provides basic utility functions to manipulate widget’s properties
  • 29. Widget Object • Widget methods • openURL(String:url) • setPreferenceForKey(String:preference, String:key) • preferenceForKey(String:key) • prepareForTransition (String:transitionState) • performTransition(void) • setNavigationEnabled(Boolean:flag) • openApplication(Hex:Uid, String:param) • setDisplayLandscape(void) • setDisplayPortrait (void) • Widget properties • identifier [readonly, String] • onshow [assigned callback function] • onhide [assigned callback function] • isrotationsupported [readonly, Booloean]
  • 30. Widget Object window.onresize = handleOrientation; • Widget methods • openURL(String:url) function handleOrientation() { • setPreferenceForKey(String:preference, String:key) if (window.screen.height < window.screen.width) • preferenceForKey(String:key) widget.setDisplayLandscape(); • else prepareForTransition (String:transitionState) • widget.setDisplayPortrait(); performTransition(void) • setNavigationEnabled(Boolean:flag) • openApplication(Uid, param) • setDisplayLandscape(void) • setDisplayPortrait (void) widget.onhide = pause; • Widget properties widget.onshow = restore; • identifier [readonly, String] • function pause(){ onshow [assigned callback function] • onhide [assigned// free resources callback function] • } isRotationSupported [readonly, Booloean] function restore() { // resume }
  • 31. Widget Object • Widget methods This breaks the • openURL(String:url)widget framework! • setPreferenceForKey(String:preference, String:key) • preferenceForKey(String:key) <a href=quot;www.nokia.comquot;>Click here</a> • prepareForTransition (String:transitionState) <!-- performTransition(void) • Replace with this --> • setNavigationEnabled(Boolean:flag) <a onclick=quot;javascript:widget.openURL(‘www.nokia.com’);quot;>Click • openApplication(Uid, param) here</a> • setDisplayLandscape(void) • setDisplayPortrait (void) This breaks the • Widget properties widget framework! • identifier [readonly, String] <form• action=quot;http://www.abc.net/echo.phpquot; method=quot;getquot;> onshow [assigned callback function] • onhide [assigned callback function] <input id=quot;testquot; name=quot;contentquot; type=quot;textquot; /> <input type=quot;submitquot; />Booloean] • isRotationSupported [readonly, </form>
  • 32. Menu Object • Menu object is an extension from the widget object menu or window.menu • Menu object provides interfaces to manipulate the options menu and softkeys of a widget
  • 33. Menu Object • Menu methods • append(MenuItem menuItem) • remove(MenuItem menuItem) • getMenuItemById(Integer:id) • getMenuItemByName(String:label) • setRightSoftkeyLabel(String:label, function:callbackfunction) • showSoftkeys(void) • hideSoftkeys(void) • clear(void) • Menu properties • onShow [assigned callback function]
  • 34. Menu Object • Menu methods • append(MenuItem menuItem) • remove(MenuItem menuItem) • getMenuItemById(Integer:id) • getMenuItemByName(String:label) function setting(){ ... • setRightSoftKeyLabel(String:label, the right SK label if (window.menu) // change function:callbackfunction) menu.setRightSoftkeyLabel(‘Back’, toMainView); } • showSoftkeys(void) • hideSoftkeys(void) function toMainView(){ ... • clear(void) if (window.menu) // restore the right SK label • Menu properties } menu.setRightSoftkeyLabel(‘’, null); • onShow [assigned callback function]
  • 35. MenuItem Object • MenuItem is a build-in object of the widget engine var menuItem = new MenuItem(...); • MenuItem provides interfaces to create menu items and submenus (cascading) for the options menu
  • 36. Menu Item Object • Menu Item methods • new MenuItem(String:label, Integer:id) • append(MenuItem:childMenuItem) • remove(MenuItem:childMenuItem) • setDimmed(Boolean:flag) • Menu Item properties • onSelect [assigned callback function]
  • 37. Menu Item Object • Menu Item methods • new MenuItem(String:label, Integer:id) • append(MenuItem:childMenuItem) • remove(MenuItem:childMenuItem) • function createMenu setDimmed(Boolean:flag) { • Menu var settings = new MenuItem(‘Settings’, 10); Item properties • onSelect [assigned callback function] settings.onSelect = showSettings; window.menu.append(settings); } function showSettings(id) { widget.prepareForTransition(quot;fadequot;); document.getElementById(‘main’).style.display = ‘none’; document.getElementById(‘setting’).style.display = ‘block’; setTimeout(quot;widget.performTransition();quot;, 0); }
  • 38. System Info Service API • System info service API is provided thru a scriptable NetScape plug-in module. • System info service object provides interfaces to access to limited system properties such as memory, network strength etc. • System info service plug-in module is loaded via an HTML <embed> element <embed type=quot;application/x-systeminfo-widgetquot; hidden=quot;yesquot;></embed> • System info service plug-in module is not loaded in Browser context
  • 39. System Info Service API • Power properties • chargelevel [readonly, int] • chargerconnected [readonly, int] • onchargelevel [writeonly, function] • onchargerconnected [writeonly, function] • Network properties • signalbars [readonly, int] • networkname [readonly, string] • registrationstatus [readonly, int]
  • 40. System Info Service API • Power properties • chargelevel [readonly, int] var sysInfo = null; • chargerconnected [readonly, int] • function init() onchargelevel [writeonly, function] { • onchargerconnectedhandle to function] // get the [writeonly, the system info object • Network properties document.embeds[0]; sysInfo = var battLevel = sysInfo.chargelevel; • signalbars [readonly, int] sysInfo.onchargelevel = quot;batteryStatusCallback()quot;; • networkname [readonly, string] sysInfo.onchargerconnected = quot;chargerStatusCallback()quot;; • registrationstatus [readonly, int] } function batteryStatusCallback() { var battLevel = sysInfo.chargelevel; } function batteryStatusCallback() { var chargerStatus = sysInfo.chargerconnected; }
  • 41. 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]
  • 42. 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]
  • 43. 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]
  • 44. Localization • Localized resources • Widget’s name, text strings, images, stylish information (CSS) and even JavaScript functions • Localized resource loading contexts • When the @import directive is used in the widget’s main HTML document @import quot;localizedStyle.cssquot; • When a resource is loaded dynamically using JavaScript code var image document.getElementById(‘image’); image.setAttribute(‘src’, ‘image.jpg’); • When the ‘src’ attribute of an HTML tag is used <script src='localizedScript.js' /> <img src=quot;localizedImage.gifquot; />
  • 45. Localization cont. • Language project directory • Localized resources are stored under local language project directory • Directory naming convention xx.lproj where xx is the language code e.g. “en” for English and “fi” for Finnish • Is a direct subdirectory of a widget’s root directory C:helloworld en.lproj fi.lproj
  • 46. Localization cont. • Localizing widget’s name • Widget’s name is localized at installation time • Name in a local language is defined in the infoplist.strings DisplayName = quot;Localized namequot;; • Default name must be defined in the Info.plist!
  • 47. Localization cont. • Localizing widget’s text content • Localized text strings are defined in a JavaScript file for each supported local language var localizedText = new Array(); en.lproj localizedText[‘info1’] = quot;Helloquot;; localizedSctipt.js localizedText[‘info2’] = quot;Goodbyequot;; var localizedText = new Array(); es.lproj localizedText[‘info1’] = quot;Holaquot;; localizedSctipt.js localizedText[‘info2’] = quot;Adiosquot;; var localizedText = new Array(); fi.lproj localizedText[‘info1’] = quot;Moiquot;; localizedText[‘info2’] = quot;Hei heiquot;; localizedSctipt.js • Name of the Javascript file should be identical for all supported languages <script type=quot;text/javascriptquot; src=quot;localizedScript.jsquot;></script>
  • 48. Localization cont. • Localizing widget’s layout • Localized layout are defined in external .CSS resource file Specified in the main HTML document <style type=quot;text/cssquot;> @import quot;localizedLayout.cssquot;; </style> Localized resource location [root]ar.lproj localizedLayout.css // layout for text flow from RTL [root]es.lproj localizedLayout.css // layout for text flow from LTR Default resource location [root] localizedLayout.css
  • 49. Localization cont. • Localizing widget’s image resource • Localized image resources are stored in language project directory Finnish flag for the Finnish system language [root]fi.lproj flag.png // finnish flag English flag for the English system language [root]en.lproj flag.png // english flag UN flag for any other system language [root] flag.png // UN flag Load and show the flag dynamically var flag = document.createElement(‘img’); flag.setAttribute(‘src’, ‘flag.png’);
  • 50. JavaScript Library for WRT • ListBox http://wiki.forum.nokia.com/index.php/CS000941_-_WRT_Listbox_Widget • GridBox http://wiki.forum.nokia.com/index.php/CS000940_-_WRT_Gridbox_Widget
  • 51. JavaScript Library for WRT cont. • Calendar http://wiki.forum.nokia.com/index.php/CS000942_-_WRT_Calendar_Widget • KeyEvent http://wiki.forum.nokia.com/index.php/CS000943_-_WRT_NumKeyTranslator_Widget