void HandleShowMenuEvent(BookshelfBookView bookView, bool isFavorite)
        {
            PopoverMenuController pmc = new PopoverMenuController(bookView, isFavorite);

            if (bookView.BookshelfBook.Status == Book.BookStatus.DOWNLOADED)
            {
                pmc.View.Frame = new CGRect(0, 0, bookView.Frame.Width, 88);
            }
            else
            {
                pmc.View.Frame = new CGRect(0, 0, bookView.Frame.Width, 44);
            }

            pmc.FavoriteEvent += delegate
            {
                HideMenuPopover();

                dataSource.UpdateFavorite(bookView.BookshelfBook.ID, !isFavorite);

                if (this.Title != StringRef.myBooks)
                {
                    UpdateCollectionView(bookView);
                }
            };
            pmc.RemoveBookEvent += delegate
            {
                HideMenuPopover();

                UIAlertView alert = new UIAlertView(StringRef.confirmation, "Are you sure you want to remove this book from the Bookshelf?", null, StringRef.no, StringRef.yes);
                alert.Dismissed += (object sender, UIButtonEventArgs e) =>
                {
                    if (e.ButtonIndex == 1)
                    {
                        BooksOnDeviceAccessor.MarkAsRemovedBook(bookView.BookshelfBook);
                        BookRemover.RemoveBookInCache(bookView.BookshelfBook);
                        BookRemover.RemoveBook(bookView.BookshelfBook);
                        UpdateCollectionView(bookView);
                    }
                };
                alert.Show();
            };
            pmc.CancelDownloadEvent += delegate
            {
                HideMenuPopover();

                UIAlertView alert = new UIAlertView(StringRef.confirmation, "Are you sure you want to cancel the download for this book?", null, StringRef.no, StringRef.yes);
                alert.Dismissed += (object sender, UIButtonEventArgs e) =>
                {
                    if (e.ButtonIndex == 1)
                    {
                        if (bookView.BookshelfBook.Status != Book.BookStatus.DOWNLOADED)
                        {
                            CancelDownload(bookView.BookshelfBook);
                        }
                    }
                };
                alert.Show();
            };

            menuViewController             = new UIPopoverController(pmc);
            menuViewController.DidDismiss += (object sender, EventArgs e) =>
            {
                HideMenuPopover();
            };
            menuViewController.SetPopoverContentSize(new CGSize(pmc.View.Frame.Width, pmc.View.Frame.Height), true);
            menuViewController.PresentFromRect(bookView.Frame, bookView, UIPopoverArrowDirection.Any, true);
        }
Example #2
0
 public PopoverMenuDataSource(PopoverMenuController parent)
 {
     this.parent = parent;
 }