public override void Undo() { foreach (var item in Positions) { TargetList.Insert(item.Key, item.Value); } }
public override void Do() { if (InsertIndex.Equals(-1)) { foreach (var lyric in Items) { if (!IsReverseAdd) { TargetList.Add(lyric); } else { TargetList.Insert(0, lyric); } } return; } foreach (var lyric in Items) { if (!IsReverseAdd) { TargetList.Insert(InsertIndex + 1, lyric); } else { TargetList.Insert(InsertIndex, lyric); } } }
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); } }
public override void Undo() { foreach (var item in Positions.Where(d => _changedList.Contains(d.Value))) { TargetList.Remove(item.Value); TargetList.Insert(item.Key, item.Value); } }
public override void Do() { int insertId = _insertId + 1; if (_isDoed) { foreach (var lyric in _addItems) { TargetList.Insert(insertId++, lyric); } } else { foreach (var lyric in Positions.Values.OrderBy(l => l).ToList()) { var time = _isBig ? lyric.Time - _interpolation : lyric.Time + _interpolation; var addItem = new Lyric(time, lyric.Content); _addItems.Add(addItem); TargetList.Insert(insertId++, addItem); } } _isDoed = true; }