From: Antoine Cellerier Date: Sun, 29 Jan 2006 16:44:04 +0000 (+0000) Subject: main, functions.js, slider_*.png : add position slider X-Git-Tag: 0.9.0-test0~12585 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;ds=sidebyside;h=4348289aa68aa69466b012d1454a419a35160223;p=vlc main, functions.js, slider_*.png : add position slider status.xml : add "seek" command vlm, refresh.png : add refresh buttons (page doesn't autorefresh) --- diff --git a/share/http/dialogs/main b/share/http/dialogs/main index 427d696502..67db9e0810 100644 --- a/share/http/dialogs/main +++ b/share/http/dialogs/main @@ -36,52 +36,52 @@ sout and playlist .
-   - - -   - -   - -   -   - - @@ -93,6 +93,9 @@ sout and playlist . - Volume : (?)
+ + slider leftslider pointslider right +
(?)
diff --git a/share/http/dialogs/vlm b/share/http/dialogs/vlm index 499843bc42..d86e6ae298 100644 --- a/share/http/dialogs/vlm +++ b/share/http/dialogs/vlm @@ -30,10 +30,12 @@ sout and vlmelements .
VLC media player - VLM interface +
@@ -149,6 +151,9 @@ sout and vlmelements .
Broadcast Elements +
@@ -156,6 +161,9 @@ sout and vlmelements .
Video on Demand Elements +
@@ -163,6 +171,9 @@ sout and vlmelements .
Schedule Elements +
diff --git a/share/http/images/refresh.png b/share/http/images/refresh.png new file mode 100644 index 0000000000..645335096b Binary files /dev/null and b/share/http/images/refresh.png differ diff --git a/share/http/images/slider_bar.png b/share/http/images/slider_bar.png new file mode 100644 index 0000000000..ad03479f6a Binary files /dev/null and b/share/http/images/slider_bar.png differ diff --git a/share/http/images/slider_left.png b/share/http/images/slider_left.png new file mode 100644 index 0000000000..342c5708a7 Binary files /dev/null and b/share/http/images/slider_left.png differ diff --git a/share/http/images/slider_point.png b/share/http/images/slider_point.png new file mode 100644 index 0000000000..07acc754de Binary files /dev/null and b/share/http/images/slider_point.png differ diff --git a/share/http/images/slider_right.png b/share/http/images/slider_right.png new file mode 100644 index 0000000000..1b15f8b3dc Binary files /dev/null and b/share/http/images/slider_right.png differ diff --git a/share/http/js/functions.js b/share/http/js/functions.js index f7fdb65d6c..d4542b3c0e 100644 --- a/share/http/js/functions.js +++ b/share/http/js/functions.js @@ -25,6 +25,54 @@ var old_time = 0; +/********************************************************************** + * Slider functions + *********************************************************************/ + +var slider_mouse_down = 0; +var slider_dx = 0; + +/* findPosX() from http://www.quirksmode.rg/js/indpos.html */ +function findPosX(obj) +{ + var curleft = 0; + if (obj.offsetParent) + { + while (obj.offsetParent) + { + curleft += obj.offsetLeft + obj = obj.offsetParent; + } + } + else if (obj.x) + curleft += obj.x; + return curleft; +} + +function slider_seek( e, bar ) +{ + seek(Math.floor(( e.clientX + document.body.scrollLeft - findPosX( bar )) / 4)+"%25"); +} +function slider_down( e, point ) +{ + slider_mouse_down = 1; + slider_dx = e.clientX - findPosX( point ); +} +function slider_up( e, bar ) +{ + slider_mouse_down = 0; + /* slider_seek( e, bar ); */ +} +function slider_move( e, bar ) +{ + if( slider_mouse_down == 1 ) + { + var slider_position = Math.floor( e.clientX - slider_dx + document.body.scrollLeft - findPosX( bar )); + document.getElementById( 'main_slider_point' ).style.left = slider_position+"px"; + slider_seek( e, bar ); + } +} + /********************************************************************** * Misc utils *********************************************************************/ @@ -277,6 +325,10 @@ function volume_up() { loadXMLDoc( 'requests/status.xml?command=volume&val=%2B20', parse_status ); } +function seek( pos ) +{ + loadXMLDoc( 'requests/status.xml?command=seek&val='+pos, parse_status ); +} function fullscreen() { loadXMLDoc( 'requests/status.xml?command=fullscreen', parse_status ); @@ -302,21 +354,41 @@ function parse_status() { var status = req.responseXML.documentElement; var new_time = status.getElementsByTagName( 'time' )[0].firstChild.data; + var length = status.getElementsByTagName( 'length' )[0].firstChild.data; + var slider_position; + if( length < 100 ) + { + slider_position = ( status.getElementsByTagName( 'position' )[0] + .firstChild.data * 4 ) + "px"; + } + else + { + /* this is more precise if length > 100 */ + slider_position = Math.floor( ( new_time * 400 ) / length ) + "px"; + } if( old_time > new_time ) setTimeout('update_playlist()',50); old_time = new_time; set_text( 'time', format_time( new_time ) ); - set_text( 'length', format_time( status.getElementsByTagName( 'length' )[0].firstChild.data ) ); + set_text( 'length', format_time( length ) ); if( status.getElementsByTagName( 'volume' ).length != 0 ) set_text( 'volume', Math.floor(status.getElementsByTagName( 'volume' )[0].firstChild.data/5.12)+'%' ); set_text( 'state', status.getElementsByTagName( 'state' )[0].firstChild.data ); + if( slider_mouse_down == 0 ) + { + document.getElementById( 'main_slider_point' ).style.left = slider_position; + } if( status.getElementsByTagName( 'state' )[0].firstChild.data == "playing" ) { document.getElementById( 'btn_pause_img' ).setAttribute( 'src', 'images/pause.png' ); + document.getElementById( 'btn_pause_img' ).setAttribute( 'alt', 'Pause' ); + document.getElementById( 'btn_pause' ).setAttribute( 'title', 'Pause' ); } else { document.getElementById( 'btn_pause_img' ).setAttribute( 'src', 'images/play.png' ); + document.getElementById( 'btn_pause_img' ).setAttribute( 'alt', 'Play' ); + document.getElementById( 'btn_pause' ).setAttribute( 'title', 'Play' ); } } else diff --git a/share/http/requests/status.xml b/share/http/requests/status.xml index 7ee7f56e64..202fac7e22 100644 --- a/share/http/requests/status.xml +++ b/share/http/requests/status.xml @@ -83,6 +83,9 @@ + + +