Index: TvEngine3/TVLibrary/SetupTv/Sections/Epg.cs
===================================================================
--- TvEngine3/TVLibrary/SetupTv/Sections/Epg.cs	(Revision 28136)
+++ TvEngine3/TVLibrary/SetupTv/Sections/Epg.cs	(Arbeitskopie)
@@ -31,7 +31,7 @@
     private string crcSettingsFile = DebugSettings.SettingPath("DisableCRCCheck");
 
     public Epg()
-      : this("DVB EPG") {}
+      : this("DVB EPG") { }
 
     public Epg(string name)
       : base(name)
@@ -48,6 +48,18 @@
       checkBoxAlwaysUpdate.Checked = (layer.GetSetting("generalEPGAlwaysReplace", "no").Value == "yes");
       checkboxSameTransponder.Checked = (layer.GetSetting("generalGrapOnlyForSameTransponder", "no").Value == "yes");
 
+      checkBoxUseEPGTimeSlot.Checked = (layer.GetSetting("useEPGGrabbingTimeSlot", "no").Value == "yes");
+      dateTimePickerEPGSlotEnd.Enabled = checkBoxUseEPGTimeSlot.Checked;
+      dateTimePickerEPGSlotStart.Enabled = checkBoxUseEPGTimeSlot.Checked;
+      String slotStartString = layer.GetSetting("epgTimeSlotStart", "00:00:00").Value;
+      String[] slotStartValues = slotStartString.Split(':');
+      DateTime slotStart = new DateTime(2000, 1, 1, Convert.ToInt32(slotStartValues[0]), Convert.ToInt32(slotStartValues[1]), Convert.ToInt32(slotStartValues[2]));
+      dateTimePickerEPGSlotStart.Value = slotStart;
+      String slotEndString = layer.GetSetting("epgTimeSlotEnd", "23:59:00").Value;
+      String[] slotEndValues = slotEndString.Split(':');
+      DateTime slotEnd = new DateTime(2000, 1, 1, Convert.ToInt32(slotEndValues[0]), Convert.ToInt32(slotEndValues[1]), Convert.ToInt32(slotEndValues[2]));
+      dateTimePickerEPGSlotEnd.Value = slotEnd;
+
       checkBoxEnableEPGWhileIdle.Checked = (layer.GetSetting("idleEPGGrabberEnabled", "yes").Value == "yes");
       checkBoxEnableCRCCheck.Checked = !DebugSettings.DisableCRCCheck;
       numericUpDownEpgTimeOut.Value = Convert.ToDecimal(layer.GetSetting("timeoutEPG", "10").Value);
@@ -77,6 +89,18 @@
       s.Value = checkboxSameTransponder.Checked ? "yes" : "no";
       s.Persist();
 
+      s = layer.GetSetting("useEPGGrabbingTimeSlot", "no");
+      s.Value = checkBoxUseEPGTimeSlot.Checked ? "yes" : "no";
+      s.Persist();
+
+      s = layer.GetSetting("epgTimeSlotStart", "00:00:00");
+      s.Value = dateTimePickerEPGSlotStart.Value.Hour.ToString() + ":" + dateTimePickerEPGSlotStart.Value.Minute.ToString() + ":" + dateTimePickerEPGSlotStart.Value.Second.ToString() + ":";
+      s.Persist();
+
+      s = layer.GetSetting("epgTimeSlotEnd", "23:59:00");
+      s.Value = dateTimePickerEPGSlotEnd.Value.Hour.ToString() + ":" + dateTimePickerEPGSlotEnd.Value.Minute.ToString() + ":" + dateTimePickerEPGSlotEnd.Value.Second.ToString() + ":";
+      s.Persist();
+
       DebugSettings.DisableCRCCheck = !checkBoxEnableCRCCheck.Checked;
 
       s = layer.GetSetting("idleEPGGrabberEnabled", "yes");
@@ -130,5 +154,11 @@
       edTitleTest.Text = EvalTemplate(edTitleTemplate.Text, defaults);
       edDescriptionTest.Text = EvalTemplate(edDescriptionTemplate.Text, defaults);
     }
+
+    private void checkBoxUseEPGTimeSlot_CheckedChanged(object sender, EventArgs e)
+    {
+      dateTimePickerEPGSlotEnd.Enabled = checkBoxUseEPGTimeSlot.Checked;
+      dateTimePickerEPGSlotStart.Enabled = checkBoxUseEPGTimeSlot.Checked;
+    }
   }
 }
