- support for 2013 LA-series (DVB-S only; deactivating TV-Data File Cleanup when there are preset DVB-S channels)

- support for LH3000 (which has same record size but different layout than all other known LH models)
- added various Assistant dialogs
- icons updated
This commit is contained in:
hbeham
2013-05-03 19:02:30 +02:00
parent 08c062c963
commit f762230b05
30 changed files with 2197 additions and 418 deletions

View File

@@ -73,6 +73,12 @@
<Compile Include="DtvChannel.cs" />
<Compile Include="DvbsDataLayout.cs" />
<Compile Include="FirmwareData.cs" />
<Compile Include="PresetProgramNrDialog.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="PresetProgramNrDialog.Designer.cs">
<DependentUpon>PresetProgramNrDialog.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Resource.de.Designer.cs">
<AutoGen>True</AutoGen>
@@ -110,6 +116,12 @@
</None>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="PresetProgramNrDialog.de.resx">
<DependentUpon>PresetProgramNrDialog.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="PresetProgramNrDialog.resx">
<DependentUpon>PresetProgramNrDialog.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Resource.de.resx">
<Generator>ResXFileCodeGenerator</Generator>

View File

@@ -146,7 +146,7 @@
offAudioPid2 = 170
[ACTChannelDataMapping:164]
; DM and LH series
; DM and LH series (except LH3000)
reorderChannelData = 1
lenName = 40
offChannelTransponder = 9, 112
@@ -174,6 +174,34 @@
offServiceType = 115
offAudioPid2 = 158
[ACTChannelDataMapping:LH3000]
; LH3000
reorderChannelData = 1
lenName = 40
offChannelTransponder = 9, 108
offProgramNr = 10
offFavorites = 18
offPcrPid = 20, 152
offAudioPid = 22
offVideoPid = 24
offName = 28, 112
offNameLength = 68,111
offServiceId = 70,158
offOriginalNetworkId = 86
offTransportStreamId = 88
offFrequencyLong = 96
offFavorites2 = 109
offDeleted = 109
maskDeleted = 0x42
offLock =
maskLock =
offSkip =
maskSkip =
offHide =
maskHide =
offServiceType = 160
offAudioPid2 = 154
[DvbsBlock:687880]
; everything before LM series (but including LM611S and LM340S)
satCount = 64

View File

@@ -17,8 +17,13 @@ namespace ChanSort.Loader.LG
this.InitCommonData(slot, SignalSource.DvbCT, data);
this.InitDvbData(data);
this.ChannelOrTransponder = data.GetByte(_ChannelOrTransponder).ToString("d2");
this.FreqInMhz = (decimal)data.GetDword(_FrequencyLong) / 1000;
int channel = data.GetByte(_ChannelOrTransponder);
this.ChannelOrTransponder = channel.ToString("d2");
// ReSharper disable PossibleLossOfFraction
this.FreqInMhz = (data.GetDword(_FrequencyLong)+10) / 1000;
// ReSharper restore PossibleLossOfFraction
if (this.FreqInMhz == 0)
this.FreqInMhz = LookupData.Instance.GetDvbtFrequenyForChannel(channel);
}
}
}

View File

