Exemplo n.º 1
0
        private async void CreateAndFillGrid(Grid grid, int moviegenre)
        {
            // First we need to get the movies the user liked
            var userMovies = await ReaderWriter.GetUserMovies(email);

            var movieQueue = FillTheQueueWithMovies(userMovies);

            UserMovies = movieQueue.ToList();
            movieQueue = new Queue <Movie>(movieQueue.Where(x => x.ImagePath != null).OrderBy(x => Guid.NewGuid()));

            if (moviegenre != 0)
            {
                if (movieQueue.Any(x => x.Genre_Ids.Contains(moviegenre)))
                {
                    movieQueue = new Queue <Movie>(movieQueue.Where(x => x.Genre_Ids.Contains(moviegenre)));
                }
            }

            var fixedMovieQueueCount = movieQueue.Count;

            for (int i = 0; i < fixedMovieQueueCount / 2 + fixedMovieQueueCount % 2; i++)
            {
                grid.RowDefinitions.Add(new RowDefinition {
                    Height = 260
                });

                for (int j = 0; j < 2; j++)
                {
                    if (movieQueue.Count < 1)
                    {
                        return;
                    }
                    var   currentMovie = movieQueue.Dequeue();
                    Frame frame        = new Frame
                    {
                        BorderColor = Color.Black,
                        HasShadow   = true,
                        Padding     = 0,
                        Margin      = 0,
                        Content     = new Image
                        {
                            Source = "https://image.tmdb.org/t/p/w500" + currentMovie.ImagePath,
                            Aspect = Aspect.AspectFill
                        }
                    };
                    var eventOnTap = new TapGestureRecognizer();
                    eventOnTap.Tapped += (s, e) =>
                    {
                        DisplayAlert(currentMovie.Name + " (" + currentMovie.ReleaseDate.Substring(0, 4) + ")", currentMovie.Overview, "Close");
                    };
                    frame.GestureRecognizers.Add(eventOnTap);

                    grid.Children.Add(frame, j, i); //row, column
                }
            }
        }