mirror of
https://github.com/PredatH0r/ChanSort.git
synced 2026-09-02 04:16:06 +02:00
reference list management redesigned
This commit is contained in:
@@ -43,9 +43,8 @@ namespace ChanSort.Loader.TllFile
|
||||
protected void InitCommonData(int slot, SignalSource signalSource, DataMapping data)
|
||||
{
|
||||
this.RecordIndex = slot;
|
||||
this.SignalSource = signalSource;
|
||||
var nr = data.GetWord(_ProgramNr);
|
||||
this.SignalType = this.GetSignalType(nr);
|
||||
this.SignalSource = signalSource | ((nr & 0x4000) == 0 ? SignalSource.Tv : SignalSource.Radio);
|
||||
this.OldProgramNr = (nr & 0x3FFF);
|
||||
|
||||
this.ParseNames();
|
||||
@@ -72,15 +71,6 @@ namespace ChanSort.Loader.TllFile
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetSignalType()
|
||||
protected SignalType GetSignalType(uint programNr)
|
||||
{
|
||||
if ((programNr & 0x4000) != 0)
|
||||
return SignalType.Radio;
|
||||
return SignalType.Tv;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ParseNames()
|
||||
private void ParseNames()
|
||||
{
|
||||
@@ -98,7 +88,7 @@ namespace ChanSort.Loader.TllFile
|
||||
public override void UpdateRawData()
|
||||
{
|
||||
mapping.SetDataPtr(this.rawData, this.baseOffset);
|
||||
mapping.SetWord(_ProgramNr, this.NewProgramNr + (this.SignalType == SignalType.Radio ? 0x4000 : 0));
|
||||
mapping.SetWord(_ProgramNr, this.NewProgramNr | ((this.SignalSource & SignalSource.Radio) != 0 ? 0x4000 : 0));
|
||||
mapping.SetWord(_ProgramNr2, (mapping.GetWord(_ProgramNr2) & 0x0003) | (this.NewProgramNr << 2));
|
||||
if (this.IsNameModified)
|
||||
{
|
||||
|
||||
@@ -20,10 +20,16 @@ namespace ChanSort.Loader.TllFile
|
||||
private readonly string ERR_wrongChecksum = Resource.TllFileSerializer_ERR_wrongChecksum;
|
||||
private readonly string ERR_dupeChannel = Resource.TllFileSerializer_ERR_dupeChannel;
|
||||
|
||||
private readonly Dictionary<int, DvbsDataLayout> satConfigs = new Dictionary<int, DvbsDataLayout>();
|
||||
private readonly MappingPool<DataMapping> actMappings = new MappingPool<DataMapping>("Analog and DVB-C/T");
|
||||
private readonly MappingPool<DataMapping> dvbsMappings = new MappingPool<DataMapping>("DVB-S");
|
||||
private readonly MappingPool<FirmwareData> firmwareMappings = new MappingPool<FirmwareData>("Firmware");
|
||||
private readonly Dictionary<int, DvbsDataLayout> satConfigs = new Dictionary<int, DvbsDataLayout>();
|
||||
|
||||
private readonly ChannelList atvChannels = new ChannelList(SignalSource.AnalogCT | SignalSource.Tv, "Analog TV");
|
||||
private readonly ChannelList dtvChannels = new ChannelList(SignalSource.DvbCT | SignalSource.Tv, "DTV");
|
||||
private readonly ChannelList radioChannels = new ChannelList(SignalSource.DvbCT | SignalSource.Radio, "Radio");
|
||||
private readonly ChannelList satTvChannels = new ChannelList(SignalSource.DvbS | SignalSource.Tv, "Sat-DTV");
|
||||
private readonly ChannelList satRadioChannels = new ChannelList(SignalSource.DvbS | SignalSource.Radio, "Sat-Radio");
|
||||
|
||||
private byte[] fileContent;
|
||||
|
||||
@@ -60,7 +66,6 @@ namespace ChanSort.Loader.TllFile
|
||||
#region ctor()
|
||||
public TllFileSerializer(string inputFile) : base(inputFile)
|
||||
{
|
||||
|
||||
this.Features.ChannelNameEdit = true;
|
||||
this.Features.EraseChannelData = true;
|
||||
this.Features.FileInformation = true;
|
||||
@@ -74,6 +79,12 @@ namespace ChanSort.Loader.TllFile
|
||||
};
|
||||
|
||||
this.ReadConfigurationFromIniFile();
|
||||
|
||||
this.DataRoot.AddChannelList(atvChannels);
|
||||
this.DataRoot.AddChannelList(dtvChannels);
|
||||
this.DataRoot.AddChannelList(radioChannels);
|
||||
this.DataRoot.AddChannelList(satTvChannels);
|
||||
this.DataRoot.AddChannelList(satRadioChannels);
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -235,7 +246,7 @@ namespace ChanSort.Loader.TllFile
|
||||
actMapping.SetDataPtr(fileContent, off);
|
||||
ChannelInfo ci = channelFactory(i, actMapping);
|
||||
|
||||
var list = this.DataRoot.GetChannelList(ci.SignalSource, ci.SignalType, true);
|
||||
var list = this.DataRoot.GetChannelList(ci.SignalSource);
|
||||
this.DataRoot.AddChannel(list, ci);
|
||||
|
||||
off += recordSize;
|
||||
@@ -415,7 +426,7 @@ namespace ChanSort.Loader.TllFile
|
||||
++this.deletedChannelsSoft;
|
||||
else
|
||||
{
|
||||
var list = this.DataRoot.GetChannelList(ci.SignalSource, ci.SignalType, true);
|
||||
var list = this.DataRoot.GetChannelList(ci.SignalSource);
|
||||
var dupes = list.GetChannelByUid(ci.Uid);
|
||||
if (dupes.Count == 0)
|
||||
{
|
||||
@@ -531,14 +542,9 @@ namespace ChanSort.Loader.TllFile
|
||||
#region ReorderActChannelsPhysically()
|
||||
private void ReorderActChannelsPhysically()
|
||||
{
|
||||
var analogTv = this.DataRoot.GetChannelList(SignalSource.AnalogCT, SignalType.Tv, false);
|
||||
var analogRadio = this.DataRoot.GetChannelList(SignalSource.AnalogCT, SignalType.Radio, false);
|
||||
var analog = analogTv.Channels.Union(analogRadio.Channels).ToList();
|
||||
this.ReorderChannelData(this.analogBlockOffset + 8, this.actChannelSize, this.analogChannelCount, analog);
|
||||
this.ReorderChannelData(this.analogBlockOffset + 8, this.actChannelSize, this.analogChannelCount, this.atvChannels.Channels);
|
||||
|
||||
var dvbCtTv = this.DataRoot.GetChannelList(SignalSource.DvbCT, SignalType.Tv, false);
|
||||
var dvbCtRadio = this.DataRoot.GetChannelList(SignalSource.DvbCT, SignalType.Radio, false);
|
||||
var dvbCt = dvbCtTv.Channels.Union(dvbCtRadio.Channels).ToList();
|
||||
var dvbCt = this.dtvChannels.Channels.Union(this.radioChannels.Channels).ToList();
|
||||
this.ReorderChannelData(this.dvbctBlockOffset + 8, this.actChannelSize, this.dvbctChannelCount, dvbCt);
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -63,8 +63,8 @@ from channel c inner join chanseq s on s.listid=c.listid and s.slot=c.slot
|
||||
if (this.dvbsBlockSize == 0)
|
||||
return;
|
||||
|
||||
var list = this.DataRoot.GetChannelList(SignalSource.DvbS, SignalType.Tv, false);
|
||||
if (list == null)
|
||||
var list = this.DataRoot.GetChannelList(SignalSource.DvbS|SignalSource.Tv);
|
||||
if (list == null || list.Count == 0)
|
||||
return;
|
||||
|
||||
using (var conn = SqlClientFactory.Instance.CreateConnection())
|
||||
|
||||
Reference in New Issue
Block a user