- 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
This commit is contained in:
hbeham
2015-06-13 18:37:59 +02:00
parent 5ed94da80f
commit 43cfca4d0b
18 changed files with 149 additions and 97 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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; }

View File

@@ -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;
}

View File

@@ -70,4 +70,13 @@ namespace ChanSort.Api
AppendAlphabetically=1,
MarkDeleted=2
}
[Flags]
public enum ChannelNameEditMode
{
None = 0x00,
Analog = 0x01,
Digital = 0x02,
All = Analog|Digital
}
}

View File

@@ -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);

View File

@@ -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<string>

View File

@@ -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;

View File

@@ -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

View File

@@ -6,7 +6,11 @@ namespace ChanSort.Loader.SamsungJ
{
internal class DbChannel : ChannelInfo
{
#if INDIVIDUALLY_SORTED_FAVS
internal Dictionary<int,int> OriginalFavIndex = new Dictionary<int, int>();
#else
internal Favorites OriginalFavs;
#endif
#region ctor()
internal DbChannel(SQLiteDataReader r, IDictionary<string, int> field, DataRoot dataRoot, Dictionary<long, string> 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

View File

@@ -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<channel.FavIndex.Count; i++)
if (channel.NewProgramNr < 0)
{
cmdDeleteSrv.Parameters["@id"].Value = channel.RecordIndex;
cmdDeleteSrv.ExecuteNonQuery();
}
else
{
cmdUpdateSrv.Parameters["@id"].Value = channel.RecordIndex;
cmdUpdateSrv.Parameters["@nr"].Value = channel.NewProgramNr;
cmdUpdateSrv.Parameters["@lock"].Value = channel.Lock;
cmdUpdateSrv.Parameters["@hidden"].Value = channel.Hidden;
cmdUpdateSrv.Parameters["@numsel"].Value = !channel.Skip;
cmdUpdateSrv.Parameters["@srvname"].Value = channel.Name == null ? null : Encoding.BigEndianUnicode.GetBytes(channel.Name);
cmdUpdateSrv.ExecuteNonQuery();
}
for (int i=0, mask=1; i<5; i++, mask <<= 1)
{
#if INDIVIDUALLY_SORTED_FAVS
int oldPos;
if (!channel.OriginalFavIndex.TryGetValue(i, out oldPos))
oldPos = -1;
int newPos = channel.FavIndex[i];
if (newPos == oldPos)
continue;
#else
int oldPos = ((int)channel.OriginalFavs & mask) != 0 ? channel.OldProgramNr : -1;
int newPos = ((int)channel.Favorites & mask) != 0 ? channel.NewProgramNr : -1;
#endif
if (newPos > 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

View File

@@ -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);

View File

@@ -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();

View File

@@ -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);
}

View File

@@ -626,8 +626,8 @@
<assembly alias="DevExpress.XtraBars.v14.2" name="DevExpress.XtraBars.v14.2, Version=14.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="barManager1.Categories" type="DevExpress.XtraBars.BarManagerCategory, DevExpress.XtraBars.v14.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMy4yLCBWZXJzaW9uPTEz
LjIuOS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNC4yLCBWZXJzaW9uPTE0
LjIuNy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li
bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEZpbGUE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC
X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICKaPJ5gsBeU2NTSFe
@@ -636,8 +636,8 @@
</data>
<data name="barManager1.Categories1" type="DevExpress.XtraBars.BarManagerCategory, DevExpress.XtraBars.v14.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMy4yLCBWZXJzaW9uPTEz
LjIuOS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNC4yLCBWZXJzaW9uPTE0
LjIuNy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li
bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEhlbHAE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC
X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICdEVVDegwMU2acNpw
@@ -646,8 +646,8 @@
</data>
<data name="barManager1.Categories2" type="DevExpress.XtraBars.BarManagerCategory, DevExpress.XtraBars.v14.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMy4yLCBWZXJzaW9uPTEz
LjIuOS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNC4yLCBWZXJzaW9uPTE0
LjIuNy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li
bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAABEVkaXQE/P///wtTeXN0ZW0uR3VpZAsAAAACX2ECX2IC
X2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICZMTu18lZRU+IqmAu
@@ -656,8 +656,8 @@
</data>
<data name="barManager1.Categories3" type="DevExpress.XtraBars.BarManagerCategory, DevExpress.XtraBars.v14.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMy4yLCBWZXJzaW9uPTEz
LjIuOS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNC4yLCBWZXJzaW9uPTE0
LjIuNy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li
bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAAB09wdGlvbnME/P///wtTeXN0ZW0uR3VpZAsAAAACX2EC
X2ICX2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICXJMOh9nzAkKc
@@ -666,8 +666,8 @@
</data>
<data name="barManager1.Categories4" type="DevExpress.XtraBars.BarManagerCategory, DevExpress.XtraBars.v14.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxMy4yLCBWZXJzaW9uPTEz
LjIuOS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
AAEAAAD/////AQAAAAAAAAAMAgAAAF1EZXZFeHByZXNzLlh0cmFCYXJzLnYxNC4yLCBWZXJzaW9uPTE0
LjIuNy4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAA
ACZEZXZFeHByZXNzLlh0cmFCYXJzLkJhck1hbmFnZXJDYXRlZ29yeQMAAAAETmFtZQRHdWlkB1Zpc2li
bGUBAwALU3lzdGVtLkd1aWQBAgAAAAYDAAAADUFjY2Vzc2liaWxpdHkE/P///wtTeXN0ZW0uR3VpZAsA
AAACX2ECX2ICX2MCX2QCX2UCX2YCX2cCX2gCX2kCX2oCX2sAAAAAAAAAAAAAAAgHBwICAgICAgICeIvz
@@ -1819,7 +1819,7 @@
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v14.2, Version=14.2.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="SharedImageCollection.Timestamp" type="System.DateTime, mscorlib">
<value>08/21/2014 12:51:52</value>
<value>06/13/2015 13:20:52</value>
</data>
<data name="SharedImageCollection.ImageSize" type="System.Drawing.Size, System.Drawing">
<value>16, 16</value>
@@ -2164,7 +2164,7 @@
<value>0</value>
</data>
<data name="grpOutputList.Text" xml:space="preserve">
<value>Sorted channels (.csv)</value>
<value>Sorted channels</value>
</data>
<data name="&gt;&gt;grpOutputList.Name" xml:space="preserve">
<value>grpOutputList</value>
@@ -2707,7 +2707,7 @@
<value>0</value>
</data>
<data name="grpInputList.Text" xml:space="preserve">
<value>All channels</value>
<value>Original channels</value>
</data>
<data name="&gt;&gt;grpInputList.Name" xml:space="preserve">
<value>grpInputList</value>

View File

@@ -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

View File

@@ -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

View File

@@ -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 ..