From 60f43b5842f94aa64d08c20257a3dc554733cbbf Mon Sep 17 00:00:00 2001 From: sb1066 Date: Sun, 11 Jul 2010 17:33:04 +0000 Subject: [PATCH] Added a media player that uses the VLC plugin API --- src/webui/static/app/tvheadend.js | 132 +++++++++++++++++++++++ src/webui/static/icons/arrow_out.png | Bin 0 -> 594 bytes src/webui/static/icons/control_pause.png | Bin 0 -> 598 bytes src/webui/static/icons/control_play.png | Bin 0 -> 592 bytes src/webui/static/icons/control_stop.png | Bin 0 -> 403 bytes src/webui/static/icons/eye.png | Bin 0 -> 750 bytes src/webui/static/icons/sound.png | Bin 0 -> 610 bytes 7 files changed, 132 insertions(+) create mode 100644 src/webui/static/icons/arrow_out.png create mode 100644 src/webui/static/icons/control_pause.png create mode 100644 src/webui/static/icons/control_play.png create mode 100644 src/webui/static/icons/control_stop.png create mode 100644 src/webui/static/icons/eye.png create mode 100644 src/webui/static/icons/sound.png diff --git a/src/webui/static/app/tvheadend.js b/src/webui/static/app/tvheadend.js index bb2ed299..132b7484 100644 --- a/src/webui/static/app/tvheadend.js +++ b/src/webui/static/app/tvheadend.js @@ -27,6 +27,138 @@ tvheadend.help = function(title, pagename) { }}); } +/** + * Displays a mediaplayer using VLC plugin + */ +tvheadend.VLC = function(url) { + var vlc = document.createElement('embed'); + vlc.setAttribute('type', 'application/x-vlc-plugin'); + vlc.setAttribute('pluginspage', 'http://www.videolan.org'); + vlc.setAttribute('version', 'version="VideoLAN.VLCPlugin.2'); + vlc.setAttribute('width', '507'); + vlc.setAttribute('height', '384'); + vlc.setAttribute('autoplay', 'yes'); + vlc.setAttribute('id', 'vlc'); + if(url) { + vlc.setAttribute('src', url); + } + + var selectChannel = new Ext.form.ComboBox({ + loadingText: 'Loading...', + width: 200, + displayField:'name', + store: tvheadend.channels, + mode: 'local', + editable: false, + triggerAction: 'all', + emptyText: 'Select channel...' + }); + + selectChannel.on('select', function(c, r) { + var url = makeStreamPrefix() + r.data.chid; + var chName = r.data.name; + + if(vlc.playlist.isPlaying) { + vlc.playlist.stop(); + } + if(vlc.playlist.items.count) { + vlc.playlist.items.clear(); + } + + vlc.playlist.add(url, chName, ""); + vlc.playlist.play(); + vlc.audio.volume = slider.getValue(); + } + ); + + var slider = new Ext.Slider({ + width: 135, + height: 20, + value: 90, + increment: 1, + minValue: 0, + maxValue: 100, + }); + + var sliderLabel = new Ext.form.Label(); + sliderLabel.setText("90%"); + slider.addListener('change', function() { + if(vlc.playlist.isPlaying) { + vlc.audio.volume = slider.getValue(); + sliderLabel.setText(vlc.audio.volume + '%'); + } else { + sliderLabel.setText(slider.getValue() + '%'); + } + }); + + var win = new Ext.Window({ + title: 'VLC Player', + layout:'fit', + width: 507 + 14, + height: 384 + 56, + constrainHeader: true, + iconCls: 'eye', + resizable: false, + tbar: [ + selectChannel, + '-', + { + iconCls: 'control_play', + tooltip: 'Play', + handler: function() { + if(vlc.playlist.items.count && !vlc.playlist.isPlaying) { + vlc.playlist.play(); + } + } + }, + { + iconCls: 'control_pause', + tooltip: 'Pause', + handler: function() { + if(vlc.playlist.items.count) { + vlc.playlist.togglePause(); + } + } + }, + { + iconCls: 'control_stop', + tooltip: 'Stop', + handler: function() { + if(vlc.playlist.items.count) { + vlc.playlist.stop(); + } + } + }, + '-', + { + iconCls: 'control_fullscreen', + tooltip: 'Fullscreen', + handler: function() { + if(vlc.playlist.isPlaying) { + vlc.video.toggleFullscreen(); + } + } + }, + '-', + { + iconCls: 'control_volume', + tooltip: 'Volume', + disabled: true + }, + ], + items: [vlc] + }); + + win.on('render', function() { + win.getTopToolbar().add(slider); + win.getTopToolbar().add(new Ext.Toolbar.Spacer()); + win.getTopToolbar().add(new Ext.Toolbar.Spacer()); + win.getTopToolbar().add(new Ext.Toolbar.Spacer()); + win.getTopToolbar().add(sliderLabel); + }); + + win.show(); +}; /** * This function creates top level tabs based on access so users without diff --git a/src/webui/static/icons/arrow_out.png b/src/webui/static/icons/arrow_out.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9bc42bec16e3077a9680e7af0f90395bfeb60c GIT binary patch literal 594 zcmV-Y0%pKpR5(n-OJ3xTo| zzV{Az-rC_Vje#(D=jSF0=P$d$OcdrqWdZ50OISNyhHKXf!jg068_0ZrhDT>{L~4Gy zBdqY8Z{N|1SMT6qEsm9X5`57DGIJ6{tUiU*w*<03GFWKb!_-I5B@^$yqd8xVVYQKh zR0+dTu)vlxgG|$F-~JTf!pHvB;^}=nIGMw(LqWZ0Ajmc)rbZwghz$N6FuFDPw?M3V zxyd6>bK=mgT-5{T&WPHE+aleX_AmP13}~n2@i(LDRmJ8PMrCl_&@?^QbAJr{3Xe7{ zRYXL~lWa_vCNY#Ts)2%lP|*kDnyzJ7?dSAQ`{;tavxCB5aI&_5*@FmdS#$HE!Hso; z?9Gj1PKm*v6<|v1p?jjC$@D`cYYE)_AVDgN3~tc{;W|CxdRiyDU-Jm$-Iy+k=wIpu zaqU^Lc$`4uXdceI71qtpa9aZ_T0~1>NOA<)R1XMW9DzMQjIr$@2E+2ogl@2IS%W^B gtbN=AP4XIk0RxY;jV+3>Hvj+t07*qoM6N<$f-d$A%>V!Z literal 0 HcmV?d00001 diff --git a/src/webui/static/icons/control_pause.png b/src/webui/static/icons/control_pause.png new file mode 100644 index 0000000000000000000000000000000000000000..2d9ce9c4ec4b787b77e2407809c8887b6252dc6e GIT binary patch literal 598 zcmV-c0;&CpP)U3VE{tZoOXQ3gborPd)C!*bfsFfgUA%b`K z{k54{z0H}ACRrHvW^d-rdyicUV+{VYtX~gCqfs0|(-=vN2o1PiuPW{>+#Atov}dlj zm>FQRf_YAoB-!b7g57TC=llI0*6TIQX0twmlwz@1Su_y<#c()O27`fy#f%p1x~?-# z)7Wme<7b=AhIKj}t=(=bMjvNzr~MuZg=Ct#TCD`Id5F*FgY9+;-ENndyrfd8-V+sI zk|x?lbD>axN~J2Ai^W%{R^I>_0Z9u6gEF#73lqsO`axO|3~qzj{hRS`0}LC%>-AD? zlFkeU5t@ED93Che0EA(j5rE6(g7f(t5ddbb)O7oPG}&BpJRae6I)RyiO6J&XwmSe5 z5k7R5;6} zlgp~&KoEw{L*wq6jM9+RMU)_iNO6K~b@$|K=nj zb2!5=4Mjq_zrU*f>U2#vSVnMZ9ja4cY`AdOM*t}k^goWqfa3Iq(>2kSH;P81hAqIyBm_{t1>+!KRdtb~{1AK7>C~ zD-Nov`UX!X6ET_La7f{B_|*cRuZGR%^C`gjd@jmW6h*+;8;{2{8ja|Fzf-YTq+l@k zGLg?!DijI~9$+CG0P)O;^z5vZ zY!uIB*x&E}vNJj4{?GTJBigE^o7UKdzE#&EBXnfjM2N9qUNJ=7T*(!I*v$dVF@wV! zPcbfCO)dpCHwm6#49koVc}1IZ;f0opGWdxBx;Rl@XzG}46S&UgQ6wI6lQE987w+r= zQ{sp)?}bM^PWW=I5Rl}zuENrQ28Pt;CX(qKOcDU|M8F&Z%jVGSZA7t& zSX&s1bi|{*v*DgAz3ST9+K6Us3~0Q9*~BWe6PID=&0x|wWdf!IWgI(}6lv9v-FpSS zw1U9OL{Ex%ACuJL>=wxTZg0 zEf8`!jsrze5UvA~SqG-HeEY!{P)iC{?3#nq?S616TB~hnMW{0-6j9tLvf?&u+XiC{ z?O_E0jiYQZlqIojGL$5a1qk9N)mlxpmZq1W6gHT`ec`8K>j$jl3}`WfukS z{=!u2#P1a^U!H8Xl5T`7??NT1t zUc_pqB=&-xQ}oxwg~5^6HaUDuDLGXE;y3!@QP_pOFSc-kKKIu gX8xa5{%_a#2W_ovs9z>%07*qoM6N<$f|edvg8%>k literal 0 HcmV?d00001 diff --git a/src/webui/static/icons/sound.png b/src/webui/static/icons/sound.png new file mode 100644 index 0000000000000000000000000000000000000000..6056d234a9818d248987389d4a621e5c83ce0851 GIT binary patch literal 610 zcmV-o0-gPdP)FDRfPcVFW5d%9V=z{?A#;oriL5xO+n6O2X~nf!lQuE^VWXpgu83qI(qCF{ zS}dqc=wWy-JjhR6YYDxINHb)T^nMSh)vA20R`F7)lzCSCZF94My}d73T>N+m zpyXWPL`#FF;s+j3t(LL2R!6+EP98p9G9EaJe<5S)o@#CPu0JyV*YBbiNC<>y{C`3_2 zFc^fUC0P=`0GC2D0rmxry!i<{eh#|t2UjSV*w|QyY37m5W)KQZKoA6m%^;bK|K7sb zq~^Y!1U(%y>Cs5W^^bz?JUQeR7IK)M&$43OYdMwDJVcVBtSjl_Ar8Hmr2)a$eK-tv zNC4d)(7D`Piq~gVUR7m2k$BH5O6=$i%I6Kpa_sVNy!&j)9UKPT@*VWNNNm+UIUciF wPJ00!a`S;oH}3WS@hUTDnx*^y9@F3E2OYGed{u8eJ^%m!07*qoM6N<$f+a~A3jhEB literal 0 HcmV?d00001