@@ -0,0 +1,124 @@
namespace ChanSort.Loader.LG
{
partial class PresetProgramNrDialog
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PresetProgramNrDialog));
this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
this.labelControl4 = new DevExpress.XtraEditors.LabelControl();
this.labelControl5 = new DevExpress.XtraEditors.LabelControl();
this.labelControl6 = new DevExpress.XtraEditors.LabelControl();
this.labelControl7 = new DevExpress.XtraEditors.LabelControl();
this.linkDetails = new System.Windows.Forms.LinkLabel();
this.btnOk = new DevExpress.XtraEditors.SimpleButton();
this.SuspendLayout();
//
// labelControl1
//
resources.ApplyResources(this.labelControl1, "labelControl1");
this.labelControl1.Appearance.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
this.labelControl1.Name = "labelControl1";
//
// labelControl3
//
resources.ApplyResources(this.labelControl3, "labelControl3");
this.labelControl3.Appearance.Font = ((System.Drawing.Font)(resources.GetObject("labelControl3.Appearance.Font")));
this.labelControl3.Appearance.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
this.labelControl3.Name = "labelControl3";
//
// labelControl4
//
resources.ApplyResources(this.labelControl4, "labelControl4");
this.labelControl4.Appearance.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
this.labelControl4.Name = "labelControl4";
//
// labelControl5
//
resources.ApplyResources(this.labelControl5, "labelControl5");
this.labelControl5.Appearance.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
this.labelControl5.Name = "labelControl5";
//
// labelControl6
//
resources.ApplyResources(this.labelControl6, "labelControl6");
this.labelControl6.Appearance.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
this.labelControl6.Name = "labelControl6";
//
// labelControl7
//
resources.ApplyResources(this.labelControl7, "labelControl7");
this.labelControl7.Appearance.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
this.labelControl7.Name = "labelControl7";
//
// linkDetails
//
resources.ApplyResources(this.linkDetails, "linkDetails");
this.linkDetails.Name = "linkDetails";
this.linkDetails.TabStop = true;
this.linkDetails.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkDetails_LinkClicked);
//
// btnOk
//
this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK;
resources.ApplyResources(this.btnOk, "btnOk");
this.btnOk.Name = "btnOk";
//
// PresetProgramNrDialog
//
this.AcceptButton = this.btnOk;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnOk;
this.ControlBox = false;
this.Controls.Add(this.btnOk);
this.Controls.Add(this.linkDetails);
this.Controls.Add(this.labelControl7);
this.Controls.Add(this.labelControl6);
this.Controls.Add(this.labelControl5);
this.Controls.Add(this.labelControl4);
this.Controls.Add(this.labelControl3);
this.Controls.Add(this.labelControl1);
this.Name = "PresetProgramNrDialog";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private DevExpress.XtraEditors.LabelControl labelControl1;
private DevExpress.XtraEditors.LabelControl labelControl3;
private DevExpress.XtraEditors.LabelControl labelControl4;
private DevExpress.XtraEditors.LabelControl labelControl5;
private DevExpress.XtraEditors.LabelControl labelControl6;
private DevExpress.XtraEditors.LabelControl labelControl7;
private System.Windows.Forms.LinkLabel linkDetails;
private DevExpress.XtraEditors.SimpleButton btnOk;
}
}

View File

@@ -0,0 +1,23 @@
using System.Windows.Forms;
using DevExpress.XtraEditors;
namespace ChanSort.Loader.LG
{
public partial class PresetProgramNrDialog : XtraForm
{
public PresetProgramNrDialog()
{
InitializeComponent();
}
private void linkDetails_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
try
{
BrowserHelper.OpenUrl(
"http://sourceforge.net/p/chansort/wiki/Channels%20disappear%20or%20change%20program%20numbers%20randomly/");
}
catch { }
}
}
}

View File

@@ -0,0 +1,148 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="labelControl1.Text" xml:space="preserve">
<value>Diese Datei enthält vordefinierte Programmnummern für Satellitenkanäle.</value>
</data>
<data name="labelControl3.Text" xml:space="preserve">
<value>Aufgrund von Fehlern in der LG Firmware 2009-2013 ist diese Liste instabil!</value>
</data>
<data name="labelControl4.Text" xml:space="preserve">
<value>Um Probleme mit der bearbeiteten Senderliste zu vermeiden, erwägen Sie bitte eine dieser Optionen:</value>
</data>
<data name="labelControl5.Text" xml:space="preserve">
<value>- Sauberen Kanalsuchlauf ausführen (ohne vordefinierte Länder-/Satelliten-/Providerlisten)</value>
</data>
<data name="labelControl6.Text" xml:space="preserve">
<value>- Hotel-Modus aktivieren (muss bereits vor dem Export der Senderliste vom TV auf USB erfolgen)</value>
</data>
<data name="labelControl7.Text" xml:space="preserve">
<value>- ChanSort's "TV-Datei bereinigen" Option aktivieren (nicht unterstützt bei 2013 LA-Serie)</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="linkDetails.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 13</value>
</data>
<data name="linkDetails.Text" xml:space="preserve">
<value>Details hierzu gibt es auf der ChanSort Wiki</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Wichtiger Hinweis</value>
</data>
</root>

