Exemple #1
0
        private DemoCollection(
            ReadOnlyCollection <T> sourceItems,
            ObservableCollectionPlus <T> activeItems,
            int minCount,
            int maxCount,
            int initialCount)
            : base(activeItems)
        {
            Contract.Requires(activeItems != null);
            Contract.Requires(sourceItems != null);
            Contract.Requires(sourceItems.Count > 0);

            m_minCount     = minCount;
            m_maxCount     = maxCount;
            m_initialCount = initialCount;

            m_activeItems = activeItems;
            m_sourceItems = sourceItems;

            m_addCommand    = new DelegateCommand(Add, () => canAddOrInsert);
            m_insertCommand = new DelegateCommand(Insert, () => canAddOrInsert);
            m_removeCommand = new DelegateCommand(Remove, () => canRemove);
            m_moveCommand   = new DelegateCommand(Move, () => canMove);
            m_changeCommand = new DelegateCommand(Change, () => canChange);
            m_resetCommand  = new DelegateCommand(Reset);

            activeItems.CollectionChanged += (sender, e) =>
            {
                m_removeCommand.RaiseCanExecuteChanged();
                m_addCommand.RaiseCanExecuteChanged();
                m_moveCommand.RaiseCanExecuteChanged();
                m_changeCommand.RaiseCanExecuteChanged();
                m_insertCommand.RaiseCanExecuteChanged();
            };
        }
        public override Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state)
        {
            if (state.Any())
            {
                PokemonFoundAndSeen = (ObservableCollection <PokemonId>)state[nameof(PokemonFoundAndSeen)];
                SeenPokemons        = (int)state[nameof(SeenPokemons)];
                CapturedPokemons    = (int)state[nameof(CapturedPokemons)];
            }
            else
            {
                ObservableCollectionPlus <PokedexEntry> pokedexItems = GameClient.PokedexInventory;
                int lastPokemonIdSeen = pokedexItems == null || pokedexItems.Count == 0 ? 0 : pokedexItems.Max(x => (int)x.PokemonId);
                if (lastPokemonIdSeen > 0)
                {
                    var listAllPokemon = Enum.GetValues(typeof(PokemonId)).Cast <PokemonId>();
                    foreach (var item in listAllPokemon)
                    {
                        if ((int)item > lastPokemonIdSeen)
                        {
                            break;
                        }

                        switch (item)
                        {
                        case PokemonId.Missingno:
                        {
                            break;
                        }

                        default:
                        {
                            var pokedexEntry = pokedexItems.Where(x => x.PokemonId == item);
                            PokemonFoundAndSeen.Add(item);
                            break;
                        }
                        }
                    }

                    CapturedPokemons = pokedexItems.Count(x => x.TimesCaptured > 0);
                    SeenPokemons     = pokedexItems.Count;
                }
                else
                {
                    CapturedPokemons = 0;
                    SeenPokemons     = 0;
                }
            }

            if (parameter is PokemonId)
            {
                HockeyClient.Current.TrackPageView("PokedexDetailPage");
                NavigationService.Navigate(typeof(PokedexDetailPage), (PokemonId)parameter);
            }

            NavigationService.FrameFacade.BackRequested += FrameFacade_BackRequested;
            return(Task.CompletedTask);
        }
Exemple #3
0
    public static void Synchronize <TSource, TTarget>(this ObservableCollectionPlus <TTarget> targetCollection, IList <TSource> sourceCollection, Func <TSource, TTarget, bool> matcher, Func <TSource, TTarget> mapper) where TSource : IEquatable <TSource>
    {
        Contract.Requires(targetCollection != null);
        Contract.Requires(mapper != null);
        Contract.Requires(sourceCollection != null);
        Contract.Requires(sourceCollection.AllUnique());

        using (targetCollection.BeginMultiUpdate())
        {
            // move wrappers around to the right places
            // or create a new one
            for (int i = 0; i < sourceCollection.Count; i++)
            {
                var sourceItem  = sourceCollection[i];
                var targetIndex = targetCollection.IndexOf(targetItem => matcher(sourceItem, targetItem));
                if (targetIndex >= 0)
                {
                    if (targetIndex != i)
                    {
                        Debug.Assert(targetIndex > i, "this would only happen if we have duplicates...which we should never have!");
                        targetCollection.Move(targetIndex, i);
                    }
                    else
                    {
                        // NOOP - already in the right spot! :-)
                    }
                }
                else
                {
                    var newItem = mapper(sourceItem);
                    Debug.Assert(matcher(sourceItem, newItem));
                    targetCollection.Insert(i, newItem);
                }
            }

            // Remove anything left
            while (targetCollection.Count > sourceCollection.Count)
            {
                targetCollection.RemoveLast();
            }

            Debug.Assert(sourceCollection.Count == targetCollection.Count);
#if DEBUG
            for (int i = 0; i < sourceCollection.Count; i++)
            {
                Debug.Assert(matcher(sourceCollection[i], targetCollection[i]));
            }
#endif
        }
    }
