private void epg_GuideDataEvent(object sender, EPG.GuideDataEventArgs fe)
{
Trace.WriteLineIf(EPG.trace.TraceInfo, "MainForm.epg_GuideDataEvent(" + fe.Type + ", " + fe.Identifier + ")");
if (this.currentGraphBuilder is IBDA)
{
IGuideData guideData = (this.currentGraphBuilder as IBDA).TransportInformationFilter as IGuideData;
switch (fe.Type)
{
case EPG.GuideDataEventType.GuideDataAcquired:
(this.currentGraphBuilder as IEPG).EPG.UpdateAll(guideData);
UpdateEPG();
break;
case EPG.GuideDataEventType.ServiceChanged:
{
DateTime now = DateTime.Now;
if (fe.Identifier != null || (fe.Identifier == null && (DateTime.Now - this.lastAllServiceEPGUpdate > epgUpdateTimeOut)))
{
this.lastAllServiceEPGUpdate = now;
(this.currentGraphBuilder as IEPG).EPG.UpdateService(fe.Identifier, (this.currentGraphBuilder as IBDA).TuningSpace, guideData);
UpdateEPG();
}
}
break;
case EPG.GuideDataEventType.ProgramChanged:
{
DateTime now = DateTime.Now;
if (fe.Identifier != null || (fe.Identifier == null && (DateTime.Now - this.lastAllProgramEPGUpdate > epgUpdateTimeOut)))
{
this.lastAllProgramEPGUpdate = now;
(this.currentGraphBuilder as IEPG).EPG.UpdateProgram(fe.Identifier, guideData);
UpdateEPG();
}
}
break;
case EPG.GuideDataEventType.ScheduleEntryChanged:
{
DateTime now = DateTime.Now;
if (fe.Identifier != null || (fe.Identifier == null && (now - this.lastAllScheduleEPGUpdate > epgUpdateTimeOut)))
{
this.lastAllScheduleEPGUpdate = now;
(this.currentGraphBuilder as IEPG).EPG.UpdateSchedule(fe.Identifier, guideData);
UpdateEPG();
}
}
break;
}
}
}