示例#1
0
        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;
            }
        }
示例#2
0
 public void QueueAction(UndoAction action)
 {
     undo.Push(action);
     redo.Clear();
     OnStateChanged();
 }