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+" |