See09/main.js
changeset 19 f3521a11d878
equal deleted inserted replaced
18:b73e6caf0031 19:f3521a11d878
       
     1 // ////////////////////////////////////////////////////////////////////////////
       
     2 // Symbian Foundation Example Code
       
     3 //
       
     4 // This software is in the public domain. No copyright is claimed, and you 
       
     5 // may use it for any purpose without license from the Symbian Foundation.
       
     6 // No warranty for any purpose is expressed or implied by the authors or
       
     7 // the Symbian Foundation. 
       
     8 // ////////////////////////////////////////////////////////////////////////////
       
     9 
       
    10 var uiManager;
       
    11 var homeView;
       
    12 var mainView;
       
    13 var scheduleView = null;
       
    14 var twitterView = null;
       
    15 var venueView = null;
       
    16 
       
    17 var schedule;
       
    18 var scheduleFile = "see09.csv";
       
    19 var scheduleUrl;
       
    20 
       
    21 var twitter;
       
    22 
       
    23 // used as a title bar in all views
       
    24 var header = "<img src=home.png>";
       
    25 
       
    26 
       
    27 var day1 = "27-Oct-09";
       
    28 var day2 = "28-Oct-09";
       
    29 var showingDay = day1;
       
    30 
       
    31 
       
    32 function ShowTopicView(topic) {
       
    33 	var topicView = new ListView(null, header);
       
    34 	var day = ( showingDay == day1 ) ? "day1": "day2";
       
    35 	var titleButton = new NavigationButton(null, day+".png", "<b>" + topic + "</b>");
       
    36 	//titleButton.setEnabled(false);
       
    37 	topicView.addControl(titleButton);
       
    38 	topicView.previousView = scheduleView;
       
    39 	addSessions(topic, topicView);
       
    40 	topicView.show();
       
    41 }
       
    42 
       
    43 function addSessions(topic, topicView) {
       
    44 	var sessions = schedule.GetSessions(topic, showingDay);
       
    45 	for ( var i = 0; i < sessions.length ; i++ ) {
       
    46 		var session = sessions[i];
       
    47 		var content = new ContentPanel(null, null, null, true);
       
    48 		var contentHtml = session.GetContentHTML();
       
    49 		// initialize feed item control
       
    50 		var title = session.title;
       
    51 		if ( title.length < 2 ) {
       
    52 			title = session.chair;
       
    53 			if (title.length < 2) {
       
    54 				title = session.speakers;
       
    55 			}
       
    56 			title += "'s talk";
       
    57 		}
       
    58 		content.setCaption(session.startTime + ": " + title);
       
    59 		content.setContent(contentHtml);
       
    60 		content.setExpanded(false);		
       
    61 		topicView.addControl(content);
       
    62 	}
       
    63 }
       
    64 
       
    65 function ShowScheduleView(){
       
    66 	scheduleView = new ListView(null, header);
       
    67 	var title = ( showingDay == day1 ) ? "day1": "day2";
       
    68 	var dayButton = new NavigationButton(null, "day-icon.png", "<img src="+title+".png border=0 align=center>");
       
    69 	//dayButton.setEnabled(false);
       
    70 	scheduleView.addControl(dayButton);
       
    71 	scheduleView.previousView = mainView;
       
    72 	// add 'general' sessions
       
    73 	addSessions(schedule.topics[0], scheduleView);
       
    74 	
       
    75 	var trailsButton = new NavigationButton(null, "day-icon.png", "<img src=trailz.png border=0 align=center>");
       
    76 	trailsButton.setEnabled(false);
       
    77 	scheduleView.addControl(trailsButton);
       
    78 	for ( var i = 1; i < schedule.topics.length ; i++ ) {
       
    79 		var topic = schedule.topics[i];
       
    80 		var scheduleButton = new NavigationButton(topic, "schedule-icon"+(i%4)+".png", topic);
       
    81 		scheduleButton.addEventListener("ActionPerformed", function(event){
       
    82 			var topic = event.source.id;
       
    83 			ShowTopicView(topic);
       
    84 		});
       
    85 		scheduleView.addControl(scheduleButton);
       
    86 	}
       
    87 	scheduleView.show();
       
    88 }
       
    89 
       
    90 
       
    91 // Called when the data is loaded
       
    92 function ShowMainView(){
       
    93 	if (mainView == null) {
       
    94 		UpdateMiniView();
       
    95 		mainView = new ListView(null, header);
       
    96 		var currentSessions = schedule.GetCurrentSessions();
       
    97 		if (currentSessions != null) {
       
    98 		// todo
       
    99 		}
       
   100 		
       
   101 		var scheduleButton = new NavigationButton(null, "schedule-icon.png", "<img src='schedule.png' border=0>");
       
   102 		scheduleButton.setEnabled(false);
       
   103 		mainView.addControl(scheduleButton);
       
   104 		var day1Button = new NavigationButton(null, "blank.png", "<img src=day1.png border=0 align=center>");
       
   105 		day1Button.addEventListener("ActionPerformed", function(event){
       
   106 			showingDay = day1;
       
   107 			ShowScheduleView();
       
   108 		});
       
   109 		mainView.addControl(day1Button);
       
   110 		var day2Button = new NavigationButton(null, "blank.png", "<img src=day2.png border=0 align=center>");
       
   111 		day2Button.addEventListener("ActionPerformed", function(event){
       
   112 			showingDay = day2;
       
   113 			ShowScheduleView();
       
   114 		});
       
   115 		mainView.addControl(day2Button);
       
   116 		
       
   117 		venueView = new ListView(null, header);
       
   118 		venueView.previousView = mainView;
       
   119 		var venueMap = new ImageLabel(null, null, "venue.png");
       
   120 		venueMap.contentElement.style.textAlign = "center";
       
   121 		venueView.addControl(venueMap);
       
   122 	
       
   123 		var venueButton = new NavigationButton(null, "schedule-icon1.png", "<img src='venuelabel.png' border=0>");
       
   124 		venueButton.addEventListener("ActionPerformed", function(event){
       
   125 			venueView.show();
       
   126 		});
       
   127 		mainView.addControl(venueButton);
       
   128 		
       
   129 		twitterView.previousView = mainView;
       
   130 		var twitterTitle = new NavigationButton(null, "tweetz-icon.png", "<img src='tweetz.png' border=0>");
       
   131 		twitterTitle.addEventListener("ActionPerformed", function(event){
       
   132 				if ( twitter == null ) {
       
   133 					twitter = new Twitter(twitterView);
       
   134 				}
       
   135 				twitter.Update(10);
       
   136 				twitterView.show();
       
   137 				});
       
   138 		mainView.addControl(twitterTitle);
       
   139 //		twitter = new Twitter(mainView);
       
   140 //		twitter.Update(10);
       
   141 		mainView.previousView = null;
       
   142 	}
       
   143 	mainView.show();	
       
   144 }
       
   145 
       
   146 // Called from the onload event handler to initialize the widget.
       
   147 function init() {
       
   148 	
       
   149     if (window.widget) {
       
   150         widget.setNavigationEnabled(false);
       
   151         menu.showSoftkeys();
       
   152         var updateMenuItem = new MenuItem("Check for updates", 0);
       
   153         updateMenuItem.onSelect = CheckForUpdates;
       
   154         menu.append(updateMenuItem);
       
   155 		setInterval("if ( IsHSViewMode() ) UpdateMiniView();", 30000); // wrt bug fix
       
   156     }
       
   157 	
       
   158 	// create UI manager
       
   159 	uiManager = new UIManager(document.getElementById("main"));
       
   160 	
       
   161 	homeView = new ListView(null, "<img style='margin: 0px 0px; padding: 0px 0px; border: none' src='home.png'>");
       
   162 	
       
   163 	var homeViewImage2 = new ImageLabel(null, null, "logo.png");
       
   164 	homeViewImage2.contentElement.style.textAlign = "center";
       
   165 	homeView.addControl(homeViewImage2);
       
   166 	
       
   167 	setDefaultFontSizeForScreenSize();
       
   168 	SetViewMode();
       
   169 	homeView.show();
       
   170 
       
   171 	twitterView = new ListView(null, "<img style='margin: 0px 0px; padding: 0px 0px; border: none' src='home.png'>");
       
   172 
       
   173 	schedule = new Schedule();
       
   174 	schedule.Init(scheduleFile, function(event){
       
   175 		ShowMainView();
       
   176 	});
       
   177 	
       
   178 //	if ( !window.widget ) {
       
   179 //		// for firefox / firebug testing
       
   180 //		CheckForUpdates();
       
   181 //	}
       
   182 	
       
   183 }
       
   184 
       
   185 
       
   186 // ////////////////////////////////////////////////////////////////
       
   187 // Support for home screen view
       
   188 // ////////////////////////////////////////////////////////////////
       
   189 var HS_VIEW_THRESHOLD = 150;
       
   190 
       
   191 function SetViewMode(){
       
   192 	var mainDiv = document.getElementById("main");
       
   193 	var miniDiv = document.getElementById("mini");
       
   194 	var hsView = IsHSViewMode(); 
       
   195 	if ( !hsView ) {
       
   196 		// normal view		
       
   197 		mainDiv.style.visibility = 'visible';
       
   198 		miniDiv.style.visibility = 'hidden';
       
   199 		miniDiv.style.position = 'static';
       
   200 		miniDiv.style.top = null;
       
   201 	}
       
   202 	else {
       
   203 		// home screen view
       
   204 		mainDiv.style.visibility = 'hidden';
       
   205 		miniDiv.style.visibility = 'visible';
       
   206 		miniDiv.style.position = 'absolute';
       
   207 		miniDiv.style.top = '0';
       
   208 	}
       
   209 	setDefaultFontSizeForScreenSize();
       
   210 	UpdateMiniView();
       
   211 }
       
   212 
       
   213 function IsHSViewMode() {
       
   214 	//var screenHeight = document.body.clientHeight;
       
   215 	var screenHeight = window.innerHeight;
       
   216 	//alert(screenHeight);
       
   217 	return ( screenHeight < HS_VIEW_THRESHOLD );
       
   218 }
       
   219 
       
   220 function UpdateMiniView() {
       
   221 	var text = "";
       
   222 	var current;
       
   223 	if (schedule) {
       
   224 		current = schedule.GetCurrentSessions();
       
   225 	}
       
   226 	if ( current && current.length > 0 ) {
       
   227 		text = "Now: " + current[0].title;
       
   228 		if ( current.length > 1 ) {
       
   229 			text += "<br>Now: " + current[1].title;
       
   230 		}
       
   231 	} else if( twitter && twitter.buttons && twitter.buttons.length > 0  ){
       
   232 		text = twitter.buttons[0].getText();
       
   233 	} else {
       
   234 		text = "Symbian Exchange & Exposition 2009<br>Earls Court 2, 27-28 October 2009" 
       
   235 	}
       
   236 	var mini = document.getElementById("mini");
       
   237 	mini.innerHTML = "<table border=0><tr><td><img src=minilogo.png></td><td><span style='font-size: 10px'>"+text+"</span></td></tr></table>";
       
   238 }
       
   239