\ No newline at end of file
Index: TvEngine3/TVLibrary/SetupTv/Sections/Epg.Designer.cs
===================================================================
--- TvEngine3/TVLibrary/SetupTv/Sections/Epg.Designer.cs	(Revision 28136)
+++ TvEngine3/TVLibrary/SetupTv/Sections/Epg.Designer.cs	(Arbeitskopie)
@@ -28,462 +28,542 @@
     /// </summary>
     private void InitializeComponent()
     {
-      this.groupBox9 = new System.Windows.Forms.GroupBox();
-      this.label31 = new System.Windows.Forms.Label();
-      this.edTitleTemplate = new System.Windows.Forms.TextBox();
-      this.label27 = new System.Windows.Forms.Label();
-      this.label28 = new System.Windows.Forms.Label();
-      this.label38 = new System.Windows.Forms.Label();
-      this.edDescriptionTemplate = new System.Windows.Forms.TextBox();
-      this.label30 = new System.Windows.Forms.Label();
-      this.edTitleTest = new System.Windows.Forms.TextBox();
-      this.label29 = new System.Windows.Forms.Label();
-      this.edDescriptionTest = new System.Windows.Forms.TextBox();
-      this.btnTest = new System.Windows.Forms.Button();
-      this.groupBox2 = new System.Windows.Forms.GroupBox();
-      this.numericUpDownEpgRefresh = new System.Windows.Forms.NumericUpDown();
-      this.numericUpDownEpgTimeOut = new System.Windows.Forms.NumericUpDown();
-      this.checkBoxEnableEPGWhileIdle = new MediaPortal.UserInterface.Controls.MPCheckBox();
-      this.label15 = new System.Windows.Forms.Label();
-      this.label14 = new System.Windows.Forms.Label();
-      this.label8 = new System.Windows.Forms.Label();
-      this.label7 = new System.Windows.Forms.Label();
-      this.groupBox5 = new System.Windows.Forms.GroupBox();
-      this.numericUpDownTSEpgTimeout = new System.Windows.Forms.NumericUpDown();
-      this.checkBoxEnableEpgWhileTimeshifting = new MediaPortal.UserInterface.Controls.MPCheckBox();
-      this.label22 = new System.Windows.Forms.Label();
-      this.label23 = new System.Windows.Forms.Label();
-      this.groupBox7 = new System.Windows.Forms.GroupBox();
-      this.checkboxSameTransponder = new MediaPortal.UserInterface.Controls.MPCheckBox();
-      this.label1 = new System.Windows.Forms.Label();
-      this.checkBoxEnableCRCCheck = new MediaPortal.UserInterface.Controls.MPCheckBox();
-      this.checkBoxAlwaysUpdate = new MediaPortal.UserInterface.Controls.MPCheckBox();
-      this.checkBoxAlwaysFillHoles = new MediaPortal.UserInterface.Controls.MPCheckBox();
-      this.tabPage1 = new System.Windows.Forms.TabPage();
-      this.tabControlEpg = new System.Windows.Forms.TabControl();
-      this.groupBox9.SuspendLayout();
-      this.groupBox2.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.numericUpDownEpgRefresh)).BeginInit();
-      ((System.ComponentModel.ISupportInitialize)(this.numericUpDownEpgTimeOut)).BeginInit();
-      this.groupBox5.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTSEpgTimeout)).BeginInit();
-      this.groupBox7.SuspendLayout();
-      this.tabPage1.SuspendLayout();
-      this.tabControlEpg.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // groupBox9
-      // 
-      this.groupBox9.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.groupBox9.Controls.Add(this.label31);
-      this.groupBox9.Controls.Add(this.edTitleTemplate);
-      this.groupBox9.Controls.Add(this.label27);
-      this.groupBox9.Controls.Add(this.label28);
-      this.groupBox9.Controls.Add(this.label38);
-      this.groupBox9.Controls.Add(this.edDescriptionTemplate);
-      this.groupBox9.Controls.Add(this.label30);
-      this.groupBox9.Controls.Add(this.edTitleTest);
-      this.groupBox9.Controls.Add(this.label29);
-      this.groupBox9.Controls.Add(this.edDescriptionTest);
-      this.groupBox9.Controls.Add(this.btnTest);
-      this.groupBox9.Location = new System.Drawing.Point(3, 200);
-      this.groupBox9.Name = "groupBox9";
-      this.groupBox9.Size = new System.Drawing.Size(457, 192);
-      this.groupBox9.TabIndex = 41;
-      this.groupBox9.TabStop = false;
-      this.groupBox9.Text = "Display options";
-      // 
-      // label31
-      // 
-      this.label31.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.label31.Location = new System.Drawing.Point(326, 80);
-      this.label31.Name = "label31";
-      this.label31.Size = new System.Drawing.Size(125, 106);
-      this.label31.TabIndex = 37;
-      this.label31.Text = "%TITLE%\r\n%DESCRIPTION%\r\n%GENRE%\r\n%STARRATING%\r\n%STARRATING_STR%\r\n%CLASSIFICATION%" +
-          "\r\n%PARENTALRATING%\r\n%NEWLINE%";
-      // 
-      // edTitleTemplate
-      // 
-      this.edTitleTemplate.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.edTitleTemplate.Location = new System.Drawing.Point(75, 19);
-      this.edTitleTemplate.Name = "edTitleTemplate";
-      this.edTitleTemplate.Size = new System.Drawing.Size(245, 20);
-      this.edTitleTemplate.TabIndex = 20;
-      // 
-      // label27
-      // 
-      this.label27.AutoSize = true;
-      this.label27.Location = new System.Drawing.Point(6, 22);
-      this.label27.Name = "label27";
-      this.label27.Size = new System.Drawing.Size(30, 13);
-      this.label27.TabIndex = 19;
-      this.label27.Text = "Title:";
-      // 
-      // label28
-      // 
-      this.label28.AutoSize = true;
-      this.label28.Location = new System.Drawing.Point(6, 48);
-      this.label28.Name = "label28";
-      this.label28.Size = new System.Drawing.Size(63, 13);
-      this.label28.TabIndex = 21;
-      this.label28.Text = "Description:";
-      // 
-      // label38
-      // 
-      this.label38.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.label38.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.label38.Location = new System.Drawing.Point(326, 16);
-      this.label38.Name = "label38";
-      this.label38.Size = new System.Drawing.Size(125, 61);
-      this.label38.TabIndex = 35;
-      this.label38.Text = "You can use any combination of the placeholders shown below";
-      // 
-      // edDescriptionTemplate
-      // 
-      this.edDescriptionTemplate.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.edDescriptionTemplate.Location = new System.Drawing.Point(75, 45);
-      this.edDescriptionTemplate.Name = "edDescriptionTemplate";
-      this.edDescriptionTemplate.Size = new System.Drawing.Size(245, 20);
-      this.edDescriptionTemplate.TabIndex = 22;
-      // 
-      // label30
-      // 
-      this.label30.AutoSize = true;
-      this.label30.Location = new System.Drawing.Point(6, 103);
-      this.label30.Name = "label30";
-      this.label30.Size = new System.Drawing.Size(30, 13);
-      this.label30.TabIndex = 23;
-      this.label30.Text = "Title:";
-      // 
-      // edTitleTest
-      // 
-      this.edTitleTest.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.edTitleTest.Location = new System.Drawing.Point(75, 100);
-      this.edTitleTest.Name = "edTitleTest";
-      this.edTitleTest.ReadOnly = true;
-      this.edTitleTest.Size = new System.Drawing.Size(245, 20);
-      this.edTitleTest.TabIndex = 24;
-      // 
-      // label29
-      // 
-      this.label29.AutoSize = true;
-      this.label29.Location = new System.Drawing.Point(6, 129);
-      this.label29.Name = "label29";
-      this.label29.Size = new System.Drawing.Size(63, 13);
-      this.label29.TabIndex = 25;
-      this.label29.Text = "Description:";
-      // 
-      // edDescriptionTest
-      // 
-      this.edDescriptionTest.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.edDescriptionTest.Location = new System.Drawing.Point(75, 126);
-      this.edDescriptionTest.Multiline = true;
-      this.edDescriptionTest.Name = "edDescriptionTest";
-      this.edDescriptionTest.ReadOnly = true;
-      this.edDescriptionTest.Size = new System.Drawing.Size(245, 58);
-      this.edDescriptionTest.TabIndex = 26;
-      // 
-      // btnTest
-      // 
-      this.btnTest.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.btnTest.Location = new System.Drawing.Point(245, 71);
-      this.btnTest.Name = "btnTest";
-      this.btnTest.Size = new System.Drawing.Size(75, 23);
-      this.btnTest.TabIndex = 27;
-      this.btnTest.Text = "Test";
-      this.btnTest.UseVisualStyleBackColor = true;
-      this.btnTest.Click += new System.EventHandler(this.btnTest_Click);
-      // 
-      // groupBox2
-      // 
-      this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.groupBox2.Controls.Add(this.numericUpDownEpgRefresh);
-      this.groupBox2.Controls.Add(this.numericUpDownEpgTimeOut);
-      this.groupBox2.Controls.Add(this.checkBoxEnableEPGWhileIdle);
-      this.groupBox2.Controls.Add(this.label15);
-      this.groupBox2.Controls.Add(this.label14);
-      this.groupBox2.Controls.Add(this.label8);
-      this.groupBox2.Controls.Add(this.label7);
-      this.groupBox2.Location = new System.Drawing.Point(235, 96);
-      this.groupBox2.Name = "groupBox2";
-      this.groupBox2.Size = new System.Drawing.Size(225, 98);
-      this.groupBox2.TabIndex = 40;
-      this.groupBox2.TabStop = false;
-      this.groupBox2.Text = "EPG grabbing while idle";
-      // 
-      // numericUpDownEpgRefresh
-      // 
-      this.numericUpDownEpgRefresh.Location = new System.Drawing.Point(86, 68);
-      this.numericUpDownEpgRefresh.Maximum = new decimal(new int[] {
+        this.groupBox9 = new System.Windows.Forms.GroupBox();
+        this.label31 = new System.Windows.Forms.Label();
+        this.edTitleTemplate = new System.Windows.Forms.TextBox();
+        this.label27 = new System.Windows.Forms.Label();
+        this.label28 = new System.Windows.Forms.Label();
+        this.label38 = new System.Windows.Forms.Label();
+        this.edDescriptionTemplate = new System.Windows.Forms.TextBox();
+        this.label30 = new System.Windows.Forms.Label();
+        this.edTitleTest = new System.Windows.Forms.TextBox();
+        this.label29 = new System.Windows.Forms.Label();
+        this.edDescriptionTest = new System.Windows.Forms.TextBox();
+        this.btnTest = new System.Windows.Forms.Button();
+        this.groupBox2 = new System.Windows.Forms.GroupBox();
+        this.numericUpDownEpgRefresh = new System.Windows.Forms.NumericUpDown();
+        this.numericUpDownEpgTimeOut = new System.Windows.Forms.NumericUpDown();
+        this.checkBoxEnableEPGWhileIdle = new MediaPortal.UserInterface.Controls.MPCheckBox();
+        this.label15 = new System.Windows.Forms.Label();
+        this.label14 = new System.Windows.Forms.Label();
+        this.label8 = new System.Windows.Forms.Label();
+        this.label7 = new System.Windows.Forms.Label();
+        this.groupBox5 = new System.Windows.Forms.GroupBox();
+        this.numericUpDownTSEpgTimeout = new System.Windows.Forms.NumericUpDown();
+        this.checkBoxEnableEpgWhileTimeshifting = new MediaPortal.UserInterface.Controls.MPCheckBox();
+        this.label22 = new System.Windows.Forms.Label();
+        this.label23 = new System.Windows.Forms.Label();
+        this.groupBox7 = new System.Windows.Forms.GroupBox();
+        this.checkboxSameTransponder = new MediaPortal.UserInterface.Controls.MPCheckBox();
+        this.label1 = new System.Windows.Forms.Label();
+        this.checkBoxEnableCRCCheck = new MediaPortal.UserInterface.Controls.MPCheckBox();
+        this.checkBoxAlwaysUpdate = new MediaPortal.UserInterface.Controls.MPCheckBox();
+        this.checkBoxAlwaysFillHoles = new MediaPortal.UserInterface.Controls.MPCheckBox();
+        this.tabPage1 = new System.Windows.Forms.TabPage();
+        this.tabControlEpg = new System.Windows.Forms.TabControl();
+        this.checkBoxUseEPGTimeSlot = new MediaPortal.UserInterface.Controls.MPCheckBox();
+        this.dateTimePickerEPGSlotStart = new System.Windows.Forms.DateTimePicker();
+        this.label2 = new System.Windows.Forms.Label();
+        this.label3 = new System.Windows.Forms.Label();
+        this.dateTimePickerEPGSlotEnd = new System.Windows.Forms.DateTimePicker();
+        this.label4 = new System.Windows.Forms.Label();
+        this.label5 = new System.Windows.Forms.Label();
+        this.groupBox9.SuspendLayout();
+        this.groupBox2.SuspendLayout();
+        ((System.ComponentModel.ISupportInitialize)(this.numericUpDownEpgRefresh)).BeginInit();
+        ((System.ComponentModel.ISupportInitialize)(this.numericUpDownEpgTimeOut)).BeginInit();
+        this.groupBox5.SuspendLayout();
+        ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTSEpgTimeout)).BeginInit();
+        this.groupBox7.SuspendLayout();
+        this.tabPage1.SuspendLayout();
+        this.tabControlEpg.SuspendLayout();
+        this.SuspendLayout();
+        // 
+        // groupBox9
+        // 
+        this.groupBox9.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                    | System.Windows.Forms.AnchorStyles.Right)));
+        this.groupBox9.Controls.Add(this.label31);
+        this.groupBox9.Controls.Add(this.edTitleTemplate);
+        this.groupBox9.Controls.Add(this.label27);
+        this.groupBox9.Controls.Add(this.label28);
+        this.groupBox9.Controls.Add(this.label38);
+        this.groupBox9.Controls.Add(this.edDescriptionTemplate);
+        this.groupBox9.Controls.Add(this.label30);
+        this.groupBox9.Controls.Add(this.edTitleTest);
+        this.groupBox9.Controls.Add(this.label29);
+        this.groupBox9.Controls.Add(this.edDescriptionTest);
+        this.groupBox9.Controls.Add(this.btnTest);
+        this.groupBox9.Location = new System.Drawing.Point(3, 281);
+        this.groupBox9.Name = "groupBox9";
+        this.groupBox9.Size = new System.Drawing.Size(457, 192);
+        this.groupBox9.TabIndex = 41;
+        this.groupBox9.TabStop = false;
+        this.groupBox9.Text = "Display options";
+        // 
+        // label31
+        // 
+        this.label31.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                    | System.Windows.Forms.AnchorStyles.Right)));
+        this.label31.Location = new System.Drawing.Point(326, 80);
+        this.label31.Name = "label31";
+        this.label31.Size = new System.Drawing.Size(125, 106);
+        this.label31.TabIndex = 37;
+        this.label31.Text = "%TITLE%\r\n%DESCRIPTION%\r\n%GENRE%\r\n%STARRATING%\r\n%STARRATING_STR%\r\n%CLASSIFICATION%" +
+            "\r\n%PARENTALRATING%\r\n%NEWLINE%";
+        // 
+        // edTitleTemplate
+        // 
+        this.edTitleTemplate.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                    | System.Windows.Forms.AnchorStyles.Right)));
+        this.edTitleTemplate.Location = new System.Drawing.Point(75, 19);
+        this.edTitleTemplate.Name = "edTitleTemplate";
+        this.edTitleTemplate.Size = new System.Drawing.Size(245, 20);
+        this.edTitleTemplate.TabIndex = 20;
+        // 
+        // label27
+        // 
+        this.label27.AutoSize = true;
+        this.label27.Location = new System.Drawing.Point(6, 22);
+        this.label27.Name = "label27";
+        this.label27.Size = new System.Drawing.Size(30, 13);
+        this.label27.TabIndex = 19;
+        this.label27.Text = "Title:";
+        // 
+        // label28
+        // 
+        this.label28.AutoSize = true;
+        this.label28.Location = new System.Drawing.Point(6, 48);
+        this.label28.Name = "label28";
+        this.label28.Size = new System.Drawing.Size(63, 13);
+        this.label28.TabIndex = 21;
+        this.label28.Text = "Description:";
+        // 
+        // label38
+        // 
+        this.label38.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+        this.label38.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+        this.label38.Location = new System.Drawing.Point(326, 16);
+        this.label38.Name = "label38";
+        this.label38.Size = new System.Drawing.Size(125, 61);
+        this.label38.TabIndex = 35;
+        this.label38.Text = "You can use any combination of the placeholders shown below";
+        // 
+        // edDescriptionTemplate
+        // 
+        this.edDescriptionTemplate.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                    | System.Windows.Forms.AnchorStyles.Right)));
+        this.edDescriptionTemplate.Location = new System.Drawing.Point(75, 45);
+        this.edDescriptionTemplate.Name = "edDescriptionTemplate";
+        this.edDescriptionTemplate.Size = new System.Drawing.Size(245, 20);
+        this.edDescriptionTemplate.TabIndex = 22;
+        // 
+        // label30
+        // 
+        this.label30.AutoSize = true;
+        this.label30.Location = new System.Drawing.Point(6, 103);
+        this.label30.Name = "label30";
+        this.label30.Size = new System.Drawing.Size(30, 13);
+        this.label30.TabIndex = 23;
+        this.label30.Text = "Title:";
+        // 
+        // edTitleTest
+        // 
+        this.edTitleTest.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                    | System.Windows.Forms.AnchorStyles.Right)));
+        this.edTitleTest.Location = new System.Drawing.Point(75, 100);
+        this.edTitleTest.Name = "edTitleTest";
+        this.edTitleTest.ReadOnly = true;
+        this.edTitleTest.Size = new System.Drawing.Size(245, 20);
+        this.edTitleTest.TabIndex = 24;
+        // 
+        // label29
+        // 
+        this.label29.AutoSize = true;
+        this.label29.Location = new System.Drawing.Point(6, 129);
+        this.label29.Name = "label29";
+        this.label29.Size = new System.Drawing.Size(63, 13);
+        this.label29.TabIndex = 25;
+        this.label29.Text = "Description:";
+        // 
+        // edDescriptionTest
+        // 
+        this.edDescriptionTest.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                    | System.Windows.Forms.AnchorStyles.Left)
+                    | System.Windows.Forms.AnchorStyles.Right)));
+        this.edDescriptionTest.Location = new System.Drawing.Point(75, 126);
+        this.edDescriptionTest.Multiline = true;
+        this.edDescriptionTest.Name = "edDescriptionTest";
+        this.edDescriptionTest.ReadOnly = true;
+        this.edDescriptionTest.Size = new System.Drawing.Size(245, 58);
+        this.edDescriptionTest.TabIndex = 26;
+        // 
+        // btnTest
+        // 
+        this.btnTest.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+        this.btnTest.Location = new System.Drawing.Point(245, 71);
+        this.btnTest.Name = "btnTest";
+        this.btnTest.Size = new System.Drawing.Size(75, 23);
+        this.btnTest.TabIndex = 27;
+        this.btnTest.Text = "Test";
+        this.btnTest.UseVisualStyleBackColor = true;
+        this.btnTest.Click += new System.EventHandler(this.btnTest_Click);
+        // 
+        // groupBox2
+        // 
+        this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                    | System.Windows.Forms.AnchorStyles.Right)));
+        this.groupBox2.Controls.Add(this.label5);
+        this.groupBox2.Controls.Add(this.label4);
+        this.groupBox2.Controls.Add(this.label3);
+        this.groupBox2.Controls.Add(this.dateTimePickerEPGSlotEnd);
+        this.groupBox2.Controls.Add(this.label2);
+        this.groupBox2.Controls.Add(this.dateTimePickerEPGSlotStart);
+        this.groupBox2.Controls.Add(this.checkBoxUseEPGTimeSlot);
+        this.groupBox2.Controls.Add(this.numericUpDownEpgRefresh);
+        this.groupBox2.Controls.Add(this.numericUpDownEpgTimeOut);
+        this.groupBox2.Controls.Add(this.checkBoxEnableEPGWhileIdle);
+        this.groupBox2.Controls.Add(this.label15);
+        this.groupBox2.Controls.Add(this.label14);
+        this.groupBox2.Controls.Add(this.label8);
+        this.groupBox2.Controls.Add(this.label7);
+        this.groupBox2.Location = new System.Drawing.Point(235, 96);
+        this.groupBox2.Name = "groupBox2";
+        this.groupBox2.Size = new System.Drawing.Size(225, 179);
+        this.groupBox2.TabIndex = 40;
+        this.groupBox2.TabStop = false;
+        this.groupBox2.Text = "EPG grabbing while idle";
+        // 
+        // numericUpDownEpgRefresh
+        // 
+        this.numericUpDownEpgRefresh.Location = new System.Drawing.Point(86, 68);
+        this.numericUpDownEpgRefresh.Maximum = new decimal(new int[] {
             3600,
             0,
             0,
             0});
