From bcbae783d4bb5e72953a64a8c2e62e31302b9317 Mon Sep 17 00:00:00 2001 From: hbeham Date: Fri, 12 Apr 2013 00:47:50 +0200 Subject: [PATCH] - added code to read Toshiba channel list (*.db) - code cleanup --- ChanSort.Api/ChanSort.Api.csproj | 2 +- ChanSort.Api/Lookup.csv | 3 +- ChanSort.Api/Model/ChannelInfo.cs | 7 +- ChanSort.Api/Model/DataRoot.cs | 5 + ChanSort.Api/Model/Enums.cs | 9 - ChanSort.Api/Model/LookupData.cs | 25 +++ ChanSort.Api/Utils/Crc32.cs | 2 + ChanSort.Api/Utils/DvbStringDecoder.cs | 38 +++-- ChanSort.Api/Utils/Tools.cs | 12 -- .../ChanSort.Loader.Panasonic.csproj | 91 ++++++++++ ChanSort.Loader.Panasonic/DbChannel.cs | 156 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 36 ++++ ChanSort.Loader.Panasonic/Serializer.cs | 154 +++++++++++++++++ ChanSort.Loader.Panasonic/SerializerPlugin.cs | 15 ++ ChanSort.Loader.ScmFile/DigitalChannel.cs | 2 +- ChanSort.Loader.ScmFile/ScmChannelBase.cs | 5 +- ChanSort.sln | 9 + ChanSort/MainForm.Designer.cs | 26 ++- ChanSort/MainForm.resx | 29 ++-- 19 files changed, 566 insertions(+), 60 deletions(-) create mode 100644 ChanSort.Loader.Panasonic/ChanSort.Loader.Panasonic.csproj create mode 100644 ChanSort.Loader.Panasonic/DbChannel.cs create mode 100644 ChanSort.Loader.Panasonic/Properties/AssemblyInfo.cs create mode 100644 ChanSort.Loader.Panasonic/Serializer.cs create mode 100644 ChanSort.Loader.Panasonic/SerializerPlugin.cs diff --git a/ChanSort.Api/ChanSort.Api.csproj b/ChanSort.Api/ChanSort.Api.csproj index 91d5038..c68f484 100644 --- a/ChanSort.Api/ChanSort.Api.csproj +++ b/ChanSort.Api/ChanSort.Api.csproj @@ -40,7 +40,7 @@ prompt true true - true + false bin\x86\Release\ diff --git a/ChanSort.Api/Lookup.csv b/ChanSort.Api/Lookup.csv index ed09645..bf3811b 100644 --- a/ChanSort.Api/Lookup.csv +++ b/ChanSort.Api/Lookup.csv @@ -421,5 +421,6 @@ SERVICETYPE;Number;Description SERVICETYPE;01;SD-TV SERVICETYPE;02;Radio SERVICETYPE;12;Data/Test +SERVICETYPE;22;SD-TV SERVICETYPE;25;HD-TV -SERVICETYPE;211;Option +SERVICETYPE;211;Option \ No newline at end of file diff --git a/ChanSort.Api/Model/ChannelInfo.cs b/ChanSort.Api/Model/ChannelInfo.cs index 6987426..831686d 100644 --- a/ChanSort.Api/Model/ChannelInfo.cs +++ b/ChanSort.Api/Model/ChannelInfo.cs @@ -99,7 +99,8 @@ namespace ChanSort.Api public override string ToString() { - return this.NewProgramNr + ": " + this.Name; + string nr = this.NewProgramNr != -1 ? this.NewProgramNr.ToString() : "@" + this.RecordIndex; + return nr + ": " + this.Name; } public override bool Equals(object obj) @@ -193,10 +194,10 @@ namespace ChanSort.Api this.Debug += " " + val.ToString("x4"); } - public unsafe void AddDebug(byte* ptr, int len) + public void AddDebug(byte[] data, int offset, int len) { for (int i = 0; i < len; i++) - this.AddDebug(ptr[i]); + this.AddDebug(data[offset + i]); } #endregion diff --git a/ChanSort.Api/Model/DataRoot.cs b/ChanSort.Api/Model/DataRoot.cs index 215a830..237c685 100644 --- a/ChanSort.Api/Model/DataRoot.cs +++ b/ChanSort.Api/Model/DataRoot.cs @@ -54,6 +54,11 @@ namespace ChanSort.Api #region AddChannel() public virtual void AddChannel(ChannelList list, ChannelInfo channel) { + if (list == null) + { + warnings.AppendFormat("No list found to add channel '{0}'\r\n", channel); + return; + } string warning = list.AddChannel(channel); if (warning != null) this.Warnings.AppendLine(warning); diff --git a/ChanSort.Api/Model/Enums.cs b/ChanSort.Api/Model/Enums.cs index 57592a5..266fbdd 100644 --- a/ChanSort.Api/Model/Enums.cs +++ b/ChanSort.Api/Model/Enums.cs @@ -52,13 +52,4 @@ namespace ChanSort.Api AppendAlphabetically=1, MarkDeleted=2 } - - public enum DvbServiceType - { - SdTv = 1, - Radio = 2, - Data = 12, - HdTv = 25, - Option = 211 - }; } diff --git a/ChanSort.Api/Model/LookupData.cs b/ChanSort.Api/Model/LookupData.cs index 93e0a3c..1594e63 100644 --- a/ChanSort.Api/Model/LookupData.cs +++ b/ChanSort.Api/Model/LookupData.cs @@ -187,5 +187,30 @@ namespace ChanSort.Api this.AddServiceType(serviceType, fields[2]); } #endregion + + #region IsRadioOrTv() + public SignalSource IsRadioOrTv(int dvbServiceType) + { + switch (dvbServiceType) + { + case 0x01: // SD MPEG1 + case 0x11: // MPEG2-HD + case 0x16: // H264/AVC-SD + case 0x19: // H264/AVC-HD + return SignalSource.Tv; + case 0x02: + case 0x0A: + return SignalSource.Radio; + } + return 0; + } + #endregion + + #region GetDvbtChannel() + public object GetDvbtChannel(decimal freq) + { + return ((int) (freq - 106)/8); + } + #endregion } } diff --git a/ChanSort.Api/Utils/Crc32.cs b/ChanSort.Api/Utils/Crc32.cs index e716e24..f9643a1 100644 --- a/ChanSort.Api/Utils/Crc32.cs +++ b/ChanSort.Api/Utils/Crc32.cs @@ -44,6 +44,7 @@ #endregion #region Crack() +#if false public static unsafe int Crack(byte* block, int maxLen, uint checksum) { uint crc32 = CrcMask; @@ -55,6 +56,7 @@ } return 0; } +#endif #endregion } } diff --git a/ChanSort.Api/Utils/DvbStringDecoder.cs b/ChanSort.Api/Utils/DvbStringDecoder.cs index 0153ed1..1219107 100644 --- a/ChanSort.Api/Utils/DvbStringDecoder.cs +++ b/ChanSort.Api/Utils/DvbStringDecoder.cs @@ -136,18 +136,15 @@ namespace ChanSort.Api break; char ch = '\0'; - if (singleByteChar) + switch (b) { - switch (b) - { - case 0x86: inShortMode = true; continue; - case 0x87: inShortMode = false; continue; - case 0x8a: ch = '\n'; break; - default: - if (b >= 0x80 && b <= 0x9f) // DVB-S control characters - continue; - break; - } + case 0x86: inShortMode = true; continue; + case 0x87: inShortMode = false; continue; + case 0x8a: ch = '\n'; break; + default: + if (b >= 0x80 && b <= 0x9f) // DVB-S control characters + continue; + break; } if (ch == '\0') { @@ -217,5 +214,24 @@ namespace ChanSort.Api return new byte[0]; } #endregion + + #region GetEncoding() + /// + /// Pass in either a value <=0x1F excluding 0x10 or 0x10xxyy + /// + public static Encoding GetEncoding(int encodingMarker) + { + string enc = null; + if (encodingMarker < 0x20) + enc = codePages1[encodingMarker]; + else + { + encodingMarker &= 0xFFFF; + if (encodingMarker < codePages2.Length) + enc = codePages2[encodingMarker]; + } + return enc == null ? null : Encoding.GetEncoding(enc); + } + #endregion } } diff --git a/ChanSort.Api/Utils/Tools.cs b/ChanSort.Api/Utils/Tools.cs index 43a9918..2e62446 100644 --- a/ChanSort.Api/Utils/Tools.cs +++ b/ChanSort.Api/Utils/Tools.cs @@ -12,18 +12,6 @@ namespace ChanSort.Api return val; } - public static unsafe string GetString(this Encoding encoding, byte* str, int len) - { - byte[] copy = new byte[len]; - for (int i = 0; i < len; i++) - copy[i] = *str++; - string name = encoding.GetString(copy, 0, len); - int idx = name.IndexOf('\0'); - if (idx >= 0) - name = name.Substring(0, idx); - return name; - } - public static string GetAnalogChannelNumber(int freq) { if (freq < 41) return ""; diff --git a/ChanSort.Loader.Panasonic/ChanSort.Loader.Panasonic.csproj b/ChanSort.Loader.Panasonic/ChanSort.Loader.Panasonic.csproj new file mode 100644 index 0000000..ac789b9 --- /dev/null +++ b/ChanSort.Loader.Panasonic/ChanSort.Loader.Panasonic.csproj @@ -0,0 +1,91 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {68DA8072-3A29-4076-9F64-D66F38349585} + Library + Properties + ChanSort.Loader.Panasonic + ChanSort.Loader.Panasonic + v3.5 + + + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + true + ..\Debug\ + DEBUG;TRACE + full + x86 + prompt + true + true + false + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + prompt + true + true + + + + + + False + ..\DLL\System.Data.SQLite.dll + + + + + + + + + + + + + + + + + + {DCCFFA08-472B-4D17-BB90-8F513FC01392} + ChanSort.Api + + + + + \ No newline at end of file diff --git a/ChanSort.Loader.Panasonic/DbChannel.cs b/ChanSort.Loader.Panasonic/DbChannel.cs new file mode 100644 index 0000000..9e9c17b --- /dev/null +++ b/ChanSort.Loader.Panasonic/DbChannel.cs @@ -0,0 +1,156 @@ +using System.Collections.Generic; +using System.Data.SQLite; +using System.Text; +using ChanSort.Api; + +namespace ChanSort.Loader.Panasonic +{ + internal class DbChannel : ChannelInfo + { + internal int Bits; + + #region ctor() + internal DbChannel(SQLiteDataReader r, IDictionary field, DataRoot dataRoot) + { + this.RecordIndex = r.GetInt32(field["rowid"]); + this.RecordOrder = r.GetInt32(field["major_channel"]); + int ntype = r.GetInt32(field["ntype"]); + if (ntype == 1) + this.SignalSource |= SignalSource.DvbS; + else if (ntype == 2) + this.SignalSource |= SignalSource.DvbT; + else if (ntype == 3) + this.SignalSource |= SignalSource.DvbC; + else if (ntype == 10) + this.SignalSource |= SignalSource.AnalogC | SignalSource.Tv; + + byte[] buffer = new byte[1000]; + var len = r.GetBytes(field["delivery"], 0, buffer, 0, 1000); + this.AddDebug(buffer, 0, (int) len); + + this.Skip = r.GetInt32(field["skip"]) != 0; + this.Encrypted = r.GetInt32(field["free_CA_mode"]) != 0; + this.Lock = r.GetInt32(field["child_lock"]) != 0; + this.ParseFavorites(r, field); + + if (ntype == 10) + this.ReadAnalogData(r, field); + else + this.ReadDvbData(r, field, dataRoot, buffer); + + var list = dataRoot.GetChannelList(this.SignalSource); + if (list != null) + this.OldProgramNr = ntype == 10 ? list.Count : list.Count + 1; + } + + #endregion + + #region ParseFavorites + private void ParseFavorites(SQLiteDataReader r, IDictionary field) + { + for (int i = 0; i < 4; i++) + { + int favIndex = r.GetInt32(field["profile" + (i + 1) + "index"]); + if (favIndex > 0) + this.Favorites |= (Favorites)(1 << i); + } + } + #endregion + + private void ReadAnalogData(SQLiteDataReader r, IDictionary field) + { + this.Name = r.GetString(field["sname"]); + this.FreqInMhz = r.IsDBNull(field["freq"]) ? 0 : (decimal)r.GetInt32(field["freq"]) / 1000; + this.ChannelOrTransponder = Tools.GetAnalogChannelNumber((int)this.FreqInMhz); + } + + #region ReadDvbData() + protected void ReadDvbData(SQLiteDataReader r, IDictionary field, DataRoot dataRoot, byte[] delivery) + { + string longName, shortName; + this.GetChannelNames(r.GetString(field["sname"]), out longName, out shortName); + this.Name = longName; + this.ShortName = shortName; + + int stype = r.GetInt32(field["stype"]); + if (stype == 1 || stype == 22 || stype == 25) + this.SignalSource |= SignalSource.Tv; + else if (stype == 2) + this.SignalSource |= SignalSource.Radio; + this.ServiceType = stype; + + int freq = r.GetInt32(field["freq"]); + if ((this.SignalSource & SignalSource.Sat) != 0) + { + this.FreqInMhz = freq/10; + int satId = r.GetInt32(field["physical_ch"]) >> 12; + var sat = dataRoot.Satellites.TryGet(satId); + if (sat != null) + { + this.Satellite = sat.Name; + this.SatPosition = sat.OrbitalPosition; + } + if (delivery.Length >= 7) + { + this.SymbolRate = (delivery[5] >> 4)*10000 + (delivery[5] & 0x0F)*1000 + + (delivery[6] >> 4)*100 + (delivery[6] & 0x0F)*10; + } + } + else + { + freq /= 1000; + this.FreqInMhz = freq; + this.ChannelOrTransponder = LookupData.Instance.GetDvbtChannel(freq).ToString(); + this.Satellite = (this.SignalSource & SignalSource.Antenna) != 0 ? "DVB-T" : "DVB-C"; + } + + this.OriginalNetworkId = r.GetInt32(field["onid"]); + this.TransportStreamId = r.GetInt32(field["tsid"]); + this.ServiceId = r.GetInt32(field["sid"]); + } + #endregion + + #region GetChannelNames() + private void GetChannelNames(string name, out string longName, out string shortName) + { + StringBuilder sbLong = new StringBuilder(); + StringBuilder sbShort = new StringBuilder(); + +#if false + //Encoding encoding = Encoding.Default; + if (name.Length > 0 && name[0] < 0x20) + { + if (name.Length >= 3 && name[0] == 0x10) + encoding = DvbStringDecoder.GetEncoding(name[0]); + } +#endif + bool inShort = false; + foreach (char c in name) + { + if (c < 0x20) + continue; + if (c == 0x86) + inShort = true; + else if (c == 0x87) + inShort = false; + if (c >= 0x80 && c <= 0x9F) + continue; + + if (inShort) + sbShort.Append(c); + sbLong.Append(c); + } + + longName = sbLong.ToString(); + shortName = sbShort.ToString(); + } + #endregion + + #region UpdateRawData() + public override void UpdateRawData() + { + + } + #endregion + } +} diff --git a/ChanSort.Loader.Panasonic/Properties/AssemblyInfo.cs b/ChanSort.Loader.Panasonic/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7bf305c --- /dev/null +++ b/ChanSort.Loader.Panasonic/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 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.Loader.Panasonic")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ChanSort.Loader.Panasonic")] +[assembly: AssemblyCopyright("Copyright © 2013")] +[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("bcd581a8-8959-404c-b7a8-e43f512eec03")] + +// 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")] diff --git a/ChanSort.Loader.Panasonic/Serializer.cs b/ChanSort.Loader.Panasonic/Serializer.cs new file mode 100644 index 0000000..708c941 --- /dev/null +++ b/ChanSort.Loader.Panasonic/Serializer.cs @@ -0,0 +1,154 @@ +using System; +using System.Collections.Generic; +using System.Data.SQLite; +using System.IO; +using System.Windows.Forms; +using ChanSort.Api; + +namespace ChanSort.Loader.Panasonic +{ + class Serializer : SerializerBase + { + private readonly ChannelList atvChannels = new ChannelList(SignalSource.AnalogCT | SignalSource.Tv, "Analog"); + private readonly ChannelList dtvTvChannels = new ChannelList(SignalSource.DvbCT | SignalSource.DvbS | SignalSource.Tv, "DTV"); + private readonly ChannelList dtvRadioChannels = new ChannelList(SignalSource.DvbCT | SignalSource.DvbS | SignalSource.Radio, "Radio"); + + private string tempFile; + + public Serializer(string inputFile) : base(inputFile) + { + this.DataRoot.AddChannelList(this.atvChannels); + this.DataRoot.AddChannelList(this.dtvTvChannels); + this.DataRoot.AddChannelList(this.dtvRadioChannels); + } + + public override string DisplayName { get { return "Panasonic .db Loader"; } } + + #region Load() + public override void Load() + { + this.tempFile = Path.GetTempFileName(); + Application.ApplicationExit += CleanTempFile; + this.CypherFile(this.FileName, this.tempFile); + + this.CreateDummySatellites(); + + string channelConnString = "Data Source=" + this.tempFile; + using (var conn = new SQLiteConnection(channelConnString)) + { + conn.Open(); + using (var cmd = conn.CreateCommand()) + { + this.ReadChannels(cmd); + } + } + } + #endregion + + #region CypherFile() + /// + /// XOR-based cypher which can be used to alternately crypt/decrypt data + /// + private void CypherFile(string input, string output) + { + byte[] fileContent = File.ReadAllBytes(input); + int chiffre = 0x0388; + int step = 0; + for (int i = 0; i < fileContent.Length /*- 41*/; i++) + { + byte b = fileContent[i]; + fileContent[i] = (byte)(b ^ (chiffre >> 8)); + if (++step < 256) + chiffre += b + 0x96A3; + else + { + chiffre = 0x0388; + step = 0; + } + } + File.WriteAllBytes(output, fileContent); + } + #endregion + + #region CleanTempFile() + private void CleanTempFile(object sender, EventArgs e) + { + try { File.Delete(this.tempFile);} + catch { } + } + #endregion + + #region CreateDummySatellites() + private void CreateDummySatellites() + { + for (int i = 1; i <= 4; i++) + { + var sat = new Satellite(i); + sat.Name = "LNB "+i; + sat.OrbitalPosition = i.ToString(); + this.DataRoot.Satellites.Add(i, sat); + } + } + #endregion + + #region ReadChannels() + private void ReadChannels(SQLiteCommand cmd) + { + string[] fieldNames = { "rowid", "major_channel", "physical_ch","sname", "freq", "skip", "running_status","free_CA_mode","child_lock", + "profile1index","profile2index","profile3index","profile4index","stype", "onid", "tsid", "sid", "ntype", "delivery" }; + + const string sql = "select s.rowid,s.major_channel,s.physical_ch,s.sname,t.freq,s.skip,s.running_status,s.free_CA_mode,s.child_lock, " + + "profile1index,profile2index,profile3index,profile4index,s.stype,s.onid,s.tsid,s.svcid,s.ntype,delivery" + + " from SVL s left outer join TSL t on s.ntype=t.ntype and s.physical_ch=t.physical_ch and s.tsid=t.tsid"+ + " order by s.ntype,major_channel"; + + var fields = this.GetFieldMap(fieldNames); + + cmd.CommandText = sql; + using (var r = cmd.ExecuteReader()) + { + while (r.Read()) + { + ChannelInfo channel = new DbChannel(r, fields, this.DataRoot); + if (!channel.IsDeleted) + { + var channelList = this.DataRoot.GetChannelList(channel.SignalSource); + if (channelList != null) + this.DataRoot.AddChannel(channelList, channel); + } + } + } + } + #endregion + + #region GetQuery() + private string GetQuery(string table, string[] fieldNames) + { + string sql = "select "; + for (int i = 0; i < fieldNames.Length; i++) + { + if (i > 0) + sql += ","; + sql += fieldNames[i]; + } + sql += " from " + table; + return sql; + } + #endregion + + #region GetFieldMap() + private IDictionary GetFieldMap(string[] fieldNames) + { + Dictionary field = new Dictionary(); + for (int i = 0; i < fieldNames.Length; i++) + field[fieldNames[i]] = i; + return field; + } + #endregion + + + public override void Save(string tvOutputFile) + { + } + } +} diff --git a/ChanSort.Loader.Panasonic/SerializerPlugin.cs b/ChanSort.Loader.Panasonic/SerializerPlugin.cs new file mode 100644 index 0000000..0456fe5 --- /dev/null +++ b/ChanSort.Loader.Panasonic/SerializerPlugin.cs @@ -0,0 +1,15 @@ +using ChanSort.Api; + +namespace ChanSort.Loader.Panasonic +{ + public class SerializerPlugin : ISerializerPlugin + { + public string PluginName { get { return "Panasonic *.db"; } } + public string FileFilter { get { return "*.db"; } } + + public SerializerBase CreateSerializer(string inputFile) + { + return new Serializer(inputFile); + } + } +} diff --git a/ChanSort.Loader.ScmFile/DigitalChannel.cs b/ChanSort.Loader.ScmFile/DigitalChannel.cs index fda6e4a..1c3c7f7 100644 --- a/ChanSort.Loader.ScmFile/DigitalChannel.cs +++ b/ChanSort.Loader.ScmFile/DigitalChannel.cs @@ -21,7 +21,7 @@ namespace ChanSort.Loader.ScmFile if (freq == 0) freq = transp*8 + 106; - this.ChannelOrTransponder = ((int)(freq-106)/8).ToString(); + this.ChannelOrTransponder = LookupData.Instance.GetDvbtChannel(freq).ToString(); this.FreqInMhz = freq; } } diff --git a/ChanSort.Loader.ScmFile/ScmChannelBase.cs b/ChanSort.Loader.ScmFile/ScmChannelBase.cs index 967de57..b72b844 100644 --- a/ChanSort.Loader.ScmFile/ScmChannelBase.cs +++ b/ChanSort.Loader.ScmFile/ScmChannelBase.cs @@ -96,10 +96,7 @@ namespace ChanSort.Loader.ScmFile this.ServiceType = data.GetByte(_ServiceType); this.SymbolRate = data.GetWord(_SymbolRate); - if (this.ServiceType == (int)DvbServiceType.Radio) - this.SignalSource |= SignalSource.Radio; - else - this.SignalSource |= SignalSource.Tv; + this.SignalSource |= LookupData.Instance.IsRadioOrTv(this.ServiceType); } #endregion diff --git a/ChanSort.sln b/ChanSort.sln index 2722500..d4fdc4e 100644 --- a/ChanSort.sln +++ b/ChanSort.sln @@ -22,6 +22,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.ScmFile", " EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.DbFile", "ChanSort.Loader.DbFile\ChanSort.Loader.DbFile.csproj", "{F6F02792-07F1-48D5-9AF3-F945CA5E3931}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.Panasonic", "ChanSort.Loader.Panasonic\ChanSort.Loader.Panasonic.csproj", "{68DA8072-3A29-4076-9F64-D66F38349585}" +EndProject Global GlobalSection(TestCaseManagementSettings) = postSolution CategoryFile = ChanSort1.vsmdi @@ -76,6 +78,13 @@ Global {F6F02792-07F1-48D5-9AF3-F945CA5E3931}.Release|Any CPU.ActiveCfg = Release|Any CPU {F6F02792-07F1-48D5-9AF3-F945CA5E3931}.Release|Any CPU.Build.0 = Release|Any CPU {F6F02792-07F1-48D5-9AF3-F945CA5E3931}.Release|x86.ActiveCfg = Release|Any CPU + {68DA8072-3A29-4076-9F64-D66F38349585}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {68DA8072-3A29-4076-9F64-D66F38349585}.Debug|Any CPU.Build.0 = Debug|Any CPU + {68DA8072-3A29-4076-9F64-D66F38349585}.Debug|x86.ActiveCfg = Debug|x86 + {68DA8072-3A29-4076-9F64-D66F38349585}.Debug|x86.Build.0 = Debug|x86 + {68DA8072-3A29-4076-9F64-D66F38349585}.Release|Any CPU.ActiveCfg = Release|Any CPU + {68DA8072-3A29-4076-9F64-D66F38349585}.Release|Any CPU.Build.0 = Release|Any CPU + {68DA8072-3A29-4076-9F64-D66F38349585}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ChanSort/MainForm.Designer.cs b/ChanSort/MainForm.Designer.cs index c502333..f077c91 100644 --- a/ChanSort/MainForm.Designer.cs +++ b/ChanSort/MainForm.Designer.cs @@ -36,6 +36,7 @@ this.dsChannels = new System.Windows.Forms.BindingSource(this.components); this.gviewLeft = new DevExpress.XtraGrid.Views.Grid.GridView(); this.colIndex1 = new DevExpress.XtraGrid.Columns.GridColumn(); + this.colOutServiceType = new DevExpress.XtraGrid.Columns.GridColumn(); this.colOutSlot = new DevExpress.XtraGrid.Columns.GridColumn(); this.colOutName = new DevExpress.XtraGrid.Columns.GridColumn(); this.colOutFav = new DevExpress.XtraGrid.Columns.GridColumn(); @@ -153,7 +154,7 @@ this.tabChannelList = new DevExpress.XtraTab.XtraTabControl(); this.pageEmpty = new DevExpress.XtraTab.XtraTabPage(); this.mnuContext = new DevExpress.XtraBars.PopupMenu(this.components); - this.colOutServiceType = new DevExpress.XtraGrid.Columns.GridColumn(); + this.colSignalSource = new DevExpress.XtraGrid.Columns.GridColumn(); ((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1)).BeginInit(); this.splitContainerControl1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.grpOutputList)).BeginInit(); @@ -194,7 +195,7 @@ resources.ApplyResources(this.splitContainerControl1.Panel1, "splitContainerControl1.Panel1"); this.splitContainerControl1.Panel2.Controls.Add(this.grpInputList); resources.ApplyResources(this.splitContainerControl1.Panel2, "splitContainerControl1.Panel2"); - this.splitContainerControl1.SplitterPosition = 343; + this.splitContainerControl1.SplitterPosition = 386; // // grpOutputList // @@ -265,6 +266,13 @@ this.colIndex1.FieldName = "RecordIndex"; this.colIndex1.Name = "colIndex1"; // + // colOutServiceType + // + resources.ApplyResources(this.colOutServiceType, "colOutServiceType"); + this.colOutServiceType.FieldName = "ServiceTypeName"; + this.colOutServiceType.Name = "colOutServiceType"; + this.colOutServiceType.OptionsColumn.AllowEdit = false; + // // colOutSlot // resources.ApplyResources(this.colOutSlot, "colOutSlot"); @@ -477,7 +485,8 @@ this.colNetworkName, this.colNetworkOperator, this.colDebug, - this.colLogicalIndex}); + this.colLogicalIndex, + this.colSignalSource}); this.gviewRight.GridControl = this.gridRight; this.gviewRight.Name = "gviewRight"; this.gviewRight.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.MouseDown; @@ -1394,12 +1403,12 @@ this.mnuContext.Manager = this.barManager1; this.mnuContext.Name = "mnuContext"; // - // colOutServiceType + // colSignalSource // - resources.ApplyResources(this.colOutServiceType, "colOutServiceType"); - this.colOutServiceType.FieldName = "ServiceTypeName"; - this.colOutServiceType.Name = "colOutServiceType"; - this.colOutServiceType.OptionsColumn.AllowEdit = false; + resources.ApplyResources(this.colSignalSource, "colSignalSource"); + this.colSignalSource.FieldName = "SignalSource"; + this.colSignalSource.Name = "colSignalSource"; + this.colSignalSource.OptionsColumn.AllowEdit = false; // // MainForm // @@ -1577,6 +1586,7 @@ private DevExpress.XtraEditors.SimpleButton btnToggleFavA; private DevExpress.XtraGrid.Columns.GridColumn colOutLock; private DevExpress.XtraGrid.Columns.GridColumn colOutServiceType; + private DevExpress.XtraGrid.Columns.GridColumn colSignalSource; private DevExpress.XtraSplashScreen.SplashScreenManager splashScreenManager1; } } diff --git a/ChanSort/MainForm.resx b/ChanSort/MainForm.resx index cb569f1..17e86e3 100644 --- a/ChanSort/MainForm.resx +++ b/ChanSort/MainForm.resx @@ -222,7 +222,7 @@ 35 - 339, 417 + 382, 417 1 @@ -872,6 +872,12 @@ DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + colOutServiceType + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + colOutSlot @@ -1358,10 +1364,10 @@ DevExpress.XtraBars.PopupMenu, DevExpress.XtraBars.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - colOutServiceType + + colSignalSource - + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -1371,7 +1377,7 @@ DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v12.2, Version=12.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - 04/08/2013 10:45:01 + 04/11/2013 21:59:42 16, 16 @@ -1659,7 +1665,7 @@ 2, 21 - 339, 33 + 382, 33 0 @@ -1683,7 +1689,7 @@ 0, 0 - 343, 490 + 386, 490 0 @@ -2009,8 +2015,11 @@ Order + + Signal source + - 1122, 417 + 1079, 417 1 @@ -2148,7 +2157,7 @@ 2, 21 - 1122, 33 + 1079, 33 0 @@ -2172,7 +2181,7 @@ 0, 0 - 1126, 490 + 1083, 490 0