示例#1
0
        public void MoveChannels(IList <ChannelInfo> channels, bool up)
        {
            if (channels.Count == 0)
            {
                return;
            }
            if (up && channels[0].GetPosition(this.SubListIndex) <= this.ChannelList.FirstProgramNumber)
            {
                return;
            }

            int delta = (up ? -1 : +1);

            foreach (var channel in (up ? channels : channels.Reverse()))
            {
                int         newProgramNr    = channel.GetPosition(this.SubListIndex) + delta;
                ChannelInfo channelAtNewPos =
                    this.ChannelList.Channels.FirstOrDefault(ch => ch.GetPosition(this.SubListIndex) == newProgramNr);
                if (channelAtNewPos != null)
                {
                    channelAtNewPos.ChangePosition(this.SubListIndex, -delta);
                }
                channel.ChangePosition(this.SubListIndex, delta);
            }
            this.DataRoot.NeedsSaving = true;
        }