-      this.numericUpDownEpgRefresh.Name = "numericUpDownEpgRefresh";
-      this.numericUpDownEpgRefresh.Size = new System.Drawing.Size(85, 20);
-      this.numericUpDownEpgRefresh.TabIndex = 10;
-      this.numericUpDownEpgRefresh.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-      this.numericUpDownEpgRefresh.Value = new decimal(new int[] {
+        this.numericUpDownEpgRefresh.Name = "numericUpDownEpgRefresh";
+        this.numericUpDownEpgRefresh.Size = new System.Drawing.Size(85, 20);
+        this.numericUpDownEpgRefresh.TabIndex = 10;
+        this.numericUpDownEpgRefresh.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+        this.numericUpDownEpgRefresh.Value = new decimal(new int[] {
             240,
             0,
             0,
             0});
-      // 
-      // numericUpDownEpgTimeOut
-      // 
-      this.numericUpDownEpgTimeOut.Location = new System.Drawing.Point(86, 42);
-      this.numericUpDownEpgTimeOut.Maximum = new decimal(new int[] {
+        // 
+        // numericUpDownEpgTimeOut
+        // 
+        this.numericUpDownEpgTimeOut.Location = new System.Drawing.Point(86, 42);
+        this.numericUpDownEpgTimeOut.Maximum = new decimal(new int[] {
             3600,
             0,
             0,
             0});
-      this.numericUpDownEpgTimeOut.Name = "numericUpDownEpgTimeOut";
-      this.numericUpDownEpgTimeOut.Size = new System.Drawing.Size(85, 20);
-      this.numericUpDownEpgTimeOut.TabIndex = 10;
-      this.numericUpDownEpgTimeOut.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-      this.numericUpDownEpgTimeOut.Value = new decimal(new int[] {
+        this.numericUpDownEpgTimeOut.Name = "numericUpDownEpgTimeOut";
+        this.numericUpDownEpgTimeOut.Size = new System.Drawing.Size(85, 20);
+        this.numericUpDownEpgTimeOut.TabIndex = 10;
+        this.numericUpDownEpgTimeOut.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+        this.numericUpDownEpgTimeOut.Value = new decimal(new int[] {
             10,
             0,
             0,
             0});
-      // 
-      // checkBoxEnableEPGWhileIdle
-      // 
-      this.checkBoxEnableEPGWhileIdle.AutoSize = true;
-      this.checkBoxEnableEPGWhileIdle.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
-      this.checkBoxEnableEPGWhileIdle.Location = new System.Drawing.Point(10, 19);
-      this.checkBoxEnableEPGWhileIdle.Name = "checkBoxEnableEPGWhileIdle";
-      this.checkBoxEnableEPGWhileIdle.Size = new System.Drawing.Size(63, 17);
-      this.checkBoxEnableEPGWhileIdle.TabIndex = 11;
-      this.checkBoxEnableEPGWhileIdle.Text = "Enabled";
-      this.checkBoxEnableEPGWhileIdle.UseVisualStyleBackColor = true;
-      // 
-      // label15
-      // 
-      this.label15.AutoSize = true;
-      this.label15.Location = new System.Drawing.Point(177, 68);
-      this.label15.Name = "label15";
-      this.label15.Size = new System.Drawing.Size(28, 13);
-      this.label15.TabIndex = 7;
-      this.label15.Text = "mins";
-      // 
-      // label14
-      // 
-      this.label14.AutoSize = true;
-      this.label14.Location = new System.Drawing.Point(7, 70);
-      this.label14.Name = "label14";
-      this.label14.Size = new System.Drawing.Size(73, 13);
-      this.label14.TabIndex = 5;
-      this.label14.Text = "Refresh every";
-      // 
-      // label8
-      // 
-      this.label8.AutoSize = true;
-      this.label8.Location = new System.Drawing.Point(177, 44);
-      this.label8.Name = "label8";
-      this.label8.Size = new System.Drawing.Size(28, 13);
-      this.label8.TabIndex = 4;
-      this.label8.Text = "mins";
-      // 
-      // label7
-      // 
-      this.label7.AutoSize = true;
-      this.label7.Location = new System.Drawing.Point(7, 44);
-      this.label7.Name = "label7";
-      this.label7.Size = new System.Drawing.Size(48, 13);
-      this.label7.TabIndex = 2;
-      this.label7.Text = "Timeout:";
-      // 
-      // groupBox5
-      // 
-      this.groupBox5.Controls.Add(this.numericUpDownTSEpgTimeout);
-      this.groupBox5.Controls.Add(this.checkBoxEnableEpgWhileTimeshifting);
-      this.groupBox5.Controls.Add(this.label22);
-      this.groupBox5.Controls.Add(this.label23);
-      this.groupBox5.Location = new System.Drawing.Point(3, 96);
-      this.groupBox5.Name = "groupBox5";
-      this.groupBox5.Size = new System.Drawing.Size(226, 98);
-      this.groupBox5.TabIndex = 39;
-      this.groupBox5.TabStop = false;
-      this.groupBox5.Text = "EPG grabbing while timeshifting/recording";
-      // 
-      // numericUpDownTSEpgTimeout
-      // 
-      this.numericUpDownTSEpgTimeout.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.numericUpDownTSEpgTimeout.Location = new System.Drawing.Point(70, 42);
-      this.numericUpDownTSEpgTimeout.Maximum = new decimal(new int[] {
+        // 
+        // checkBoxEnableEPGWhileIdle
+        // 
+        this.checkBoxEnableEPGWhileIdle.AutoSize = true;
+        this.checkBoxEnableEPGWhileIdle.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
+        this.checkBoxEnableEPGWhileIdle.Location = new System.Drawing.Point(10, 19);
+        this.checkBoxEnableEPGWhileIdle.Name = "checkBoxEnableEPGWhileIdle";
+        this.checkBoxEnableEPGWhileIdle.Size = new System.Drawing.Size(63, 17);
+        this.checkBoxEnableEPGWhileIdle.TabIndex = 11;
+        this.checkBoxEnableEPGWhileIdle.Text = "Enabled";
+        this.checkBoxEnableEPGWhileIdle.UseVisualStyleBackColor = true;
+        // 
+        // label15
+        // 
+        this.label15.AutoSize = true;
+        this.label15.Location = new System.Drawing.Point(177, 68);
+        this.label15.Name = "label15";
+        this.label15.Size = new System.Drawing.Size(28, 13);
+        this.label15.TabIndex = 7;
+        this.label15.Text = "mins";
+        // 
+        // label14
+        // 
+        this.label14.AutoSize = true;
+        this.label14.Location = new System.Drawing.Point(7, 70);
+        this.label14.Name = "label14";
+        this.label14.Size = new System.Drawing.Size(73, 13);
+        this.label14.TabIndex = 5;
+        this.label14.Text = "Refresh every";
+        // 
+        // label8
+        // 
+        this.label8.AutoSize = true;
+        this.label8.Location = new System.Drawing.Point(177, 44);
+        this.label8.Name = "label8";
+        this.label8.Size = new System.Drawing.Size(28, 13);
+        this.label8.TabIndex = 4;
+        this.label8.Text = "mins";
+        // 
+        // label7
+        // 
+        this.label7.AutoSize = true;
+        this.label7.Location = new System.Drawing.Point(7, 44);
+        this.label7.Name = "label7";
+        this.label7.Size = new System.Drawing.Size(48, 13);
+        this.label7.TabIndex = 2;
+        this.label7.Text = "Timeout:";
+        // 
+        // groupBox5
+        // 
+        this.groupBox5.Controls.Add(this.numericUpDownTSEpgTimeout);
+        this.groupBox5.Controls.Add(this.checkBoxEnableEpgWhileTimeshifting);
+        this.groupBox5.Controls.Add(this.label22);
+        this.groupBox5.Controls.Add(this.label23);
+        this.groupBox5.Location = new System.Drawing.Point(3, 96);
+        this.groupBox5.Name = "groupBox5";
+        this.groupBox5.Size = new System.Drawing.Size(226, 179);
+        this.groupBox5.TabIndex = 39;
+        this.groupBox5.TabStop = false;
+        this.groupBox5.Text = "EPG grabbing while timeshifting/recording";
+        // 
+        // numericUpDownTSEpgTimeout
+        // 
+        this.numericUpDownTSEpgTimeout.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                    | System.Windows.Forms.AnchorStyles.Right)));
+        this.numericUpDownTSEpgTimeout.Location = new System.Drawing.Point(70, 42);
+        this.numericUpDownTSEpgTimeout.Maximum = new decimal(new int[] {
             3600,
             0,
             0,
             0});
-      this.numericUpDownTSEpgTimeout.Name = "numericUpDownTSEpgTimeout";
-      this.numericUpDownTSEpgTimeout.Size = new System.Drawing.Size(86, 20);
-      this.numericUpDownTSEpgTimeout.TabIndex = 10;
-      this.numericUpDownTSEpgTimeout.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-      this.numericUpDownTSEpgTimeout.Value = new decimal(new int[] {
+        this.numericUpDownTSEpgTimeout.Name = "numericUpDownTSEpgTimeout";
+        this.numericUpDownTSEpgTimeout.Size = new System.Drawing.Size(86, 20);
+        this.numericUpDownTSEpgTimeout.TabIndex = 10;
+        this.numericUpDownTSEpgTimeout.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+        this.numericUpDownTSEpgTimeout.Value = new decimal(new int[] {
             2,
             0,
             0,
             0});
-      // 
-      // checkBoxEnableEpgWhileTimeshifting
-      // 
-      this.checkBoxEnableEpgWhileTimeshifting.AutoSize = true;
-      this.checkBoxEnableEpgWhileTimeshifting.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
-      this.checkBoxEnableEpgWhileTimeshifting.Location = new System.Drawing.Point(11, 19);
-      this.checkBoxEnableEpgWhileTimeshifting.Name = "checkBoxEnableEpgWhileTimeshifting";
-      this.checkBoxEnableEpgWhileTimeshifting.Size = new System.Drawing.Size(63, 17);
-      this.checkBoxEnableEpgWhileTimeshifting.TabIndex = 9;
-      this.checkBoxEnableEpgWhileTimeshifting.Text = "Enabled";
-      this.checkBoxEnableEpgWhileTimeshifting.UseVisualStyleBackColor = true;
-      // 
-      // label22
-      // 
-      this.label22.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.label22.AutoSize = true;
-      this.label22.Location = new System.Drawing.Point(173, 42);
-      this.label22.Name = "label22";
-      this.label22.Size = new System.Drawing.Size(28, 13);
-      this.label22.TabIndex = 7;
-      this.label22.Text = "mins";
-      // 
-      // label23
-      // 
-      this.label23.AutoSize = true;
-      this.label23.Location = new System.Drawing.Point(6, 44);
-      this.label23.Name = "label23";
-      this.label23.Size = new System.Drawing.Size(48, 13);
-      this.label23.TabIndex = 5;
-      this.label23.Text = "Timeout:";
-      // 
-      // groupBox7
-      // 
-      this.groupBox7.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.groupBox7.Controls.Add(this.checkboxSameTransponder);
-      this.groupBox7.Controls.Add(this.label1);
-      this.groupBox7.Controls.Add(this.checkBoxEnableCRCCheck);
-      this.groupBox7.Controls.Add(this.checkBoxAlwaysUpdate);
-      this.groupBox7.Controls.Add(this.checkBoxAlwaysFillHoles);
-      this.groupBox7.Location = new System.Drawing.Point(3, 3);
-      this.groupBox7.Name = "groupBox7";
-      this.groupBox7.Size = new System.Drawing.Size(457, 90);
-      this.groupBox7.TabIndex = 38;
-      this.groupBox7.TabStop = false;
-      this.groupBox7.Text = "General";
-      // 
-      // checkBoxEnableCRCCheck
-      // 
-      this.checkBoxEnableCRCCheck.AutoSize = true;
-      this.checkBoxEnableCRCCheck.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
-      this.checkBoxEnableCRCCheck.Location = new System.Drawing.Point(11, 42);
-      this.checkBoxEnableCRCCheck.Name = "checkBoxEnableCRCCheck";
-      this.checkBoxEnableCRCCheck.Size = new System.Drawing.Size(115, 17);
-      this.checkBoxEnableCRCCheck.TabIndex = 12;
-      this.checkBoxEnableCRCCheck.Text = "Enable CRC check";
-      this.checkBoxEnableCRCCheck.UseVisualStyleBackColor = true;
-      //
-      // checkboxSameTransponder
-      // 
-      this.checkboxSameTransponder.AutoSize = true;
-      this.checkboxSameTransponder.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
-      this.checkboxSameTransponder.Location = new System.Drawing.Point(11, 65);
-      this.checkboxSameTransponder.Name = "checkboxSameTransponder";
-      this.checkboxSameTransponder.Size = new System.Drawing.Size(257, 17);
-      this.checkboxSameTransponder.TabIndex = 14;
-      this.checkboxSameTransponder.Text = "Grap EPG only for channels on same transponder";
-      this.checkboxSameTransponder.UseVisualStyleBackColor = true;
-      // 
-      // label1
-      // 
-      this.label1.AutoSize = true;
-      this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.label1.Location = new System.Drawing.Point(132, 39);
-      this.label1.Name = "label1";
-      this.label1.Size = new System.Drawing.Size(321, 26);
-      this.label1.TabIndex = 13;
-      this.label1.Text = "(This will increase stability of EPG grabbing.If your provider doesn\'t \r\nbroadcas" +
-          "t CRC checksums, you have to disable it)";
-      // 
-      // checkBoxAlwaysUpdate
-      // 
-      this.checkBoxAlwaysUpdate.AutoSize = true;
-      this.checkBoxAlwaysUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
-      this.checkBoxAlwaysUpdate.Location = new System.Drawing.Point(140, 19);
-      this.checkBoxAlwaysUpdate.Name = "checkBoxAlwaysUpdate";
-      this.checkBoxAlwaysUpdate.Size = new System.Drawing.Size(310, 17);
-      this.checkBoxAlwaysUpdate.TabIndex = 11;
-      this.checkBoxAlwaysUpdate.Text = "Always try to update existing entries (might raise CPU usage!)";
-      this.checkBoxAlwaysUpdate.UseVisualStyleBackColor = true;
-      // 
-      // checkBoxAlwaysFillHoles
-      // 
-      this.checkBoxAlwaysFillHoles.AutoSize = true;
-      this.checkBoxAlwaysFillHoles.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
-      this.checkBoxAlwaysFillHoles.Location = new System.Drawing.Point(11, 19);
-      this.checkBoxAlwaysFillHoles.Name = "checkBoxAlwaysFillHoles";
-      this.checkBoxAlwaysFillHoles.Size = new System.Drawing.Size(123, 17);
-      this.checkBoxAlwaysFillHoles.TabIndex = 9;
-      this.checkBoxAlwaysFillHoles.Text = "Always try to fill holes";
-      this.checkBoxAlwaysFillHoles.UseVisualStyleBackColor = true;
-      // 
-      // tabPage1
-      // 
-      this.tabPage1.Controls.Add(this.groupBox9);
-      this.tabPage1.Controls.Add(this.groupBox7);
-      this.tabPage1.Controls.Add(this.groupBox2);
-      this.tabPage1.Controls.Add(this.groupBox5);
-      this.tabPage1.Location = new System.Drawing.Point(4, 22);
-      this.tabPage1.Name = "tabPage1";
-      this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPage1.Size = new System.Drawing.Size(466, 410);
-      this.tabPage1.TabIndex = 0;
-      this.tabPage1.Text = "DVB EPG";
-      this.tabPage1.UseVisualStyleBackColor = true;
-      // 
-      // tabControlEpg
-      // 
-      this.tabControlEpg.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.tabControlEpg.Controls.Add(this.tabPage1);
-      this.tabControlEpg.Location = new System.Drawing.Point(0, 0);
-      this.tabControlEpg.Name = "tabControlEpg";
-      this.tabControlEpg.SelectedIndex = 0;
-      this.tabControlEpg.Size = new System.Drawing.Size(474, 436);
-      this.tabControlEpg.TabIndex = 1;
-      // 
-      // Epg
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tabControlEpg);
-      this.Name = "Epg";
-      this.Size = new System.Drawing.Size(474, 439);
-      this.groupBox9.ResumeLayout(false);
-      this.groupBox9.PerformLayout();
-      this.groupBox2.ResumeLayout(false);
-      this.groupBox2.PerformLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.numericUpDownEpgRefresh)).EndInit();
-      ((System.ComponentModel.ISupportInitialize)(this.numericUpDownEpgTimeOut)).EndInit();
-      this.groupBox5.ResumeLayout(false);
-      this.groupBox5.PerformLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTSEpgTimeout)).EndInit();
-      this.groupBox7.ResumeLayout(false);
-      this.groupBox7.PerformLayout();
-      this.tabPage1.ResumeLayout(false);
-      this.tabControlEpg.ResumeLayout(false);
-      this.ResumeLayout(false);
+        // 
+        // checkBoxEnableEpgWhileTimeshifting
+        // 
+        this.checkBoxEnableEpgWhileTimeshifting.AutoSize = true;
+        this.checkBoxEnableEpgWhileTimeshifting.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
+        this.checkBoxEnableEpgWhileTimeshifting.Location = new System.Drawing.Point(11, 19);
+        this.checkBoxEnableEpgWhileTimeshifting.Name = "checkBoxEnableEpgWhileTimeshifting";
+        this.checkBoxEnableEpgWhileTimeshifting.Size = new System.Drawing.Size(63, 17);
+        this.checkBoxEnableEpgWhileTimeshifting.TabIndex = 9;
+        this.checkBoxEnableEpgWhileTimeshifting.Text = "Enabled";
+        this.checkBoxEnableEpgWhileTimeshifting.UseVisualStyleBackColor = true;
+        // 
+        // label22
+        // 
+        this.label22.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+        this.label22.AutoSize = true;
+        this.label22.Location = new System.Drawing.Point(173, 42);
+        this.label22.Name = "label22";
+        this.label22.Size = new System.Drawing.Size(28, 13);
+        this.label22.TabIndex = 7;
+        this.label22.Text = "mins";
+        // 
+        // label23
+        // 
+        this.label23.AutoSize = true;
+        this.label23.Location = new System.Drawing.Point(6, 44);
+        this.label23.Name = "label23";
+        this.label23.Size = new System.Drawing.Size(48, 13);
+        this.label23.TabIndex = 5;
+        this.label23.Text = "Timeout:";
+        // 
+        // groupBox7
+        // 
+        this.groupBox7.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                    | System.Windows.Forms.AnchorStyles.Right)));
+        this.groupBox7.Controls.Add(this.checkboxSameTransponder);
+        this.groupBox7.Controls.Add(this.label1);
+        this.groupBox7.Controls.Add(this.checkBoxEnableCRCCheck);
+        this.groupBox7.Controls.Add(this.checkBoxAlwaysUpdate);
+        this.groupBox7.Controls.Add(this.checkBoxAlwaysFillHoles);
+        this.groupBox7.Location = new System.Drawing.Point(3, 3);
+        this.groupBox7.Name = "groupBox7";
+        this.groupBox7.Size = new System.Drawing.Size(457, 90);
+        this.groupBox7.TabIndex = 38;
+        this.groupBox7.TabStop = false;
+        this.groupBox7.Text = "General";
+        // 
+        // checkboxSameTransponder
+        // 
+        this.checkboxSameTransponder.AutoSize = true;
+        this.checkboxSameTransponder.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
+        this.checkboxSameTransponder.Location = new System.Drawing.Point(11, 65);
+        this.checkboxSameTransponder.Name = "checkboxSameTransponder";
+        this.checkboxSameTransponder.Size = new System.Drawing.Size(257, 17);
+        this.checkboxSameTransponder.TabIndex = 14;
+        this.checkboxSameTransponder.Text = "Grap EPG only for channels on same transponder";
+        this.checkboxSameTransponder.UseVisualStyleBackColor = true;
+        // 
+        // label1
+        // 
+        this.label1.AutoSize = true;
+        this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+        this.label1.Location = new System.Drawing.Point(132, 39);
+        this.label1.Name = "label1";
+        this.label1.Size = new System.Drawing.Size(321, 26);
+        this.label1.TabIndex = 13;
+        this.label1.Text = "(This will increase stability of EPG grabbing.If your provider doesn\'t \r\nbroadcas" +
+            "t CRC checksums, you have to disable it)";
+        // 
+        // checkBoxEnableCRCCheck
+        // 
+        this.checkBoxEnableCRCCheck.AutoSize = true;
+        this.checkBoxEnableCRCCheck.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
+        this.checkBoxEnableCRCCheck.Location = new System.Drawing.Point(11, 42);
+        this.checkBoxEnableCRCCheck.Name = "checkBoxEnableCRCCheck";
+        this.checkBoxEnableCRCCheck.Size = new System.Drawing.Size(115, 17);
+        this.checkBoxEnableCRCCheck.TabIndex = 12;
+        this.checkBoxEnableCRCCheck.Text = "Enable CRC check";
+        this.checkBoxEnableCRCCheck.UseVisualStyleBackColor = true;
+        // 
+        // checkBoxAlwaysUpdate
+        // 
+        this.checkBoxAlwaysUpdate.AutoSize = true;
+        this.checkBoxAlwaysUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
+        this.checkBoxAlwaysUpdate.Location = new System.Drawing.Point(140, 19);
+        this.checkBoxAlwaysUpdate.Name = "checkBoxAlwaysUpdate";
+        this.checkBoxAlwaysUpdate.Size = new System.Drawing.Size(310, 17);
+        this.checkBoxAlwaysUpdate.TabIndex = 11;
+        this.checkBoxAlwaysUpdate.Text = "Always try to update existing entries (might raise CPU usage!)";
+        this.checkBoxAlwaysUpdate.UseVisualStyleBackColor = true;
+        // 
+        // checkBoxAlwaysFillHoles
+        // 
+        this.checkBoxAlwaysFillHoles.AutoSize = true;
+        this.checkBoxAlwaysFillHoles.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
+        this.checkBoxAlwaysFillHoles.Location = new System.Drawing.Point(11, 19);
+        this.checkBoxAlwaysFillHoles.Name = "checkBoxAlwaysFillHoles";
+        this.checkBoxAlwaysFillHoles.Size = new System.Drawing.Size(123, 17);
+        this.checkBoxAlwaysFillHoles.TabIndex = 9;
+        this.checkBoxAlwaysFillHoles.Text = "Always try to fill holes";
+        this.checkBoxAlwaysFillHoles.UseVisualStyleBackColor = true;
+        // 
+        // tabPage1
+        // 
+        this.tabPage1.Controls.Add(this.groupBox9);
+        this.tabPage1.Controls.Add(this.groupBox7);
+        this.tabPage1.Controls.Add(this.groupBox2);
+        this.tabPage1.Controls.Add(this.groupBox5);
+        this.tabPage1.Location = new System.Drawing.Point(4, 22);
+        this.tabPage1.Name = "tabPage1";
+        this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+        this.tabPage1.Size = new System.Drawing.Size(466, 476);
+        this.tabPage1.TabIndex = 0;
+        this.tabPage1.Text = "DVB EPG";
+        this.tabPage1.UseVisualStyleBackColor = true;
+        // 
+        // tabControlEpg
+        // 
+        this.tabControlEpg.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                    | System.Windows.Forms.AnchorStyles.Left)
+                    | System.Windows.Forms.AnchorStyles.Right)));
+        this.tabControlEpg.Controls.Add(this.tabPage1);
+        this.tabControlEpg.Location = new System.Drawing.Point(0, 0);
+        this.tabControlEpg.Name = "tabControlEpg";
+        this.tabControlEpg.SelectedIndex = 0;
+        this.tabControlEpg.Size = new System.Drawing.Size(474, 502);
+        this.tabControlEpg.TabIndex = 1;
+        // 
+        // checkBoxUseEPGTimeSlot
+        // 
+        this.checkBoxUseEPGTimeSlot.AutoSize = true;
+        this.checkBoxUseEPGTimeSlot.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
+        this.checkBoxUseEPGTimeSlot.Location = new System.Drawing.Point(10, 99);
+        this.checkBoxUseEPGTimeSlot.Name = "checkBoxUseEPGTimeSlot";
+        this.checkBoxUseEPGTimeSlot.Size = new System.Drawing.Size(169, 17);
+        this.checkBoxUseEPGTimeSlot.TabIndex = 12;
+        this.checkBoxUseEPGTimeSlot.Text = "Use Timeslot for EPG grabbing";
+        this.checkBoxUseEPGTimeSlot.UseVisualStyleBackColor = true;
+        this.checkBoxUseEPGTimeSlot.CheckedChanged += new System.EventHandler(this.checkBoxUseEPGTimeSlot_CheckedChanged);
+        // 
+        // dateTimePickerEPGSlotStart
+        // 
+        this.dateTimePickerEPGSlotStart.Format = System.Windows.Forms.DateTimePickerFormat.Time;
+        this.dateTimePickerEPGSlotStart.Location = new System.Drawing.Point(86, 122);
+        this.dateTimePickerEPGSlotStart.Name = "dateTimePickerEPGSlotStart";
+        this.dateTimePickerEPGSlotStart.ShowUpDown = true;
+        this.dateTimePickerEPGSlotStart.Size = new System.Drawing.Size(85, 20);
+        this.dateTimePickerEPGSlotStart.TabIndex = 13;
+        // 
+        // label2
+        // 
+        this.label2.AutoSize = true;
+        this.label2.Location = new System.Drawing.Point(7, 128);
+        this.label2.Name = "label2";
+        this.label2.Size = new System.Drawing.Size(57, 13);
+        this.label2.TabIndex = 14;
+        this.label2.Text = "Not before";
+        // 
+        // label3
+        // 
+        this.label3.AutoSize = true;
+        this.label3.Location = new System.Drawing.Point(7, 154);
+        this.label3.Name = "label3";
+        this.label3.Size = new System.Drawing.Size(48, 13);
+        this.label3.TabIndex = 16;
+        this.label3.Text = "Not after";
+        // 
+        // dateTimePickerEPGSlotEnd
+        // 
+        this.dateTimePickerEPGSlotEnd.Format = System.Windows.Forms.DateTimePickerFormat.Time;
+        this.dateTimePickerEPGSlotEnd.Location = new System.Drawing.Point(86, 148);
+        this.dateTimePickerEPGSlotEnd.Name = "dateTimePickerEPGSlotEnd";
+        this.dateTimePickerEPGSlotEnd.ShowUpDown = true;
+        this.dateTimePickerEPGSlotEnd.Size = new System.Drawing.Size(85, 20);
+        this.dateTimePickerEPGSlotEnd.TabIndex = 15;
+        // 
+        // label4
+        // 
+        this.label4.AutoSize = true;
+        this.label4.Location = new System.Drawing.Point(177, 128);
+        this.label4.Name = "label4";
+        this.label4.Size = new System.Drawing.Size(41, 13);
+        this.label4.TabIndex = 17;
+        this.label4.Text = "o\'clock";
+        // 
+        // label5
+        // 
+        this.label5.AutoSize = true;
+        this.label5.Location = new System.Drawing.Point(177, 154);
+        this.label5.Name = "label5";
+        this.label5.Size = new System.Drawing.Size(41, 13);
+        this.label5.TabIndex = 18;
+        this.label5.Text = "o\'clock";
+        // 
+        // Epg
+        // 
+        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+        this.Controls.Add(this.tabControlEpg);
+        this.Name = "Epg";
+        this.Size = new System.Drawing.Size(474, 502);
+        this.groupBox9.ResumeLayout(false);
+        this.groupBox9.PerformLayout();
+        this.groupBox2.ResumeLayout(false);
+        this.groupBox2.PerformLayout();
+        ((System.ComponentModel.ISupportInitialize)(this.numericUpDownEpgRefresh)).EndInit();
+        ((System.ComponentModel.ISupportInitialize)(this.numericUpDownEpgTimeOut)).EndInit();
+        this.groupBox5.ResumeLayout(false);
+        this.groupBox5.PerformLayout();
+        ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTSEpgTimeout)).EndInit();
+        this.groupBox7.ResumeLayout(false);
+        this.groupBox7.PerformLayout();
+        this.tabPage1.ResumeLayout(false);
+        this.tabControlEpg.ResumeLayout(false);
+        this.ResumeLayout(false);
 
     }
 
