public MemorizationPageViewModel(IDeck deck, ITimeTracker timeTracker, ICardAssociationRepository repo)
     : this()
 {
     _timeTracker = timeTracker;
     _deck        = deck;
     _cardAssociationRepository = repo;
 }
示例#2
0
        static void SetupMemorizationPageViewModel(Connection connection, ICardAssociationRepository cardAssociationRepository)
        {
            MemorizationPageViewModel memorizationPageViewModel = null;

            connection.OnAsync <dynamic>("memorization.start", async options =>
            {
                memorizationPageViewModel = new MemorizationPageViewModel();
                memorizationPageViewModel.CardAssocationRepository = cardAssociationRepository;
                await memorizationPageViewModel.LoadCardAssociationsAsync();
                memorizationPageViewModel.InitDeck(
                    (bool)options.IncludeSpades,
                    (bool)options.IncludeDiamonds,
                    (bool)options.IncludeClubs,
                    (bool)options.IncludeHearts);


                //send initial value for properties in view model:
                connection.Send("memorization.currentCard", memorizationPageViewModel.CurrentCard);
                connection.Send("memorization.cardAssociation", memorizationPageViewModel.CardAssociation);
                connection.Send("memorization.isCurrentCardVisible", memorizationPageViewModel.IsCurrentCardVisible);
                connection.Send("memorization.isCardAssociationVisible", memorizationPageViewModel.IsCardAssociationVisible);
                connection.Send("memorization.isLastCard", memorizationPageViewModel.IsLastCard);
                connection.Send("memorization.cardsNotSeenCount", memorizationPageViewModel.CardsNotSeenCount);
                connection.Send("memorization.cardsSeen", memorizationPageViewModel.CardsSeen);

                memorizationPageViewModel.PropertyChanged += (_, propertyChangedEventArgs) =>
                {
                    switch (propertyChangedEventArgs.PropertyName)
                    {
                    case "CurrentCard":
                        connection.Send("memorization.currentCard", memorizationPageViewModel.CurrentCard);
                        break;

                    case "CardAssociation":
                        connection.Send("memorization.cardAssociation", memorizationPageViewModel.CardAssociation);
                        break;

                    case "IsCardAssociationVisible":
                        connection.Send("memorization.isCardAssociationVisible", memorizationPageViewModel.IsCardAssociationVisible);
                        break;

                    case "IsCurrentCardVisible":
                        connection.Send("memorization.isCurrentCardVisible", memorizationPageViewModel.IsCurrentCardVisible);
                        break;

                    case "IsLastCard":
                        connection.Send("memorization.isLastCard", memorizationPageViewModel.IsLastCard);
                        break;

                    case "CardsNotSeenCount":
                        connection.Send("memorization.cardsNotSeenCount", memorizationPageViewModel.CardsNotSeenCount);
                        break;

                    default:
                        Console.Error.WriteLine("Unhandled propertychange event: " + propertyChangedEventArgs.PropertyName);
                        break;
                    }
                };

                memorizationPageViewModel.MemorizationCompleted += (IEnumerable <PlayingCard> cardsMemorized, TimeSpan memorizationTime) =>
                {
                    connection.Send("memorization.complete", new
                    {
                        CardsMemorized   = cardsMemorized,
                        MemorizationTime = memorizationTime
                    });
                };

                memorizationPageViewModel.CardsSeen.CollectionChanged += (e, args) =>
                {
                    connection.Send("memorization.cardsSeen", memorizationPageViewModel.CardsSeen);
                };
            });

            connection.On("memorization.ellapsedTime", () =>
            {
                return(memorizationPageViewModel.EllapsedTime);
            });

            connection.On("memorization.turnCard", () =>
            {
                if (memorizationPageViewModel.TurnCardCommand.CanExecute(null))
                {
                    memorizationPageViewModel.TurnCardCommand.Execute(null);
                    return(true);
                }
                return(false);
            });

            connection.On("memorization.stop", () =>
            {
                if (memorizationPageViewModel.StopCommand.CanExecute(null))
                {
                    memorizationPageViewModel.StopCommand.Execute(null);
                    return(true);
                }
                return(false);
            });

            connection.On("memorization.toggleIsCardAssociationVisible", () =>
            {
                memorizationPageViewModel.IsCardAssociationVisible = !memorizationPageViewModel.IsCardAssociationVisible;
            });
        }