diff -r b73e6caf0031 -r f3521a11d878 See09/main.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/See09/main.js Thu Oct 22 15:52:58 2009 +0100 @@ -0,0 +1,239 @@ +// //////////////////////////////////////////////////////////////////////////// +// Symbian Foundation Example Code +// +// This software is in the public domain. No copyright is claimed, and you +// may use it for any purpose without license from the Symbian Foundation. +// No warranty for any purpose is expressed or implied by the authors or +// the Symbian Foundation. +// //////////////////////////////////////////////////////////////////////////// + +var uiManager; +var homeView; +var mainView; +var scheduleView = null; +var twitterView = null; +var venueView = null; + +var schedule; +var scheduleFile = "see09.csv"; +var scheduleUrl; + +var twitter; + +// used as a title bar in all views +var header = ""; + + +var day1 = "27-Oct-09"; +var day2 = "28-Oct-09"; +var showingDay = day1; + + +function ShowTopicView(topic) { + var topicView = new ListView(null, header); + var day = ( showingDay == day1 ) ? "day1": "day2"; + var titleButton = new NavigationButton(null, day+".png", "" + topic + ""); + //titleButton.setEnabled(false); + topicView.addControl(titleButton); + topicView.previousView = scheduleView; + addSessions(topic, topicView); + topicView.show(); +} + +function addSessions(topic, topicView) { + var sessions = schedule.GetSessions(topic, showingDay); + for ( var i = 0; i < sessions.length ; i++ ) { + var session = sessions[i]; + var content = new ContentPanel(null, null, null, true); + var contentHtml = session.GetContentHTML(); + // initialize feed item control + var title = session.title; + if ( title.length < 2 ) { + title = session.chair; + if (title.length < 2) { + title = session.speakers; + } + title += "'s talk"; + } + content.setCaption(session.startTime + ": " + title); + content.setContent(contentHtml); + content.setExpanded(false); + topicView.addControl(content); + } +} + +function ShowScheduleView(){ + scheduleView = new ListView(null, header); + var title = ( showingDay == day1 ) ? "day1": "day2"; + var dayButton = new NavigationButton(null, "day-icon.png", ""); + //dayButton.setEnabled(false); + scheduleView.addControl(dayButton); + scheduleView.previousView = mainView; + // add 'general' sessions + addSessions(schedule.topics[0], scheduleView); + + var trailsButton = new NavigationButton(null, "day-icon.png", ""); + trailsButton.setEnabled(false); + scheduleView.addControl(trailsButton); + for ( var i = 1; i < schedule.topics.length ; i++ ) { + var topic = schedule.topics[i]; + var scheduleButton = new NavigationButton(topic, "schedule-icon"+(i%4)+".png", topic); + scheduleButton.addEventListener("ActionPerformed", function(event){ + var topic = event.source.id; + ShowTopicView(topic); + }); + scheduleView.addControl(scheduleButton); + } + scheduleView.show(); +} + + +// Called when the data is loaded +function ShowMainView(){ + if (mainView == null) { + UpdateMiniView(); + mainView = new ListView(null, header); + var currentSessions = schedule.GetCurrentSessions(); + if (currentSessions != null) { + // todo + } + + var scheduleButton = new NavigationButton(null, "schedule-icon.png", ""); + scheduleButton.setEnabled(false); + mainView.addControl(scheduleButton); + var day1Button = new NavigationButton(null, "blank.png", ""); + day1Button.addEventListener("ActionPerformed", function(event){ + showingDay = day1; + ShowScheduleView(); + }); + mainView.addControl(day1Button); + var day2Button = new NavigationButton(null, "blank.png", ""); + day2Button.addEventListener("ActionPerformed", function(event){ + showingDay = day2; + ShowScheduleView(); + }); + mainView.addControl(day2Button); + + venueView = new ListView(null, header); + venueView.previousView = mainView; + var venueMap = new ImageLabel(null, null, "venue.png"); + venueMap.contentElement.style.textAlign = "center"; + venueView.addControl(venueMap); + + var venueButton = new NavigationButton(null, "schedule-icon1.png", ""); + venueButton.addEventListener("ActionPerformed", function(event){ + venueView.show(); + }); + mainView.addControl(venueButton); + + twitterView.previousView = mainView; + var twitterTitle = new NavigationButton(null, "tweetz-icon.png", ""); + twitterTitle.addEventListener("ActionPerformed", function(event){ + if ( twitter == null ) { + twitter = new Twitter(twitterView); + } + twitter.Update(10); + twitterView.show(); + }); + mainView.addControl(twitterTitle); +// twitter = new Twitter(mainView); +// twitter.Update(10); + mainView.previousView = null; + } + mainView.show(); +} + +// Called from the onload event handler to initialize the widget. +function init() { + + if (window.widget) { + widget.setNavigationEnabled(false); + menu.showSoftkeys(); + var updateMenuItem = new MenuItem("Check for updates", 0); + updateMenuItem.onSelect = CheckForUpdates; + menu.append(updateMenuItem); + setInterval("if ( IsHSViewMode() ) UpdateMiniView();", 30000); // wrt bug fix + } + + // create UI manager + uiManager = new UIManager(document.getElementById("main")); + + homeView = new ListView(null, ""); + + var homeViewImage2 = new ImageLabel(null, null, "logo.png"); + homeViewImage2.contentElement.style.textAlign = "center"; + homeView.addControl(homeViewImage2); + + setDefaultFontSizeForScreenSize(); + SetViewMode(); + homeView.show(); + + twitterView = new ListView(null, ""); + + schedule = new Schedule(); + schedule.Init(scheduleFile, function(event){ + ShowMainView(); + }); + +// if ( !window.widget ) { +// // for firefox / firebug testing +// CheckForUpdates(); +// } + +} + + +// //////////////////////////////////////////////////////////////// +// Support for home screen view +// //////////////////////////////////////////////////////////////// +var HS_VIEW_THRESHOLD = 150; + +function SetViewMode(){ + var mainDiv = document.getElementById("main"); + var miniDiv = document.getElementById("mini"); + var hsView = IsHSViewMode(); + if ( !hsView ) { + // normal view + mainDiv.style.visibility = 'visible'; + miniDiv.style.visibility = 'hidden'; + miniDiv.style.position = 'static'; + miniDiv.style.top = null; + } + else { + // home screen view + mainDiv.style.visibility = 'hidden'; + miniDiv.style.visibility = 'visible'; + miniDiv.style.position = 'absolute'; + miniDiv.style.top = '0'; + } + setDefaultFontSizeForScreenSize(); + UpdateMiniView(); +} + +function IsHSViewMode() { + //var screenHeight = document.body.clientHeight; + var screenHeight = window.innerHeight; + //alert(screenHeight); + return ( screenHeight < HS_VIEW_THRESHOLD ); +} + +function UpdateMiniView() { + var text = ""; + var current; + if (schedule) { + current = schedule.GetCurrentSessions(); + } + if ( current && current.length > 0 ) { + text = "Now: " + current[0].title; + if ( current.length > 1 ) { + text += "
Now: " + current[1].title; + } + } else if( twitter && twitter.buttons && twitter.buttons.length > 0 ){ + text = twitter.buttons[0].getText(); + } else { + text = "Symbian Exchange & Exposition 2009
Earls Court 2, 27-28 October 2009" + } + var mini = document.getElementById("mini"); + mini.innerHTML = "
"+text+"
"; +} +