@@ -522,5 +602,12 @@
     private System.Windows.Forms.Label label1;
     private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxEnableCRCCheck;
     private MediaPortal.UserInterface.Controls.MPCheckBox checkboxSameTransponder;
+    private MediaPortal.UserInterface.Controls.MPCheckBox checkBoxUseEPGTimeSlot;
+    private System.Windows.Forms.Label label5;
+    private System.Windows.Forms.Label label4;
+    private System.Windows.Forms.Label label3;
+    private System.Windows.Forms.DateTimePicker dateTimePickerEPGSlotEnd;
+    private System.Windows.Forms.Label label2;
+    private System.Windows.Forms.DateTimePicker dateTimePickerEPGSlotStart;
   }
 }
Index: TvEngine3/TVLibrary/TvService/Epg/EpgGrabber.cs
===================================================================
--- TvEngine3/TVLibrary/TvService/Epg/EpgGrabber.cs	(Revision 28136)
+++ TvEngine3/TVLibrary/TvService/Epg/EpgGrabber.cs	(Arbeitskopie)
@@ -109,6 +109,9 @@
         return;
       }
 
+      if (!_epgTimeSlotActive())
+        return;
+
       Setting s = layer.GetSetting("timeoutEPGRefresh", "240");
       if (Int32.TryParse(s.Value, out _epgReGrabAfter) == false)
       {
@@ -200,6 +203,31 @@
 
     #region private members
 
+    private Boolean _epgTimeSlotActive()
+    {
+      TvBusinessLayer layer = new TvBusinessLayer();
+
+      Setting s = layer.GetSetting("useEPGGrabbingTimeSlot", "no");
+      if (s.Value == "no")
+        return true;
+
+      String slotStartString = layer.GetSetting("epgTimeSlotStart", "00:00:00").Value;
+      String[] slotStartValues = slotStartString.Split(':');
+      String slotEndString = layer.GetSetting("epgTimeSlotEnd", "23:59:00").Value;
+      String[] slotEndValues = slotEndString.Split(':');
+      Int64 slotStarts = Convert.ToInt32(slotStartValues[0]) * 10000 + Convert.ToInt32(slotStartValues[1]) * 100 + Convert.ToInt32(slotStartValues[2]);
+      Int64 slotEnds = Convert.ToInt32(slotEndValues[0]) * 10000 + Convert.ToInt32(slotEndValues[1]) * 100 + Convert.ToInt32(slotEndValues[2]);
+      DateTime currentTime = DateTime.Now;
+      Int64 currentSlot = currentTime.Hour * 10000 + currentTime.Minute * 100 + currentTime.Second;
+
+      if ((slotEnds > slotStarts) && (currentSlot >= slotStarts) && (currentSlot <= slotEnds))
+        return true;
+      if ((slotEnds < slotStarts) && ((currentSlot >= slotStarts) || (currentSlot <= slotEnds)))
+        return true;
+
+      return false;
+    }
+
     /// <summary>
     /// timer callback.
     /// This method is called by a timer every 30 seconds to wake up the epg grabber
@@ -225,10 +253,14 @@
           if (string.IsNullOrEmpty(threadname))
             Thread.CurrentThread.Name = "DVB EPG timer";
         }
