public async Task OnPodcastTapped(PodcastSummaryViewModel podcast, Point position) { if (m_ShowingPopUp == true) { return; } m_ShowingPopUp = true; try { PopupMenu popupMenu = new PopupMenu(); // this is useful for debugging //popupMenu.Commands.Add(new UICommand(){Id=1, Label="Copy RSS feed URL to clipboard"}); if (Data.IsPodcastInFavorites(podcast.Data)) { popupMenu.Commands.Add(new UICommand() { Id = 2, Label = "Remove from favorites" }); } else { popupMenu.Commands.Add(new UICommand() { Id = 3, Label = "Add to favorites" }); } IUICommand selectedCommand = await popupMenu.ShowAsync(position); if (selectedCommand == null) { return; } switch ((int)selectedCommand.Id) { case 1: // Copy RSS feed to clipboard DataPackage dataPackage = new DataPackage(); dataPackage.SetText(podcast.Data.PodcastUri); Clipboard.SetContent(dataPackage); break; case 2: // Remove from favorites Task t = Data.RemoveFromFavorites(podcast.Data); m_View.NavigationHelper.GoBack(); break; case 3: // Add to favorites // Don't wait for this - It will leave the m_ShowingPopUp open await UIThread.RunInBackground(() => Data.AddToFavorites(podcast.Data)); podcast.DownloadEpisodes(); break; } } finally { m_ShowingPopUp = false; } }
public async Task OnPodcastTapped(PodcastSummaryViewModel selectedPodcast, Point position) { if (m_ShowingPopUp == true) { return; } m_ShowingPopUp = true; try { PopupMenu popupMenu = new PopupMenu(); // this is useful for debugging //popupMenu.Commands.Add(new UICommand(){Id=1, Label="Copy RSS feed URL to clipboard"}); if (m_PodcastDataSource.IsPodcastInFavorites(selectedPodcast.Data)) { popupMenu.Commands.Add(new UICommand() { Id = 2, Label = "Remove from favorites" }); } else { popupMenu.Commands.Add(new UICommand() { Id = 3, Label = "Add to favorites" }); } IUICommand selectedCommand = await popupMenu.ShowAsync(position); if (selectedCommand == null) { return; } switch ((int)selectedCommand.Id) { case 2: // Remove from favorites await m_PodcastDataSource.RemoveFromFavorites(selectedPodcast.Data); //NavigationHelper.GoBack(); break; case 3: // Add to favorites await m_PodcastDataSource.AddToFavorites(selectedPodcast.Data); break; } } finally { m_ShowingPopUp = false; } }