- add log APIs to Activex
[vlc.git] / activex / test.html
1 <HTML>\r
2 <TITLE>VLC ActiveX plugin test page</TITLE>\r
3 <BODY>\r
4 <TABLE>\r
5 <TR><TD colspan="2">\r
6 MRL:\r
7 <INPUT size="90" id="targetTextField" value="">\r
8 <INPUT type=submit value="Go" onClick="doGo(document.getElementById('targetTextField').value);">\r
9 </TD></TR>\r
10 <TR><TD colspan="2">\r
11 <!--\r
12 Insert VideoLAN.VLCPlugin.2 activex control\r
13 -->\r
14 <OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"\r
15         codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab#Version=0,8,6,0"\r
16         width="640"\r
17         height="480"\r
18         id="vlc"\r
19         events="True">\r
20 <param name="MRL" value="" />\r
21 <param name="ShowDisplay" value="True" />\r
22 <param name="AutoLoop" value="False" />\r
23 <param name="AutoPlay" value="False" />\r
24 <param name="Volume" value="50" />\r
25 <param name="StartTime" value="0" />\r
26 </OBJECT>\r
27 </TD></TR>\r
28 <TR><TD>\r
29 <!--\r
30 Insert MSComctlLib.Slider.2 activex control\r
31 -->\r
32 <OBJECT classid="clsid:F08DF954-8592-11D1-B16A-00C0F0283628"\r
33         width="540"\r
34         height="20"\r
35         id="slider"\r
36         events="True">\r
37 <param name="TickStyle" value="3" />\r
38 <param name="Min" value="0" />\r
39 <param name="Max" value="0" />\r
40 <param name="Value" value="0" />\r
41 <param name="Enabled" value="False" />\r
42 </OBJECT>\r
43 </TD><TD width="15%">\r
44 <DIV id="info" style="text-align:center">-:--:--/-:--:--</DIV>\r
45 </TD></TR>\r
46 <TR><TD colspan="2">\r
47 <INPUT type=button id="PlayOrPause" value=" Play " onClick='doPlayOrPause();'>\r
48 <INPUT type=button value="Stop" onClick='doStop();'>\r
49 &nbsp;\r
50 <INPUT type=button value=" << " onClick='doPlaySlower();'>\r
51 <INPUT type=button value=" >> " onClick='doPlayFaster();'>\r
52 &nbsp;\r
53 <INPUT type=button value="Show" onClick='document.getElementById("vlc").Visible = true;'>\r
54 <INPUT type=button value="Hide" onClick='document.getElementById("vlc").Visible = false;'>\r
55 &nbsp;\r
56 <INPUT type=button id="VersionBut" value="Version" onClick='alert(document.getElementById("vlc").VersionInfo);'>\r
57 <SPAN style="text-align:center">Volume:</SPAN>\r
58 <INPUT type=button value=" - " onClick='updateVolume(-10)'>\r
59 <SPAN id="volumeTextField" style="text-align: center">--</SPAN>\r
60 <INPUT type=button value=" + " onClick='updateVolume(+10)'>\r
61 <INPUT type=button value="Mute" onClick='document.getElementById("vlc").audio.toggleMute();'>\r
62 </TD>\r
63 </TR>\r
64 </TABLE>\r
65 <SCRIPT language="javascript">\r
66 <!--\r
67 \r
68 var prevState = 0;\r
69 var monitorTimerId = 0;\r
70 var sliderScrolling = false;\r
71 var ignoreSliderChange = false;\r
72 \r
73 function updateVolume(deltaVol)\r
74 {\r
75     var vlc = document.getElementById("vlc");\r
76     vlc.audio.volume += deltaVol;\r
77     document.getElementById("volumeTextField").innerHTML = vlc.audio.volume+"%";\r
78 };\r
79 function formatTime(timeVal)\r
80 {\r
81     var timeHour = Math.round(timeVal / 1000);\r
82     var timeSec = timeHour % 60;\r
83     if( timeSec < 10 )\r
84         timeSec = '0'+timeSec;\r
85     timeHour = (timeHour - timeSec)/60;\r
86     var timeMin = timeHour % 60;\r
87     if( timeMin < 10 )\r
88         timeMin = '0'+timeMin;\r
89     timeHour = (timeHour - timeMin)/60;\r
90     if( timeHour > 0 )\r
91         return timeHour+":"+timeMin+":"+timeSec;\r
92     else\r
93         return timeMin+":"+timeSec;\r
94 };\r
95 function monitor()\r
96 {\r
97     var vlc = document.getElementById("vlc");\r
98     var newState = vlc.input.state;\r
99     if( vlc.log.messages.count > 0 )\r
100     {\r
101         var iter = vlc.log.messages.iterator();\r
102         while( iter.hasNext )\r
103         {\r
104             var msg = iter.next();\r
105             alert( msg );\r
106         }\r
107         vlc.log.messages.clear();\r
108     }\r
109     if( prevState != newState )\r
110     {\r
111         if( newState == 0 )\r
112         {\r
113             // current media has stopped \r
114             onStop();\r
115         }\r
116         else if( newState == 1 )\r
117         {\r
118             // current media is openning/connecting\r
119             onOpen();\r
120         }\r
121         else if( newState == 2 )\r
122         {\r
123             // current media is buffering data\r
124             onBuffer();\r
125         }\r
126         else if( newState == 3 )\r
127         {\r
128             // current media is now playing\r
129             onPlay();\r
130         }\r
131         else if( vlc.input.state == 4 )\r
132         {\r
133             // current media is now paused\r
134             onPause();\r
135         }\r
136         prevState = newState;\r
137     }\r
138     else if( newState == 3 )\r
139     {\r
140         // current media is playing\r
141         onPlaying();\r
142     }\r
143     monitorTimerId = setTimeout("monitor()", 1000);\r
144 };\r
145 \r
146 /* actions */\r
147 \r
148 function doGo(targetURL)\r
149 {\r
150     var vlc = document.getElementById("vlc");\r
151     var options = new Array(":vout=directx");\r
152     vlc.playlist.clear();\r
153     //vlc.playlist.add(targetURL, null, options);\r
154     vlc.playlist.add(targetURL);\r
155     vlc.playlist.play();\r
156     vlc.log.verbosity = 3;\r
157     vlc.log.messages.clear();\r
158     if( monitorTimerId == 0 )\r
159     {\r
160         monitor();\r
161     }\r
162 };\r
163 function doPlayOrPause()\r
164 {\r
165     var vlc = document.getElementById("vlc");\r
166     if( vlc.playlist.isPlaying )\r
167     {\r
168         vlc.playlist.togglePause();\r
169     }\r
170     else\r
171     {\r
172         vlc.log.messages.clear();\r
173         vlc.playlist.play();\r
174         if( monitorTimerId == 0 )\r
175         {\r
176             monitor();\r
177         }\r
178     }\r
179 };\r
180 function doStop()\r
181 {\r
182     document.getElementById("vlc").playlist.stop();\r
183     if( monitorTimerId != 0 )\r
184     {\r
185         clearTimeout(monitorTimerId);\r
186         monitorTimerId = 0;\r
187     }\r
188     onStop();\r
189 };\r
190 function doPlaySlower()\r
191 {\r
192     var vlc = document.getElementById("vlc");\r
193     vlc.input.rate = vlc.input.rate / 2;\r
194 };\r
195 function doPlayFaster()\r
196 {\r
197     var vlc = document.getElementById("vlc");\r
198     vlc.input.rate = vlc.input.rate * 2;\r
199 };\r
200 \r
201 /* events */\r
202 \r
203 function onOpen()\r
204 {\r
205     document.getElementById("info").innerHTML = "Opening...";\r
206     document.getElementById("PlayOrPause").value = "Pause";\r
207 };\r
208 function onBuffer()\r
209 {\r
210     document.getElementById("info").innerHTML = "Buffering...";\r
211     document.getElementById("PlayOrPause").value = "Pause";\r
212 };\r
213 function onPlay()\r
214 {\r
215     onPlaying();\r
216     document.getElementById("PlayOrPause").value = "Pause";\r
217 };\r
218 var liveFeedText = new Array("Live", "((Live))", "(( Live ))", "((  Live  ))");\r
219 var liveFeedRoll = 0;\r
220 function onPlaying()\r
221 {\r
222     if( ! sliderScrolling )\r
223     {\r
224         var slider = document.getElementById("slider");\r
225         if( vlc.input.length > 0 )\r
226         {\r
227             // seekable media\r
228             slider.Enabled = true;\r
229             slider.Max = slider.width;\r
230             ignoreSliderChange = true;\r
231             slider.Value = vlc.input.position*slider.width;\r
232             ignoreSliderChange = false;\r
233             document.getElementById("info").innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);\r
234         }\r
235         else\r
236         {\r
237             // non-seekable "live" media\r
238             if( slider.Enabled )\r
239             {\r
240                 slider.Value = slider.Min;\r
241                 slider.Enabled = false;\r
242             }\r
243             liveFeedRoll = liveFeedRoll & 3;\r
244             document.getElementById("info").innerHTML = liveFeedText[liveFeedRoll++];\r
245         }\r
246     }\r
247 };\r
248 function onPause()\r
249 {\r
250     document.getElementById("PlayOrPause").value = " Play ";\r
251 };\r
252 function onStop()\r
253 {\r
254     vlc.log.verbosity = -1;\r
255     if( slider.Enabled )\r
256     {\r
257         slider.Value = slider.Min;\r
258         slider.Enabled = false;\r
259     }\r
260     document.getElementById("info").innerHTML = "-:--:--/-:--:--";\r
261     document.getElementById("PlayOrPause").value = " Play ";\r
262 };\r
263 //-->\r
264 </SCRIPT>\r
265 <SCRIPT language="JScript">\r
266 <!--\r
267 \r
268 document.onreadystatechange=onVLCStateChange;\r
269 function onVLCStateChange()\r
270 {\r
271     if( document.readyState == 'complete' )\r
272     {\r
273         updateVolume(0);\r
274     }\r
275 };\r
276 function slider::Scroll()\r
277 {\r
278     var vlc = document.getElementById("vlc");\r
279     var slider = document.getElementById("slider");\r
280     var oldPos = vlc.input.position;\r
281     var newPos = slider.Value/slider.width;\r
282     if( (vlc.input.state == 3) && (oldPos != newPos) )\r
283     {\r
284         vlc.input.position = newPos;\r
285         slider.Text = formatTime(vlc.input.time);\r
286         document.getElementById("info").innerHTML = slider.Text+"/"+formatTime(vlc.input.length);\r
287     }\r
288     sliderScrolling = true;\r
289 };\r
290 function slider::Change()\r
291 {\r
292     var vlc = document.getElementById("vlc");\r
293     var slider = document.getElementById("slider");\r
294     var oldPos = vlc.input.position;\r
295     var newPos = slider.Value/slider.width;\r
296     if( sliderScrolling )\r
297     {\r
298         sliderScrolling = false;\r
299     }\r
300     else if( !ignoreSliderChange && (vlc.input.state == 3) && (oldPos != newPos) )\r
301     {\r
302         vlc.input.position = newPos;\r
303     }\r
304 };\r
305 //-->\r
306 </SCRIPT>\r
307 </BODY>\r
308 </HTML>\r