-        catch (InvalidOperationException) {}
+        catch (InvalidOperationException) { }
 
         if (_tvController.AllCardsIdle == false)
           return;
+
+        if (!_epgTimeSlotActive())
+          return;
+
         foreach (EpgCard card in _epgCards)
         {
           //Log.Epg("card:{0} grabbing:{1}", card.Card.IdCard, card.IsGrabbing);
@@ -283,6 +315,9 @@
         //find next channel to grab
         while (TransponderList.Instance.CurrentTransponder.GetNextChannel() != null)
         {
+          if (!_epgTimeSlotActive())
+            return;
+
           //get the channel
           Channel ch = TransponderList.Instance.CurrentTransponder.CurrentChannel;
 
Index: TvEngine3/TVLibrary/TvService/TVController.cs
===================================================================
--- TvEngine3/TVLibrary/TvService/TVController.cs	(Revision 28136)
+++ TvEngine3/TVLibrary/TvService/TVController.cs	(Arbeitskopie)
@@ -745,7 +745,7 @@
                   if (delFile)
                     File.Delete(fInfo.FullName);
                 }
-                catch (IOException) {}
+                catch (IOException) { }
               }
             }
           }
@@ -844,7 +844,7 @@
               {
                 heartBeatMonitorThread.Abort();
               }
-              catch (Exception) {}
+              catch (Exception) { }
             }
           }
         }
@@ -1737,7 +1737,7 @@
     public byte[] GetTeletextPage(IUser user, int pageNumber, int subPageNumber)
     {
       if (ValidateTvControllerParams(user))
-        return new byte[] {1};
+        return new byte[] { 1 };
       return _cards[user.CardId].Teletext.GetTeletextPage(user, pageNumber, subPageNumber);
     }
 
@@ -2911,7 +2911,7 @@
     {
       try
       {
-        Gentle.Common.CacheManager.ClearQueryResultsByType(typeof (Schedule));
+        Gentle.Common.CacheManager.ClearQueryResultsByType(typeof(Schedule));
         if (_scheduler != null)
         {
           _scheduler.ResetTimer();
@@ -2934,7 +2934,7 @@
     {
       try
       {
-        Gentle.Common.CacheManager.ClearQueryResultsByType(typeof (Schedule));
+        Gentle.Common.CacheManager.ClearQueryResultsByType(typeof(Schedule));
         if (_scheduler != null)
         {
           _scheduler.ResetTimer();
