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