View File

@@ -0,0 +1,379 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelControl1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<assembly alias="DevExpress.XtraEditors.v12.2" name="DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="labelControl1.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v12.2">
<value>Vertical</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="labelControl1.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 12</value>
</data>
<data name="labelControl1.Size" type="System.Drawing.Size, System.Drawing">
<value>560, 13</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelControl1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="labelControl1.Text" xml:space="preserve">
<value>This file contains satellite channels with preset program numbers.</value>
</data>
<data name="&gt;&gt;labelControl1.Name" xml:space="preserve">
<value>labelControl1</value>
</data>
<data name="&gt;&gt;labelControl1.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;labelControl1.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="labelControl3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="labelControl3.Appearance.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8.25pt, style=Bold</value>
</data>
<data name="labelControl3.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v12.2">
<value>Vertical</value>
</data>
<data name="labelControl3.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 41</value>
</data>
<data name="labelControl3.Size" type="System.Drawing.Size, System.Drawing">
<value>559, 13</value>
</data>
<data name="labelControl3.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelControl3.Text" xml:space="preserve">
<value>Because of errors in LG's 2009-2013 firmware this list is unstable!</value>
</data>
<data name="&gt;&gt;labelControl3.Name" xml:space="preserve">
<value>labelControl3</value>
</data>
<data name="&gt;&gt;labelControl3.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl3.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;labelControl3.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="labelControl4.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="labelControl4.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v12.2">
<value>Vertical</value>
</data>
<data name="labelControl4.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 70</value>
</data>
<data name="labelControl4.Size" type="System.Drawing.Size, System.Drawing">
<value>559, 13</value>
</data>
<data name="labelControl4.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="labelControl4.Text" xml:space="preserve">
<value>To prevent problems with your edited channel list please consider one of these options:</value>
</data>
<data name="&gt;&gt;labelControl4.Name" xml:space="preserve">
<value>labelControl4</value>
</data>
<data name="&gt;&gt;labelControl4.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl4.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;labelControl4.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="labelControl5.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="labelControl5.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v12.2">
<value>Vertical</value>
</data>
<data name="labelControl5.Location" type="System.Drawing.Point, System.Drawing">
<value>31, 87</value>
</data>
<data name="labelControl5.Size" type="System.Drawing.Size, System.Drawing">
<value>541, 13</value>
</data>
<data name="labelControl5.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="labelControl5.Text" xml:space="preserve">
<value>- Run a clean channel search (without predefined country / satellite / provider lists)</value>
</data>
<data name="&gt;&gt;labelControl5.Name" xml:space="preserve">
<value>labelControl5</value>
</data>
<data name="&gt;&gt;labelControl5.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl5.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;labelControl5.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="labelControl6.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="labelControl6.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v12.2">
<value>Vertical</value>
</data>
<data name="labelControl6.Location" type="System.Drawing.Point, System.Drawing">
<value>31, 122</value>
</data>
<data name="labelControl6.Size" type="System.Drawing.Size, System.Drawing">
<value>541, 13</value>
</data>
<data name="labelControl6.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="labelControl6.Text" xml:space="preserve">
<value>- Enable Hotel-Mode (must be done before exporting the channel list from your TV)</value>
</data>
<data name="&gt;&gt;labelControl6.Name" xml:space="preserve">
<value>labelControl6</value>
</data>
<data name="&gt;&gt;labelControl6.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl6.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;labelControl6.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="labelControl7.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="labelControl7.AutoSizeMode" type="DevExpress.XtraEditors.LabelAutoSizeMode, DevExpress.XtraEditors.v12.2">
<value>Vertical</value>
</data>
<data name="labelControl7.Location" type="System.Drawing.Point, System.Drawing">
<value>31, 104</value>
</data>
<data name="labelControl7.Size" type="System.Drawing.Size, System.Drawing">
<value>541, 13</value>
</data>
<data name="labelControl7.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="labelControl7.Text" xml:space="preserve">
<value>- Enable ChanSort's "Cleanup TV Data File" option (not supported for LA-series)</value>
</data>
<data name="&gt;&gt;labelControl7.Name" xml:space="preserve">
<value>labelControl7</value>
</data>
<data name="&gt;&gt;labelControl7.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;labelControl7.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;labelControl7.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="linkDetails.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="linkDetails.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 156</value>
</data>
<data name="linkDetails.Size" type="System.Drawing.Size, System.Drawing">
<value>165, 13</value>
</data>
<data name="linkDetails.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="linkDetails.Text" xml:space="preserve">
<value>See the ChanSort Wiki for details</value>
</data>
<data name="&gt;&gt;linkDetails.Name" xml:space="preserve">
<value>linkDetails</value>
</data>
<data name="&gt;&gt;linkDetails.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;linkDetails.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;linkDetails.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="btnOk.Location" type="System.Drawing.Point, System.Drawing">
<value>254, 202</value>
</data>
<data name="btnOk.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="btnOk.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="btnOk.Text" xml:space="preserve">
<value>Ok</value>
</data>
<data name="&gt;&gt;btnOk.Name" xml:space="preserve">
<value>btnOk</value>
</data>
<data name="&gt;&gt;btnOk.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;btnOk.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;btnOk.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>584, 237</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Important Notice</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PresetProgramNrDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
</root>

