private string ChanSortCriteria(ChannelInfo channel, UnsortedChannelMode mode) { // explicitly sorted var pos = channel.NewProgramNr; if (pos != -1) { return(pos.ToString("d5")); } // eventually hide unsorted channels if (mode == UnsortedChannelMode.Delete) { return("Z" + channel.RecordIndex.ToString("d5")); } // eventually append in old order if (mode == UnsortedChannelMode.AppendInOrder) { return("B" + channel.OldProgramNr.ToString("d5")); } // sort alphabetically, with "." and "" on the bottom if (channel.Name == ".") { return("B"); } if (channel.Name == "") { return("C"); } return("A" + channel.Name); }
public void AutoNumberingForUnassignedChannels(UnsortedChannelMode mode) { this.unsortedChannelMode = mode; foreach (var list in DataRoot.ChannelLists) { var sortedChannels = list.Channels.OrderBy(ChanSortCriteria).ToList(); int maxProgNr = 0; foreach (var appChannel in sortedChannels) { if (appChannel.RecordIndex < 0) { 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; } } }
public void AssignNumbersToUnsortedAndDeletedChannels(UnsortedChannelMode mode) { foreach (var list in ChannelLists) { if (list.IsMixedSourceFavoritesList) { continue; } // sort the channels by assigned numbers, then unassigned by original order or alphabetically, then deleted channels var sortedChannels = list.Channels.OrderBy(ch => ChanSortCriteria(ch, mode)); int maxProgNr = 0; foreach (var appChannel in sortedChannels) { if (appChannel.IsProxy) { continue; } if (appChannel.NewProgramNr == -1) { if (mode == UnsortedChannelMode.Delete) { appChannel.IsDeleted = true; } else // append (hidden if possible) { appChannel.Hidden = true; appChannel.Skip = true; } // assign a valid number or 0 .... because -1 will never be a valid value for the TV appChannel.NewProgramNr = mode != UnsortedChannelMode.Delete || DeletedChannelsNeedNumbers ? ++maxProgNr : 0; } else { appChannel.IsDeleted = false; if (appChannel.NewProgramNr > maxProgNr) { maxProgNr = appChannel.NewProgramNr; } } } } }
public void AutoNumberingForUnassignedChannels(UnsortedChannelMode mode) { this.unsortedChannelMode = mode; foreach (var list in DataRoot.ChannelLists) { var sortedChannels = list.Channels.OrderBy(ChanSortCriteria).ToList(); int maxProgNr = 0; foreach (var appChannel in sortedChannels) { if (appChannel.RecordIndex < 0) 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; } } }