mirror of
https://github.com/PredatH0r/ChanSort.git
synced 2026-01-16 20:32:04 +01:00
initial import
This commit is contained in:
219
ChanSort.Plugin.TllFile/ActChannelDataMapping.cs
Normal file
219
ChanSort.Plugin.TllFile/ActChannelDataMapping.cs
Normal file
@@ -0,0 +1,219 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
#region class ActChannelDataMapping
|
||||
/// <summary>
|
||||
/// Mapping for Analog, Cable and Terrestrial
|
||||
/// </summary>
|
||||
public unsafe class ActChannelDataMapping : DvbChannelMappingBase
|
||||
{
|
||||
private readonly DvbStringDecoder dvbsStringDecoder;
|
||||
|
||||
private const string offFrequencyLong = "offFrequencyLong";
|
||||
private const string offFavorites2 = "offFavorites2";
|
||||
private const string offProgramNr2 = "offProgramNr2";
|
||||
|
||||
#region ctor()
|
||||
public ActChannelDataMapping(IniFile.Section settings, int length, DvbStringDecoder dvbsStringDecoder) : base(settings, length, null)
|
||||
{
|
||||
this.dvbsStringDecoder = dvbsStringDecoder;
|
||||
this.ReorderChannelData = settings.GetInt("reorderChannelData") != 0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Encoding
|
||||
public Encoding Encoding
|
||||
{
|
||||
get { return this.dvbsStringDecoder.DefaultEncoding; }
|
||||
set { this.dvbsStringDecoder.DefaultEncoding = value; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
public bool ReorderChannelData { get; private set; }
|
||||
|
||||
#region Favorites
|
||||
public override Favorites Favorites
|
||||
{
|
||||
get { return (Favorites)(this.GetByte(offFavorites) & 0x0F); }
|
||||
set
|
||||
{
|
||||
int intValue = (int)value;
|
||||
foreach (int off in this.GetOffsets(offFavorites))
|
||||
this.DataPtr[off] = (byte) ((this.DataPtr[off] & 0xF0) | intValue);
|
||||
intValue <<= 2;
|
||||
foreach (int off in this.GetOffsets(offFavorites2))
|
||||
this.DataPtr[off] = (byte)((this.DataPtr[off] & 0xC3) | intValue);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ProgramNr
|
||||
public override ushort ProgramNr
|
||||
{
|
||||
get { return base.ProgramNr; }
|
||||
set
|
||||
{
|
||||
base.ProgramNr = value;
|
||||
this.SetWord(offProgramNr2, (ushort)((value<<2) | (GetWord(offProgramNr2) & 0x03)));
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Name
|
||||
public override string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
string longName, shortName;
|
||||
this.dvbsStringDecoder.GetChannelNames(this.NamePtr, this.NameLength, out longName, out shortName);
|
||||
return longName;
|
||||
}
|
||||
set { ChannelDataMapping.SetChannelName(this, value, this.dvbsStringDecoder.DefaultEncoding); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ShortName
|
||||
public override string ShortName
|
||||
{
|
||||
get
|
||||
{
|
||||
string longName, shortName;
|
||||
this.dvbsStringDecoder.GetChannelNames(this.NamePtr, this.NameLength, out longName, out shortName);
|
||||
return shortName;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region FrequencyLong
|
||||
public virtual uint FrequencyLong
|
||||
{
|
||||
get { return this.GetDword(offFrequencyLong); }
|
||||
set { this.SetDword(offFrequencyLong, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AnalogFrequency, AnalogChannelNr, AnalogChannelBand
|
||||
|
||||
public ushort AnalogFrequency
|
||||
{
|
||||
get { return this.PcrPid; }
|
||||
set { this.PcrPid = value; }
|
||||
}
|
||||
|
||||
public byte AnalogChannelNr
|
||||
{
|
||||
get { return (byte)(this.VideoPid & 0xFF); }
|
||||
}
|
||||
|
||||
public byte AnalogChannelBand
|
||||
{
|
||||
get { return (byte)(this.VideoPid >> 8); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region Validate()
|
||||
public string Validate()
|
||||
{
|
||||
bool ok = true;
|
||||
List<string> warnings = new List<string>();
|
||||
ok &= ValidateByte(offChannelTransponder) || AddWarning(warnings, "Channel/Transponder number");
|
||||
ok &= ValidateWord(offProgramNr) || AddWarning(warnings, "Program#");
|
||||
ok &= ValidateByte(offFavorites) || AddWarning(warnings, "Favorites");
|
||||
ok &= ValidateWord(offPcrPid) || AddWarning(warnings, "PCR-PID");
|
||||
ok &= ValidateWord(offAudioPid) || AddWarning(warnings, "Audio-PID");
|
||||
ok &= ValidateWord(offVideoPid) || AddWarning(warnings, "Video-PID");
|
||||
ok &= ValidateString(offName, 40) || AddWarning(warnings, "Channel name");
|
||||
ok &= ValidateByte(offNameLength) || AddWarning(warnings, "Channel name length");
|
||||
ok &= ValidateWord(offServiceId) || AddWarning(warnings, "Service-ID");
|
||||
ok &= ValidateString(offFrequencyLong, 4) || AddWarning(warnings, "Frequency");
|
||||
ok &= ValidateWord(offOriginalNetworkId) || AddWarning(warnings, "Original Network-ID");
|
||||
ok &= ValidateWord(offTransportStreamId) || AddWarning(warnings, "Transport Stream ID");
|
||||
ok &= ValidateByte(offFavorites2) || AddWarning(warnings, "Favorites #2");
|
||||
ok &= ValidateByte(offServiceType) || AddWarning(warnings, "Service Type");
|
||||
|
||||
if (ok)
|
||||
return null;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (var warning in warnings)
|
||||
{
|
||||
if (sb.Length > 0)
|
||||
sb.Append(", ");
|
||||
sb.Append(warning);
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddWarning()
|
||||
private bool AddWarning(List<string> warnings, string p)
|
||||
{
|
||||
warnings.Add(p);
|
||||
return false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ValidateByte()
|
||||
private bool ValidateByte(string key)
|
||||
{
|
||||
var offsets = this.GetOffsets(key);
|
||||
if (offsets == null || offsets.Length < 1)
|
||||
return true;
|
||||
byte value = *(this.DataPtr + offsets[0]);
|
||||
bool ok = true;
|
||||
foreach(int offset in offsets)
|
||||
{
|
||||
if (this.DataPtr[offset] != value)
|
||||
ok = false;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ValidateWord()
|
||||
private bool ValidateWord(string key)
|
||||
{
|
||||
var offsets = this.GetOffsets(key);
|
||||
if (offsets == null || offsets.Length < 1)
|
||||
return true;
|
||||
ushort value = *(ushort*)(this.DataPtr + offsets[0]);
|
||||
bool ok = true;
|
||||
foreach (int offset in offsets)
|
||||
{
|
||||
if (*(ushort*) (this.DataPtr + offset) != value)
|
||||
ok = false;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ValidateString()
|
||||
private bool ValidateString(string key, int len)
|
||||
{
|
||||
var offsets = this.GetOffsets(key);
|
||||
if (offsets == null || offsets.Length < 1)
|
||||
return true;
|
||||
bool ok = true;
|
||||
int off0 = offsets[0];
|
||||
for (int i = 1; i < offsets.Length; i++)
|
||||
{
|
||||
int offI = offsets[i];
|
||||
for (int j = 0; j < len; j++)
|
||||
{
|
||||
byte b = this.DataPtr[off0 + j];
|
||||
if (this.DataPtr[offI + j] != b)
|
||||
ok = false;
|
||||
if (b == 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
138
ChanSort.Plugin.TllFile/ChanSort.Plugin.TllFile.csproj
Normal file
138
ChanSort.Plugin.TllFile/ChanSort.Plugin.TllFile.csproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{E972D8A1-2F5F-421C-AC91-CFF45E5191BE}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ChanSort.Plugin.TllFile</RootNamespace>
|
||||
<AssemblyName>ChanSort.Plugin.TllFile</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
|
||||
<CodeAnalysisFailOnMissingRules>true</CodeAnalysisFailOnMissingRules>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||
<OutputPath>bin\x86\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisFailOnMissingRules>true</CodeAnalysisFailOnMissingRules>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DevExpress.Data.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ActChannelDataMapping.cs" />
|
||||
<Compile Include="ChannelDataMapping.cs" />
|
||||
<Compile Include="DvbsChannelDataMapping.cs" />
|
||||
<Compile Include="FirmwareDataMapping.cs" />
|
||||
<Compile Include="ModelConstants.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Resource.de.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resource.de.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Resource.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resource.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="TllFileSerializer.cs" />
|
||||
<Compile Include="TllFileSerializer.sql.cs" />
|
||||
<Compile Include="TllFileSerializerPlugin.cs" />
|
||||
<Compile Include="TllStructures.cs" />
|
||||
<Compile Include="TvSettingsForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="TvSettingsForm.Designer.cs">
|
||||
<DependentUpon>TvSettingsForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ChanSort.Api\ChanSort.Api.csproj">
|
||||
<Project>{DCCFFA08-472B-4D17-BB90-8F513FC01392}</Project>
|
||||
<Name>ChanSort.Api</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ChanSort.Plugin.TllFile.ini">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Properties\licenses.licx" />
|
||||
<EmbeddedResource Include="Resource.de.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resource.de.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Resource.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resource.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="TvSettingsForm.de.resx">
|
||||
<DependentUpon>TvSettingsForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="TvSettingsForm.resx">
|
||||
<DependentUpon>TvSettingsForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
331
ChanSort.Plugin.TllFile/ChanSort.Plugin.TllFile.ini
Normal file
331
ChanSort.Plugin.TllFile/ChanSort.Plugin.TllFile.ini
Normal file
@@ -0,0 +1,331 @@
|
||||
; FileConfigurationX: overall file and DVB-S data layout
|
||||
; ACTChannelDataMappingX: analog, DVB-C and DVB-T channel data mapping for data length X
|
||||
|
||||
[FileConfiguration1]
|
||||
; LM and PM series except LM611S and LM340S
|
||||
magicBytes = 90, 90, 90, 90
|
||||
satCount = 64
|
||||
satLength = 44
|
||||
transponderCount = 2400
|
||||
transponderLength = 40
|
||||
dvbsChannelCount = 7520
|
||||
dvbsChannelLength = 72
|
||||
lnbCount = 40
|
||||
lnbLength = 44
|
||||
|
||||
[FileConfiguration2]
|
||||
; LV and LW series (some LW don't have DVB-S though), some LM models
|
||||
magicBytes = 90, 90, 90, 90
|
||||
satCount = 64
|
||||
satLength = 44
|
||||
transponderCount = 2400
|
||||
transponderLength = 40
|
||||
dvbsChannelCount = 7520
|
||||
dvbsChannelLength = 68
|
||||
lnbCount = 40
|
||||
lnbLength = 44
|
||||
|
||||
[FileConfiguration3]
|
||||
; DM and LH series
|
||||
magicBytes =
|
||||
satCount = 0
|
||||
|
||||
|
||||
[ACTChannelDataMapping:192]
|
||||
; LM series with Firmware 4.x (all except LM611S and LM340S)
|
||||
reorderChannelData = 0
|
||||
lenName = 40
|
||||
offChannelTransponder = 10, 94, 126, 132
|
||||
offProgramNr = 12, 128
|
||||
offFavorites = 20
|
||||
offPcrPid = 22, 180
|
||||
offAudioPid = 24
|
||||
offVideoPid = 26
|
||||
offName = 30, 140
|
||||
offNameLength = 70, 139
|
||||
offServiceId = 72, 136
|
||||
offFrequencyLong = 96
|
||||
offOriginalNetworkId = 102
|
||||
offTransportStreamId = 104
|
||||
offFavorites2 = 134
|
||||
offLock = 135
|
||||
maskLock = 0x01
|
||||
offSkip = 135
|
||||
maskSkip = 0x02
|
||||
offHide = 135
|
||||
maskHide = 0x04
|
||||
offServiceType = 138
|
||||
offAudioPid2 = 182
|
||||
|
||||
[ACTChannelDataMapping:188]
|
||||
; LM series with Firmware 3.x (LM611S with exceptions, LM340S)
|
||||
reorderChannelData = 0
|
||||
lenName = 40
|
||||
offChannelTransponder = 10, 94, 125, 132
|
||||
offProgramNr = 12, 128
|
||||
offFavorites = 20
|
||||
offPcrPid = 22, 180
|
||||
offAudioPid = 24
|
||||
offVideoPid = 26
|
||||
offName = 30, 140
|
||||
offNameLength = 70, 139
|
||||
offServiceId = 72, 136
|
||||
offFrequencyLong = 96
|
||||
offOriginalNetworkId = 102
|
||||
offTransportStreamId = 104
|
||||
offFavorites2 = 134
|
||||
offLock = 135
|
||||
maskLock = 0x01
|
||||
offSkip = 135
|
||||
maskSkip = 0x02
|
||||
offHide = 135
|
||||
maskHide = 0x04
|
||||
offServiceType = 138
|
||||
offAudioPid2 = 182
|
||||
|
||||
[ACTChannelDataMapping:184]
|
||||
; LV470S,LV570S,LV579S(with exceptions), LW5500,LW5590,LW570S,LW579S,LW650S,LW659S(with exceptions)
|
||||
; LK950S, CS460S, PM670S, LM611S(with exceptions)
|
||||
reorderChannelData = 0
|
||||
lenName = 40
|
||||
offChannelTransponder = 10, 90, 121, 128
|
||||
offProgramNr = 12, 124
|
||||
offFavorites = 20
|
||||
offPcrPid = 22, 176
|
||||
offAudioPid = 24
|
||||
offVideoPid = 26
|
||||
offName = 30, 136
|
||||
offNameLength = 70, 135
|
||||
offServiceId = 72, 132
|
||||
offFrequencyLong = 92
|
||||
offOriginalNetworkId = 98
|
||||
offTransportStreamId = 100
|
||||
offFavorites2 = 130
|
||||
offLock = 131
|
||||
maskLock = 0x01
|
||||
offSkip = 131
|
||||
maskSkip = 0x02
|
||||
offHide = 131
|
||||
maskHide = 0x04
|
||||
offServiceType = 134
|
||||
offAudioPid2 = 178
|
||||
|
||||
[ACTChannelDataMapping:180]
|
||||
; PT
|
||||
reorderChannelData = 0
|
||||
lenName = 40
|
||||
offChannelTransponder = 10, 90, 124
|
||||
offProgramNr = 12
|
||||
offFavorites = 20
|
||||
offPcrPid = 22, 172
|
||||
offAudioPid = 24
|
||||
offVideoPid = 26
|
||||
offName = 30, 132
|
||||
offNameLength = 70, 131
|
||||
offServiceId = 72, 128
|
||||
offFrequencyLong = 92
|
||||
offOriginalNetworkId = 98
|
||||
offTransportStreamId = 100
|
||||
offProgramNr2 = 120
|
||||
offFavorites2 = 126
|
||||
offLock = 127
|
||||
maskLock = 0x01
|
||||
offSkip = 127
|
||||
maskSkip = 0x02
|
||||
offHide = 127
|
||||
maskHide = 0x04
|
||||
offServiceType = 130
|
||||
offAudioPid2 = 172
|
||||
|
||||
[ACTChannelDataMapping:176]
|
||||
; LD, LE series, LK450, LW4500, LW5400
|
||||
reorderChannelData = 0
|
||||
lenName = 40
|
||||
offChannelTransponder = 10, 86, 120
|
||||
offProgramNr = 12
|
||||
offFavorites = 20
|
||||
offPcrPid = 22, 168
|
||||
offAudioPid = 24
|
||||
offVideoPid = 26
|
||||
offName = 30, 128
|
||||
offNameLength = 70, 127
|
||||
offServiceId = 72, 124
|
||||
offFrequencyLong = 88
|
||||
offOriginalNetworkId = 94
|
||||
offTransportStreamId = 96
|
||||
offProgramNr2 = 116
|
||||
offFavorites2 = 122
|
||||
offLock = 123
|
||||
maskLock = 0x01
|
||||
offSkip = 123
|
||||
maskSkip = 0x02
|
||||
offHide = 123
|
||||
maskHide = 0x04
|
||||
offServiceType = 126
|
||||
offAudioPid2 = 170
|
||||
|
||||
[ACTChannelDataMapping:164]
|
||||
; DM and LH series
|
||||
reorderChannelData = 1
|
||||
lenName = 40
|
||||
offChannelTransponder = 9, 112
|
||||
offProgramNr = 10
|
||||
offFavorites = 18
|
||||
offPcrPid = 20, 156
|
||||
offAudioPid = 22
|
||||
offVideoPid = 24
|
||||
offName = 28, 116
|
||||
offNameLength = 68
|
||||
offServiceId = 70
|
||||
offOriginalNetworkId = 86
|
||||
offTransportStreamId = 88
|
||||
offFrequencyLong = 96
|
||||
offProgramNr2 = 108
|
||||
offFavorites2 = 113
|
||||
offLock = 113
|
||||
maskLock =
|
||||
offSkip = 113
|
||||
maskSkip = 0x20
|
||||
offHide = 113
|
||||
maskHide =
|
||||
offServiceType = 115
|
||||
offAudioPid2 = 158
|
||||
|
||||
[SatChannelDataMapping:68]
|
||||
lenName = 40
|
||||
offSatelliteNr = 0
|
||||
offSourceType = 4
|
||||
offTransponderIndex = 5, 12
|
||||
offProgramNr = 8
|
||||
offProgramNrPreset = 10
|
||||
offFavorites = 14
|
||||
maskFavorites = 0x3C
|
||||
offDeleted = 14
|
||||
maskDeleted = 0x42
|
||||
offEncrypted = 14
|
||||
maskEncrypted = 0x80
|
||||
offLock = 15
|
||||
maskLock = 0x01
|
||||
offSkip = 15
|
||||
maskSkip = 0x02
|
||||
offHide = 15
|
||||
maskHide = 0x04
|
||||
offProgNrCustomized = 15
|
||||
maskProgNrCustomized = 0x40
|
||||
offServiceId = 16
|
||||
offServiceType = 18
|
||||
offNameLength = 19
|
||||
offName = 20
|
||||
offVideoPid = 60
|
||||
offAudioPid = 62
|
||||
|
||||
[SatChannelDataMapping:72]
|
||||
lenName = 40
|
||||
offSatelliteNr = 0
|
||||
offSourceType = 4
|
||||
offTransponderIndex = 6, 12
|
||||
offProgramNr = 8
|
||||
offProgramNrPreset = 10
|
||||
offFavorites = 14
|
||||
maskFavorites = 0x3C
|
||||
offDeleted = 14
|
||||
maskDeleted = 0x42
|
||||
offEncrypted = 14
|
||||
maskEncrypted = 0x80
|
||||
offLock = 15
|
||||
maskLock = 0x01
|
||||
offSkip = 15
|
||||
maskSkip = 0x02
|
||||
offHide = 15
|
||||
maskHide = 0x04
|
||||
offProgNrCustomized = 15
|
||||
maskProgNrCustomized = 0x40
|
||||
offServiceId = 16
|
||||
offServiceType = 18
|
||||
offNameLength = 19
|
||||
offName = 20
|
||||
offVideoPid = 60
|
||||
offAudioPid = 62
|
||||
|
||||
[FirmwareData:6944]
|
||||
; LH series
|
||||
offSize = 0
|
||||
offHotelModeEnabled=6543
|
||||
offHotelModeDtvUpdate=6553
|
||||
|
||||
[FirmwareData:11008]
|
||||
; DM (2350D)
|
||||
offSize = 0
|
||||
offHotelModeEnabled=10563
|
||||
offHotelModeDtvUpdate=10573
|
||||
|
||||
[FirmwareData:15936]
|
||||
; PT
|
||||
offSize = 0
|
||||
offHotelModeEnabled=12601
|
||||
offHotelModeDtvUpdate=12611
|
||||
|
||||
[FirmwareData:15960]
|
||||
; LW4500, LW5400
|
||||
offSize = 0
|
||||
offHotelModeEnabled=12603
|
||||
offHotelModeDtvUpdate=12613
|
||||
|
||||
[FirmwareData:16024]
|
||||
; LM611S, LM340S, CS460S
|
||||
offSize = 0
|
||||
offHotelModeEnabled=12639
|
||||
offHotelModeDtvUpdate=12649
|
||||
|
||||
[FirmwareData:23072]
|
||||
; LD420, LD450, LD550
|
||||
offSize = 0
|
||||
offHotelModeEnabled=19721
|
||||
offHotelModeDtvUpdate=19731
|
||||
|
||||
[FirmwareData:23088]
|
||||
; LK450
|
||||
offSize = 0
|
||||
offHotelModeEnabled=19723
|
||||
offHotelModeDtvUpdate=19733
|
||||
|
||||
[FirmwareData:23096]
|
||||
; LE5500, LD750
|
||||
offSize = 0
|
||||
offHotelModeEnabled=19721
|
||||
offHotelModeDtvUpdate=19731
|
||||
|
||||
[FirmwareData:35504]
|
||||
; LV,LW,LK950S
|
||||
offSize = 0
|
||||
offSystemLock =
|
||||
offTvPassword =
|
||||
offHbbTvEnabled =
|
||||
offHotelModeEnabled=34643
|
||||
offHotelModeDtvUpdate=34653
|
||||
offHotelMenuAccessCode = 34668
|
||||
offHotelMenuPin = 34714
|
||||
|
||||
[FirmwareData:36856]
|
||||
; LM860V
|
||||
offSize = 0
|
||||
offSystemLock = 171
|
||||
offTvPassword = 173
|
||||
offHbbTvEnabled = 35096
|
||||
offHotelModeEnabled=35635
|
||||
offHotelModeDtvUpdate=35645
|
||||
offHotelMenuAccessCode = 35660
|
||||
offHotelMenuPin = 35706
|
||||
offSettingsChannelUpdate=36544
|
||||
|
||||
[FirmwareData:36864]
|
||||
; LM (except LM611S,LM340S and LM860V),PM,LS
|
||||
offSize = 0
|
||||
offSystemLock = 171
|
||||
offTvPassword = 173
|
||||
offHbbTvEnabled = 35096
|
||||
offHotelModeEnabled=35635
|
||||
offHotelModeDtvUpdate=35645
|
||||
offHotelMenuAccessCode = 35660
|
||||
offHotelMenuPin = 35706
|
||||
offSettingsChannelUpdate=36544
|
||||
23
ChanSort.Plugin.TllFile/ChannelDataMapping.cs
Normal file
23
ChanSort.Plugin.TllFile/ChannelDataMapping.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
internal static class ChannelDataMapping
|
||||
{
|
||||
public static unsafe void SetChannelName(ChannelMappingBase mapping, string channelName, Encoding defaultEncoding)
|
||||
{
|
||||
byte[] codePagePrefix = new byte[0]; // DvbStringDecoder.GetCodepageBytes(defaultEncoding);
|
||||
byte[] name = defaultEncoding.GetBytes(channelName);
|
||||
byte[] newName = new byte[codePagePrefix.Length + name.Length + 1];
|
||||
Array.Copy(codePagePrefix, 0, newName, 0, codePagePrefix.Length);
|
||||
Array.Copy(name, 0, newName, codePagePrefix.Length, name.Length);
|
||||
fixed (byte* ptrNewName = newName)
|
||||
{
|
||||
mapping.NamePtr = ptrNewName;
|
||||
}
|
||||
mapping.NameLength = newName.Length;
|
||||
}
|
||||
}
|
||||
}
|
||||
197
ChanSort.Plugin.TllFile/DvbsChannelDataMapping.cs
Normal file
197
ChanSort.Plugin.TllFile/DvbsChannelDataMapping.cs
Normal file
@@ -0,0 +1,197 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
public unsafe class DvbsChannelDataMapping : DvbChannelMappingBase
|
||||
{
|
||||
private const string offSatelliteNr = "offSatelliteNr";
|
||||
private const string offTransponderIndex = "offTransponderIndex";
|
||||
private const string offProgramNrPreset = "offProgramNrPreset";
|
||||
private const string offProgNrCustomized = "offProgNrCustomized";
|
||||
private const string maskProgNrCustomized = "maskProgNrCustomized";
|
||||
|
||||
private readonly DvbStringDecoder dvbsStringDecoder;
|
||||
|
||||
public DvbsChannelDataMapping(IniFile.Section settings, int dataLength, DvbStringDecoder dvbsStringDecoder) :
|
||||
base(settings, dataLength, null)
|
||||
{
|
||||
this.dvbsStringDecoder = dvbsStringDecoder;
|
||||
}
|
||||
|
||||
#region Encoding
|
||||
public Encoding Encoding
|
||||
{
|
||||
get { return this.dvbsStringDecoder.DefaultEncoding; }
|
||||
set { this.dvbsStringDecoder.DefaultEncoding = value; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region InUse
|
||||
public override bool InUse
|
||||
{
|
||||
get { return this.SatelliteNr != 0xFFFF; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IsDeleted
|
||||
public override bool IsDeleted
|
||||
{
|
||||
get { return base.IsDeleted; }
|
||||
set
|
||||
{
|
||||
base.IsDeleted = value;
|
||||
if (value)
|
||||
this.SatelliteNr = 0xFFFF;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SatelliteNr
|
||||
public int SatelliteNr
|
||||
{
|
||||
get { return this.GetWord(offSatelliteNr); }
|
||||
set { this.SetWord(offSatelliteNr, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ProgramNr
|
||||
public override ushort ProgramNr
|
||||
{
|
||||
get { return base.ProgramNr; }
|
||||
set
|
||||
{
|
||||
base.ProgramNr = value;
|
||||
this.IsProgNrCustomized = true;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ProgramNrPreset
|
||||
public int ProgramNrPreset
|
||||
{
|
||||
get { return this.GetWord(offProgramNrPreset); }
|
||||
set { this.SetWord(offProgramNrPreset, (ushort)value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IsProgNrCustomized
|
||||
public bool IsProgNrCustomized
|
||||
{
|
||||
get { return GetFlag(offProgNrCustomized, maskProgNrCustomized); }
|
||||
set { SetFlag(offProgNrCustomized, maskProgNrCustomized, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Name
|
||||
public override string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
string longName, shortName;
|
||||
this.dvbsStringDecoder.GetChannelNames(this.NamePtr, this.NameLength, out longName, out shortName);
|
||||
return longName;
|
||||
}
|
||||
set { ChannelDataMapping.SetChannelName(this, value, this.dvbsStringDecoder.DefaultEncoding); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ShortName
|
||||
public override string ShortName
|
||||
{
|
||||
get
|
||||
{
|
||||
string longName, shortName;
|
||||
this.dvbsStringDecoder.GetChannelNames(this.NamePtr, this.NameLength, out longName, out shortName);
|
||||
return shortName;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Favorites
|
||||
public override Favorites Favorites
|
||||
{
|
||||
get { return (Favorites)((GetByte(offFavorites)>>2) & 0x0F); }
|
||||
set
|
||||
{
|
||||
var newVal = (GetByte(offFavorites) & 0xC3) | (byte)((byte)value << 2);
|
||||
SetByte(offFavorites, (byte)newVal);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region TransponderIndex
|
||||
public ushort TransponderIndex
|
||||
{
|
||||
get { return GetWord(offTransponderIndex); }
|
||||
set { SetWord(offTransponderIndex, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Validate()
|
||||
public string Validate()
|
||||
{
|
||||
bool ok = true;
|
||||
List<string> warnings = new List<string>();
|
||||
ok &= ValidateByte(offTransponderIndex) || AddWarning(warnings, "Transponder index");
|
||||
ok &= ValidateWord(offProgramNr) || AddWarning(warnings, "Program#");
|
||||
|
||||
if (ok)
|
||||
return null;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (var warning in warnings)
|
||||
{
|
||||
if (sb.Length > 0)
|
||||
sb.Append(", ");
|
||||
sb.Append(warning);
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AddWarning()
|
||||
private bool AddWarning(List<string> warnings, string p)
|
||||
{
|
||||
warnings.Add(p);
|
||||
return false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ValidateByte()
|
||||
private bool ValidateByte(string key)
|
||||
{
|
||||
var offsets = this.GetOffsets(key);
|
||||
if (offsets == null || offsets.Length < 1)
|
||||
return true;
|
||||
byte value = *(this.DataPtr + offsets[0]);
|
||||
bool ok = true;
|
||||
foreach (int offset in offsets)
|
||||
{
|
||||
if (this.DataPtr[offset] != value)
|
||||
ok = false;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ValidateWord()
|
||||
private bool ValidateWord(string key)
|
||||
{
|
||||
var offsets = this.GetOffsets(key);
|
||||
if (offsets == null || offsets.Length < 1)
|
||||
return true;
|
||||
ushort value = *(ushort*)(this.DataPtr + offsets[0]);
|
||||
bool ok = true;
|
||||
foreach (int offset in offsets)
|
||||
{
|
||||
if (*(ushort*)(this.DataPtr + offset) != value)
|
||||
ok = false;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
64
ChanSort.Plugin.TllFile/FirmwareDataMapping.cs
Normal file
64
ChanSort.Plugin.TllFile/FirmwareDataMapping.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
public class FirmwareDataMapping : DataMapping
|
||||
{
|
||||
private const string offSize = "offSize";
|
||||
private const string offSystemLock = "offSystemLock";
|
||||
private const string offTvPassword = "offTvPassword";
|
||||
private const string offHbbTvEnabled = "offHbbTvEnabled";
|
||||
private const string offHotelModeEnabled = "offHotelModeEnabled";
|
||||
private const string offHotelModeDtvUpdate = "offHotelModeDtvUpdate";
|
||||
private const string offHotelMenuAccessCode = "offHotelMenuAccessCode";
|
||||
private const string offHotelMenuPin = "offHotelMenuPin";
|
||||
private const string offSettingsChannelUpdate = "offSettingsChannelUpdate";
|
||||
|
||||
public FirmwareDataMapping(IniFile.Section settings, int structureLength) :
|
||||
base(settings, structureLength, null)
|
||||
{
|
||||
}
|
||||
|
||||
public uint Size { get { return this.GetDword(offSize); } }
|
||||
public bool SystemLocked { get { return this.GetByte(offSystemLock) != 0; } }
|
||||
public string TvPassword { get { return CodeToString(this.GetDword(offTvPassword)); } }
|
||||
public string HotelMenuAccessCode { get { return CodeToString(this.GetDword(offHotelMenuAccessCode)); } }
|
||||
public string HotelMenuPin { get { return CodeToString(this.GetDword(offHotelMenuPin)); } }
|
||||
|
||||
|
||||
public bool SettingsAutomaticChannelUpdate
|
||||
{
|
||||
get { return this.GetByte(offSettingsChannelUpdate) != 0; }
|
||||
set { this.SetByte(offSettingsChannelUpdate, (byte) (value ? 1 : 0)); }
|
||||
}
|
||||
|
||||
public bool HbbTvEnabled
|
||||
{
|
||||
get { return this.GetByte(offHbbTvEnabled) != 0; }
|
||||
set { this.SetByte(offHbbTvEnabled, (byte)(value ? 1 : 0)); }
|
||||
}
|
||||
|
||||
public bool HotelModeEnabled
|
||||
{
|
||||
get { return this.GetByte(offHotelModeEnabled) != 0; }
|
||||
set { this.SetByte(offHotelModeEnabled, (byte) (value ? 1 : 0)); }
|
||||
}
|
||||
|
||||
public bool HotelModeDtvUpdate
|
||||
{
|
||||
get { return this.GetByte(offHotelModeDtvUpdate) != 0; }
|
||||
set { this.SetByte(offHotelModeDtvUpdate, (byte)(value ? 1 : 0)); }
|
||||
}
|
||||
|
||||
private string CodeToString(uint val)
|
||||
{
|
||||
var code = "";
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
code += (char)(33 + (val & 0x0f));
|
||||
val >>= 8;
|
||||
}
|
||||
return code;
|
||||
}
|
||||
}
|
||||
}
|
||||
49
ChanSort.Plugin.TllFile/ModelConstants.cs
Normal file
49
ChanSort.Plugin.TllFile/ModelConstants.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
public class ModelConstants
|
||||
{
|
||||
public readonly string series;
|
||||
public readonly byte[] magicBytes;
|
||||
|
||||
public int actChannelLength; // auto-detect
|
||||
|
||||
public readonly int satCount;
|
||||
public readonly int satLength;
|
||||
public readonly int sizeOfTransponderBlockHeader;
|
||||
public readonly int transponderCount;
|
||||
public readonly int transponderLength;
|
||||
public readonly int sizeOfZappingTableEntry = 8;
|
||||
public readonly int dvbsMaxChannelCount;
|
||||
public readonly int dvbsChannelLength;
|
||||
public readonly int lnbCount;
|
||||
public readonly int lnbLength;
|
||||
public readonly int[] dvbsSubblockLength;
|
||||
|
||||
public bool hasDvbSBlock;
|
||||
public int firmwareBlockLength; // auto-detect
|
||||
|
||||
public ModelConstants(Api.IniFile.Section iniSection)
|
||||
{
|
||||
this.series = iniSection.Name;
|
||||
this.magicBytes = iniSection.GetBytes("magicBytes");
|
||||
this.satCount = iniSection.GetInt("satCount");
|
||||
this.satLength = iniSection.GetInt("satLength");
|
||||
this.transponderCount = iniSection.GetInt("transponderCount");
|
||||
this.transponderLength = iniSection.GetInt("transponderLength");
|
||||
this.sizeOfTransponderBlockHeader = 14 + transponderCount/8 + transponderCount*6 + 2;
|
||||
this.dvbsMaxChannelCount = iniSection.GetInt("dvbsChannelCount");
|
||||
this.dvbsChannelLength = iniSection.GetInt("dvbsChannelLength");
|
||||
this.lnbCount = iniSection.GetInt("lnbCount");
|
||||
this.lnbLength = iniSection.GetInt("lnbLength");
|
||||
|
||||
this.dvbsSubblockLength = new[]
|
||||
{
|
||||
12,
|
||||
14 + 2 + this.satCount + this.satCount*this.satLength, // 2896
|
||||
sizeOfTransponderBlockHeader - 4 + transponderCount * transponderLength, // 110712
|
||||
12 + dvbsMaxChannelCount/8 + dvbsMaxChannelCount*sizeOfZappingTableEntry + dvbsMaxChannelCount * dvbsChannelLength, // 602552
|
||||
8 + lnbCount * lnbLength // 1768
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
38
ChanSort.Plugin.TllFile/Properties/AssemblyInfo.cs
Normal file
38
ChanSort.Plugin.TllFile/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[assembly: InternalsVisibleTo("Test.Plugin.TllFile")]
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("ChanSort.Plugin.TllFile")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("ChanSort.Plugin.TllFile")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("387d8661-ecb3-4957-afca-9a156a90f384")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
4
ChanSort.Plugin.TllFile/Properties/licenses.licx
Normal file
4
ChanSort.Plugin.TllFile/Properties/licenses.licx
Normal file
@@ -0,0 +1,4 @@
|
||||
DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
117
ChanSort.Plugin.TllFile/Resource.Designer.cs
generated
Normal file
117
ChanSort.Plugin.TllFile/Resource.Designer.cs
generated
Normal file
@@ -0,0 +1,117 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.586
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace ChanSort.Plugin.TllFile {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resource {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resource() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ChanSort.Plugin.TllFile.Resource", typeof(Resource).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to File format is not supported: bad header.
|
||||
/// </summary>
|
||||
internal static string TllFileSerializer_ERR_badFileHeader {
|
||||
get {
|
||||
return ResourceManager.GetString("TllFileSerializer_ERR_badFileHeader", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Channel #{0} (Pr# {1}) was erased because it is a duplicate of channel #{2} (Pr# {3}): {4}.
|
||||
/// </summary>
|
||||
internal static string TllFileSerializer_ERR_dupeChannel {
|
||||
get {
|
||||
return ResourceManager.GetString("TllFileSerializer_ERR_dupeChannel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Wrong checksum: calculated {1:x8} but file has {0:x8}.
|
||||
/// </summary>
|
||||
internal static string TllFileSerializer_ERR_wrongChecksum {
|
||||
get {
|
||||
return ResourceManager.GetString("TllFileSerializer_ERR_wrongChecksum", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to File size {0} is larger than allowed maxiumum of {1}.
|
||||
/// </summary>
|
||||
internal static string TllFileSerializerPlugin_ERR_fileTooBig {
|
||||
get {
|
||||
return ResourceManager.GetString("TllFileSerializerPlugin_ERR_fileTooBig", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The file content doesn't match any supported model.
|
||||
/// </summary>
|
||||
internal static string TllFileSerializerPlugin_ERR_modelUnknown {
|
||||
get {
|
||||
return ResourceManager.GetString("TllFileSerializerPlugin_ERR_modelUnknown", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to LG-Electronics *.tll Loader.
|
||||
/// </summary>
|
||||
internal static string TllFileSerializerPlugin_PluginName {
|
||||
get {
|
||||
return ResourceManager.GetString("TllFileSerializerPlugin_PluginName", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
0
ChanSort.Plugin.TllFile/Resource.de.Designer.cs
generated
Normal file
0
ChanSort.Plugin.TllFile/Resource.de.Designer.cs
generated
Normal file
138
ChanSort.Plugin.TllFile/Resource.de.resx
Normal file
138
ChanSort.Plugin.TllFile/Resource.de.resx
Normal file
@@ -0,0 +1,138 @@
|
||||
<?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="TllFileSerializer_ERR_badFileHeader" xml:space="preserve">
|
||||
<value>Ungültiges Dateiformat: Dateikopf unbekannt</value>
|
||||
</data>
|
||||
<data name="TllFileSerializer_ERR_wrongChecksum" xml:space="preserve">
|
||||
<value>Prüfsummenfehler: berechnet wurde {1:x8} aber Datei enthält {0:x8}</value>
|
||||
</data>
|
||||
<data name="TllFileSerializerPlugin_ERR_modelUnknown" xml:space="preserve">
|
||||
<value>Der Dateiinhalt entstpricht keinem bekannten Modell</value>
|
||||
</data>
|
||||
<data name="TllFileSerializerPlugin_ERR_fileTooBig" xml:space="preserve">
|
||||
<value>Dateigröße {0} überschreitet das erlaubte Maximum von {1}</value>
|
||||
</data>
|
||||
<data name="TllFileSerializerPlugin_PluginName" xml:space="preserve">
|
||||
<value>LG-Electronics *.tll Loader</value>
|
||||
</data>
|
||||
<data name="TllFileSerializer_ERR_dupeChannel" xml:space="preserve">
|
||||
<value>Sender #{0} (Pr# {1}) wurde gelöscht da er ein Duplikat von Sender #{2} (Pr# {3}) ist: {4}</value>
|
||||
</data>
|
||||
</root>
|
||||
119
ChanSort.Plugin.TllFile/Resource.resx
Normal file
119
ChanSort.Plugin.TllFile/Resource.resx
Normal file
@@ -0,0 +1,119 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 1.3
|
||||
|
||||
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">1.3</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1">this is my long string</data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
[base64 mime encoded serialized .NET Framework object]
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
[base64 mime encoded string representing a byte array form of the .NET Framework object]
|
||||
</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.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:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<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" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</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>1.3</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="TllFileSerializer_ERR_badFileHeader" xml:space="preserve">
|
||||
<value>File format is not supported: bad header</value>
|
||||
</data>
|
||||
<data name="TllFileSerializer_ERR_wrongChecksum" xml:space="preserve">
|
||||
<value>Wrong checksum: calculated {1:x8} but file has {0:x8}</value>
|
||||
</data>
|
||||
<data name="TllFileSerializerPlugin_ERR_modelUnknown" xml:space="preserve">
|
||||
<value>The file content doesn't match any supported model</value>
|
||||
</data>
|
||||
<data name="TllFileSerializerPlugin_ERR_fileTooBig" xml:space="preserve">
|
||||
<value>File size {0} is larger than allowed maxiumum of {1}</value>
|
||||
</data>
|
||||
<data name="TllFileSerializerPlugin_PluginName" xml:space="preserve">
|
||||
<value>LG-Electronics *.tll Loader</value>
|
||||
</data>
|
||||
<data name="TllFileSerializer_ERR_dupeChannel" xml:space="preserve">
|
||||
<value>Channel #{0} (Pr# {1}) was erased because it is a duplicate of channel #{2} (Pr# {3}): {4}</value>
|
||||
</data>
|
||||
</root>
|
||||
1001
ChanSort.Plugin.TllFile/TllFileSerializer.cs
Normal file
1001
ChanSort.Plugin.TllFile/TllFileSerializer.cs
Normal file
File diff suppressed because it is too large
Load Diff
208
ChanSort.Plugin.TllFile/TllFileSerializer.sql.cs
Normal file
208
ChanSort.Plugin.TllFile/TllFileSerializer.sql.cs
Normal file
@@ -0,0 +1,208 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
public partial class TllFileSerializer
|
||||
{
|
||||
#region SQL
|
||||
|
||||
/*
|
||||
|
||||
create table list (
|
||||
listid int not null,
|
||||
filename varchar(100),
|
||||
created datetime,
|
||||
primary key (listid))
|
||||
|
||||
create table channel (
|
||||
listid int not null,
|
||||
slot int not null,
|
||||
isdel bit not null,
|
||||
seq int,
|
||||
progmask int not null,
|
||||
prognr int not null,
|
||||
name varchar(40) not null,
|
||||
tpnr int not null,
|
||||
satnr int,
|
||||
onid int not null,
|
||||
tsid int not null,
|
||||
ssid int not null,
|
||||
uid varchar(25),
|
||||
favcrypt int,
|
||||
lockskiphide int,
|
||||
progfix int,
|
||||
primary key (listid, slot))
|
||||
|
||||
create table chanseq(
|
||||
listid int not null,
|
||||
seq int not null,
|
||||
slot int not null,
|
||||
primary key (listid, seq))
|
||||
|
||||
|
||||
update channel
|
||||
set seq=s.seq
|
||||
from channel c inner join chanseq s on s.listid=c.listid and s.slot=c.slot
|
||||
|
||||
|
||||
*/
|
||||
#endregion
|
||||
|
||||
private unsafe void StoreToDatabase()
|
||||
{
|
||||
return;
|
||||
var list = this.DataRoot.GetChannelList(SignalSource.DvbS, SignalType.Tv, false);
|
||||
if (list == null)
|
||||
return;
|
||||
|
||||
using (var conn = SqlClientFactory.Instance.CreateConnection())
|
||||
{
|
||||
conn.ConnectionString = "server=(local);database=ChanSort;Integrated Security=true";
|
||||
conn.Open();
|
||||
|
||||
using (var cmd = conn.CreateCommand())
|
||||
{
|
||||
var listId = InsertListData(cmd);
|
||||
|
||||
fixed (byte* ptr = this.fileContent)
|
||||
{
|
||||
InsertSequenceData(ptr, cmd, listId);
|
||||
InsertChannelData(ptr, cmd, listId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private unsafe void InsertSequenceData(byte* ptr, DbCommand cmd, int listId)
|
||||
{
|
||||
cmd.Parameters.Clear();
|
||||
cmd.CommandText = "insert into chanseq(listid,seq,slot) values (" + listId + ",@seq,@slot)";
|
||||
var pSeq = cmd.CreateParameter();
|
||||
pSeq.ParameterName = "@seq";
|
||||
pSeq.DbType = DbType.Int32;
|
||||
cmd.Parameters.Add(pSeq);
|
||||
var pSlot = cmd.CreateParameter();
|
||||
pSlot.ParameterName = "@slot";
|
||||
pSlot.DbType = DbType.Int32;
|
||||
cmd.Parameters.Add(pSlot);
|
||||
|
||||
SatChannelListHeader* header = (SatChannelListHeader*) (ptr + this.dvbsChannelHeaderOffset);
|
||||
|
||||
int seq = 0;
|
||||
ushort tableIndex = header->LinkedListStartIndex;
|
||||
while(tableIndex != 0xFFFF)
|
||||
{
|
||||
ushort* entry = (ushort*)(ptr + this.dvbsChannelLinkedListOffset + tableIndex*c.sizeOfZappingTableEntry);
|
||||
pSeq.Value = seq;
|
||||
if (entry[2] != tableIndex)
|
||||
break;
|
||||
pSlot.Value = (int)tableIndex;
|
||||
cmd.ExecuteNonQuery();
|
||||
|
||||
tableIndex = entry[1];
|
||||
++seq;
|
||||
}
|
||||
}
|
||||
|
||||
#region InsertListData()
|
||||
private int InsertListData(DbCommand cmd)
|
||||
{
|
||||
cmd.CommandText = "select max(listid) from list";
|
||||
var maxObj = cmd.ExecuteScalar();
|
||||
int listId = maxObj == DBNull.Value ? 1 : (int) maxObj + 1;
|
||||
|
||||
cmd.CommandText = "insert into list(listid, filename, created) values (" + listId + ", @filename, getdate())";
|
||||
var parm = cmd.CreateParameter();
|
||||
parm.ParameterName = "@filename";
|
||||
parm.DbType = DbType.String;
|
||||
parm.Value = this.FileName;
|
||||
cmd.Parameters.Add(parm);
|
||||
cmd.ExecuteNonQuery();
|
||||
return listId;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region InsertChannelData()
|
||||
private unsafe void InsertChannelData(byte* ptr, DbCommand cmd, int listId)
|
||||
{
|
||||
PrepareChannelInsert(cmd);
|
||||
|
||||
dvbsMapping.DataPtr = ptr + this.dvbsChannelListOffset;
|
||||
for (int slot = 0; slot < this.dvbsChannelCount; slot++)
|
||||
{
|
||||
cmd.Parameters["@listid"].Value = listId;
|
||||
cmd.Parameters["@slot"].Value = slot;
|
||||
cmd.Parameters["@seq"].Value = DBNull.Value;
|
||||
cmd.Parameters["@isdel"].Value = dvbsMapping.InUse ? 0 : 1;
|
||||
cmd.Parameters["@progmask"].Value = dvbsMapping.ProgramNr;
|
||||
cmd.Parameters["@prognr"].Value = (dvbsMapping.ProgramNr & 0x3FFF);
|
||||
cmd.Parameters["@progfix"].Value = dvbsMapping.ProgramNrPreset;
|
||||
cmd.Parameters["@name"].Value = dvbsMapping.Name;
|
||||
cmd.Parameters["@tpnr"].Value = dvbsMapping.TransponderIndex;
|
||||
var transp = this.DataRoot.Transponder.TryGet(dvbsMapping.TransponderIndex);
|
||||
cmd.Parameters["@satnr"].Value = transp == null ? (object)DBNull.Value : transp.Satellite.Id;
|
||||
cmd.Parameters["@onid"].Value = transp == null ? (object)DBNull.Value : transp.OriginalNetworkId;
|
||||
cmd.Parameters["@tsid"].Value = transp == null ? (object)DBNull.Value : transp.TransportStreamId;
|
||||
cmd.Parameters["@ssid"].Value = (int)dvbsMapping.ServiceId;
|
||||
cmd.Parameters["@uid"].Value = transp == null
|
||||
? (object) DBNull.Value
|
||||
: transp.TransportStreamId + "-" + transp.OriginalNetworkId + "-" +
|
||||
dvbsMapping.ServiceId;
|
||||
cmd.Parameters["@favcrypt"].Value = (int)dvbsMapping.GetByte("offFavorites");
|
||||
cmd.Parameters["@lockskiphide"].Value = (int)dvbsMapping.GetByte("offLock");
|
||||
cmd.ExecuteNonQuery();
|
||||
dvbsMapping.Next();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region PrepareChannelInsert()
|
||||
private static void PrepareChannelInsert(DbCommand cmd)
|
||||
{
|
||||
var cols = new[] { "listid", "slot", "seq", "isdel", "progmask", "prognr", "progfix", "name", "tpnr", "satnr", "onid", "tsid", "ssid", "uid", "favcrypt", "lockskiphide" };
|
||||
|
||||
cmd.Parameters.Clear();
|
||||
|
||||
var sb = new StringBuilder();
|
||||
sb.Append("insert into channel (");
|
||||
var comma = "";
|
||||
foreach (var col in cols)
|
||||
{
|
||||
sb.Append(comma).Append(col);
|
||||
comma = ",";
|
||||
}
|
||||
sb.Append(") values (");
|
||||
comma = "";
|
||||
foreach (var col in cols)
|
||||
{
|
||||
sb.Append(comma).Append('@').Append(col);
|
||||
comma = ",";
|
||||
}
|
||||
sb.Append(")");
|
||||
cmd.CommandText = sb.ToString();
|
||||
|
||||
foreach (var col in cols)
|
||||
{
|
||||
DbParameter parm = cmd.CreateParameter();
|
||||
parm.ParameterName = "@" + col;
|
||||
if (col == "name" || col == "uid")
|
||||
{
|
||||
parm.DbType = DbType.String;
|
||||
parm.Size = 40;
|
||||
}
|
||||
else
|
||||
parm.DbType = DbType.Int32;
|
||||
cmd.Parameters.Add(parm);
|
||||
}
|
||||
|
||||
cmd.Prepare();
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
185
ChanSort.Plugin.TllFile/TllFileSerializerPlugin.cs
Normal file
185
ChanSort.Plugin.TllFile/TllFileSerializerPlugin.cs
Normal file
@@ -0,0 +1,185 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
public class TllFileSerializerPlugin : ISerializerPlugin
|
||||
{
|
||||
private const int MAX_FILE_SIZE = 16*1000*1000;
|
||||
private readonly string ERR_modelUnknown = Resource.TllFileSerializerPlugin_ERR_modelUnknown;
|
||||
private readonly string ERR_fileTooBig = Resource.TllFileSerializerPlugin_ERR_fileTooBig;
|
||||
private static readonly byte[] DVBS_S2 = Encoding.ASCII.GetBytes("DVBS-S2");
|
||||
|
||||
private readonly MappingPool<ActChannelDataMapping> actMappings = new MappingPool<ActChannelDataMapping>("Analog and DVB-C/T");
|
||||
private readonly MappingPool<DvbsChannelDataMapping> dvbsMappings = new MappingPool<DvbsChannelDataMapping>("DVB-S");
|
||||
private readonly MappingPool<FirmwareDataMapping> firmwareMappings = new MappingPool<FirmwareDataMapping>("Firmware");
|
||||
private readonly List<ModelConstants> modelConstants = new List<ModelConstants>();
|
||||
private string series = "";
|
||||
|
||||
public string PluginName { get { return Resource.TllFileSerializerPlugin_PluginName; } }
|
||||
public string FileFilter { get { return "*.TLL"; } }
|
||||
|
||||
public TllFileSerializerPlugin()
|
||||
{
|
||||
this.ReadConfigurationFromIniFile();
|
||||
}
|
||||
|
||||
#region ReadConfigurationFromIniFile()
|
||||
|
||||
private void ReadConfigurationFromIniFile()
|
||||
{
|
||||
DvbStringDecoder dvbsStringDecoder = new DvbStringDecoder(null);
|
||||
string iniFile = Assembly.GetExecutingAssembly().Location.Replace(".dll", ".ini");
|
||||
IniFile ini = new IniFile(iniFile);
|
||||
foreach (var section in ini.Sections)
|
||||
{
|
||||
int idx = section.Name.IndexOf(":");
|
||||
int recordLength = idx < 0 ? 0 : int.Parse(section.Name.Substring(idx + 1));
|
||||
if (section.Name.StartsWith("FileConfiguration"))
|
||||
this.ReadModelConstants(section);
|
||||
else if (section.Name.StartsWith("ACTChannelDataMapping"))
|
||||
actMappings.AddMapping(new ActChannelDataMapping(section, recordLength, dvbsStringDecoder));
|
||||
else if (section.Name.StartsWith("SatChannelDataMapping"))
|
||||
dvbsMappings.AddMapping(new DvbsChannelDataMapping(section, recordLength, dvbsStringDecoder));
|
||||
else if (section.Name.StartsWith("FirmwareData"))
|
||||
firmwareMappings.AddMapping(new FirmwareDataMapping(section, recordLength));
|
||||
}
|
||||
}
|
||||
|
||||
private void ReadModelConstants(IniFile.Section section)
|
||||
{
|
||||
if (this.series.Length > 0)
|
||||
this.series += ",";
|
||||
this.series += section.Name;
|
||||
|
||||
ModelConstants c = new ModelConstants(section);
|
||||
this.modelConstants.Add(c);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region CreateSerializer()
|
||||
public SerializerBase CreateSerializer(string inputFile)
|
||||
{
|
||||
long fileSize = new FileInfo(inputFile).Length;
|
||||
if (fileSize > MAX_FILE_SIZE)
|
||||
throw new IOException(string.Format(ERR_fileTooBig, fileSize, MAX_FILE_SIZE));
|
||||
byte[] fileContent = File.ReadAllBytes(inputFile);
|
||||
ModelConstants model = this.DetermineModel(fileContent);
|
||||
if (model == null)
|
||||
throw new IOException(ERR_modelUnknown);
|
||||
|
||||
return new TllFileSerializer(inputFile, model,
|
||||
this.actMappings.GetMapping(model.actChannelLength),
|
||||
this.dvbsMappings.GetMapping(model.dvbsChannelLength),
|
||||
this.firmwareMappings.GetMapping(model.firmwareBlockLength, false),
|
||||
fileContent);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region DetermineModel()
|
||||
private ModelConstants DetermineModel(byte[] fileContent)
|
||||
{
|
||||
foreach (var model in this.modelConstants)
|
||||
{
|
||||
if (this.IsModel(fileContent, model))
|
||||
return model;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IsModel()
|
||||
private unsafe bool IsModel(byte[] fileContent, ModelConstants c)
|
||||
{
|
||||
c.hasDvbSBlock = false;
|
||||
fixed (byte* p = fileContent)
|
||||
{
|
||||
long fileSize = fileContent.Length;
|
||||
|
||||
// check magic file header
|
||||
uint offset = 0;
|
||||
if (fileSize < c.magicBytes.Length)
|
||||
return false;
|
||||
if (!ByteCompare(p, c.magicBytes))
|
||||
return false;
|
||||
offset += (uint)c.magicBytes.Length;
|
||||
|
||||
// analog channel block
|
||||
if (offset + 8 > fileSize) return false;
|
||||
uint blockSize = *(uint*)(p + offset);
|
||||
uint channelCount = *(uint*) (p + offset + 4);
|
||||
if (blockSize < 4 + channelCount)
|
||||
return false;
|
||||
if (blockSize > 4 && channelCount > 0)
|
||||
c.actChannelLength = (int)((blockSize - 4)/channelCount);
|
||||
offset += 4 + blockSize;
|
||||
|
||||
// firmware data block
|
||||
if (offset + 4 > fileSize) return false;
|
||||
blockSize = *(uint*) (p + offset);
|
||||
c.firmwareBlockLength = (int)blockSize;
|
||||
offset += 4 + blockSize;
|
||||
|
||||
// DVB-C/T channel block
|
||||
if (offset + 8 > fileSize) return false;
|
||||
blockSize = *(uint*) (p + offset);
|
||||
channelCount = *(uint*) (p + offset + 4);
|
||||
if (blockSize < 4 + channelCount)
|
||||
return false;
|
||||
if (blockSize > 4 && channelCount > 0)
|
||||
c.actChannelLength = (int)((blockSize - 4) / channelCount);
|
||||
offset += 4 + blockSize;
|
||||
|
||||
// optional blocks
|
||||
while (offset != fileSize)
|
||||
{
|
||||
if (offset + 4 > fileSize)
|
||||
return false;
|
||||
|
||||
blockSize = *(uint*) (p + offset);
|
||||
// check for DVBS-S2 block
|
||||
if (blockSize >= sizeof(DvbSBlockHeader))
|
||||
{
|
||||
DvbSBlockHeader* header = (DvbSBlockHeader*) (p + offset);
|
||||
if (ByteCompare(header->DvbS_S2, DVBS_S2))
|
||||
{
|
||||
c.hasDvbSBlock = true;
|
||||
int length = sizeof(DvbSBlockHeader) +
|
||||
c.satCount*c.satLength +
|
||||
c.sizeOfTransponderBlockHeader +
|
||||
c.transponderCount*c.transponderLength +
|
||||
sizeof(SatChannelListHeader) +
|
||||
c.dvbsMaxChannelCount/8 +
|
||||
c.dvbsMaxChannelCount*c.sizeOfZappingTableEntry +
|
||||
c.dvbsMaxChannelCount*c.dvbsChannelLength +
|
||||
sizeof(LnbBlockHeader) + c.lnbCount*c.lnbLength;
|
||||
if (length != 4 + blockSize)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
offset += 4 + blockSize;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ByteCompare()
|
||||
private static unsafe bool ByteCompare(byte* buffer, byte[] expected)
|
||||
{
|
||||
for (int i = 0; i < expected.Length; i++)
|
||||
{
|
||||
if (buffer[i] != expected[i])
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
169
ChanSort.Plugin.TllFile/TllStructures.cs
Normal file
169
ChanSort.Plugin.TllFile/TllStructures.cs
Normal file
@@ -0,0 +1,169 @@
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
/*
|
||||
TllFileHeader? ("ZZZZ" or nothing)
|
||||
ChannelBlock
|
||||
AnalogChannel[]
|
||||
FirmwareBlock
|
||||
ChannelBlock
|
||||
DvbCtChannel[]
|
||||
DvbSBlockHeader
|
||||
TllSatellite[64]
|
||||
TransponderBlockHeader
|
||||
TllTransponder[2400]
|
||||
SatChannelListHeader
|
||||
DvbSChannel[7520]
|
||||
LnbBlockHeader
|
||||
Lnb[40]
|
||||
SettingsBlock?
|
||||
*/
|
||||
|
||||
#region struct ChannelBlock
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public struct ChannelBlock
|
||||
{
|
||||
public uint BlockSize; // = 4 + ChannelCount * ChannelLength
|
||||
public uint ChannelCount;
|
||||
public uint ChannelLength { get { return ChannelCount == 0 ? 0 : (BlockSize - 4) / ChannelCount; } }
|
||||
public byte StartOfChannelList;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct FirmwareBlock
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public unsafe struct FirmwareBlock
|
||||
{
|
||||
public uint BlockSize;
|
||||
public fixed byte Unknown_0x0000[35631];
|
||||
public fixed byte HotelMenu[29];
|
||||
public fixed byte Unknown_0x8B4C[1204]; // or more
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region struct DvbSBlockHeader
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public unsafe struct DvbSBlockHeader
|
||||
{
|
||||
public uint BlockSize;
|
||||
public uint Crc32ForSubblock1;
|
||||
public fixed byte DvbS_S2 [8]; // "DVBS-S2\0"
|
||||
public ushort Unknown_0x10; // 0x0007
|
||||
public ushort Unknown_0x12; // 0x0004 // 0x0000
|
||||
|
||||
public uint Crc32ForSubblock2;
|
||||
public const int Unknown0x18_Length = 12;
|
||||
public fixed byte Unknown_0x18[Unknown0x18_Length];
|
||||
public ushort SatOrderLength;
|
||||
public fixed byte SatOrder[64];
|
||||
public fixed byte Unknown [2];
|
||||
//public fixed TllSatellite Satellites[64]
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct TllSatellite
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public unsafe struct TllSatellite
|
||||
{
|
||||
public const int SatNameLength =32;
|
||||
|
||||
public fixed byte Name [SatNameLength];
|
||||
public byte PosDeg;
|
||||
public byte PosCDeg;
|
||||
public byte Unknown_34; // typically 0
|
||||
public byte Unknown_35; // typically 2
|
||||
public ushort Unknown_36; // 0xFFFF if sat is not used
|
||||
public ushort Unknown_38; // 0xFFFF if sat is not used
|
||||
public ushort TransponderCount;
|
||||
public ushort Unknown_42; // typically 0
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct TransponderLinkedList
|
||||
public struct TransponderLinkedList
|
||||
{
|
||||
public ushort Prev;
|
||||
public ushort Next;
|
||||
public ushort Current;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct TransponderBlockHeader
|
||||
public unsafe struct TransponderBlockHeader
|
||||
{
|
||||
public uint Crc32;
|
||||
public ushort Unknown1;
|
||||
public ushort HeadIndex;
|
||||
public ushort TailIndex1;
|
||||
public ushort TailIndex2;
|
||||
public ushort TransponderCount;
|
||||
public fixed byte AllocationBitmap [2400/8];
|
||||
public fixed ushort TransponderLinkedList [2400*3];
|
||||
public ushort Unknown3;
|
||||
// public fixed TllTransponder Transponders[2400]
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct TllTransponder
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public unsafe struct TllTransponder
|
||||
{
|
||||
public fixed byte Unknown_0x00 [10];
|
||||
public ushort Index;
|
||||
public ushort Frequency;
|
||||
public fixed byte Unknown_0x0E [4];
|
||||
public ushort NetworkId;
|
||||
public ushort TransportStreamId;
|
||||
public fixed byte Unknown_0x16 [3];
|
||||
public ushort SymbolRateAndPolarity;
|
||||
public fixed byte Unknown_0x1B [9];
|
||||
public byte SatIndex;
|
||||
public fixed byte Unknown_0x25 [3];
|
||||
|
||||
//public int SymbolRate { get { return this.SymbolRateAndPolarity & 0x7FFFF; } }
|
||||
public ushort SymbolRate { get { return this.SymbolRateAndPolarity; } set { this.SymbolRateAndPolarity = value; } }
|
||||
public char Polarity { get { return '\0'; } }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct SatChannelListHeader
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public unsafe struct SatChannelListHeader
|
||||
{
|
||||
public uint Checksum;
|
||||
public fixed byte Unknown_0x04[4];
|
||||
public ushort LinkedListStartIndex;
|
||||
public ushort LinkedListEndIndex1;
|
||||
public ushort LinkedListEndIndex2;
|
||||
public ushort ChannelCount;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct LnbBlockHeader
|
||||
public unsafe struct LnbBlockHeader
|
||||
{
|
||||
public uint crc32;
|
||||
public ushort lastUsedIndex;
|
||||
public fixed byte lnbAllocationBitmap[6];
|
||||
// public Lnb lnbs[40];
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region struct Lnb
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public unsafe struct Lnb
|
||||
{
|
||||
public byte SettingsID;
|
||||
public fixed byte Unknown_0x0D[3];
|
||||
public byte SatelliteID;
|
||||
public fixed byte Unknown_0x11[3];
|
||||
public fixed byte FrequencyName[12];
|
||||
public ushort LOF1;
|
||||
public fixed byte Unknown_0x22 [2];
|
||||
public ushort LOF2;
|
||||
public fixed byte Unknown_0x26 [18];
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
223
ChanSort.Plugin.TllFile/TvSettingsForm.Designer.cs
generated
Normal file
223
ChanSort.Plugin.TllFile/TvSettingsForm.Designer.cs
generated
Normal file
@@ -0,0 +1,223 @@
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
partial class TvSettingsForm
|
||||
{
|
||||
/// <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(TvSettingsForm));
|
||||
this.grpSettings = new DevExpress.XtraEditors.GroupControl();
|
||||
this.cbHbbTv = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.cbCustomCountry = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.comboBoxEdit1 = new DevExpress.XtraEditors.ComboBoxEdit();
|
||||
this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.btnOk = new DevExpress.XtraEditors.SimpleButton();
|
||||
this.btnCancel = new DevExpress.XtraEditors.SimpleButton();
|
||||
this.grpHotelMode = new DevExpress.XtraEditors.GroupControl();
|
||||
this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
|
||||
this.cbDtvUpdate = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.cbHotelMode = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.cbAutoChannelUpdate = new DevExpress.XtraEditors.CheckEdit();
|
||||
this.groupControl1 = new DevExpress.XtraEditors.GroupControl();
|
||||
this.grpFirmwareNote = new DevExpress.XtraEditors.GroupControl();
|
||||
this.labelControl4 = new DevExpress.XtraEditors.LabelControl();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpSettings)).BeginInit();
|
||||
this.grpSettings.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbHbbTv.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbCustomCountry.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.comboBoxEdit1.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpHotelMode)).BeginInit();
|
||||
this.grpHotelMode.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbDtvUpdate.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbHotelMode.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbAutoChannelUpdate.Properties)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.groupControl1)).BeginInit();
|
||||
this.groupControl1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpFirmwareNote)).BeginInit();
|
||||
this.grpFirmwareNote.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// grpSettings
|
||||
//
|
||||
this.grpSettings.Controls.Add(this.cbHbbTv);
|
||||
this.grpSettings.Controls.Add(this.cbCustomCountry);
|
||||
this.grpSettings.Controls.Add(this.comboBoxEdit1);
|
||||
this.grpSettings.Controls.Add(this.labelControl1);
|
||||
resources.ApplyResources(this.grpSettings, "grpSettings");
|
||||
this.grpSettings.Name = "grpSettings";
|
||||
//
|
||||
// cbHbbTv
|
||||
//
|
||||
resources.ApplyResources(this.cbHbbTv, "cbHbbTv");
|
||||
this.cbHbbTv.Name = "cbHbbTv";
|
||||
this.cbHbbTv.Properties.Caption = resources.GetString("cbHbbTv.Properties.Caption");
|
||||
//
|
||||
// cbCustomCountry
|
||||
//
|
||||
resources.ApplyResources(this.cbCustomCountry, "cbCustomCountry");
|
||||
this.cbCustomCountry.Name = "cbCustomCountry";
|
||||
this.cbCustomCountry.Properties.Caption = resources.GetString("cbCustomCountry.Properties.Caption");
|
||||
this.cbCustomCountry.CheckedChanged += new System.EventHandler(this.cbCustomCountry_CheckedChanged);
|
||||
//
|
||||
// comboBoxEdit1
|
||||
//
|
||||
resources.ApplyResources(this.comboBoxEdit1, "comboBoxEdit1");
|
||||
this.comboBoxEdit1.Name = "comboBoxEdit1";
|
||||
this.comboBoxEdit1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
|
||||
new DevExpress.XtraEditors.Controls.EditorButton(((DevExpress.XtraEditors.Controls.ButtonPredefines)(resources.GetObject("comboBoxEdit1.Properties.Buttons"))))});
|
||||
this.comboBoxEdit1.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
|
||||
//
|
||||
// labelControl1
|
||||
//
|
||||
resources.ApplyResources(this.labelControl1, "labelControl1");
|
||||
this.labelControl1.Name = "labelControl1";
|
||||
//
|
||||
// btnOk
|
||||
//
|
||||
resources.ApplyResources(this.btnOk, "btnOk");
|
||||
this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.btnOk.Name = "btnOk";
|
||||
this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
resources.ApplyResources(this.btnCancel, "btnCancel");
|
||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
//
|
||||
// grpHotelMode
|
||||
//
|
||||
this.grpHotelMode.Controls.Add(this.labelControl3);
|
||||
this.grpHotelMode.Controls.Add(this.labelControl2);
|
||||
this.grpHotelMode.Controls.Add(this.cbDtvUpdate);
|
||||
this.grpHotelMode.Controls.Add(this.cbHotelMode);
|
||||
resources.ApplyResources(this.grpHotelMode, "grpHotelMode");
|
||||
this.grpHotelMode.Name = "grpHotelMode";
|
||||
//
|
||||
// labelControl3
|
||||
//
|
||||
resources.ApplyResources(this.labelControl3, "labelControl3");
|
||||
this.labelControl3.Name = "labelControl3";
|
||||
//
|
||||
// labelControl2
|
||||
//
|
||||
resources.ApplyResources(this.labelControl2, "labelControl2");
|
||||
this.labelControl2.Name = "labelControl2";
|
||||
//
|
||||
// cbDtvUpdate
|
||||
//
|
||||
resources.ApplyResources(this.cbDtvUpdate, "cbDtvUpdate");
|
||||
this.cbDtvUpdate.Name = "cbDtvUpdate";
|
||||
this.cbDtvUpdate.Properties.Caption = resources.GetString("cbDtvUpdate.Properties.Caption");
|
||||
//
|
||||
// cbHotelMode
|
||||
//
|
||||
resources.ApplyResources(this.cbHotelMode, "cbHotelMode");
|
||||
this.cbHotelMode.Name = "cbHotelMode";
|
||||
this.cbHotelMode.Properties.Caption = resources.GetString("cbHotelMode.Properties.Caption");
|
||||
//
|
||||
// cbAutoChannelUpdate
|
||||
//
|
||||
resources.ApplyResources(this.cbAutoChannelUpdate, "cbAutoChannelUpdate");
|
||||
this.cbAutoChannelUpdate.Name = "cbAutoChannelUpdate";
|
||||
this.cbAutoChannelUpdate.Properties.Caption = resources.GetString("cbAutoChannelUpdate.Properties.Caption");
|
||||
//
|
||||
// groupControl1
|
||||
//
|
||||
this.groupControl1.Controls.Add(this.cbAutoChannelUpdate);
|
||||
resources.ApplyResources(this.groupControl1, "groupControl1");
|
||||
this.groupControl1.Name = "groupControl1";
|
||||
//
|
||||
// grpFirmwareNote
|
||||
//
|
||||
this.grpFirmwareNote.Controls.Add(this.labelControl4);
|
||||
resources.ApplyResources(this.grpFirmwareNote, "grpFirmwareNote");
|
||||
this.grpFirmwareNote.Name = "grpFirmwareNote";
|
||||
//
|
||||
// labelControl4
|
||||
//
|
||||
resources.ApplyResources(this.labelControl4, "labelControl4");
|
||||
this.labelControl4.Name = "labelControl4";
|
||||
//
|
||||
// TvSettingsForm
|
||||
//
|
||||
this.AcceptButton = this.btnOk;
|
||||
this.Appearance.Options.UseBackColor = true;
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.btnCancel;
|
||||
this.Controls.Add(this.grpHotelMode);
|
||||
this.Controls.Add(this.btnCancel);
|
||||
this.Controls.Add(this.btnOk);
|
||||
this.Controls.Add(this.grpSettings);
|
||||
this.Controls.Add(this.groupControl1);
|
||||
this.Controls.Add(this.grpFirmwareNote);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "TvSettingsForm";
|
||||
this.Load += new System.EventHandler(this.TvSettingsForm_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpSettings)).EndInit();
|
||||
this.grpSettings.ResumeLayout(false);
|
||||
this.grpSettings.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbHbbTv.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbCustomCountry.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.comboBoxEdit1.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpHotelMode)).EndInit();
|
||||
this.grpHotelMode.ResumeLayout(false);
|
||||
this.grpHotelMode.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbDtvUpdate.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbHotelMode.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.cbAutoChannelUpdate.Properties)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.groupControl1)).EndInit();
|
||||
this.groupControl1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.grpFirmwareNote)).EndInit();
|
||||
this.grpFirmwareNote.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private DevExpress.XtraEditors.GroupControl grpSettings;
|
||||
private DevExpress.XtraEditors.ComboBoxEdit comboBoxEdit1;
|
||||
private DevExpress.XtraEditors.LabelControl labelControl1;
|
||||
private DevExpress.XtraEditors.SimpleButton btnOk;
|
||||
private DevExpress.XtraEditors.SimpleButton btnCancel;
|
||||
private DevExpress.XtraEditors.CheckEdit cbCustomCountry;
|
||||
private DevExpress.XtraEditors.GroupControl grpHotelMode;
|
||||
private DevExpress.XtraEditors.CheckEdit cbHbbTv;
|
||||
private DevExpress.XtraEditors.CheckEdit cbDtvUpdate;
|
||||
private DevExpress.XtraEditors.CheckEdit cbHotelMode;
|
||||
private DevExpress.XtraEditors.CheckEdit cbAutoChannelUpdate;
|
||||
private DevExpress.XtraEditors.GroupControl groupControl1;
|
||||
private DevExpress.XtraEditors.LabelControl labelControl3;
|
||||
private DevExpress.XtraEditors.LabelControl labelControl2;
|
||||
private DevExpress.XtraEditors.GroupControl grpFirmwareNote;
|
||||
private DevExpress.XtraEditors.LabelControl labelControl4;
|
||||
}
|
||||
}
|
||||
73
ChanSort.Plugin.TllFile/TvSettingsForm.cs
Normal file
73
ChanSort.Plugin.TllFile/TvSettingsForm.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System;
|
||||
using DevExpress.XtraEditors;
|
||||
using DevExpress.XtraEditors.Controls;
|
||||
|
||||
namespace ChanSort.Plugin.TllFile
|
||||
{
|
||||
public partial class TvSettingsForm : XtraForm
|
||||
{
|
||||
private readonly TllFileSerializer tvSerializer;
|
||||
|
||||
public TvSettingsForm(TllFileSerializer tvSerializer)
|
||||
{
|
||||
this.tvSerializer = tvSerializer;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private unsafe void TvSettingsForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
var items = tvSerializer.SupportedTvCountryCodes;
|
||||
foreach(var item in items)
|
||||
this.comboBoxEdit1.Properties.Items.Add(item);
|
||||
this.comboBoxEdit1.Text = this.tvSerializer.TvCountryCode;
|
||||
|
||||
byte[] fileContent = this.tvSerializer.FileContent;
|
||||
fixed (byte* ptr = fileContent)
|
||||
{
|
||||
var mapping = this.tvSerializer.GetFirmwareMapping(ptr);
|
||||
if (mapping != null)
|
||||
{
|
||||
this.cbAutoChannelUpdate.Checked = mapping.SettingsAutomaticChannelUpdate;
|
||||
this.cbHbbTv.Checked = mapping.HbbTvEnabled;
|
||||
this.cbHotelMode.Checked = mapping.HotelModeEnabled;
|
||||
this.cbDtvUpdate.Checked = mapping.HotelModeDtvUpdate;
|
||||
|
||||
this.grpFirmwareNote.Visible = false;
|
||||
this.Height -= this.grpFirmwareNote.Height;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.cbAutoChannelUpdate.Enabled = false;
|
||||
this.cbHbbTv.Enabled = false;
|
||||
this.cbHotelMode.Enabled = false;
|
||||
this.cbDtvUpdate.Enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private unsafe void btnOk_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.tvSerializer.TvCountryCode = this.comboBoxEdit1.Text;
|
||||
|
||||
byte[] fileContent = this.tvSerializer.FileContent;
|
||||
fixed (byte* ptr = fileContent)
|
||||
{
|
||||
var mapping = this.tvSerializer.GetFirmwareMapping(ptr);
|
||||
if (mapping != null)
|
||||
{
|
||||
mapping.SettingsAutomaticChannelUpdate = this.cbAutoChannelUpdate.Checked;
|
||||
mapping.HbbTvEnabled = this.cbHbbTv.Checked;
|
||||
mapping.HotelModeEnabled = this.cbHotelMode.Checked;
|
||||
mapping.HotelModeDtvUpdate = this.cbDtvUpdate.Checked;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void cbCustomCountry_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
this.comboBoxEdit1.Properties.TextEditStyle = this.cbCustomCountry.Checked
|
||||
? TextEditStyles.Standard
|
||||
: TextEditStyles.DisableTextEditor;
|
||||
}
|
||||
}
|
||||
}
|
||||
325
ChanSort.Plugin.TllFile/TvSettingsForm.de.resx
Normal file
325
ChanSort.Plugin.TllFile/TvSettingsForm.de.resx
Normal file
@@ -0,0 +1,325 @@
|
||||
<?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="cbHbbTv.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHbbTv.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="cbHbbTv.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="cbHbbTv.Properties.Caption" xml:space="preserve">
|
||||
<value>HbbTV aktivieren (funktioniert nur mit den Ländereinstellungen DEU, FRA, NED und ESP)</value>
|
||||
</data>
|
||||
<data name="cbHbbTv.Properties.DisplayValueChecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHbbTv.Properties.DisplayValueGrayed" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHbbTv.Properties.DisplayValueUnchecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.Caption" xml:space="preserve">
|
||||
<value>Eigene Werte erlauben (auf eigene Gefahr!)</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.DisplayValueChecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.DisplayValueGrayed" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.DisplayValueUnchecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Properties.NullValuePrompt" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Properties.NullValuePromptShowForEmptyValue" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="labelControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>27, 13</value>
|
||||
</data>
|
||||
<data name="labelControl1.Text" xml:space="preserve">
|
||||
<value>Land:</value>
|
||||
</data>
|
||||
<data name="grpSettings.Text" xml:space="preserve">
|
||||
<value>OPTION Menü</value>
|
||||
</data>
|
||||
<data name="btnCancel.Text" xml:space="preserve">
|
||||
<value>Abbrechen</value>
|
||||
</data>
|
||||
<data name="labelControl3.Text" xml:space="preserve">
|
||||
<value>HINWEIS: Bei aktivem Hotel-Modus kann man in der EPG nicht zum gewählten Sender wechseln und die Funktion "Werkseinstellungen" ist gesperrt.</value>
|
||||
</data>
|
||||
<data name="labelControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>341, 13</value>
|
||||
</data>
|
||||
<data name="labelControl2.Text" xml:space="preserve">
|
||||
<value>Die folgenden Einstellungen funktionieren nur bei aktivem Hotel-Modus:</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.Caption" xml:space="preserve">
|
||||
<value>D-TV Senderliste automatisch aktualisieren (empfohlen: AUS)</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.DisplayValueChecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.DisplayValueGrayed" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.DisplayValueUnchecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.Caption" xml:space="preserve">
|
||||
<value>Hotel Modus aktivieren (empfohlen: EIN)</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.DisplayValueChecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.DisplayValueGrayed" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.DisplayValueUnchecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="grpHotelMode.Text" xml:space="preserve">
|
||||
<value>Hotel Modus</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.Caption" xml:space="preserve">
|
||||
<value>Senderliste automatisch aktualisieren (empfohlen: AUS)</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.DisplayValueChecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.DisplayValueGrayed" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.DisplayValueUnchecked" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="groupControl1.Text" xml:space="preserve">
|
||||
<value>EINST. Menü</value>
|
||||
</data>
|
||||
<data name="labelControl4.Text" xml:space="preserve">
|
||||
<value>Das Dateiformat Ihres TV-Modells wird nicht vollständig unterstützt. Deshalb sind viele Einstellungen in diesem Dialog gesperrt.</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.AccessibleDescription" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="textEdit1.Properties.AccessibleName" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="textEdit1.Properties.AutoHeight" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<assembly alias="DevExpress.XtraEditors.v12.2" name="DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="textEdit1.Properties.Mask.AutoComplete" type="DevExpress.XtraEditors.Mask.AutoCompleteType, DevExpress.XtraEditors.v12.2">
|
||||
<value>Default</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.BeepOnError" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.EditMask" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.IgnoreMaskBlank" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.MaskType" type="DevExpress.XtraEditors.Mask.MaskType, DevExpress.XtraEditors.v12.2">
|
||||
<value>None</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.PlaceHolder" type="System.Char, mscorlib" xml:space="preserve">
|
||||
<value>_</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.SaveLiteral" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.ShowPlaceHolders" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.Mask.UseMaskAsDisplayFormat" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="textEdit1.Properties.NullValuePrompt" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="textEdit1.Properties.NullValuePromptShowForEmptyValue" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="TvSettingsForm.Appearance.GradientMode" type="System.Drawing.Drawing2D.LinearGradientMode, System.Drawing">
|
||||
<value>Horizontal</value>
|
||||
</data>
|
||||
<data name="TvSettingsForm.Appearance.Image" type="System.Resources.ResXNullRef, System.Windows.Forms">
|
||||
<value />
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>TV Einstellungen</value>
|
||||
</data>
|
||||
</root>
|
||||
569
ChanSort.Plugin.TllFile/TvSettingsForm.resx
Normal file
569
ChanSort.Plugin.TllFile/TvSettingsForm.resx
Normal file
@@ -0,0 +1,569 @@
|
||||
<?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="cbHbbTv.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="cbHbbTv.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 64</value>
|
||||
</data>
|
||||
<data name="cbHbbTv.Properties.Caption" xml:space="preserve">
|
||||
<value>Enable HbbTV (only works with country settings DEU, FRA, NED and ESP)</value>
|
||||
</data>
|
||||
<data name="cbHbbTv.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>456, 19</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="cbHbbTv.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>cbHbbTv.Name" xml:space="preserve">
|
||||
<value>cbHbbTv</value>
|
||||
</data>
|
||||
<data name=">>cbHbbTv.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>cbHbbTv.Parent" xml:space="preserve">
|
||||
<value>grpSettings</value>
|
||||
</data>
|
||||
<data name=">>cbHbbTv.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>150, 30</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.Properties.Caption" xml:space="preserve">
|
||||
<value>allow custom value (at your own risk!)</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>320, 19</value>
|
||||
</data>
|
||||
<data name="cbCustomCountry.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>cbCustomCountry.Name" xml:space="preserve">
|
||||
<value>cbCustomCountry</value>
|
||||
</data>
|
||||
<data name=">>cbCustomCountry.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>cbCustomCountry.Parent" xml:space="preserve">
|
||||
<value>grpSettings</value>
|
||||
</data>
|
||||
<data name=">>cbCustomCountry.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>72, 29</value>
|
||||
</data>
|
||||
<assembly alias="DevExpress.Utils.v12.2" name="DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="comboBoxEdit1.Properties.Buttons" type="DevExpress.XtraEditors.Controls.ButtonPredefines, DevExpress.Utils.v12.2">
|
||||
<value>Combo</value>
|
||||
</data>
|
||||
<data name="comboBoxEdit1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>72, 20</value>
|
||||
</data>
|
||||
<data name="comboBoxEdit1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>comboBoxEdit1.Name" xml:space="preserve">
|
||||
<value>comboBoxEdit1</value>
|
||||
</data>
|
||||
<data name=">>comboBoxEdit1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>comboBoxEdit1.Parent" xml:space="preserve">
|
||||
<value>grpSettings</value>
|
||||
</data>
|
||||
<data name=">>comboBoxEdit1.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="labelControl1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 32</value>
|
||||
</data>
|
||||
<data name="labelControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>43, 13</value>
|
||||
</data>
|
||||
<data name="labelControl1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="labelControl1.Text" xml:space="preserve">
|
||||
<value>Country:</value>
|
||||
</data>
|
||||
<data name=">>labelControl1.Name" xml:space="preserve">
|
||||
<value>labelControl1</value>
|
||||
</data>
|
||||
<data name=">>labelControl1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl1.Parent" xml:space="preserve">
|
||||
<value>grpSettings</value>
|
||||
</data>
|
||||
<data name=">>labelControl1.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="grpSettings.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="grpSettings.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 142</value>
|
||||
</data>
|
||||
<data name="grpSettings.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>480, 106</value>
|
||||
</data>
|
||||
<data name="grpSettings.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="grpSettings.Text" xml:space="preserve">
|
||||
<value>OPTION Menu</value>
|
||||
</data>
|
||||
<data name=">>grpSettings.Name" xml:space="preserve">
|
||||
<value>grpSettings</value>
|
||||
</data>
|
||||
<data name=">>grpSettings.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>grpSettings.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>grpSettings.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="btnOk.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="btnOk.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>310, 413</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>1</value>
|
||||
</data>
|
||||
<data name="btnOk.Text" xml:space="preserve">
|
||||
<value>Ok</value>
|
||||
</data>
|
||||
<data name=">>btnOk.Name" xml:space="preserve">
|
||||
<value>btnOk</value>
|
||||
</data>
|
||||
<data name=">>btnOk.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>btnOk.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnOk.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="btnCancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>395, 413</value>
|
||||
</data>
|
||||
<data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="btnCancel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="btnCancel.Text" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.Name" xml:space="preserve">
|
||||
<value>btnCancel</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<assembly alias="DevExpress.XtraEditors.v12.2" name="DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<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, 26</value>
|
||||
</data>
|
||||
<data name="labelControl3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>458, 26</value>
|
||||
</data>
|
||||
<data name="labelControl3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="labelControl3.Text" xml:space="preserve">
|
||||
<value>NOTE: When Hotel Mode is active, you can no longer activate a channel from inside the EPG and the "Factory Reset" function becomes disabled.</value>
|
||||
</data>
|
||||
<data name=">>labelControl3.Name" xml:space="preserve">
|
||||
<value>labelControl3</value>
|
||||
</data>
|
||||
<data name=">>labelControl3.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl3.Parent" xml:space="preserve">
|
||||
<value>grpHotelMode</value>
|
||||
</data>
|
||||
<data name=">>labelControl3.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="labelControl2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>41, 93</value>
|
||||
</data>
|
||||
<data name="labelControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>315, 13</value>
|
||||
</data>
|
||||
<data name="labelControl2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="labelControl2.Text" xml:space="preserve">
|
||||
<value>The settings below are only effective when Hotel Mode is enabled</value>
|
||||
</data>
|
||||
<data name=">>labelControl2.Name" xml:space="preserve">
|
||||
<value>labelControl2</value>
|
||||
</data>
|
||||
<data name=">>labelControl2.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl2.Parent" xml:space="preserve">
|
||||
<value>grpHotelMode</value>
|
||||
</data>
|
||||
<data name=">>labelControl2.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>39, 112</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Properties.Caption" xml:space="preserve">
|
||||
<value>Automatic D-TV channel update (recommended: OFF)</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>431, 19</value>
|
||||
</data>
|
||||
<data name="cbDtvUpdate.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>cbDtvUpdate.Name" xml:space="preserve">
|
||||
<value>cbDtvUpdate</value>
|
||||
</data>
|
||||
<data name=">>cbDtvUpdate.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>cbDtvUpdate.Parent" xml:space="preserve">
|
||||
<value>grpHotelMode</value>
|
||||
</data>
|
||||
<data name=">>cbDtvUpdate.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>10, 58</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.Properties.Caption" xml:space="preserve">
|
||||
<value>Enable Hotel Mode (recommended: ON)</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>456, 19</value>
|
||||
</data>
|
||||
<data name="cbHotelMode.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>cbHotelMode.Name" xml:space="preserve">
|
||||
<value>cbHotelMode</value>
|
||||
</data>
|
||||
<data name=">>cbHotelMode.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>cbHotelMode.Parent" xml:space="preserve">
|
||||
<value>grpHotelMode</value>
|
||||
</data>
|
||||
<data name=">>cbHotelMode.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="grpHotelMode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="grpHotelMode.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 248</value>
|
||||
</data>
|
||||
<data name="grpHotelMode.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>480, 151</value>
|
||||
</data>
|
||||
<data name="grpHotelMode.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="grpHotelMode.Text" xml:space="preserve">
|
||||
<value>Hotel Mode</value>
|
||||
</data>
|
||||
<data name=">>grpHotelMode.Name" xml:space="preserve">
|
||||
<value>grpHotelMode</value>
|
||||
</data>
|
||||
<data name=">>grpHotelMode.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>grpHotelMode.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>grpHotelMode.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 35</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Properties.Caption" xml:space="preserve">
|
||||
<value>Automatic Channel Update (recommended: OFF)</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>456, 19</value>
|
||||
</data>
|
||||
<data name="cbAutoChannelUpdate.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>cbAutoChannelUpdate.Name" xml:space="preserve">
|
||||
<value>cbAutoChannelUpdate</value>
|
||||
</data>
|
||||
<data name=">>cbAutoChannelUpdate.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>cbAutoChannelUpdate.Parent" xml:space="preserve">
|
||||
<value>groupControl1</value>
|
||||
</data>
|
||||
<data name=">>cbAutoChannelUpdate.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="groupControl1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="groupControl1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 71</value>
|
||||
</data>
|
||||
<data name="groupControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>480, 71</value>
|
||||
</data>
|
||||
<data name="groupControl1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="groupControl1.Text" xml:space="preserve">
|
||||
<value>SETUP Menu</value>
|
||||
</data>
|
||||
<data name=">>groupControl1.Name" xml:space="preserve">
|
||||
<value>groupControl1</value>
|
||||
</data>
|
||||
<data name=">>groupControl1.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>groupControl1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>groupControl1.ZOrder" xml:space="preserve">
|
||||
<value>4</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>11, 29</value>
|
||||
</data>
|
||||
<data name="labelControl4.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>458, 26</value>
|
||||
</data>
|
||||
<data name="labelControl4.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="labelControl4.Text" xml:space="preserve">
|
||||
<value>Your TV model's TLL file format is not fully supported. Therefore many features in this dialog are disabled.</value>
|
||||
</data>
|
||||
<data name=">>labelControl4.Name" xml:space="preserve">
|
||||
<value>labelControl4</value>
|
||||
</data>
|
||||
<data name=">>labelControl4.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>labelControl4.Parent" xml:space="preserve">
|
||||
<value>grpFirmwareNote</value>
|
||||
</data>
|
||||
<data name=">>labelControl4.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="grpFirmwareNote.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="grpFirmwareNote.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="grpFirmwareNote.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>480, 71</value>
|
||||
</data>
|
||||
<data name="grpFirmwareNote.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="grpFirmwareNote.Text" xml:space="preserve">
|
||||
<value>Information</value>
|
||||
</data>
|
||||
<data name=">>grpFirmwareNote.Name" xml:space="preserve">
|
||||
<value>grpFirmwareNote</value>
|
||||
</data>
|
||||
<data name=">>grpFirmwareNote.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
<data name=">>grpFirmwareNote.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>grpFirmwareNote.ZOrder" xml:space="preserve">
|
||||
<value>5</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>480, 448</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>TV Settings</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>TvSettingsForm</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||
</data>
|
||||
</root>
|
||||
Reference in New Issue
Block a user