From 56a168ba86aa0ea6cf48eb3719b87f63c909fcfa Mon Sep 17 00:00:00 2001 From: Brandon Brooks Date: Thu, 30 Jun 2011 10:01:50 -0400 Subject: [PATCH] HTTP UI - Updates This patch contains various updates to the new HTTP UI Mobile views have only been tested on Android. Update - Added EQ functionality Update - Corrected rounding mistakes and EQ units Update - Added Mobile EQ Update - Added Mobile Flash View Update - Minor Display Adjustments Update - Revert Playlist.xml for backward compatability Update - Added playlist_jstree.xml for UI usability Update - Added Batch VLM Command interface Update - Added VLM command error reporting Update - Added functionality for future EQ merge into status.xml Update - Modified Makefile.am to include new files Update - Corrected main EQ button Update - Modified author comments Signed-off-by: Jean-Baptiste Kempf --- share/Makefile.am | 198 +++++++++--------- share/lua/http/css/main.css | 15 ++ share/lua/http/dialogs/batch_window.html | 29 +++ share/lua/http/dialogs/browse_window.html | 9 - share/lua/http/dialogs/create_stream.html | 1 - share/lua/http/dialogs/equalizer_window.html | 52 +++++ share/lua/http/dialogs/error_window.html | 19 ++ share/lua/http/dialogs/mosaic_window.html | 1 - share/lua/http/dialogs/offset_window.html | 1 - .../http/dialogs/stream_config_window.html | 40 ++++ share/lua/http/dialogs/stream_window.html | 7 +- share/lua/http/images/button-equalizer-48.png | Bin 0 -> 2040 bytes share/lua/http/images/vlc-48.png | Bin 0 -> 15875 bytes share/lua/http/index.html | 132 +++++------- share/lua/http/js/common.js | 23 ++ share/lua/http/js/controlers.js | 178 ++++++++++++++-- share/lua/http/js/ui.js | 72 +++++++ share/lua/http/mobile.html | 122 +++++++++++ share/lua/http/mobile_browse.html | 54 +++++ share/lua/http/mobile_equalizer.html | 70 +++++++ share/lua/http/mobile_view.html | 55 +++++ share/lua/http/requests/playlist.xml | 29 +-- share/lua/http/requests/playlist_jstree.xml | 85 ++++++++ share/lua/http/view.html | 73 +++---- 24 files changed, 989 insertions(+), 276 deletions(-) create mode 100644 share/lua/http/dialogs/batch_window.html create mode 100755 share/lua/http/dialogs/equalizer_window.html create mode 100644 share/lua/http/dialogs/error_window.html create mode 100644 share/lua/http/dialogs/stream_config_window.html create mode 100644 share/lua/http/images/button-equalizer-48.png create mode 100644 share/lua/http/images/vlc-48.png create mode 100644 share/lua/http/js/ui.js create mode 100644 share/lua/http/mobile.html create mode 100644 share/lua/http/mobile_browse.html create mode 100644 share/lua/http/mobile_equalizer.html create mode 100644 share/lua/http/mobile_view.html create mode 100644 share/lua/http/requests/playlist_jstree.xml diff --git a/share/Makefile.am b/share/Makefile.am index bd8d7c0e0c..af3fcf87fc 100644 --- a/share/Makefile.am +++ b/share/Makefile.am @@ -248,118 +248,122 @@ EXTRA_DIST += \ lua/sd/metachannels.lua DIST_http_lua = \ - lua/http/.hosts \ - lua/http/css/main.css \ - lua/http/css/ui-lightness/jquery-ui-1.8.13.custom.css \ - lua/http/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png \ - lua/http/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png \ - lua/http/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png \ - lua/http/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png \ - lua/http/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png \ - lua/http/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png \ - lua/http/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png \ - lua/http/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png \ - lua/http/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png \ - lua/http/css/ui-lightness/images/ui-icons_222222_256x240.png \ - lua/http/css/ui-lightness/images/ui-icons_228ef1_256x240.png \ - lua/http/css/ui-lightness/images/ui-icons_ef8c08_256x240.png \ - lua/http/css/ui-lightness/images/ui-icons_ffd27a_256x240.png \ - lua/http/css/ui-lightness/images/ui-icons_ffffff_256x240.png \ - lua/http/custom.lua \ - lua/http/dialogs/.hosts \ - lua/http/dialogs/browse \ - lua/http/dialogs/browse_window.html \ + lua/http/view.html \ + lua/http/mobile.html \ lua/http/dialogs/create_stream.html \ - lua/http/dialogs/footer \ - lua/http/dialogs/input \ - lua/http/dialogs/main \ - lua/http/dialogs/mosaic \ + lua/http/dialogs/equalizer_window.html \ lua/http/dialogs/mosaic_window.html \ - lua/http/dialogs/offset_window.html \ - lua/http/dialogs/playlist \ - lua/http/dialogs/sout \ + lua/http/dialogs/batch_window.html \ + lua/http/dialogs/error_window.html \ + lua/http/dialogs/browse_window.html \ + lua/http/dialogs/.hosts \ lua/http/dialogs/stream_window.html \ - lua/http/dialogs/vlm \ - lua/http/favicon.ico \ + lua/http/dialogs/offset_window.html \ + lua/http/dialogs/stream_config_window.html \ + lua/http/custom.lua \ lua/http/flash.html \ + lua/http/vlm.html \ + lua/http/images/loop.png \ + lua/http/images/button_pause-48.png \ + lua/http/images/speaker-32.png \ + lua/http/images/fullscreen.png \ + lua/http/images/vlc-48.png \ + lua/http/images/prev.png \ + lua/http/images/play.png \ lua/http/images/Audio-48.png \ + lua/http/images/empty.png \ + lua/http/images/minus.png \ + lua/http/images/slider_right.png \ + lua/http/images/slider_point.png \ + lua/http/images/pause.png \ + lua/http/images/speaker_mute.png \ + lua/http/images/delete_small.png \ + lua/http/images/snapshot.png \ + lua/http/images/Folder-48.png \ + lua/http/images/info.png \ + lua/http/images/refresh.png \ + lua/http/images/sout.png \ + lua/http/images/button_stop-48.png \ + lua/http/images/button_help-48.png \ + lua/http/images/button-equalizer-48.png \ + lua/http/images/button_ffw-48.png \ + lua/http/images/sort.png \ + lua/http/images/button_play-48.png \ + lua/http/images/white_cross_small.png \ + lua/http/images/button_full-48.png \ + lua/http/images/shuffle.png \ + lua/http/images/Other-48.png \ + lua/http/images/button_repeat-48.png \ + lua/http/images/repeat.png \ + lua/http/images/slow.png \ + lua/http/images/slider_left.png \ + lua/http/images/help.png \ + lua/http/images/stop.png \ + lua/http/images/sd.png \ + lua/http/images/speaker.png \ + lua/http/images/button_first-48.png \ + lua/http/images/button_stream-48.png \ + lua/http/images/button_rew-48.png \ + lua/http/images/button_rec-48.png \ + lua/http/images/delete.png \ lua/http/images/Back-48.png \ lua/http/images/button_eject-48.png \ - lua/http/images/button_ffw-48.png \ - lua/http/images/button_first-48.png \ - lua/http/images/button_full-48.png \ - lua/http/images/button_help-48.png \ - lua/http/images/button_last-48.png \ - lua/http/images/button_pause-48.png \ - lua/http/images/button_play-48.png \ - lua/http/images/button_rec-48.png \ - lua/http/images/button_repeat-48.png \ - lua/http/images/button_rew-48.png \ - lua/http/images/button_stop-48.png \ - lua/http/images/button_stream-48.png \ - lua/http/images/delete.png \ - lua/http/images/delete_small.png \ - lua/http/images/eject.png \ - lua/http/images/empty.png \ - lua/http/images/Folder-48.png \ - lua/http/images/fullscreen.png \ - lua/http/images/help.png \ - lua/http/images/info.png \ - lua/http/images/loop.png \ - lua/http/images/minus.png \ - lua/http/images/next.png \ - lua/http/images/Other-48.png \ - lua/http/images/pause.png \ - lua/http/images/play.png \ - lua/http/images/playlist.png \ - lua/http/images/playlist_small.png \ - lua/http/images/plus.png \ - lua/http/images/prev.png \ - lua/http/images/refresh.png \ - lua/http/images/repeat.png \ - lua/http/images/reset.png \ - lua/http/images/sd.png \ - lua/http/images/shuffle.png \ - lua/http/images/slider_bar.png \ - lua/http/images/slider_left.png \ - lua/http/images/slider_point.png \ - lua/http/images/slider_right.png \ - lua/http/images/snapshot.png \ - lua/http/images/slow.png \ - lua/http/images/sort.png \ - lua/http/images/sout.png \ - lua/http/images/speaker-32.png \ - lua/http/images/speaker.png \ - lua/http/images/speaker_mute.png \ - lua/http/images/stop.png \ lua/http/images/Video-48.png \ - lua/http/images/vlc16x16.png \ - lua/http/images/volume_down.png \ + lua/http/images/playlist_small.png \ + lua/http/images/eject.png \ + lua/http/images/playlist.png \ lua/http/images/volume_up.png \ + lua/http/images/next.png \ + lua/http/images/button_last-48.png \ + lua/http/images/volume_down.png \ + lua/http/images/slider_bar.png \ + lua/http/images/vlc16x16.png \ + lua/http/images/plus.png \ lua/http/images/white.png \ - lua/http/images/white_cross_small.png \ - lua/http/index.html \ - lua/http/js/common.js \ - lua/http/js/controlers.js \ - lua/http/js/functions.js \ - lua/http/js/jquery-1.5.1.min.js \ - lua/http/js/jquery.jstree.js \ - lua/http/js/jquery-ui-1.8.13.custom.min.js \ - lua/http/js/mosaic.js \ - lua/http/js/vlm.js \ + lua/http/images/reset.png \ + lua/http/mobile_equalizer.html \ + lua/http/vlm_export.html \ + lua/http/mobile_browse.html \ lua/http/mosaic.html \ - lua/http/requests/browse.xml \ - lua/http/requests/equalizer.xml \ + lua/http/favicon.ico \ + lua/http/mobile_view.html \ + lua/http/.hosts \ lua/http/requests/playlist.xml \ + lua/http/requests/README.txt \ + lua/http/requests/playlist_jstree.xml \ + lua/http/requests/equalizer.xml \ + lua/http/requests/browse.xml \ + lua/http/requests/vlm_cmd.xml \ lua/http/requests/status.xml \ lua/http/requests/vlm.xml \ - lua/http/requests/vlm_cmd.xml \ - lua/http/requests/README.txt \ - lua/http/style.css \ + lua/http/index.html \ + lua/http/css/ui-lightness/jquery-ui-1.8.13.custom.css \ + lua/http/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png \ + lua/http/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png \ + lua/http/css/ui-lightness/images/ui-icons_ffffff_256x240.png \ + lua/http/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png \ + lua/http/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png \ + lua/http/css/ui-lightness/images/ui-icons_222222_256x240.png \ + lua/http/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png \ + lua/http/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png \ + lua/http/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png \ + lua/http/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png \ + lua/http/css/ui-lightness/images/ui-icons_ffd27a_256x240.png \ + lua/http/css/ui-lightness/images/ui-icons_228ef1_256x240.png \ + lua/http/css/ui-lightness/images/ui-icons_ef8c08_256x240.png \ + lua/http/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png \ + lua/http/css/main.css \ lua/http/iehacks.css \ - lua/http/view.html \ - lua/http/vlm.html \ - lua/http/vlm_export.html + lua/http/js/jquery-1.5.1.min.js \ + lua/http/js/functions.js \ + lua/http/js/vlm.js \ + lua/http/js/ui.js \ + lua/http/js/common.js \ + lua/http/js/jquery.jstree.js \ + lua/http/js/controlers.js \ + lua/http/js/jquery-ui-1.8.13.custom.min.js \ + lua/http/js/mosaic.js \ + lua/http/style.css DIST_maemo = \ maemo/vlc_intf.rc \ diff --git a/share/lua/http/css/main.css b/share/lua/http/css/main.css index 57c19d3554..9dd2b8324b 100644 --- a/share/lua/http/css/main.css +++ b/share/lua/http/css/main.css @@ -90,6 +90,9 @@ body{ #buttonSout{ background-image: url("../images/button_stream-48.png") ; } +#buttonEQ{ + background-image: url("../images/button-equalizer-48.png") ; +} #window_browse ol{ list-style-type: none; } @@ -114,6 +117,18 @@ body{ #window_create_stream table tr td{ font-size: 11px; } + +#window_equalizer div div{ + text-align: center; + font-size: 11px; + padding: 0px; +} +.eqBand{ + margin-bottom: 10px; + margin-top: 10px; + height: 400px; + font-size: 1.5em; +} .footer{ text-align: center; font-size: 11px; diff --git a/share/lua/http/dialogs/batch_window.html b/share/lua/http/dialogs/batch_window.html new file mode 100644 index 0000000000..c6aa396064 --- /dev/null +++ b/share/lua/http/dialogs/batch_window.html @@ -0,0 +1,29 @@ + +
+ +
\ No newline at end of file diff --git a/share/lua/http/dialogs/browse_window.html b/share/lua/http/dialogs/browse_window.html index d578a0e296..38a24a1399 100644 --- a/share/lua/http/dialogs/browse_window.html +++ b/share/lua/http/dialogs/browse_window.html @@ -1,20 +1,11 @@ +
+
+
Preamp: 0dB
+
+
+
+
+
\ No newline at end of file diff --git a/share/lua/http/dialogs/error_window.html b/share/lua/http/dialogs/error_window.html new file mode 100644 index 0000000000..22639ace92 --- /dev/null +++ b/share/lua/http/dialogs/error_window.html @@ -0,0 +1,19 @@ + +
+
+
+
\ No newline at end of file diff --git a/share/lua/http/dialogs/mosaic_window.html b/share/lua/http/dialogs/mosaic_window.html index a55c613ad0..c721d7cc06 100644 --- a/share/lua/http/dialogs/mosaic_window.html +++ b/share/lua/http/dialogs/mosaic_window.html @@ -7,7 +7,6 @@ minWidth: 800, minHeight: 500, modal: true, - position: ['left','top'], buttons: { "Create": function() { $(this).dialog("close"); diff --git a/share/lua/http/dialogs/offset_window.html b/share/lua/http/dialogs/offset_window.html index bf6679491b..1b5d375d74 100644 --- a/share/lua/http/dialogs/offset_window.html +++ b/share/lua/http/dialogs/offset_window.html @@ -3,7 +3,6 @@ $('#window_offset').dialog({ autoOpen: false, minWidth: 400, - position: ['left','top'], buttons:{ "Close":function(){ $(this).dialog("close"); diff --git a/share/lua/http/dialogs/stream_config_window.html b/share/lua/http/dialogs/stream_config_window.html new file mode 100644 index 0000000000..b35f218659 --- /dev/null +++ b/share/lua/http/dialogs/stream_config_window.html @@ -0,0 +1,40 @@ + +
+ + + + + + + + + + + + + + + + + +
Protocol
Host
Port
File
+
\ No newline at end of file diff --git a/share/lua/http/dialogs/stream_window.html b/share/lua/http/dialogs/stream_window.html index a9fe277ce5..288e2f729c 100644 --- a/share/lua/http/dialogs/stream_window.html +++ b/share/lua/http/dialogs/stream_window.html @@ -11,7 +11,6 @@ autoOpen: false, minWidth: 600, minHeight: 430, - position: ['left','top'], buttons:{ "Close":function(){ $(this).dialog("close"); @@ -21,7 +20,6 @@ $('#window_stream_config').dialog({ autoOpen: false, width:400, - position: ['left','top'], modal: true, buttons:{ "Okay":function(){ @@ -44,6 +42,10 @@ $('#button_create_mosaic').click(function(){ $('#window_mosaic').dialog('open'); return false; + }); + $('#button_refresh_streams').click(function(){ + updateStreams(); + return false; }) $('#stream_host').val(stream_server); }); @@ -67,6 +69,7 @@
+
diff --git a/share/lua/http/images/button-equalizer-48.png b/share/lua/http/images/button-equalizer-48.png new file mode 100644 index 0000000000000000000000000000000000000000..1574cd687c7d52e6f9bf0974579db0dbb1762117 GIT binary patch literal 2040 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 Z{|95z^%}P1kA46E002ovPDHLkV1inr@0tJr literal 0 HcmV?d00001 diff --git a/share/lua/http/index.html b/share/lua/http/index.html index df06a0e10d..0629831a63 100644 --- a/share/lua/http/index.html +++ b/share/lua/http/index.html @@ -1,59 +1,52 @@ + - VLC media player - Web Interface + + + - + - -
@@ -244,6 +209,8 @@
+
+
@@ -330,8 +297,7 @@ - \ No newline at end of file diff --git a/share/lua/http/js/common.js b/share/lua/http/js/common.js index f692ba7128..9982b23449 100644 --- a/share/lua/http/js/common.js +++ b/share/lua/http/js/common.js @@ -1,5 +1,8 @@ var intv = 0; var ccmd = ""; +var video_types = new Array('avi','mp4','wmv','mov','swf','vob','mkv','mpg'); +var audio_types = new Array('mp3','wav'); +var stream_server = window.location.hostname; function format_time( s ){ var hours = Math.floor(s/3600); var minutes = Math.floor((s/60)%60); @@ -36,3 +39,23 @@ function setIntv(){ } } } +function convertHz(value){ + if(value>=1000){ + return Math.round(value/1000,2)+'kHz'; + }else{ + return Math.round(value,2)+'Hz'; + } +} +function isMobile(){ + var a = navigator.userAgent||navigator.vendor||window.opera; + if(/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))){ + return true; + } + return false; +} +function createElementLi(name,type,dir,ext){ + var icon = type=="dir" && name=='..' ? 'Back-48.png' : (type=='dir' ? "Folder-48.png" : ($.inArray(ext,video_types)!=-1 ? "Video-48.png" : ($.inArray(ext,audio_types)!=-1 ? "Audio-48.png" : "Other-48.png"))); + var open = type=="dir" ? "opendir='"+dir+"'" : (type=="file" ? "openfile='"+dir+"'" : "opendev='"+dir+"'"); + var str = "
  • "+name+"
    "+name+"
  • "; + return str; +} \ No newline at end of file diff --git a/share/lua/http/js/controlers.js b/share/lua/http/js/controlers.js index 6aa44d135c..6a7dd78ac8 100644 --- a/share/lua/http/js/controlers.js +++ b/share/lua/http/js/controlers.js @@ -21,6 +21,7 @@ function updateStatus(){ $('#currentSubtitleDelay').append(Math.round($('subtitledelay',data).text()*100)/100+'s'); $('#seekSlider').attr('totalLength',$('length',data).text()); $('#buttonPlay').attr('state',$('state',data).text()); + $('#buttonPlay').attr('mrl',$('[name="filename"]',data).text()); if($('state',data).text()=='playing'){ $('#buttonPlay').css({ 'background-image':'url("images/button_pause-48.png")' @@ -60,29 +61,64 @@ function updateStatus(){ 'display':'block' }); }else if($('[name="artwork_url"]',data).text()==""){ - $('#albumArt').css({ - 'visibility':'hidden', - 'display':'none' - }); + $('#albumArt').attr('src','images/vlc-48.png'); } - setTimeout( updateStatus, 1000 ); + if(pollStatus){ + setTimeout( updateStatus, 1000 ); + } + } + $('band',data).each(function(){ + var id = $(this).attr('id'); + var freq = convertHz($(this).attr('freqency')); + var value = $(this).text() ? $(this).text() : 0; + if(!$('#eq_container'+id).length){ + $('#window_equalizer').append('
    '+value+'dB
    '+freq+'
    '); + $('#eq'+id).slider({ + min: -20, + max: 20, + step: 0.1, + range: "min", + value: value, + animate: true, + orientation: "vertical", + stop: function(event,ui){ + $('#'+$(this).attr('id')+'_txt').empty().append(ui.value+'dB'); + sendCommad({ + command:'equalizer', + val: ui.value, + band: $(this).attr('id').substr(2) + }) + }, + slide: function(event,ui){ + $('#'+$(this).attr('id')+'_txt').empty().append(ui.value+'dB'); + } + }); + }else{ + $('#eq'+id).slider({value:value}); + $('#eq'+id+'_txt').empty().append(Math.round(value*100)/100+'dB'); + } + }); + $('#preamp').slider('value',$('preamp',data).text()); + $('#preamp_txt').empty().append(Math.round($('preamp',data).text()*100)/100+'dB'); }, error: function(jqXHR,status,error){ setTimeout( updateStatus, 500 ); } }); } - function updatePlayList(){ $('#libraryTree').jstree('refresh',-1); } -function sendCommand(params){ +function sendCommand(params,append){ if(current_que=='stream'){ $.ajax({ url: 'requests/status.xml', data: params, success:function(data,status,jqXHR){ + if(append!=undefined){ + eval(append); + } updateStatus(); updatePlayList(); } @@ -91,20 +127,26 @@ function sendCommand(params){ if(params.plreload===false){ $.ajax({ url: 'requests/status.xml', - data: params + data: params, + success:function(data,status,jqXHR){ + if(append!=undefined){ + eval(append); + } + } }); }else{ $.ajax({ url: 'requests/status.xml', data: params, success:function(data,status,jqXHR){ + if(append!=undefined){ + eval(append); + } updatePlayList(); } }); - } - + } } - } function browse(dir){ dir = dir==undefined ? '~' : dir; @@ -112,6 +154,7 @@ function browse(dir){ url: 'requests/browse.xml', data:'dir='+encodeURIComponent(dir), success: function(data,status,jqXHR){ + var tgt = browse_target.indexOf('__')==-1 ? browse_target : browse_target.substr(0,browse_target.indexOf('__')); $('#browse_elements').empty(); $('element',data).each(function(){ if($(this).attr('type')=='dir' || $.inArray($(this).attr('name').substr(-3),video_types)!=-1 || $.inArray($(this).attr('name').substr(-3),audio_types)!=-1){ @@ -122,7 +165,6 @@ function browse(dir){ browse($(this).attr('opendir')); }); $('[openfile]').dblclick(function(){ - var tgt = browse_target.indexOf('__')==-1 ? browse_target : browse_target.substr(0,browse_target.indexOf('__')); switch(tgt){ case '#stream_input': $(browse_target).val($(this).attr('openfile')); @@ -136,14 +178,39 @@ function browse(dir){ 'float' : 'left' }); break; + case '#mobile': + break; default: sendCommand('command=in_play&input=file://'+encodeURIComponent($(this).attr('openfile'))); break; } $('#window_browse').dialog('close'); }); - $('[selectable]').selectable(); - + $('[opendir]').click(function(){ + switch(tgt){ + case '#mobile': + browse($(this).attr('opendir')); + break; + default: + break; + } + }); + $('[openfile]').click(function(){ + switch(tgt){ + case '#mobile': + sendCommand('command=in_play&input=file://'+encodeURIComponent($(this).attr('openfile')),"window.location='mobile.html'"); + break; + default: + break; + } + }); + switch(tgt){ + case '#mobile': + break; + default: + $('[selectable]').selectable(); + break; + } }, error: function(jqXHR,status,error){ setTimeout('browse("'+dir+'")',1041); @@ -256,47 +323,113 @@ function updateStreams(){ } setTimeout( updateStreams, 1000 ); } - } }); } -function sendVLMCmd(command){ +function updateEQ(){ + $.ajax({ + url: 'requests/equalizer.xml', + success: function(data,status,jqXHR){ + $('band',data).each(function(){ + var id = $(this).attr('id'); + var freq = convertHz($(this).attr('freqency')); + var value = $(this).text() ? $(this).text() : 0; + if(!$('#eq_container'+id).length){ + $('#window_equalizer').append('
    '+value+'dB
    '+freq+'
    '); + $('#eq'+id).slider({ + min: -20, + max: 20, + step: 0.1, + range: "min", + value: value, + animate: true, + orientation: "vertical", + stop: function(event,ui){ + $('#'+$(this).attr('id')+'_txt').empty().append(ui.value+'dB'); + sendEQCmd({ + command:'equalizer', + val: ui.value, + band: $(this).attr('id').substr(2) + }) + }, + slide: function(event,ui){ + $('#'+$(this).attr('id')+'_txt').empty().append(ui.value+'dB'); + } + }); + }else{ + $('#eq'+id).slider({value:value}); + $('#eq'+id+'_txt').empty().append(Math.round(value*100)/100+'dB'); + } + }); + $('#preamp').slider('value',$('preamp',data).text()); + $('#preamp_txt').empty().append(Math.round($('preamp',data).text()*100)/100+'dB'); + } + }) +} +function sendVLMCmd(command,append){ var commands = command.split(';'); if(commands.length>1){ - sendBatchVLMCmd(command); + sendBatchVLMCmd(command,append); }else{ if(current_que=='main'){ $.ajax({ url: 'requests/vlm_cmd.xml', data: 'command='+encodeURIComponent(command), success: function(data,status,jqXHR){ + if($('error',data).text()){ + $('#error_container').append('
    '+$('error',data).text()+'
    '); + $('#window_error').dialog('open'); + } + if(append!=undefined){ + eval(append); + } updateStreams(); } }); }else{ $.ajax({ url: 'requests/vlm_cmd.xml', - data: 'command='+encodeURIComponent(command) + data: 'command='+encodeURIComponent(command), + success: function(data,status,jqXHR){ + if($('error',data).text()){ + $('#error_container').append('
    '+$('error',data).text()+'
    '); + $('#window_error').dialog('open'); + } + updateStreams(); + } }); } - } } -function sendBatchVLMCmd(command){ +function sendBatchVLMCmd(command,append){ var commands = command.split(';'); $.ajax({ url: 'requests/vlm_cmd.xml', data: 'command='+encodeURIComponent(commands.shift()), success:function(data,status,jqXHR){ - sendVLMCmd(commands.join(';')); + if($('error',data).text()){ + $('#error_container').append('
    '+$('error',data).text()+'
    '); + $('#window_error').dialog('open'); + } + sendVLMCmd(commands.join(';'),append); } }); } +function sendEQCmd(params){ + $.ajax({ + url: 'requests/equalizer.xml', + data: params, + success: function(data,status,jqXHR){ + updateEQ(); + } + }); +} + $(function(){ $('#libraryTree').jstree({ "xml_data":{ "ajax":{ - "url" : "requests/playlist.xml" + "url" : "requests/playlist_jstree.xml" }, "xsl" : "nest" }, @@ -317,4 +450,5 @@ $(function(){ }); updateStatus(); updateStreams(); + updateEQ(); }); diff --git a/share/lua/http/js/ui.js b/share/lua/http/js/ui.js new file mode 100644 index 0000000000..fbef9ff192 --- /dev/null +++ b/share/lua/http/js/ui.js @@ -0,0 +1,72 @@ +$(function(){ + $( "#seekSlider" ).slider({ + range: "min", + value: 0, + min: 0, + max: 100, + stop: function( event, ui ) { + $( "#currentTime" ).empty().append( format_time(Math.round((ui.value/100)*$('#seekSlider').attr('totalLength'))) ); + switch(current_que){ + case 'main': + sendCommand({'command':'seek','val':Math.round((ui.value/100)*$('#seekSlider').attr('totalLength'))}); + break; + case 'stream': + sendVLMCmd('control Current seek '+ui.value); + break; + } + } + }); + $( "#volumeSlider" ).slider({ + range: "min", + value: 50, + min: 0, + max: 100, + stop: function( event, ui ) { + $( "#currentVolume" ).empty().append( ui.value+"%" ); + sendCommand({ + 'command':'volume', + 'val':Math.round(ui.value*5.12) + }) + } + }); + $('#buttonStop').click(function(){ + switch(current_que){ + case 'main': + sendCommand({'command' : 'pl_stop'}) + break; + case 'stream': + sendVLMCmd('control Current stop'); + break; + } + return false; + }); + $('#buttonPlay').click(function(){ + if($(this).attr('state')=='stopped'){ + switch(current_que){ + case 'main': + var id = $('.jstree-clicked','#libraryTree').length>0 ? $('.jstree-clicked','#libraryTree').first().parents().first().attr('id').substr(5) : current_id; + sendCommand({'command':'pl_play','id':id}); + break; + case 'stream': + sendVLMCmd('control Current play'); + flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf"); + break; + } + }else{ + switch(current_que){ + case 'main': + sendCommand({'command':'pl_pause'}); + break; + case 'stream': + sendVLMCmd('control Current pause'); + break; + } + } + return false; + }); + $('#buttonFull').click(function(){ + sendCommand({'command':'fullscreen'}); + return false; + }); + $('#stream_host').val(stream_server); +}) \ No newline at end of file diff --git a/share/lua/http/mobile.html b/share/lua/http/mobile.html new file mode 100644 index 0000000000..885c85c4f5 --- /dev/null +++ b/share/lua/http/mobile.html @@ -0,0 +1,122 @@ + + + + VLC media player - Web Interface + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + +
    + Album Art + +
    +
    +
    +
    +
     
    +
    volume
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + +
    +
    00:00:00
    +
    +
    00:00:00
    +
    +
    +
    + + + \ No newline at end of file diff --git a/share/lua/http/mobile_browse.html b/share/lua/http/mobile_browse.html new file mode 100644 index 0000000000..314da74ef3 --- /dev/null +++ b/share/lua/http/mobile_browse.html @@ -0,0 +1,54 @@ + + + + VLC media player - Web Interface + + + + + + + + + + + + + + +
    +
    +
      +
    1. Play List
    2. +
    +
    +
    + + \ No newline at end of file diff --git a/share/lua/http/mobile_equalizer.html b/share/lua/http/mobile_equalizer.html new file mode 100644 index 0000000000..310eb406c2 --- /dev/null +++ b/share/lua/http/mobile_equalizer.html @@ -0,0 +1,70 @@ + + + + VLC media player - Web Interface + + + + + + + + + + + + + + +
    +
    +
    Preamp: 0dB
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/share/lua/http/mobile_view.html b/share/lua/http/mobile_view.html new file mode 100644 index 0000000000..b84b2d7652 --- /dev/null +++ b/share/lua/http/mobile_view.html @@ -0,0 +1,55 @@ + + + + VLC media player - Web Interface + + + + + + + + + + + + + + + +
    + +
    + + + \ No newline at end of file diff --git a/share/lua/http/requests/playlist.xml b/share/lua/http/requests/playlist.xml index d8bbe02eb2..23fdb64b95 100644 --- a/share/lua/http/requests/playlist.xml +++ b/share/lua/http/requests/playlist.xml @@ -6,25 +6,25 @@ vim:syntax=lua < - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > < Copyright (C) 2005-2006 the VideoLAN team < $Id$ -< +< < Authors: Antoine Cellerier -< +< < This program is free software; you can redistribute it and/or modify < it under the terms of the GNU General Public License as published by < the Free Software Foundation; either version 2 of the License, or < (at your option) any later version. -< +< < This program is distributed in the hope that it will be useful, < but WITHOUT ANY WARRANTY; without even the implied warranty of < MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the < GNU General Public License for more details. -< +< < You should have received a copy of the GNU General Public License < along with this program; if not, write to the Free Software < Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. < - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> ]] ?> - + ' ..name.. '') - for _, child in ipairs(item.children) do - print_playlist(child) - end - print('') - else - for _, child in ipairs(item.children) do - print_playlist(child) - end - end + print('') + for _, child in ipairs(item.children) do + print_playlist(child) + end + print('') else local name, path = vlc.strings.convert_xml_special_chars(item.name or "", item.path or "") local current_item = vlc.input.item() @@ -63,7 +57,7 @@ function print_playlist(item) current = 'current="current"' end end - print('' ..name.. '') + print('') end end @@ -82,4 +76,3 @@ end --a(p) --Uncomment to debug print_playlist(p) ?> - \ No newline at end of file diff --git a/share/lua/http/requests/playlist_jstree.xml b/share/lua/http/requests/playlist_jstree.xml new file mode 100644 index 0000000000..d8bbe02eb2 --- /dev/null +++ b/share/lua/http/requests/playlist_jstree.xml @@ -0,0 +1,85 @@ +'?> + +< playlist.xml: VLC media player web interface +< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > +< Copyright (C) 2005-2006 the VideoLAN team +< $Id$ +< +< Authors: Antoine Cellerier +< +< This program is free software; you can redistribute it and/or modify +< it under the terms of the GNU General Public License as published by +< the Free Software Foundation; either version 2 of the License, or +< (at your option) any later version. +< +< This program is distributed in the hope that it will be useful, +< but WITHOUT ANY WARRANTY; without even the implied warranty of +< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +< GNU General Public License for more details. +< +< You should have received a copy of the GNU General Public License +< along with this program; if not, write to the Free Software +< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. +< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> +]] ?> + +' ..name.. '') + for _, child in ipairs(item.children) do + print_playlist(child) + end + print('') + else + for _, child in ipairs(item.children) do + print_playlist(child) + end + end + else + local name, path = vlc.strings.convert_xml_special_chars(item.name or "", item.path or "") + local current_item = vlc.input.item() + local current = "" + -- Is the item the one currently played + if(current_item ~= nil) then + if(vlc.input.item().uri(current_item) == path) then + current = 'current="current"' + end + end + print('' ..name.. '') + end +end + +local p +if _GET["search"] then + if _GET["search"] ~= "" then + _G.search_key = _GET["search"] + else + _G.search_key = nil + end + local key = vlc.strings.decode_uri(_GET["search"]) + p = vlc.playlist.search(key) +else + p = vlc.playlist.get() +end +--a(p) --Uncomment to debug +print_playlist(p) +?> + \ No newline at end of file diff --git a/share/lua/http/view.html b/share/lua/http/view.html index e1d646b9ac..99fd531d60 100644 --- a/share/lua/http/view.html +++ b/share/lua/http/view.html @@ -1,16 +1,39 @@ - + VLC media player - Flash Viewer + + - - + +