|
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.
|