private void AddTapGestures()
        {
            // for nav bar
            // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            var tapGestureRecognizer1 = new TapGestureRecognizer();

            tapGestureRecognizer1.Tapped += async(s, e) => {
                await Navigation.PushAsync(new GreetingPage());
            };
            AboutMeButton.GestureRecognizers.Add(tapGestureRecognizer1);

            var tapGestureRecognizer2 = new TapGestureRecognizer();

            tapGestureRecognizer2.Tapped += async(s, e) => {
                await Navigation.PushAsync(new ListViewPage());
            };
            ListViewButton.GestureRecognizers.Add(tapGestureRecognizer2);

            var tapGestureRecognizer3 = new TapGestureRecognizer();

            tapGestureRecognizer3.Tapped += async(s, e) => {
                if (App.User.photoURIs.Count < 1)
                {
                    await GooglePhotoService.GetPhotos();
                }
                await Navigation.PushAsync(new MonthlyViewPage());
            };
            MyPhotosButton.GestureRecognizers.Add(tapGestureRecognizer3);
            // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        }
        private void AddTapGestures()
        {
            var tapGestureRecognizer1 = new TapGestureRecognizer();

            tapGestureRecognizer1.Tapped += async(s, e) => {
                ReloadImage.GestureRecognizers.RemoveAt(0);
                ReloadImage.Source = "redoGray.png";
                await RefreshPage();

                ReloadImage.Source = "redo.png";
                ReloadImage.GestureRecognizers.Add(tapGestureRecognizer1);
            };
            ReloadImage.GestureRecognizers.Add(tapGestureRecognizer1);

            var tapGestureRecognizer2 = new TapGestureRecognizer();

            tapGestureRecognizer2.Tapped += async(s, e) => {
                await Navigation.PushAsync(new GreetingPage());
            };
            AboutMeButton.GestureRecognizers.Add(tapGestureRecognizer2);

            var tapGestureRecognizer3 = new TapGestureRecognizer();

            tapGestureRecognizer3.Tapped += async(s, e) => {
                if (App.User.photoURIs.Count < 1)
                {
                    await GooglePhotoService.GetPhotos();
                }
                await Navigation.PushAsync(new MonthlyViewPage());
            };
            MyPhotosButton.GestureRecognizers.Add(tapGestureRecognizer3);

            var tapGestureRecognizer4 = new TapGestureRecognizer();

            tapGestureRecognizer4.Tapped += async(s, e) => {
                await Navigation.PushAsync(new GoalsRoutinesTemplate());
            };
            MyDayButton.GestureRecognizers.Add(tapGestureRecognizer4);
        }
        private async void SetupUI()
        {
            Grid   controlGrid  = new Grid();
            int    rowLength    = 3;
            double gridItemSize = (Application.Current.MainPage.Width / rowLength) - (1.2 * rowLength);

            controlGrid.RowDefinitions.Add(new RowDefinition {
                Height = gridItemSize
            });
            for (int i = 0; i < rowLength; i++)
            {
                controlGrid.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = gridItemSize
                });
            }
            var photoCount = 0;

            try
            {
                foreach (List <string> list in App.User.photoURIs)
                {
                    string photoURI     = list[0];
                    string date         = list[1];
                    string description  = list[2];
                    string creationTime = list[3];
                    string id           = list[4];
                    string note         = list[5];

                    CachedImage webImage = new CachedImage
                    {
                        Source          = Xamarin.Forms.ImageSource.FromUri(new Uri(photoURI)),
                        Transformations = new List <ITransformation>()
                        {
                            new CropTransformation(),
                        },
                    };

                    var tapGestureRecognizer = new TapGestureRecognizer();
                    tapGestureRecognizer.Tapped += async(s, e) => {
                        await Navigation.PushAsync(new PhotoDisplayPage(webImage, date, description, id, creationTime, note));
                    };
                    webImage.GestureRecognizers.Add(tapGestureRecognizer);
                    var indicator = new ActivityIndicator
                    {
                        Color         = Color.Gray,
                        WidthRequest  = gridItemSize,
                        HeightRequest = gridItemSize,
                    };
                    indicator.SetBinding(ActivityIndicator.IsRunningProperty, "IsLoading");
                    indicator.BindingContext = webImage;

                    controlGrid.Children.Add(indicator, photoCount % rowLength, photoCount / rowLength);
                    controlGrid.Children.Add(webImage, photoCount % rowLength, photoCount / rowLength);
                    photoCount++;
                }
            }
            catch (NullReferenceException e)
            {
                var googleService = new GoogleService();
                if (await googleService.RefreshToken())
                {
                    Console.WriteLine("RefreshToken Done!");
                    App.User.photoURIs = await GooglePhotoService.GetPhotos();
                }
            }

            //update calendar
            DateTime localDate    = DateTime.Now;
            Calendar myCal        = CultureInfo.InvariantCulture.Calendar;
            var      currentYear  = myCal.GetYear(localDate);
            var      currentMonth = myCal.GetMonth(localDate);
            var      currentDay   = myCal.GetDayOfWeek(localDate);

            Year           = currentYear;
            Month          = currentMonth;
            yearLabel.Text = Year + "";
            setMonthLabel(Month);
            SetCalendar(currentYear, currentMonth);

            //add navigation bar
            photoScrollView.HeightRequest = Application.Current.MainPage.Height - CalendarContent.Height - NavBar.Height;

            if (App.User.photoURIs != null)
            {
                photoScrollView.Content = controlGrid;
            }
            else
            {
                Label noPhotosLabel = new Label()
                {
                    Text              = "No photos to Show",
                    VerticalOptions   = LayoutOptions.CenterAndExpand,
                    HorizontalOptions = LayoutOptions.CenterAndExpand,
                    TextColor         = Color.DimGray
                };
                photoScrollView.Content = noPhotosLabel;
            }
            AddTapGestures();
        }