Пример #1
0
        public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state)
        {
            _favoritesService.FavoritesChanged += FavoritesChanged;

            //todo: change this from nuking/rebuilding every time to add/remove what's changed
            GroupedFavoritePlaces.Clear();
            MappableFavoritePlaces.Clear();
            GroupedFavoriteRoutes.Clear();
            MappableFavoriteRoutes.Clear();

            var favorites = await _favoritesService.GetFavoritesAsync();

            foreach (IPlace place in favorites.OfType <IPlace>())
            {
                AddFavoritePlace((IFavorite)place);
            }

            foreach (FavoriteRoute route in favorites.OfType <FavoriteRoute>())
            {
                AddFavoriteRoute(route);
            }


            await Task.CompletedTask;
        }
Пример #2
0
        private void RemoveFavoriteRoute(IFavorite route)
        {
            GroupedFavoriteRoutes.Remove(route);

            var            faveRoute = (FavoriteRoute)route;
            ColoredMapLine toRemove  = MappableFavoriteRoutes
                                       .FirstOrDefault(x => x.OptionalId == faveRoute.Id);

            MappableFavoriteRoutes.Remove(toRemove);

            RaisePropertyChanged(nameof(IsFavoritesEmpty));
        }
Пример #3
0
        private void AddFavoriteRoute(IFavorite route)
        {
            GroupedFavoriteRoutes.AddSorted(route);

            var faveRoute = (FavoriteRoute)route;

            IEnumerable <ColoredMapLinePoint> mapPoints = faveRoute.RouteGeometryStrings
                                                          .SelectMany(str => GooglePolineDecoder.Decode(str))
                                                          .Select(coords => new ColoredMapLinePoint(coords, HslColors.GetModeColor(ApiMode.Bus)));
            var mapLine = new ColoredMapLine(mapPoints, faveRoute.Id);

            mapLine.OptionalId = faveRoute.Id;
            MappableFavoriteRoutes.Add(mapLine);

            RaisePropertyChanged(nameof(IsFavoritesEmpty));
        }
Пример #4
0
        private void FavoritesChanged(object sender, FavoritesChangedEventArgs args)
        {
            if (args.AddedFavorites?.Count > 0)
            {
                foreach (var favePlace in args.AddedFavorites.OfType <FavoritePlace>())
                {
                    AddFavoritePlace(favePlace);
                }
                foreach (var faveRoute in args.AddedFavorites.OfType <FavoriteRoute>())
                {
                    AddFavoriteRoute(faveRoute);
                }
            }

            if (args.RemovedFavorites?.Count > 0)
            {
                foreach (var deletedFave in args.RemovedFavorites.OfType <FavoritePlace>())
                {
                    RemoveFavoritePlace(deletedFave);
                }
                foreach (var deletedRoute in args.RemovedFavorites.OfType <FavoriteRoute>())
                {
                    RemoveFavoriteRoute(deletedRoute);
                }
            }
            if (args.EditedFavorites?.Count > 0)
            {
                foreach (var editedFave in args.EditedFavorites)
                {
                    var toEdit = GroupedFavoritePlaces.FirstOrDefault(x => x.Id == editedFave.Id);
                    if (toEdit != null)
                    {
                        RemoveFavoritePlace(toEdit);
                        AddFavoritePlace(editedFave);
                    }

                    toEdit = GroupedFavoriteRoutes.FirstOrDefault(x => x.Id == editedFave.Id);
                    if (toEdit != null)
                    {
                        RemoveFavoriteRoute(toEdit);
                        AddFavoriteRoute(editedFave);
                    }
                }
            }
        }