From: <mas...@us...> - 2007-09-17 16:30:03
|
Revision: 49 http://mp-webinterface.svn.sourceforge.net/mp-webinterface/?rev=49&view=rev Author: maschine Date: 2007-09-17 09:29:53 -0700 (Mon, 17 Sep 2007) Log Message: ----------- Changes by gemx and my improvements to guide channel group chosing. Modified Paths: -------------- trunk/Version2/Web App/MPW/App_Code/Utils.cs trunk/Version2/Web App/MPW/App_GlobalResources/Resource.de.resx trunk/Version2/Web App/MPW/App_GlobalResources/Resource.resx trunk/Version2/Web App/MPW/Bin/DirectShowLib.dll trunk/Version2/Web App/MPW/Bin/TVDatabase.dll trunk/Version2/Web App/MPW/Bin/TVLibrary.dll trunk/Version2/Web App/MPW/Bin/TvBusinessLayer.dll trunk/Version2/Web App/MPW/Bin/TvControl.dll trunk/Version2/Web App/MPW/Bin/TvLibrary.Interfaces.dll trunk/Version2/Web App/MPW/Default.aspx trunk/Version2/Web App/MPW/Default.aspx.cs trunk/Version2/Web App/MPW/NowNext.aspx trunk/Version2/Web App/MPW/NowNext.aspx.cs trunk/Version2/Web App/MPW/web.config Added Paths: ----------- trunk/Version2/Web App/MPW/Images/osd_play_nofocus.png trunk/Version2/Web App/MPW/Images/play_enabled.png trunk/Version2/Web App/MPW/JS/boxover.js Modified: trunk/Version2/Web App/MPW/App_Code/Utils.cs =================================================================== --- trunk/Version2/Web App/MPW/App_Code/Utils.cs 2007-07-24 13:26:50 UTC (rev 48) +++ trunk/Version2/Web App/MPW/App_Code/Utils.cs 2007-09-17 16:29:53 UTC (rev 49) @@ -138,5 +138,26 @@ ScheduleType.Items.Add(new ListItem(Resources.Resource.WorkingDays, ((int)ScheduleRecordingType.WorkingDays).ToString())); } + public static TvResult StartTimeShift(int idChannel,ref string rtspURL) + { + VirtualCard vcard; + TvResult result; + User me = new User(); + if (RemoteControl.Instance.IsTimeShifting(ref me)) + RemoteControl.Instance.StopTimeShifting(ref me); + try + { + result = RemoteControl.Instance.StartTimeShifting(ref me, idChannel, out vcard); + } + catch (Exception) + { + return TvResult.UnknownError; + } + if (result == TvResult.Succeeded) + { + rtspURL = vcard.RTSPUrl; + } + return result; + } } } \ No newline at end of file Modified: trunk/Version2/Web App/MPW/App_GlobalResources/Resource.de.resx =================================================================== --- trunk/Version2/Web App/MPW/App_GlobalResources/Resource.de.resx 2007-07-24 13:26:50 UTC (rev 48) +++ trunk/Version2/Web App/MPW/App_GlobalResources/Resource.de.resx 2007-09-17 16:29:53 UTC (rev 49) @@ -117,6 +117,9 @@ <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> + <data name="ChannelGroup" xml:space="preserve"> + <value>Programmgruppe</value> + </data> <data name="Daily" xml:space="preserve"> <value>Täglich</value> <comment>ScheduleType</comment> @@ -175,10 +178,19 @@ <value>Timer</value> <comment>Navigation</comment> </data> + <data name="ScheduleThisProgram" xml:space="preserve"> + <value>Diese Sendung aufzeichnen</value> + </data> <data name="Search" xml:space="preserve"> <value>Suchen</value> <comment>Navigation</comment> </data> + <data name="Update" xml:space="preserve"> + <value>Aktualisieren</value> + </data> + <data name="WatchThisChannel" xml:space="preserve"> + <value>Diesen Kanal anschauen</value> + </data> <data name="Weekends" xml:space="preserve"> <value>Weekends</value> <comment>ScheduleType</comment> Modified: trunk/Version2/Web App/MPW/App_GlobalResources/Resource.resx =================================================================== --- trunk/Version2/Web App/MPW/App_GlobalResources/Resource.resx 2007-07-24 13:26:50 UTC (rev 48) +++ trunk/Version2/Web App/MPW/App_GlobalResources/Resource.resx 2007-09-17 16:29:53 UTC (rev 49) @@ -117,6 +117,9 @@ <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> + <data name="ChannelGroup" xml:space="preserve"> + <value>Programmgruppe</value> + </data> <data name="Daily" xml:space="preserve"> <value>Daily</value> <comment>ScheduleType</comment> @@ -181,10 +184,19 @@ <value>Schedules</value> <comment>Navigation</comment> </data> + <data name="ScheduleThisProgram" xml:space="preserve"> + <value>ScheduleThisProgram</value> + </data> <data name="Search" xml:space="preserve"> <value>Search</value> <comment>Navigation</comment> </data> + <data name="Update" xml:space="preserve"> + <value>Update</value> + </data> + <data name="WatchThisChannel" xml:space="preserve"> + <value>Watch this channel</value> + </data> <data name="Weekends" xml:space="preserve"> <value>Weekends</value> <comment>ScheduleType</comment> Modified: trunk/Version2/Web App/MPW/Bin/DirectShowLib.dll =================================================================== (Binary files differ) Modified: trunk/Version2/Web App/MPW/Bin/TVDatabase.dll =================================================================== (Binary files differ) Modified: trunk/Version2/Web App/MPW/Bin/TVLibrary.dll =================================================================== (Binary files differ) Modified: trunk/Version2/Web App/MPW/Bin/TvBusinessLayer.dll =================================================================== (Binary files differ) Modified: trunk/Version2/Web App/MPW/Bin/TvControl.dll =================================================================== (Binary files differ) Modified: trunk/Version2/Web App/MPW/Bin/TvLibrary.Interfaces.dll =================================================================== (Binary files differ) Modified: trunk/Version2/Web App/MPW/Default.aspx =================================================================== --- trunk/Version2/Web App/MPW/Default.aspx 2007-07-24 13:26:50 UTC (rev 48) +++ trunk/Version2/Web App/MPW/Default.aspx 2007-09-17 16:29:53 UTC (rev 49) @@ -1,17 +1,22 @@ -<%@ Page Language="C#" MasterPageFile="~/MPW.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %> -<asp:Content ID="Content1" ContentPlaceHolderID="MPWContent" Runat="Server"> - <br /> - <asp:Button ID="ButtonPrev" runat="server" Text="<" /> - <asp:Button ID="ButtonNext" runat="server" Text=">" /> - <asp:DropDownList ID="GroupDropDown" runat="server"> - </asp:DropDownList> - <asp:DropDownList ID="TimeDropDown" runat="server"> - </asp:DropDownList> - <asp:DropDownList ID="DateDropDown" runat="server"> - </asp:DropDownList> - <br /> +<%@ Page Language="C#" MasterPageFile="~/MPW.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" + Inherits="_Default" Title="Untitled Page" %> + +<asp:Content ID="Content1" ContentPlaceHolderID="MPWContent" runat="Server"> <asp:UpdatePanel ID="GuideUpdatePanel" runat="server" UpdateMode="Conditional"> <ContentTemplate> + <br /> + <asp:Label ID="LabelChannelGroup" runat="server" Text="Label"></asp:Label> + <asp:DropDownList ID="DropDownListChannelGroups" runat="server" OnSelectedIndexChanged="groupChosen" AutoPostBack="True"> + </asp:DropDownList> + <asp:Button ID="ButtonPrev" runat="server" Text="<" /> + <asp:Button ID="ButtonNext" runat="server" Text=">" /> + <asp:DropDownList ID="GroupDropDown" runat="server"> + </asp:DropDownList> + <asp:DropDownList ID="TimeDropDown" runat="server"> + </asp:DropDownList> + <asp:DropDownList ID="DateDropDown" runat="server"> + </asp:DropDownList> + <br /> <asp:Table ID="Guide" runat="server" Width="90%"> </asp:Table> </ContentTemplate> @@ -19,4 +24,3 @@ </Triggers> </asp:UpdatePanel> </asp:Content> - Modified: trunk/Version2/Web App/MPW/Default.aspx.cs =================================================================== --- trunk/Version2/Web App/MPW/Default.aspx.cs 2007-07-24 13:26:50 UTC (rev 48) +++ trunk/Version2/Web App/MPW/Default.aspx.cs 2007-09-17 16:29:53 UTC (rev 49) @@ -17,8 +17,45 @@ private DateTime guideStart; private DateTime guideEnd; + private int chosengroup = 0; + + IList groups; + IList channels; + + //A new Businesslayer + TvBusinessLayer layer = new TvBusinessLayer(); + protected void Page_Load(object sender, EventArgs e) { + //Establish the connection to the TV Server and the DB. + MPWUtils.SetupConnection(); + + // Get a list of all tv-channels + if (!IsPostBack) + { + // List all groups + groups = ChannelGroup.ListAll(); + + // Prepare DropDown list for channel groups. + LabelChannelGroup.Text = Resources.Resource.ChannelGroup; + DropDownListChannelGroups.Items.Clear(); + foreach (ChannelGroup group in groups) + DropDownListChannelGroups.Items.Add(new ListItem(group.GroupName, group.IdGroup.ToString())); + DropDownListChannelGroups.SelectedIndex = chosengroup; + } + + updateContents(); + } + + /// <summary> + /// Method to update all visible content. + /// </summary> + protected void updateContents() + { + chosengroup = Int32.Parse(DropDownListChannelGroups.SelectedValue); + ChannelGroup group = ChannelGroup.Retrieve(chosengroup); + channels = layer.GetTVGuideChannelsForGroup(group.IdGroup); + int mins = DateTime.Now.Minute; guideStart = DateTime.Now.Subtract(new TimeSpan(0, mins, 0)); if (mins >= 30) @@ -28,22 +65,6 @@ guideEnd = guideStart.AddHours(3); - //Establish the connection to the TV Server and the DB. - MPWUtils.SetupConnection(); - - // Get a list of all tv-channels - IList channels = Channel.ListAll(); - - // List all groups - IList groups = ChannelGroup.ListAll(); - - // Remove non-TV channels - foreach (Channel channel in channels) - { - if (!channel.IsTv) - channels.Remove(channel); - } - //The Time TableRow timerow = new TableRow(); TableCell spacer = new TableCell(); @@ -61,6 +82,8 @@ //Iterate through all the channels foreach (Channel channel in channels) { + if (!channel.IsTv) + continue; TableRow r = new TableRow(); TableCell cell_channel = new TableCell(); TableCell cell_program = new TableCell(); @@ -160,4 +183,15 @@ Guide.Rows.Add(r); } } + + /// <summary> + /// Is called if another channel group is chosen. + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + protected void groupChosen(object sender, EventArgs e) + { + Guide.Controls.Clear(); + updateContents(); + } } Added: trunk/Version2/Web App/MPW/Images/osd_play_nofocus.png =================================================================== (Binary files differ) Property changes on: trunk/Version2/Web App/MPW/Images/osd_play_nofocus.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/Version2/Web App/MPW/Images/play_enabled.png =================================================================== (Binary files differ) Property changes on: trunk/Version2/Web App/MPW/Images/play_enabled.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/Version2/Web App/MPW/JS/boxover.js =================================================================== --- trunk/Version2/Web App/MPW/JS/boxover.js (rev 0) +++ trunk/Version2/Web App/MPW/JS/boxover.js 2007-09-17 16:29:53 UTC (rev 49) @@ -0,0 +1,372 @@ +/* --- BoxOver --- +/* --- v 2.1 17th June 2006 +By Oliver Bryant with help of Matthew Tagg +http://boxover.swazz.org */ + +if (typeof document.attachEvent!='undefined') { + window.attachEvent('onload',init); + document.attachEvent('onmousemove',moveMouse); + document.attachEvent('onclick',checkMove); } +else { + window.addEventListener('load',init,false); + document.addEventListener('mousemove',moveMouse,false); + document.addEventListener('click',checkMove,false); +} + +var oDv=document.createElement("div"); +var dvHdr=document.createElement("div"); +var dvBdy=document.createElement("div"); +var windowlock,boxMove,fixposx,fixposy,lockX,lockY,fixx,fixy,ox,oy,boxLeft,boxRight,boxTop,boxBottom,evt,mouseX,mouseY,boxOpen,totalScrollTop,totalScrollLeft; +boxOpen=false; +ox=10; +oy=10; +lockX=0; +lockY=0; + +function init() { + oDv.appendChild(dvHdr); + oDv.appendChild(dvBdy); + oDv.style.position="absolute"; + oDv.style.visibility='hidden'; + document.body.appendChild(oDv); +} + +function defHdrStyle() { + dvHdr.innerHTML='<img style="vertical-align:middle" src="info.gif"> '+dvHdr.innerHTML; + dvHdr.style.fontWeight='bold'; + dvHdr.style.width='200px'; + dvHdr.style.fontFamily='arial'; + dvHdr.style.border='1px solid #A5CFE9'; + dvHdr.style.padding='3'; + dvHdr.style.fontSize='11'; + dvHdr.style.color='#4B7A98'; + dvHdr.style.background='#D5EBF9'; + dvHdr.style.filter='alpha(opacity=90)'; // IE + dvHdr.style.opacity='0.85'; // FF +} + +function defBdyStyle() { + dvBdy.style.borderBottom='1px solid #A5CFE9'; + dvBdy.style.borderLeft='1px solid #A5CFE9'; + dvBdy.style.borderRight='1px solid #A5CFE9'; + dvBdy.style.width='200px'; + dvBdy.style.fontFamily='arial'; + dvBdy.style.fontSize='11'; + dvBdy.style.padding='3'; + dvBdy.style.color='#1B4966'; + dvBdy.style.background='#FFFFFF'; + dvBdy.style.filter='alpha(opacity=90)'; // IE + dvBdy.style.opacity='0.85'; // FF +} + +function checkElemBO(txt) { +if (!txt || typeof(txt) != 'string') return false; +if ((txt.indexOf('header')>-1)&&(txt.indexOf('body')>-1)&&(txt.indexOf('[')>-1)&&(txt.indexOf('[')>-1)) + return true; +else + return false; +} + +function scanBO(curNode) { + if (checkElemBO(curNode.title)) { + curNode.boHDR=getParam('header',curNode.title); + curNode.boBDY=getParam('body',curNode.title); + curNode.boCSSBDY=getParam('cssbody',curNode.title); + curNode.boCSSHDR=getParam('cssheader',curNode.title); + curNode.IEbugfix=(getParam('hideselects',curNode.title)=='on')?true:false; + curNode.fixX=parseInt(getParam('fixedrelx',curNode.title)); + curNode.fixY=parseInt(getParam('fixedrely',curNode.title)); + curNode.absX=parseInt(getParam('fixedabsx',curNode.title)); + curNode.absY=parseInt(getParam('fixedabsy',curNode.title)); + curNode.offY=(getParam('offsety',curNode.title)!='')?parseInt(getParam('offsety',curNode.title)):10; + curNode.offX=(getParam('offsetx',curNode.title)!='')?parseInt(getParam('offsetx',curNode.title)):10; + curNode.fade=(getParam('fade',curNode.title)=='on')?true:false; + curNode.fadespeed=(getParam('fadespeed',curNode.title)!='')?getParam('fadespeed',curNode.title):0.04; + curNode.delay=(getParam('delay',curNode.title)!='')?parseInt(getParam('delay',curNode.title)):0; + if (getParam('requireclick',curNode.title)=='on') { + curNode.requireclick=true; + document.all?curNode.attachEvent('onclick',showHideBox):curNode.addEventListener('click',showHideBox,false); + document.all?curNode.attachEvent('onmouseover',hideBox):curNode.addEventListener('mouseover',hideBox,false); + } + else {// Note : if requireclick is on the stop clicks are ignored + if (getParam('doubleclickstop',curNode.title)!='off') { + document.all?curNode.attachEvent('ondblclick',pauseBox):curNode.addEventListener('dblclick',pauseBox,false); + } + if (getParam('singleclickstop',curNode.title)=='on') { + document.all?curNode.attachEvent('onclick',pauseBox):curNode.addEventListener('click',pauseBox,false); + } + } + curNode.windowLock=getParam('windowlock',curNode.title).toLowerCase()=='off'?false:true; + curNode.title=''; + curNode.hasbox=1; + } + else + curNode.hasbox=2; +} + + +function getParam(param,list) { + var reg = new RegExp('([^a-zA-Z]' + param + '|^' + param + ')\\s*=\\s*\\[\\s*(((\\[\\[)|(\\]\\])|([^\\]\\[]))*)\\s*\\]'); + var res = reg.exec(list); + var returnvar; + if(res) + return res[2].replace('[[','[').replace(']]',']'); + else + return ''; +} + +function Left(elem){ + var x=0; + if (elem.calcLeft) + return elem.calcLeft; + var oElem=elem; + while(elem){ + if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderLeftWidth)))&&(x!=0)) + x+=parseInt(elem.currentStyle.borderLeftWidth); + x+=elem.offsetLeft; + elem=elem.offsetParent; + } + oElem.calcLeft=x; + return x; + } + +function Top(elem){ + var x=0; + if (elem.calcTop) + return elem.calcTop; + var oElem=elem; + while(elem){ + if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderTopWidth)))&&(x!=0)) + x+=parseInt(elem.currentStyle.borderTopWidth); + x+=elem.offsetTop; + elem=elem.offsetParent; + } + oElem.calcTop=x; + return x; + +} + +var ah,ab; +function applyStyles() { + if(ab) + oDv.removeChild(dvBdy); + if (ah) + oDv.removeChild(dvHdr); + dvHdr=document.createElement("div"); + dvBdy=document.createElement("div"); + CBE.boCSSBDY?dvBdy.className=CBE.boCSSBDY:defBdyStyle(); + CBE.boCSSHDR?dvHdr.className=CBE.boCSSHDR:defHdrStyle(); + dvHdr.innerHTML=CBE.boHDR; + dvBdy.innerHTML=CBE.boBDY; + ah=false; + ab=false; + if (CBE.boHDR!='') { + oDv.appendChild(dvHdr); + ah=true; + } + if (CBE.boBDY!=''){ + oDv.appendChild(dvBdy); + ab=true; + } +} + +var CSE,iterElem,LSE,CBE,LBE, totalScrollLeft, totalScrollTop, width, height ; +var ini=false; + +// Customised function for inner window dimension +function SHW() { + if (document.body && (document.body.clientWidth !=0)) { + width=document.body.clientWidth; + height=document.body.clientHeight; + } + if (document.documentElement && (document.documentElement.clientWidth!=0) && (document.body.clientWidth + 20 >= document.documentElement.clientWidth)) { + width=document.documentElement.clientWidth; + height=document.documentElement.clientHeight; + } + return [width,height]; +} + + +var ID=null; +function moveMouse(e) { + //boxMove=true; + e?evt=e:evt=event; + + CSE=evt.target?evt.target:evt.srcElement; + + if (!CSE.hasbox) { + // Note we need to scan up DOM here, some elements like TR don't get triggered as srcElement + iElem=CSE; + while ((iElem.parentNode) && (!iElem.hasbox)) { + scanBO(iElem); + iElem=iElem.parentNode; + } + } + + if ((CSE!=LSE)&&(!isChild(CSE,dvHdr))&&(!isChild(CSE,dvBdy))){ + if (!CSE.boxItem) { + iterElem=CSE; + while ((iterElem.hasbox==2)&&(iterElem.parentNode)) + iterElem=iterElem.parentNode; + CSE.boxItem=iterElem; + } + iterElem=CSE.boxItem; + if (CSE.boxItem&&(CSE.boxItem.hasbox==1)) { + LBE=CBE; + CBE=iterElem; + if (CBE!=LBE) { + applyStyles(); + if (!CBE.requireclick) + if (CBE.fade) { + if (ID!=null) + clearTimeout(ID); + ID=setTimeout("fadeIn("+CBE.fadespeed+")",CBE.delay); + } + else { + if (ID!=null) + clearTimeout(ID); + COL=1; + ID=setTimeout("oDv.style.visibility='visible';ID=null;",CBE.delay); + } + if (CBE.IEbugfix) {hideSelects();} + fixposx=!isNaN(CBE.fixX)?Left(CBE)+CBE.fixX:CBE.absX; + fixposy=!isNaN(CBE.fixY)?Top(CBE)+CBE.fixY:CBE.absY; + lockX=0; + lockY=0; + boxMove=true; + ox=CBE.offX?CBE.offX:10; + oy=CBE.offY?CBE.offY:10; + } + } + else if (!isChild(CSE,dvHdr) && !isChild(CSE,dvBdy) && (boxMove)) { + // The conditional here fixes flickering between tables cells. + if ((!isChild(CBE,CSE)) || (CSE.tagName!='TABLE')) { + CBE=null; + if (ID!=null) + clearTimeout(ID); + fadeOut(); + showSelects(); + } + } + LSE=CSE; + } + else if (((isChild(CSE,dvHdr) || isChild(CSE,dvBdy))&&(boxMove))) { + totalScrollLeft=0; + totalScrollTop=0; + + iterElem=CSE; + while(iterElem) { + if(!isNaN(parseInt(iterElem.scrollTop))) + totalScrollTop+=parseInt(iterElem.scrollTop); + if(!isNaN(parseInt(iterElem.scrollLeft))) + totalScrollLeft+=parseInt(iterElem.scrollLeft); + iterElem=iterElem.parentNode; + } + if (CBE!=null) { + boxLeft=Left(CBE)-totalScrollLeft; + boxRight=parseInt(Left(CBE)+CBE.offsetWidth)-totalScrollLeft; + boxTop=Top(CBE)-totalScrollTop; + boxBottom=parseInt(Top(CBE)+CBE.offsetHeight)-totalScrollTop; + doCheck(); + } + } + + if (boxMove&&CBE) { + // This added to alleviate bug in IE6 w.r.t DOCTYPE + bodyScrollTop=document.documentElement&&document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop; + bodyScrollLet=document.documentElement&&document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft; + mouseX=evt.pageX?evt.pageX-bodyScrollLet:evt.clientX-document.body.clientLeft; + mouseY=evt.pageY?evt.pageY-bodyScrollTop:evt.clientY-document.body.clientTop; + if ((CBE)&&(CBE.windowLock)) { + mouseY < -oy?lockY=-mouseY-oy:lockY=0; + mouseX < -ox?lockX=-mouseX-ox:lockX=0; + mouseY > (SHW()[1]-oDv.offsetHeight-oy)?lockY=-mouseY+SHW()[1]-oDv.offsetHeight-oy:lockY=lockY; + mouseX > (SHW()[0]-dvBdy.offsetWidth-ox)?lockX=-mouseX-ox+SHW()[0]-dvBdy.offsetWidth:lockX=lockX; + } + oDv.style.left=((fixposx)||(fixposx==0))?fixposx:bodyScrollLet+mouseX+ox+lockX+"px"; + oDv.style.top=((fixposy)||(fixposy==0))?fixposy:bodyScrollTop+mouseY+oy+lockY+"px"; + + } +} + +function doCheck() { + if ( (mouseX < boxLeft) || (mouseX >boxRight) || (mouseY < boxTop) || (mouseY > boxBottom)) { + if (!CBE.requireclick) + fadeOut(); + if (CBE.IEbugfix) {showSelects();} + CBE=null; + } +} + +function pauseBox(e) { + e?evt=e:evt=event; + boxMove=false; + evt.cancelBubble=true; +} + +function showHideBox(e) { + oDv.style.visibility=(oDv.style.visibility!='visible')?'visible':'hidden'; +} + +function hideBox(e) { + oDv.style.visibility='hidden'; +} + +var COL=0; +var stopfade=false; +function fadeIn(fs) { + ID=null; + COL=0; + oDv.style.visibility='visible'; + fadeIn2(fs); +} + +function fadeIn2(fs) { + COL=COL+fs; + COL=(COL>1)?1:COL; + oDv.style.filter='alpha(opacity='+parseInt(100*COL)+')'; + oDv.style.opacity=COL; + if (COL<1) + setTimeout("fadeIn2("+fs+")",20); +} + + +function fadeOut() { + oDv.style.visibility='hidden'; + +} + +function isChild(s,d) { + while(s) { + if (s==d) + return true; + s=s.parentNode; + } + return false; +} + +var cSrc; +function checkMove(e) { + e?evt=e:evt=event; + cSrc=evt.target?evt.target:evt.srcElement; + if ((!boxMove)&&(!isChild(cSrc,oDv))) { + fadeOut(); + if (CBE&&CBE.IEbugfix) {showSelects();} + boxMove=true; + CBE=null; + } +} + +function showSelects(){ + var elements = document.getElementsByTagName("select"); + for (i=0;i< elements.length;i++){ + elements[i].style.visibility='visible'; + } +} + +function hideSelects(){ + var elements = document.getElementsByTagName("select"); + for (i=0;i< elements.length;i++){ + elements[i].style.visibility='hidden'; + } +} \ No newline at end of file Modified: trunk/Version2/Web App/MPW/NowNext.aspx =================================================================== --- trunk/Version2/Web App/MPW/NowNext.aspx 2007-07-24 13:26:50 UTC (rev 48) +++ trunk/Version2/Web App/MPW/NowNext.aspx 2007-09-17 16:29:53 UTC (rev 49) @@ -1,12 +1,21 @@ <%@ Page Language="C#" MasterPageFile="~/MPW.master" AutoEventWireup="true" CodeFile="NowNext.aspx.cs" Inherits="Default2" Title="Untitled Page" %> +<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> + <asp:Content ID="NowNext" ContentPlaceHolderID="MPWContent" runat="Server"> - <asp:UpdatePanel ID="ContentUpdatePanel" runat="server" UpdateMode="Always"> +<script type="text/javascript" src="JS/boxover.js"></script> + <asp:UpdatePanel ID="ContentUpdatePanel" runat="server" UpdateMode="Always" > <ContentTemplate> <div> + <asp:Label ID="LabelChannelGroup" runat="server" Text="Label"></asp:Label> + <asp:DropDownList ID="DropDownListChannelGroups" runat="server"> + </asp:DropDownList> + <asp:Button ID="btnUpdate" runat="server" OnClick="btnUpdate_Click" Text="Button" /> <asp:Panel ID="NowNextPanel" runat="server"> </asp:Panel> - </div> + + </div> + </ContentTemplate> </asp:UpdatePanel> </asp:Content> Modified: trunk/Version2/Web App/MPW/NowNext.aspx.cs =================================================================== --- trunk/Version2/Web App/MPW/NowNext.aspx.cs 2007-07-24 13:26:50 UTC (rev 48) +++ trunk/Version2/Web App/MPW/NowNext.aspx.cs 2007-09-17 16:29:53 UTC (rev 49) @@ -8,7 +8,7 @@ using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; - +using TvControl; using TvDatabase; using MPW; using System.Collections.Generic; @@ -39,8 +39,22 @@ protected void Page_Load(object sender, EventArgs e) { - MPWMaster m = (MPWMaster)Page.Master; - m.Sectiontitle = Resources.Resource.NowNext; + //Establish the connection to the TV Server and the DB. + MPWUtils.SetupConnection(); + if (!IsPostBack) + { + MPWMaster m = (MPWMaster)Page.Master; + //Set language resources + m.Sectiontitle = Resources.Resource.NowNext; + LabelChannelGroup.Text = Resources.Resource.ChannelGroup; + btnUpdate.Text = Resources.Resource.Update; + + IList groups = ChannelGroup.ListAll(); + DropDownListChannelGroups.Items.Clear(); + foreach (ChannelGroup group in groups) + DropDownListChannelGroups.Items.Add(new ListItem(group.GroupName,group.IdGroup.ToString())); + DropDownListChannelGroups.SelectedIndex = 0; + } updateContents(); } @@ -52,39 +66,33 @@ //Clear everything NowNextPanel.Controls.Clear(); - //Establish the connection to the TV Server and the DB. - MPWUtils.SetupConnection(); - //A new Businesslayer TvBusinessLayer layer = new TvBusinessLayer(); //Get all schedules _schedules = Schedule.ListAll(); - //Get all groups - IList groups = ChannelGroup.ListAll(); + ChannelGroup group=ChannelGroup.Retrieve(Int32.Parse(DropDownListChannelGroups.SelectedValue)); - foreach (ChannelGroup group in groups) - { - Table groupTable = new Table(); - groupTable.CellPadding = 0; - groupTable.CellSpacing = 0; - groupTable.CssClass = "grouptable"; + Table groupTable = new Table(); + groupTable.CellPadding = 0; + groupTable.CellSpacing = 0; + groupTable.CssClass = "grouptable"; - // Seperator with group name - TableRow groupSeperatorRow = new TableRow(); - TableCell groupSeperatorCell = new TableCell(); - groupSeperatorCell.CssClass = "seperatorcell"; - groupSeperatorCell.ColumnSpan = 3; - Label groupName = new Label(); - groupName.Text = group.GroupName; - groupSeperatorCell.Controls.Add(groupName); - groupSeperatorRow.Cells.Add(groupSeperatorCell); - groupTable.Rows.Add(groupSeperatorRow); + // Seperator with group name + TableRow groupSeperatorRow = new TableRow(); + TableCell groupSeperatorCell = new TableCell(); + groupSeperatorCell.CssClass = "seperatorcell"; + groupSeperatorCell.ColumnSpan = 3; + Label groupName = new Label(); + groupName.Text = group.GroupName; + groupSeperatorCell.Controls.Add(groupName); + groupSeperatorRow.Cells.Add(groupSeperatorCell); + groupTable.Rows.Add(groupSeperatorRow); - // Get a list of all tv-channels - IList channels = layer.GetTVGuideChannelsForGroup(group.IdGroup); - List<Channel> channelstv = new List<Channel>(); + // Get a list of all tv-channels + IList channels = layer.GetTVGuideChannelsForGroup(group.IdGroup); + List<Channel> channelstv = new List<Channel>(); // Remove non TV channels foreach (Channel channel in channels) @@ -105,8 +113,17 @@ TableCell channelNameCell = new TableCell(); channelNameCell.CssClass = "namecell"; channelNameCell.ColumnSpan = 2; + ImageButton btnStartTimeShift = new ImageButton(); + btnStartTimeShift.ImageUrl = "Images/osd_play_nofocus.png"; + btnStartTimeShift.Width = 20; + btnStartTimeShift.Height = 20; + btnStartTimeShift.ToolTip = Resources.Resource.WatchThisChannel; + btnStartTimeShift.CommandName = "StartTimeshifting"; + btnStartTimeShift.CommandArgument = channel.IdChannel.ToString(); + btnStartTimeShift.Command += new CommandEventHandler(btnStartTimeShift_Command); + channelNameCell.Controls.Add(btnStartTimeShift); Label channelName = new Label(); - channelName.Text = channel.Name; + channelName.Text = " "+channel.DisplayName; channelNameCell.Controls.Add(channelName); channelNameRow.Cells.Add(channelNameCell); groupTable.Rows.Add(channelNameRow); @@ -140,10 +157,10 @@ Program next = channel.GetProgramAt(now.EndTime.AddMinutes(2)); bool[] nextRec = IsRecording(next); - lbl_program_now.Text = "<span class=\"nownext\">" + Resources.Resource.Now + ": </span>"; - lbl_program_now.Text += "<a href=\"ProgramDetail.aspx?idProgram=" + now.IdProgram + "\">" + now.Title + "</a>"; ; + lbl_program_now.Text = "<a style href=\"ProgramDetail.aspx?idProgram=" + now.IdProgram.ToString() + "\"><img border=0 src=\"Images/rec_single.png\" alt=\""+Resources.Resource.ScheduleThisProgram+"\" width=12px height=12px/></a> <span class=\"nownext\">" + Resources.Resource.Now + ": </span>"; + lbl_program_now.Text += "<div style=\"display:inline\" TITLE=\"header=["+now.Title+"] body=["+now.Description+"] fade=[on]\">" + now.Title; lbl_program_now.Text += " (" + now.StartTime.ToShortTimeString() + " - "; - lbl_program_now.Text += now.EndTime.ToShortTimeString() + ")"; + lbl_program_now.Text += now.EndTime.ToShortTimeString() + ")</div>"; cell_program.Controls.Add(lbl_program_now); if (nowRec[0]) @@ -159,10 +176,10 @@ lbl_program_next.Text = "<br /> <br />"; - lbl_program_next.Text += "<span class=\"nownext\">" + Resources.Resource.Next + ": </span>"; - lbl_program_next.Text += next.Title; + lbl_program_next.Text += "<a style href=\"ProgramDetail.aspx?idProgram=" + now.IdProgram.ToString() + "\"><img border=0 src=\"Images/rec_single.png\" alt=\""+Resources.Resource.ScheduleThisProgram+"\" width=12px height=12px/></a> <span class=\"nownext\">" + Resources.Resource.Next + ": </span>"; + lbl_program_next.Text += "<div style=\"display:inline\" TITLE=\"header=[" + next.Title + "] body=[" + next.Description + "] fade=[on]\">" + next.Title; lbl_program_next.Text += " (" + next.StartTime.ToShortTimeString() + " - "; - lbl_program_next.Text += next.EndTime.ToShortTimeString() + ")"; + lbl_program_next.Text += next.EndTime.ToShortTimeString() + ")</div>"; cell_program.Controls.Add(lbl_program_next); if (nextRec[0]) @@ -189,8 +206,22 @@ groupTable.Rows.Add(channelRow); NowNextPanel.Controls.Add(groupTable); - } + } } + + void btnStartTimeShift_Command(object sender, CommandEventArgs e) + { + string rtspURL = ""; + TvResult result=MPWUtils.StartTimeShift(Int32.Parse((string)e.CommandArgument), ref rtspURL); + if (result==TvResult.Succeeded) + ScriptManager.RegisterStartupScript(this, typeof(NowAndNext), "timeshift", "window.open('" + rtspURL + "');",true); + else + ScriptManager.RegisterStartupScript(this, typeof(NowAndNext), "timeshift", "alert('Failed to start timeshifting."+Environment.NewLine+"Reason: "+result.ToString()+"');", true); } + protected void btnUpdate_Click(object sender, EventArgs e) + { + updateContents(); + } +} Modified: trunk/Version2/Web App/MPW/web.config =================================================================== --- trunk/Version2/Web App/MPW/web.config 2007-07-24 13:26:50 UTC (rev 48) +++ trunk/Version2/Web App/MPW/web.config 2007-09-17 16:29:53 UTC (rev 49) @@ -27,7 +27,8 @@ <compilation debug="true"> <assemblies> <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> - </assemblies> + <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> + <add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies> </compilation> <httpHandlers> <remove verb="*" path="*.asmx"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |