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); }
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 } }
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>()); } }
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); }
/// <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(); }; }
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>()); } }
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)); }
/// <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>(); }
/// <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>(); }
/// <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>(); }
/// <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>(); }
/// <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>(); }