Exemple #4
0
        public NodeCollection(IList <T> nodes)
        {
            Contract.Requires <ArgumentNullException>(nodes != null);
            Contract.Requires(Contract.ForAll(nodes, item => item != null));
            Contract.Requires(nodes.AllUnique(), "All of the nodes must be unique.");

            m_nodeValues = new ObservableCollectionPlus <T>(nodes);

            m_nodes           = new Dictionary <T, Node <T> >();
            m_nodeConnections = new Dictionary <T, HashSet <T> >();

            foreach (var node in m_nodeValues)
            {
                m_nodeConnections.Add(node, new HashSet <T>());
            }
        }
Exemple #5
0
        public TaskListViewModel(TaskData taskList, Func <Task, bool> filter)
        {
            Util.RequireNotNull(taskList, "taskList");
            m_taskList = taskList;
            ((INotifyCollectionChanged)m_taskList.Tasks).CollectionChanged += (sender, args) => RefreshFilter();

            Util.RequireNotNull(filter, "filter");
            m_filter = filter;

            m_unfilteredTaskList = new ObservableCollectionPlus <TaskViewModel>();
            m_taskList.Tasks.ForEach(t => m_unfilteredTaskList.Add(new TaskViewModel(t)));

            // Tasks
            m_newTaskCommand       = new CommandWrapper(ShowNewTask, () => m_newTask == null);
            m_cancelNewTaskCommand = new CommandWrapper(() => CancelNewTask(), () => m_newTask != null);
            m_deleteTaskCommand    = new CommandWrapper <Task>(task => DeleteTask(task), task => true);
        }
        public TaskListViewModel(TaskData taskList, Func<Task, bool> filter)
        {
            Contract.Requires(null != taskList, "taskList");
            m_taskList = taskList;
            ((INotifyCollectionChanged)m_taskList.Tasks).CollectionChanged += (sender, args) => RefreshFilter();

            Contract.Requires(null != filter, "filter");
            m_filter = filter;

            m_unfilteredTaskList = new ObservableCollectionPlus<TaskViewModel>();
            m_taskList.Tasks.ForEach(t => m_unfilteredTaskList.Add(new TaskViewModel(t)));

            // Tasks
            m_newTaskCommand = new DelegateCommand(ShowNewTask, () => m_newTask == null);
            m_cancelNewTaskCommand = new DelegateCommand(() => CancelNewTask(), () => m_newTask != null);
            m_deleteTaskCommand = new DelegateCommand<Task>(task => DeleteTask(task), task => true);
        }
Exemple #7
0
        /// <summary>
        /// Creates a new instance of the <see cref="PokedexService"/>.
        /// </summary>
        /// <param name="apiClient">The <see cref="IPokemonGoApiClient"/> instance to use for any Pokemon Go API requests.</param>

        public LocationService(IPokemonGoApiClient apiClient) : base(apiClient)
        {
            CatchablePokemon = new ObservableCollectionPlus <PokemonData>();
            NearbyPokemon    = new ObservableCollectionPlus <PokemonData>();
            NearbyPokestops  = new ObservableCollectionPlus <PokemonData>();
            _geolocator      = new Geolocator
            {
                DesiredAccuracy         = PositionAccuracy.High,
                DesiredAccuracyInMeters = 5,
                ReportInterval          = 1000,
                MovementThreshold       = 5
            };
            // @robertmclaws to do: Should we break this out into a separate function so it can be unregistered?
            _geolocator.PositionChanged += async(Geolocator sender, PositionChangedEventArgs args) =>
            {
                CurrentPosition = await sender.GetGeopositionAsync();
            };
        }
