diff --git a/source/ChanSort.Api/Controller/CsvFileSerializer.cs b/source/ChanSort.Api/Controller/CsvFileSerializer.cs index 76a7509..a860f93 100644 --- a/source/ChanSort.Api/Controller/CsvFileSerializer.cs +++ b/source/ChanSort.Api/Controller/CsvFileSerializer.cs @@ -66,6 +66,8 @@ namespace ChanSort.Api int programNr; if (!int.TryParse(parts[1], out programNr)) return; string uid = parts[3]; + if (uid.StartsWith("S")) // remove satellite orbital position from UID ... not all TV models provide this information + uid = "S" + uid.Substring(uid.IndexOf('-')); SignalSource signalSource = GetSignalSource(ref programNr, uid, parts); if (signalSource == 0) return; diff --git a/source/ChanSort.Api/Controller/Editor.cs b/source/ChanSort.Api/Controller/Editor.cs index 5100618..d259253 100644 --- a/source/ChanSort.Api/Controller/Editor.cs +++ b/source/ChanSort.Api/Controller/Editor.cs @@ -271,8 +271,13 @@ namespace ChanSort.Api if (appChannel.RecordIndex < 0) continue; - if (appChannel.NewProgramNr == -1 && mode == UnsortedChannelMode.MarkDeleted) - continue; + if (appChannel.NewProgramNr == -1) + { + if (mode == UnsortedChannelMode.MarkDeleted) + continue; + appChannel.Hidden = true; + appChannel.Skip = true; + } int progNr = GetNewPogramNr(appChannel, ref maxProgNr); appChannel.NewProgramNr = progNr; diff --git a/source/ChanSort.Api/Controller/SerializerBase.cs b/source/ChanSort.Api/Controller/SerializerBase.cs index 29c27d9..5613e26 100644 --- a/source/ChanSort.Api/Controller/SerializerBase.cs +++ b/source/ChanSort.Api/Controller/SerializerBase.cs @@ -6,7 +6,7 @@ namespace ChanSort.Api { public class SupportedFeatures { - public bool ChannelNameEdit { get; set; } + public ChannelNameEditMode ChannelNameEdit { get; set; } public bool CleanUpChannelData { get; set; } public bool DeviceSettings { get; set; } public bool CanDeleteChannels { get; set; } diff --git a/source/ChanSort.Api/Model/ChannelInfo.cs b/source/ChanSort.Api/Model/ChannelInfo.cs index 7a67a19..db370d3 100644 --- a/source/ChanSort.Api/Model/ChannelInfo.cs +++ b/source/ChanSort.Api/Model/ChannelInfo.cs @@ -98,7 +98,7 @@ namespace ChanSort.Api if ((this.SignalSource & SignalSource.Digital) == 0) this.uid = "A-0-" + (int)(this.FreqInMhz*20) + "-0"; else if ((this.SignalSource & SignalSource.Sat) != 0) - this.uid = "S" + this.SatPosition + "-" + this.OriginalNetworkId + "-" + this.TransportStreamId + "-" + this.ServiceId; + this.uid = "S" + /*this.SatPosition + */ "-" + this.OriginalNetworkId + "-" + this.TransportStreamId + "-" + this.ServiceId; else this.uid = "C-" + this.OriginalNetworkId + "-" + this.TransportStreamId + "-" + this.ServiceId + "-" + this.ChannelOrTransponder; } diff --git a/source/ChanSort.Api/Model/Enums.cs b/source/ChanSort.Api/Model/Enums.cs index e2cd811..d0855f4 100644 --- a/source/ChanSort.Api/Model/Enums.cs +++ b/source/ChanSort.Api/Model/Enums.cs @@ -70,4 +70,13 @@ namespace ChanSort.Api AppendAlphabetically=1, MarkDeleted=2 } + + [Flags] + public enum ChannelNameEditMode + { + None = 0x00, + Analog = 0x01, + Digital = 0x02, + All = Analog|Digital + } } diff --git a/source/ChanSort.Loader.GlobalClone/GcSerializer.cs b/source/ChanSort.Loader.GlobalClone/GcSerializer.cs index 74a976e..1eb4cbf 100644 --- a/source/ChanSort.Loader.GlobalClone/GcSerializer.cs +++ b/source/ChanSort.Loader.GlobalClone/GcSerializer.cs @@ -23,7 +23,7 @@ namespace ChanSort.Loader.GlobalClone #region ctor() public GcSerializer(string inputFile) : base(inputFile) { - this.Features.ChannelNameEdit = false; + this.Features.ChannelNameEdit = ChannelNameEditMode.All; //this.Features.CanDeleteChannels = false; this.DataRoot.AddChannelList(this.atvChannels); diff --git a/source/ChanSort.Loader.LG/TllFileSerializer.cs b/source/ChanSort.Loader.LG/TllFileSerializer.cs index 465cb90..362cf9c 100644 --- a/source/ChanSort.Loader.LG/TllFileSerializer.cs +++ b/source/ChanSort.Loader.LG/TllFileSerializer.cs @@ -75,7 +75,7 @@ namespace ChanSort.Loader.LG #region ctor() public TllFileSerializer(string inputFile) : base(inputFile) { - this.Features.ChannelNameEdit = true; + this.Features.ChannelNameEdit = ChannelNameEditMode.Analog; this.Features.DeviceSettings = true; this.Features.CleanUpChannelData = true; this.SupportedTvCountryCodes = new List diff --git a/source/ChanSort.Loader.Panasonic/Serializer.cs b/source/ChanSort.Loader.Panasonic/Serializer.cs index 9b1b610..18f3237 100644 --- a/source/ChanSort.Loader.Panasonic/Serializer.cs +++ b/source/ChanSort.Loader.Panasonic/Serializer.cs @@ -307,7 +307,7 @@ namespace ChanSort.Loader.Panasonic { DepencencyChecker.AssertVc2010RedistPackageX86Installed(); - this.Features.ChannelNameEdit = false; // due to the chaos with binary data inside the "sname" string column, writing back a name has undesired side effects + this.Features.ChannelNameEdit = ChannelNameEditMode.None; // due to the chaos with binary data inside the "sname" string column, writing back a name has undesired side effects this.Features.CanHaveGaps = false; this.DataRoot.SortedFavorites = true; diff --git a/source/ChanSort.Loader.Samsung/ScmSerializer.cs b/source/ChanSort.Loader.Samsung/ScmSerializer.cs index c661c4f..da86b4b 100644 --- a/source/ChanSort.Loader.Samsung/ScmSerializer.cs +++ b/source/ChanSort.Loader.Samsung/ScmSerializer.cs @@ -63,7 +63,7 @@ namespace ChanSort.Loader.Samsung public ScmSerializer(string inputFile) : base(inputFile) { this.ReadConfigurationFromIniFile(); - this.Features.ChannelNameEdit = true; + this.Features.ChannelNameEdit = ChannelNameEditMode.All; this.Features.CleanUpChannelData = true; } #endregion diff --git a/source/ChanSort.Loader.SamsungJ/DbChannel.cs b/source/ChanSort.Loader.SamsungJ/DbChannel.cs index 18affa4..9102db2 100644 --- a/source/ChanSort.Loader.SamsungJ/DbChannel.cs +++ b/source/ChanSort.Loader.SamsungJ/DbChannel.cs @@ -6,7 +6,11 @@ namespace ChanSort.Loader.SamsungJ { internal class DbChannel : ChannelInfo { +#if INDIVIDUALLY_SORTED_FAVS internal Dictionary OriginalFavIndex = new Dictionary(); +#else + internal Favorites OriginalFavs; +#endif #region ctor() internal DbChannel(SQLiteDataReader r, IDictionary field, DataRoot dataRoot, Dictionary providers, Satellite sat, Transponder tp) @@ -43,6 +47,8 @@ namespace ChanSort.Loader.SamsungJ this.ReadDvbData(r, field, dataRoot, providers); else this.ReadAnalogData(r, field); + + base.IsDeleted = this.OldProgramNr == -1; } #endregion @@ -67,24 +73,6 @@ namespace ChanSort.Loader.SamsungJ this.VideoPid = r.GetInt32(field["vidPid"]); if (!r.IsDBNull(field["provId"])) this.Provider = providers.TryGet(r.GetInt64(field["provId"])); - if ((this.SignalSource & SignalSource.Sat) != 0) - { - - //int satId = r.GetInt32(field["sat_id"]); - //var sat = dataRoot.Satellites.TryGet(satId); - //if (sat != null) - //{ - // this.Satellite = sat.Name; - // this.SatPosition = sat.OrbitalPosition; - // int tpId = satId * 1000000 + (int)this.FreqInMhz; - // var tp = dataRoot.Transponder.TryGet(tpId); - // if (tp != null) - // { - // this.SymbolRate = tp.SymbolRate; - // } - //} - } - //this.Encrypted = encryptionInfo.TryGet(this.Uid); } #endregion diff --git a/source/ChanSort.Loader.SamsungJ/DbSerializer.cs b/source/ChanSort.Loader.SamsungJ/DbSerializer.cs index 7cc2927..269a05c 100644 --- a/source/ChanSort.Loader.SamsungJ/DbSerializer.cs +++ b/source/ChanSort.Loader.SamsungJ/DbSerializer.cs @@ -24,8 +24,10 @@ namespace ChanSort.Loader.SamsungJ { DepencencyChecker.AssertVc2010RedistPackageX86Installed(); - this.Features.ChannelNameEdit = false; - this.DataRoot.SortedFavorites = true; + this.Features.ChannelNameEdit = ChannelNameEditMode.All; + this.Features.CanDeleteChannels = true; + this.DataRoot.SupportedFavorites = Favorites.A | Favorites.B | Favorites.C | Favorites.D | Favorites.E; + this.DataRoot.SortedFavorites = false; } #endregion @@ -400,9 +402,13 @@ namespace ChanSort.Loader.SamsungJ continue; int fav = r.GetInt32(1) - 1; int pos = r.GetInt32(2); - channel.FavIndex[fav] = channel.OriginalFavIndex[fav] = pos; if (pos >= 0) channel.Favorites |= (Favorites) (1 << fav); +#if INDIVIDUALLY_SORTED_FAVS + channel.FavIndex[fav] = channel.OriginalFavIndex[fav] = pos; +#else + channel.OriginalFavs = channel.Favorites; +#endif } } #endregion @@ -453,18 +459,19 @@ namespace ChanSort.Loader.SamsungJ using (var conn = new SQLiteConnection("Data Source=" + dbPath)) { conn.Open(); - using (var cmd = conn.CreateCommand()) - using (var cmd2 = conn.CreateCommand()) - using (var cmd3 = conn.CreateCommand()) - using (var cmd4 = conn.CreateCommand()) + using (var cmdUpdateSrv = conn.CreateCommand()) + using (var cmdDeleteSrv = conn.CreateCommand()) + using (var cmdInsertFav = conn.CreateCommand()) + using (var cmdUpdateFav = conn.CreateCommand()) + using (var cmdDeleteFav = conn.CreateCommand()) { using (var trans = conn.BeginTransaction()) { - this.PrepareCommands(cmd, cmd2, cmd3, cmd4); - this.WriteChannels(cmd, cmd2, cmd3, cmd4, channelList); + this.PrepareCommands(cmdUpdateSrv, cmdDeleteSrv, cmdInsertFav, cmdUpdateFav, cmdDeleteFav); + this.WriteChannels(cmdUpdateSrv, cmdDeleteSrv, cmdInsertFav, cmdUpdateFav, cmdDeleteFav, channelList); trans.Commit(); } - this.RepairCorruptedDatabaseImage(cmd); + this.RepairCorruptedDatabaseImage(cmdUpdateSrv); } } } @@ -472,37 +479,43 @@ namespace ChanSort.Loader.SamsungJ #endregion #region PrepareCommands() - private void PrepareCommands(SQLiteCommand cmd, SQLiteCommand cmd2, SQLiteCommand cmd3, SQLiteCommand cmd4) + private void PrepareCommands(SQLiteCommand cmdUpdateSrv, SQLiteCommand cmdDeleteSrv, SQLiteCommand cmdInsertFav, SQLiteCommand cmdUpdateFav, SQLiteCommand cmdDeleteFav) { - cmd.CommandText = "update SRV set major=@nr, lockMode=@lock, hidden=@hidden, numSel=@numsel where srvId=@id"; - cmd.Parameters.Add(new SQLiteParameter("@id", DbType.Int64)); - cmd.Parameters.Add(new SQLiteParameter("@nr", DbType.Int32)); - cmd.Parameters.Add(new SQLiteParameter("@lock", DbType.Boolean)); - cmd.Parameters.Add(new SQLiteParameter("@hidden", DbType.Boolean)); - cmd.Parameters.Add(new SQLiteParameter("@numsel", DbType.Boolean)); - cmd.Prepare(); + cmdUpdateSrv.CommandText = "update SRV set major=@nr, lockMode=@lock, hideGuide=@hidden, hidden=@hidden, numSel=@numsel, srvName=@srvname where srvId=@id"; + cmdUpdateSrv.Parameters.Add(new SQLiteParameter("@id", DbType.Int64)); + cmdUpdateSrv.Parameters.Add(new SQLiteParameter("@nr", DbType.Int32)); + cmdUpdateSrv.Parameters.Add(new SQLiteParameter("@lock", DbType.Boolean)); + cmdUpdateSrv.Parameters.Add(new SQLiteParameter("@hidden", DbType.Boolean)); + cmdUpdateSrv.Parameters.Add(new SQLiteParameter("@numsel", DbType.Boolean)); + cmdUpdateSrv.Parameters.Add(new SQLiteParameter("@srvname", DbType.Binary)); + cmdUpdateSrv.Prepare(); - cmd2.CommandText = "insert into SRV_FAV (srvId, fav, pos) values (@id, @fav, @pos)"; - cmd2.Parameters.Add(new SQLiteParameter("@id", DbType.Int64)); - cmd2.Parameters.Add(new SQLiteParameter("@fav", DbType.Int32)); - cmd2.Parameters.Add(new SQLiteParameter("@pos", DbType.Int32)); - cmd2.Prepare(); + cmdDeleteSrv.CommandText = "delete from SRV where srvId=@id"; + cmdDeleteSrv.Parameters.Add(new SQLiteParameter("@id", DbType.Int64)); + cmdDeleteSrv.Prepare(); - cmd3.CommandText = "update SRV_FAV set pos=@pos where srvId=@id and fav=@fav"; - cmd3.Parameters.Add(new SQLiteParameter("@id", DbType.Int64)); - cmd3.Parameters.Add(new SQLiteParameter("@fav", DbType.Int32)); - cmd3.Parameters.Add(new SQLiteParameter("@pos", DbType.Int32)); - cmd3.Prepare(); + cmdInsertFav.CommandText = "insert into SRV_FAV (srvId, fav, pos) values (@id, @fav, @pos)"; + cmdInsertFav.Parameters.Add(new SQLiteParameter("@id", DbType.Int64)); + cmdInsertFav.Parameters.Add(new SQLiteParameter("@fav", DbType.Int32)); + cmdInsertFav.Parameters.Add(new SQLiteParameter("@pos", DbType.Int32)); + cmdInsertFav.Prepare(); - cmd4.CommandText = "delete from SRV_FAV where srvId=@id and fav=@fav"; - cmd4.Parameters.Add(new SQLiteParameter("@id", DbType.Int64)); - cmd4.Parameters.Add(new SQLiteParameter("@fav", DbType.Int32)); - cmd4.Prepare(); + cmdUpdateFav.CommandText = "update SRV_FAV set pos=@pos where srvId=@id and fav=@fav"; + cmdUpdateFav.Parameters.Add(new SQLiteParameter("@id", DbType.Int64)); + cmdUpdateFav.Parameters.Add(new SQLiteParameter("@fav", DbType.Int32)); + cmdUpdateFav.Parameters.Add(new SQLiteParameter("@pos", DbType.Int32)); + cmdUpdateFav.Prepare(); + + cmdDeleteFav.CommandText = "delete from SRV_FAV where srvId=@id and fav=@fav"; + cmdDeleteFav.Parameters.Add(new SQLiteParameter("@id", DbType.Int64)); + cmdDeleteFav.Parameters.Add(new SQLiteParameter("@fav", DbType.Int32)); + cmdDeleteFav.Prepare(); } #endregion #region WriteChannels() - private void WriteChannels(SQLiteCommand cmd, SQLiteCommand cmd2, SQLiteCommand cmd3, SQLiteCommand cmd4, ChannelList channelList, bool analog = false) + private void WriteChannels(SQLiteCommand cmdUpdateSrv, SQLiteCommand cmdDeleteSrv, SQLiteCommand cmdInsertFav, SQLiteCommand cmdUpdateFav, SQLiteCommand cmdDeleteFav, + ChannelList channelList, bool analog = false) { foreach (ChannelInfo channelInfo in channelList.Channels) { @@ -510,24 +523,38 @@ namespace ChanSort.Loader.SamsungJ if (channel == null) // ignore reference list proxy channels continue; channel.UpdateRawData(); - cmd.Parameters["@id"].Value = channel.RecordIndex; - cmd.Parameters["@nr"].Value = channel.NewProgramNr; - cmd.Parameters["@lock"].Value = channel.Lock; - cmd.Parameters["@hidden"].Value = channel.Hidden; - cmd.Parameters["@numsel"].Value = !channel.Skip; - cmd.ExecuteNonQuery(); - - for (int i=0; i 0) { - var c = oldPos < 0 ? cmd2 : cmd3; + var c = oldPos < 0 ? cmdInsertFav : cmdUpdateFav; c.Parameters["@id"].Value = channel.RecordIndex; c.Parameters["@fav"].Value = i + 1; c.Parameters["@pos"].Value = newPos; @@ -535,11 +562,12 @@ namespace ChanSort.Loader.SamsungJ } else { - cmd4.Parameters["@id"].Value = channel.RecordIndex; - cmd4.Parameters["@fav"].Value = i + 1; - cmd4.ExecuteNonQuery(); + cmdDeleteFav.Parameters["@id"].Value = channel.RecordIndex; + cmdDeleteFav.Parameters["@fav"].Value = i + 1; + cmdDeleteFav.ExecuteNonQuery(); } } + channel.OriginalFavs = channel.Favorites; } } #endregion diff --git a/source/ChanSort.Loader.Toshiba/DbSerializer.cs b/source/ChanSort.Loader.Toshiba/DbSerializer.cs index 0015bae..29ce754 100644 --- a/source/ChanSort.Loader.Toshiba/DbSerializer.cs +++ b/source/ChanSort.Loader.Toshiba/DbSerializer.cs @@ -29,7 +29,7 @@ namespace ChanSort.Loader.Toshiba { DepencencyChecker.AssertVc2010RedistPackageX86Installed(); - this.Features.ChannelNameEdit = true; + this.Features.ChannelNameEdit = ChannelNameEditMode.All; this.DataRoot.AddChannelList(this.atvChannels); this.DataRoot.AddChannelList(this.dtvTvChannels); diff --git a/source/ChanSort.Loader.VDR/Serializer.cs b/source/ChanSort.Loader.VDR/Serializer.cs index 1bb8cb2..5c32733 100644 --- a/source/ChanSort.Loader.VDR/Serializer.cs +++ b/source/ChanSort.Loader.VDR/Serializer.cs @@ -1,17 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.IO; +using System.IO; using System.Text; -using System.Windows.Forms; using ChanSort.Api; namespace ChanSort.Loader.VDR { class Serializer : SerializerBase { - private const string ERR_FileFormat = "File uses an unknown format"; - private readonly ChannelList allChannels = new ChannelList(SignalSource.DvbT | SignalSource.DvbC | SignalSource.DvbS | SignalSource.AnalogC | SignalSource.AnalogT | SignalSource.Tv | SignalSource.Radio, "All"); #region ctor() @@ -19,7 +13,7 @@ namespace ChanSort.Loader.VDR { DepencencyChecker.AssertVc2010RedistPackageX86Installed(); - this.Features.ChannelNameEdit = false; + this.Features.ChannelNameEdit = ChannelNameEditMode.None; this.DataRoot.SortedFavorites = false; //this.DataRoot.SupportedFavorites = new Favorites(); diff --git a/source/ChanSort/MainForm.cs b/source/ChanSort/MainForm.cs index 84ea6eb..8e1892a 100644 --- a/source/ChanSort/MainForm.cs +++ b/source/ChanSort/MainForm.cs @@ -25,7 +25,7 @@ namespace ChanSort.Ui { public partial class MainForm : XtraForm { - public const string AppVersion = "v2015-06-05"; + public const string AppVersion = "v2015-06-13"; private const int MaxMruEntries = 10; @@ -231,8 +231,6 @@ namespace ChanSort.Ui //this.SetControlsEnabled(!this.dataRoot.IsEmpty); this.UpdateFavoritesEditor(this.dataRoot.SupportedFavorites); - this.colName.OptionsColumn.AllowEdit = this.currentTvSerializer.Features.ChannelNameEdit; - this.colOutName.OptionsColumn.AllowEdit = this.currentTvSerializer.Features.ChannelNameEdit; if (this.dataRoot.Warnings.Length > 0 && this.miShowWarningsAfterLoad.Checked) this.BeginInvoke((Action)this.ShowFileInformation); @@ -574,6 +572,13 @@ namespace ChanSort.Ui this.LoadInputGridLayout(channelList.SignalSource); this.gridRight.DataSource = channelList.Channels; this.gridLeft.DataSource = channelList.Channels; + + SignalSource src = 0; + if ((this.currentTvSerializer.Features.ChannelNameEdit & ChannelNameEditMode.Analog) != 0) + src |= SignalSource.Analog; + if ((this.currentTvSerializer.Features.ChannelNameEdit & ChannelNameEditMode.Digital) != 0) + src |= SignalSource.Digital; + this.colName.OptionsColumn.AllowEdit = this.colOutName.OptionsColumn.AllowEdit = (channelList.SignalSource & src) != 0; } else { @@ -593,6 +598,7 @@ namespace ChanSort.Ui this.gviewLeft.OptionsBehavior.Editable = allowEdit; this.gviewRight.OptionsBehavior.Editable = allowEdit; + this.UpdateInsertSlotTextBox(); this.UpdateMenu(); } @@ -1401,6 +1407,7 @@ namespace ChanSort.Ui try { File.Copy(bakFile, this.currentTvFile, true); + this.currentTvSerializer.DataRoot.NeedsSaving = false; if (this.currentPlugin != null) this.LoadFiles(this.currentPlugin, this.currentTvFile); } diff --git a/source/ChanSort/MainForm.resx b/source/ChanSort/MainForm.resx index f34e079..7d9d64a 100644 --- a/source/ChanSort/MainForm.resx +++ b/source/ChanSort/MainForm.resx @@ -626,8 +626,8 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMy4yLCBWZXJzaW9uPTEz - LjIuOS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNC4yLCBWZXJzaW9uPTE0 + LjIuNy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEZpbGUE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICKaPJ5gsBeU2NTSFe @@ -636,8 +636,8 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMy4yLCBWZXJzaW9uPTEz - LjIuOS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNC4yLCBWZXJzaW9uPTE0 + LjIuNy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEhlbHAE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICdEVVDegwMU2acNpw @@ -646,8 +646,8 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMy4yLCBWZXJzaW9uPTEz - LjIuOS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNC4yLCBWZXJzaW9uPTE0 + LjIuNy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEVkaXQE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICZMTu18lZRU+IqmAu @@ -656,8 +656,8 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMy4yLCBWZXJzaW9uPTEz - LjIuOS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNC4yLCBWZXJzaW9uPTE0 + LjIuNy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAAB09wdGlvbnME/P///wtTeXN0ZW0uR3VpZAsAAAACX2EC X2ICX2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICXJMOh9nzAkKc @@ -666,8 +666,8 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMy4yLCBWZXJzaW9uPTEz - LjIuOS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA + AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNC4yLCBWZXJzaW9uPTE0 + LjIuNy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAADUFjY2Vzc2liaWxpdHkE/P///wtTeXN0ZW0uR3VpZAsA AAACX2ECX2ICX2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICeIvz @@ -1819,7 +1819,7 @@ DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v14.2, Version=14.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - 08/21/2014 12:51:52 + 06/13/2015 13:20:52 16, 16 @@ -2164,7 +2164,7 @@ 0 - Sorted channels (.csv) + Sorted channels grpOutputList @@ -2707,7 +2707,7 @@ 0 - All channels + Original channels grpInputList diff --git a/source/ChanSort/Properties/licenses.licx b/source/ChanSort/Properties/licenses.licx index 0176dd4..82d8488 100644 --- a/source/ChanSort/Properties/licenses.licx +++ b/source/ChanSort/Properties/licenses.licx @@ -1 +1,6 @@ +DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v14.2, Version=14.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v14.2, Version=14.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v14.2, Version=14.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v14.2, Version=14.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v14.2, Version=14.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v14.2, Version=14.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/source/changelog.md b/source/changelog.md index 464bae2..8883913 100644 --- a/source/changelog.md +++ b/source/changelog.md @@ -1,6 +1,19 @@ ChanSort Change Log =================== +2015-06-13 +- when appending unsorted channels during save, they are now set to + "hidden" and "skipped/unselectable" +- reference lists: the satellite orbital position is no longer used + to match channels. (Samsung J series does not provide that info). +- Samsung J series: favorite lists are no longer individually sortable. + (The same Pr# is used for all favorite lists). +- Samsung J series: deleting channels now physically removes them from + the file. (The TV might automatically append them again when it finds + them in the DVB data stream). +- Samsung J series: editing of channel names is now enabled. +- Samsung J series: favorite E is now also available + 2015-06-05 - added support for Samsung J-Series DVB-T and analog channel lists - fixed reference lists with Samsung J-Series diff --git a/source/makeDistribZip.cmd b/source/makeDistribZip.cmd index 808d91b..ab84fbf 100644 --- a/source/makeDistribZip.cmd +++ b/source/makeDistribZip.cmd @@ -16,7 +16,8 @@ mkdir "%target%\ru" 2>nul xcopy /siy debug\de "%target%\de" xcopy /siy debug\pt "%target%\pt" copy DLL\ChanSort.resources.dll "%target%\ru" -copy readme.txt "%target%" +copy ..\readme.md "%target%\readme.txt" +copy changelog.md "%target%\changelog.txt" for %%f in (Utils Data Printing XtraPrinting XtraReports XtraEditors XtraBars XtraGrid XtraLayout XtraTreeList) do call :copyDll %%f cd ..