Exemplo n.º 1
0
        private void ItemSort(Lyric sourceLyric)
        {
            int  id     = TargetList.IndexOf(sourceLyric);
            bool isMove = false;

            for (int i = id; i > 0; i--)
            {
                Lyric beforeLyric  = TargetList[i - 1];
                Lyric currentLyric = TargetList[i];

                if (currentLyric != sourceLyric)
                {
                    break;
                }

                if (currentLyric.CompareTo(beforeLyric) < 0)
                {
                    TargetList.Insert(i + 1, beforeLyric);
                    TargetList.Remove(beforeLyric);

                    isMove = true;
                }
            }

            if (!_isInvoked && isMove && !_changedList.Contains(sourceLyric))
            {
                _changedList.Add(sourceLyric);
            }
        }
        protected LyricsChangeOperationBase(IEnumerable <Lyric> items, IList <Lyric> targetList) : base(targetList)
        {
            Items     = items.ToList();
            Positions = new Dictionary <int, Lyric>();

            foreach (Lyric lyric in Items.ToList())
            {
                Positions.Add(TargetList.IndexOf(lyric), lyric);
            }
        }