View File

@@ -0,0 +1 @@
DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -6,8 +6,10 @@ namespace ChanSort.Loader.LG
{
private const string _SatConfigIndex = "offSatelliteNr";
private const string _TransponderIndex = "offTransponderIndex";
private const string _ProgramNrPreset = "offProgramNrPreset";
public bool InUse { get; private set; }
public int ProgramNrPreset { get; private set; }
public SatChannel(int order, int slot, DataMapping data, DataRoot dataRoot) : base(data)
{
@@ -18,6 +20,7 @@ namespace ChanSort.Loader.LG
this.InitCommonData(slot, SignalSource.DvbS, data);
this.InitDvbData(data);
this.ProgramNrPreset = data.GetWord(_ProgramNrPreset);
int transponderIndex = data.GetWord(_TransponderIndex);
Transponder transponder = dataRoot.Transponder.TryGet(transponderIndex);
Satellite sat = transponder.Satellite;
@@ -36,10 +39,11 @@ namespace ChanSort.Loader.LG
public override void UpdateRawData()
{
base.UpdateRawData();
// bool deleted = this.NewProgramNr == 0;
// if (deleted)
// mapping.SetWord(_SatConfigIndex, 0xFFFF);
#if false
bool deleted = this.NewProgramNr == -1;
if (deleted)
mapping.SetWord(_SatConfigIndex, 0xFFFF);
#endif
}
}
}

View File

