private void UndoAction(UndoAction action) { Card card; switch (action.Action) { case UndoActionType.AddedCard: action.Data2 = file.RemoveCardAt((int)action.Data1); break; case UndoActionType.ChangedCardIndex: card = action.Data1 as Card; card.Index = action.SwapData2(card.Index) as string; file.BringUpCard(card); break; case UndoActionType.ChangedCardContents: card = action.Data1 as Card; card.Contents = action.SwapData2(card.Contents) as string; file.BringUpCard(card); break; case UndoActionType.ChangedCardAttachment: card = action.Data1 as Card; card.Attachment = action.SwapData2(card.Attachment) as AttachmentFile; file.BringUpCardAttachment(card); break; case UndoActionType.RemovedCard: file.InsertCardAt((int)action.Data1, action.Data2 as Card); break; case UndoActionType.CardReset: card = action.Data1 as Card; card.Index = action.SwapData2(card.Index) as string; card.Contents = action.SwapData3(card.Contents) as string; card.Attachment = action.SwapData4(card.Index) as AttachmentFile; break; } }
public void QueueAction(UndoAction action) { undo.Push(action); redo.Clear(); OnStateChanged(); }