Exemple #8
0
        public NodeCollection(IEnumerable <T> nodes)
        {
            Contract.Requires <ArgumentNullException>(nodes != null);
            Contract.Requires(Contract.ForAll(nodes, item => item != null));

            m_nodeValues = new ObservableCollectionPlus <T>(nodes);
            if (!m_nodeValues.AllUnique())
            {
                throw new ArgumentException();
            }

            m_nodes           = new Dictionary <T, Node <T> >();
            m_nodeConnections = new Dictionary <T, HashSet <T> >();

            foreach (var node in m_nodeValues)
            {
                m_nodeConnections.Add(node, new HashSet <T>());
            }
        }
Exemple #9
0
        public static DemoCollection <T> Create(IList <T> source, int initialCount, int minCount, int maxCount)
        {
            Contract.Requires(source != null);
            Contract.Requires(source.Count > 0);
            Contract.Requires(initialCount >= 0);
            Contract.Requires(minCount >= 0);
            Contract.Requires(minCount <= initialCount);
            Contract.Requires(initialCount <= maxCount);

            var sourceItems = source.ToReadOnlyCollection();

            var observableCollection = new ObservableCollectionPlus <T>();

            for (int i = 0; i < initialCount; i++)
            {
                observableCollection.Add(sourceItems[i % sourceItems.Count]);
            }

            return(new DemoCollection <T>(sourceItems, observableCollection, minCount, maxCount, initialCount));
        }
Exemple #10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="apiClient"></param>
 public EncounterService(IPokemonGoApiClient apiClient) : base(apiClient)
 {
     _usableItems = new ObservableCollectionPlus <ItemData>();
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="apiClient"></param>
 public EvolutionService(IPokemonGoApiClient apiClient) : base(apiClient)
 {
     PokemonCandies = new ObservableCollectionPlus <Candy>();
 }
Exemple #12
0
        /// <summary>
        /// Creates a new instance of the <see cref="PokedexService"/>.
        /// </summary>
        /// <param name="apiClient">The <see cref="IPokemonGoApiClient"/> instance to use for any Pokemon Go API requests.</param>

        public HatcheryService(IPokemonGoApiClient apiClient) : base(apiClient)
        {
            Eggs           = new ObservableCollectionPlus <PokemonData>();
            IncubatorsFree = new ObservableCollectionPlus <EggIncubator>();
            IncubatorsUsed = new ObservableCollectionPlus <EggIncubator>();
        }
Exemple #13
0
        /// <summary>
        /// Creates a new instance of the <see cref="PokedexService"/>.
        /// </summary>
        /// <param name="apiClient">The <see cref="IPokemonGoApiClient"/> instance to use for any Pokemon Go API requests.</param>

        public PokedexService(IPokemonGoApiClient apiClient) : base(apiClient)
        {
            PokedexInventory = new ObservableCollectionPlus <PokemonData>();
            PokemonInventory = new ObservableCollectionPlus <PokemonData>();
        }
Exemple #14
0
        /// <summary>
        /// Creates a new instance of the <see cref="PokedexService"/>.
        /// </summary>
        /// <param name="apiClient">The <see cref="IPokemonGoApiClient"/> instance to use for any Pokemon Go API requests.</param>

        public LocationService(IPokemonGoApiClient apiClient) : base(apiClient)
        {
            CatchablePokemon = new ObservableCollectionPlus <PokemonData>();
            NearbyPokemon    = new ObservableCollectionPlus <PokemonData>();
            NearbyPokestops  = new ObservableCollectionPlus <PokemonData>();
        }
Exemple #15
0
        /// <summary>
        /// Creates a new instance of the <see cref="PokedexService"/>.
        /// </summary>
        /// <param name="apiClient">The <see cref="IPokemonGoApiClient"/> instance to use for any Pokemon Go API requests.</param>

        public PokestopService(IPokemonGoApiClient apiClient) : base(apiClient)
        {
            LuredPokemon = new ObservableCollectionPlus <PokemonData>();
        }