@@ -10,6 +10,7 @@ using System.Reflection;
using System.Text;
using System.Windows.Forms;
using ChanSort.Api;
using DevExpress.XtraEditors;
namespace ChanSort.Loader.LG
{
@@ -63,6 +64,7 @@ namespace ChanSort.Loader.LG
private int deletedChannelsHard;
private int deletedChannelsSoft;
private int dvbsChannelsAtPr0;
private int presetChannels;
private bool removeDeletedActChannels = false;
@@ -101,9 +103,9 @@ namespace ChanSort.Loader.LG
foreach (var section in ini.Sections)
{
int idx = section.Name.IndexOf(":");
int recordLength = idx < 0 ? 0 : int.Parse(section.Name.Substring(idx + 1));
string recordLength = idx < 0 ? "" : section.Name.Substring(idx + 1);
if (section.Name.StartsWith("DvbsBlock"))
this.satConfigs.Add(recordLength, new DvbsDataLayout(section));
this.satConfigs.Add(int.Parse(recordLength), new DvbsDataLayout(section));
else if (section.Name.StartsWith("ACTChannelDataMapping"))
actMappings.AddMapping(recordLength, new DataMapping(section));
else if (section.Name.StartsWith("SatChannelDataMapping"))
@@ -138,9 +140,7 @@ namespace ChanSort.Loader.LG
this.ReadDvbCtChannels(ref off);
this.ReadDvbSBlock(ref off);
this.ReadSettingsBlock(ref off);
if (this.EraseDuplicateChannels)
this.CleanUpChannelData();
this.CleanUpChannelData();
#if STORE_DVBS_CHANNELS_IN_DATABASE
this.StoreToDatabase();
@@ -245,7 +245,10 @@ namespace ChanSort.Loader.LG
if (channelCount == 0) return;
recordSize = GetActChannelRecordSize(off, blockSize, channelCount);
var actMapping = this.actMappings.GetMapping(recordSize);
var key = (Path.GetFileNameWithoutExtension(this.FileName) ?? "").ToUpper().StartsWith("XXLH3000")
? "LH3000"
: recordSize.ToString();
var actMapping = this.actMappings.GetMapping(key);
this.reorderPhysically = actMapping.Settings.GetInt("reorderChannelData") != 0;
for (int i = 0; i < channelCount; i++)
@@ -454,6 +457,9 @@ namespace ChanSort.Loader.LG
++this.duplicateChannels;
}
this.DataRoot.AddChannel(list, ci);
if (ci.ProgramNrPreset != 0)
++this.presetChannels;
}
if (!this.nextChannelIndex.TryGetValue(index, out index) || index == -1)
@@ -560,6 +566,18 @@ namespace ChanSort.Loader.LG
#region CleanUpChannelData()
public override string CleanUpChannelData()
{
if (this.satConfig == null)
return "";
if (!this.EraseDuplicateChannels || this.satConfig.dvbsChannelLength >= 92 /* LA series */)
{
if (this.presetChannels > 0)
{
new PresetProgramNrDialog().ShowDialog();
}
return "";
}
this.ResetChannelInformationInTransponderData();
byte[] sortedChannels = new byte[this.satConfig.dvbsMaxChannelCount*this.satConfig.dvbsChannelLength];
@@ -755,7 +773,8 @@ namespace ChanSort.Loader.LG
file.Write(fileContent, this.dvbsBlockOffset, this.dvbsBlockSize + 4);
// rest (including settings)
file.Write(fileContent, this.settingsBlockOffset, fileContent.Length - this.settingsBlockOffset);
if (this.settingsBlockOffset != 0)
file.Write(fileContent, this.settingsBlockOffset, fileContent.Length - this.settingsBlockOffset);
}
}
#endregion
@@ -890,6 +909,7 @@ namespace ChanSort.Loader.LG
sb.Append("Channel records erased (duplicates): ").Append(this.duplicateChannels).AppendLine();
sb.Append("Channel records with Pr# 0: ").Append(dvbsChannelsAtPr0).AppendLine();
sb.Append("Channel records with duplicate Pr#: ").Append(numberOfDupePrNr).AppendLine();
sb.Append("Channel records with preset Pr#: ").Append(this.presetChannels).AppendLine();
}
else
sb.AppendLine("not present");