Ejemplo n.º 1
0
        public override UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)
        {
            var cell = (PageCell)collectionView.DequeueReusableCell(cellID, indexPath);

            var page = list[indexPath.Row];
            if (page != null)
            {
                cell.PageID = page.ID;

                if (page.ID != StringRef.Empty || page.ChapterID != StringRef.Empty)
                {
                    String url = DownloadedFilesCache.BuildCachedFilePath(page.URL);
                    if (!String.IsNullOrEmpty(url))
                    {
                        CGPDFDocument pdfDoc = CGPDFDocument.FromFile(url);
                        if (pdfDoc != null)
                        {
                            CGPDFPage pdfPage = pdfDoc.GetPage(1);

							UIImage image = ImageHelper.PDF2Image(pdfPage, 150, UIScreen.MainScreen.Scale);

                            // THIS IS REQUIRED TO SKIP iCLOUD BACKUP
                            SkipBackup2iCloud.SetAttribute(url);

                            if (image != null)
                            {
                                cell.Image = image;
                            }
                        }
                    }
                }
            }

            return cell;
        }
Ejemplo n.º 2
0
        public static void RemoveBookInCache(Book book)
        {
            // Remove page images from the file system
            List <Page> pageList = BooksOnDeviceAccessor.GetPages(book.ID);

            if (pageList != null)
            {
                foreach (Page page in pageList)
                {
                    DownloadedFilesCache.RemoveFile(page.URL);
                }
            }

            // Remove chapter images from the file system
            List <Chapter> chapterList = BooksOnDeviceAccessor.GetChapters(book.ID);

            if (chapterList != null)
            {
                foreach (Chapter chapter in chapterList)
                {
                    DownloadedFilesCache.RemoveFile(chapter.SmallImageURL);
                    DownloadedFilesCache.RemoveFile(chapter.LargeImageURL);
                }
            }

            // Remove book images from the file system
            DownloadedFilesCache.RemoveFile(book.SmallImageURL);
            DownloadedFilesCache.RemoveFile(book.LargeImageURL);
        }
        public void RedownloadFailedURLs()
        {
            if (BookUpdater.CurrentBook != null && BookUpdater.CurrentBook.FailedURLs != null)
            {
                ASINetworkQueue networkQueue = new ASINetworkQueue();
                networkQueue.Reset();
                networkQueue.ShowAccurateProgress             = false;
                networkQueue.ShouldCancelAllRequestsOnFailure = false;
                networkQueue.Delegate = this;

                networkQueue.RequestDidFail   = new Selector("requestDidFail:");
                networkQueue.RequestDidFinish = new Selector("requestDidFinish:");
                networkQueue.QueueDidFinish   = new Selector("queueDidFinish:");

                ASIHTTPRequest request = null;
                foreach (String url in BookUpdater.CurrentBook.FailedURLs)
                {
                    DownloadedFilesCache.RemoveFile(url);

                    request = new ASIHTTPRequest(NSUrl.FromString(url));
                    request.DownloadDestinationPath = DownloadedFilesCache.BuildCachedFilePath(url);
                    request.Username = Settings.UserID;
                    request.Password = KeychainAccessor.Password;
                    request.Domain   = Settings.Domain;

                    networkQueue.AddOperation(request);
                }

                // Clear failedUrls before starting to re-download
                BookUpdater.CurrentBook.FailedURLs.Clear();

                networkQueue.Go();
            }
        }
Ejemplo n.º 4
0
        private static List <Chapter> DownloadChaptersWork(String bookID, List <String> fileUrlsToDownload)
        {
            // If chapters are not downloaded yet or expired, download them again
            List <Chapter> chapterList = null;

            if (!BooksOnServerAccessor.HasChapters(bookID) || CurrentBook.Status == Book.BookStatus.UPDATING)
            {
                chapterList = eBriefingService.StartDownloadChapters(bookID);
                if (chapterList != null)
                {
                    BooksOnServerAccessor.SaveChapters(bookID, chapterList);
                }
            }
            else
            {
                // Or get them from the cache
                chapterList = BooksOnServerAccessor.GetChapters(bookID);
            }

            // Queue up cover images for the chapter only if the image version is different
            if (chapterList != null)
            {
                foreach (Chapter serverCh in chapterList)
                {
                    // Remove cover image if this is an update
                    bool download = false;
                    if (CurrentBook.Status == Book.BookStatus.UPDATING)
                    {
                        Chapter deviceCh = BooksOnDeviceAccessor.GetChapter(CurrentBook.ID, serverCh.ID);
                        if (deviceCh == null)
                        {
                            download = true;
                        }
                        else if (serverCh.ImageVersion != deviceCh.ImageVersion)
                        {
                            DownloadedFilesCache.RemoveFile(deviceCh.LargeImageURL);
                            DownloadedFilesCache.RemoveFile(deviceCh.SmallImageURL);

                            download = true;
                        }
                    }
                    else
                    {
                        download = true;
                    }

                    if (download)
                    {
                        fileUrlsToDownload.Add(serverCh.LargeImageURL);
                        fileUrlsToDownload.Add(serverCh.SmallImageURL);
                    }
                }
            }

            return(chapterList);
        }
Ejemplo n.º 5
0
 //to remove page that not being use anymore in device.
 private static void RemovePages(List <Page> serverPageList, List <Page> devicePageList)
 {
     foreach (Page devicePage in devicePageList)
     {
         var item = serverPageList.Where(i => i.ID == devicePage.ID).FirstOrDefault();
         if (item == null)
         {
             DownloadedFilesCache.RemoveFile(devicePage.URL);
         }
     }
 }
Ejemplo n.º 6
0
        public static void RemoveBookFromDevice(Book book)
        {
            if (book != null)
            {
                if (book.Status == Book.BookStatus.DOWNLOADING || book.Status == Book.BookStatus.PENDING2DOWNLOAD)
                {
                    if (book.Status == Book.BookStatus.DOWNLOADING)
                    {
                        // Remove page images from the file system
                        List <Page> pageList = BooksOnServerAccessor.GetPages(book.ID);
                        if (pageList != null)
                        {
                            foreach (Page page in pageList)
                            {
                                DownloadedFilesCache.RemoveFile(page.URL);
                            }
                        }
                        BooksOnServerAccessor.RemovePages(book.ID);

                        // Remove chapter images from the file system
                        List <Chapter> chapterList = BooksOnServerAccessor.GetChapters(book.ID);
                        if (chapterList != null)
                        {
                            foreach (Chapter chapter in chapterList)
                            {
                                DownloadedFilesCache.RemoveFile(chapter.SmallImageURL);
                                DownloadedFilesCache.RemoveFile(chapter.LargeImageURL);
                            }
                        }
                        BooksOnServerAccessor.RemoveChapters(book.ID);
                    }

                    // Remove book images from the file system
                    DownloadedFilesCache.RemoveFile(book.SmallImageURL);
                    DownloadedFilesCache.RemoveFile(book.LargeImageURL);

                    BooksOnDeviceAccessor.RemoveBook(book.ID);

                    // Initialize CurrentBook
                    InitializeFailedURLs();
                }
                else if (book.Status == Book.BookStatus.PENDING2UPDATE || book.Status == Book.BookStatus.UPDATING)
                {
                    RemoveBookFromBooks2Update(book.ID);

                    BooksOnServerAccessor.RemovePages(book.ID);
                    BooksOnServerAccessor.RemoveChapters(book.ID);
                }
            }
        }
Ejemplo n.º 7
0
        public void UpdateImage(String url)
        {
            if (imageSpinner != null)
            {
                imageSpinner.StopAnimating();
            }

            String  localPath = DownloadedFilesCache.BuildCachedFilePath(url);
            UIImage image     = UIImage.FromFile(localPath);

            if (image != null)
            {
                imageView.Image = image;
            }
        }
Ejemplo n.º 8
0
        private static void DownloadPDFsWork(String bookID, List <String> urlList)
        {
            if (urlList.Count > 0)
            {
                networkQueue.Reset();
                networkQueue.ShowAccurateProgress             = false;
                networkQueue.ShouldCancelAllRequestsOnFailure = false;
                networkQueue.Delegate = ParentViewController;

                networkQueue.RequestDidFail   = new Selector("requestDidFail:");
                networkQueue.RequestDidFinish = new Selector("requestDidFinish:");
                networkQueue.QueueDidFinish   = new Selector("queueDidFinish:");

                ASIHTTPRequest request = null;
                foreach (String url in urlList)
                {
                    // Remove page if this is an update
                    if (CurrentBook.Status == Book.BookStatus.UPDATING)
                    {
                        DownloadedFilesCache.RemoveFile(url);
                    }

                    request = new ASIHTTPRequest(NSUrl.FromString(url));
                    request.DownloadDestinationPath = DownloadedFilesCache.BuildCachedFilePath(url);
                    request.Username = Settings.UserID;
                    request.Password = KeychainAccessor.Password;
                    request.Domain   = Settings.Domain;

                    networkQueue.AddOperation(request);
                }

                // Clear failedUrls before starting to re-download
                InitializeFailedURLs();

                networkQueue.Go();
            }
            else
            {
                // Finished downloading
                if (DownloadFinishEvent != null)
                {
                    DownloadFinishEvent(bookID);
                }
            }
        }
Ejemplo n.º 9
0
        public static bool Download(String url, UIViewController controller, bool forceDownload = false)
        {
            bool exist = false;

            if (!String.IsNullOrEmpty(url) && url.Contains("http"))
            {
                try
                {
                    String localPath = DownloadedFilesCache.BuildCachedFilePath(url);
                    if (File.Exists(localPath) && !forceDownload)
                    {
                        exist = true;
                    }
                    else
                    {
                        if (Reachability.IsDefaultNetworkAvailable())
                        {
                            BackgroundWorker downloadWorker = new BackgroundWorker();
                            downloadWorker.DoWork += delegate
                            {
                                ASIHTTPRequest request = new ASIHTTPRequest(NSUrl.FromString(url));
                                request.Username                = Settings.UserID;
                                request.Password                = KeychainAccessor.Password;
                                request.Domain                  = Settings.Domain;
                                request.Delegate                = controller;
                                request.DidFinishSelector       = new Selector("requestFinish:");
                                request.DownloadDestinationPath = DownloadedFilesCache.BuildCachedFilePath(url);
                                request.StartAsynchronous();
                            };
                            downloadWorker.RunWorkerAsync();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.WriteLineDebugging("FileDownloader - Download: {0}", ex.ToString());
                }
            }

            return(exist);
        }
        private PSPDFDocument GenerateDocument()
        {
            try
            {
                // Build local pdf file path array
                List <Page> pageList = BooksOnDeviceAccessor.GetPages(book.ID);
                if (pageList != null && pageList.Count > 0)
                {
                    List <String> urlList = new List <String>();
                    foreach (Page page in pageList)
                    {
                        urlList.Add(DownloadedFilesCache.BuildCachedFilePath(page.URL));
                    }

                    // Generate NSData array for each pdf file
                    List <NSData> dataList = new List <NSData>();
                    foreach (String url in urlList)
                    {
                        NSData data = NSData.FromFile(url);
                        dataList.Add(data);
                    }

                    // Generate PSPDFDocument from NSData array
                    if (dataList.Count > 0)
                    {
                        PSPDFDocument document = PSPDFDocument.FromData(dataList.ToArray());
                        if (document != null)
                        {
                            document.Title = book.Title;
                            return(document);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLineDebugging("DashboardViewController - GenerateDocument: {0}", ex.ToString());
            }

            return(null);
        }
Ejemplo n.º 11
0
        public static void RemoveBook(Book book)
        {
            // Remove page images from the file system
            List <Page> pageList = BooksOnDeviceAccessor.GetPages(book.ID);

            if (pageList != null)
            {
                foreach (Page page in pageList)
                {
                    BooksOnDeviceAccessor.RemoveBookmark(book.ID, page.ID);
                    BooksOnDeviceAccessor.RemoveAllNotesForThisPage(book.ID, page.ID);
                    BooksOnDeviceAccessor.RemoveAnnotation(book.ID, page.ID);

                    DownloadedFilesCache.RemoveFile(page.URL);
                }
            }
            BooksOnServerAccessor.RemovePages(book.ID);
            BooksOnDeviceAccessor.RemovePages(book.ID);

            // Remove chapter images from the file system
            List <Chapter> chapterList = BooksOnDeviceAccessor.GetChapters(book.ID);

            if (chapterList != null)
            {
                foreach (Chapter chapter in chapterList)
                {
                    DownloadedFilesCache.RemoveFile(chapter.SmallImageURL);
                    DownloadedFilesCache.RemoveFile(chapter.LargeImageURL);
                }
            }
            BooksOnServerAccessor.RemoveChapters(book.ID);
            BooksOnDeviceAccessor.RemoveChapters(book.ID);

            // Remove book images from the file system
            DownloadedFilesCache.RemoveFile(book.SmallImageURL);
            DownloadedFilesCache.RemoveFile(book.LargeImageURL);

            BooksOnDeviceAccessor.RemoveBook(book.ID);
        }
        public PopoverSearchResultView(Book book, CGRect frame) : base(frame)
        {
            this.BackgroundColor = UIColor.Clear;

            // imageView
            UIImageView imageView = new UIImageView(new CGRect(10, 10, 80, 80));

            imageView.ContentMode = UIViewContentMode.ScaleAspectFit;
            this.AddSubview(imageView);

            String localImagePath = DownloadedFilesCache.BuildCachedFilePath(book.LargeImageURL);

            if (File.Exists(localImagePath))
            {
                imageView.Image = UIImage.FromFile(localImagePath);
            }

            TitleDescriptionView tdView = new TitleDescriptionView(book.Title, book.Description, frame.Width - (imageView.Frame.Width + 30));

            tdView.Frame = new CGRect(imageView.Frame.Right + 10, frame.Height / 2 - tdView.Frame.Height / 2, tdView.Frame.Width, tdView.TotalHeight);
            this.AddSubview(tdView);
        }
Ejemplo n.º 13
0
        public ChapterView(String bookID, Chapter chapter, int index) : base(new CGRect(0, 0, 220, 388.33f))
        {
            this.BookChapter = chapter;

            this.BackgroundColor     = UIColor.White;
            this.Layer.ShadowColor   = UIColor.Black.CGColor;
            this.Layer.ShadowOpacity = 0.3f;
            this.Layer.ShadowRadius  = 2f;
            this.Layer.ShadowOffset  = new CGSize(5f, 5f);

            // imageView
            UIImageView imageView = new UIImageView();

            imageView.Frame = new CGRect(0, 0, this.Frame.Width, 293.33f);
            String localImagePath = DownloadedFilesCache.BuildCachedFilePath(BookChapter.LargeImageURL);

            imageView.Image       = UIImage.FromFile(localImagePath);
            imageView.ContentMode = UIViewContentMode.ScaleToFill;
            this.AddSubview(imageView);

            // chapterLabel
            UILabel chapterLabel = eBriefingAppearance.GenerateLabel(14);

            chapterLabel.Frame = new CGRect(10, imageView.Frame.Bottom + 8, 200, 21);
            chapterLabel.Text  = "Chapter " + (index + 1).ToString();
            this.AddSubview(chapterLabel);

            // titleLabel
            UILabel titleLabel = eBriefingAppearance.GenerateLabel(14);

            titleLabel.Frame         = new CGRect(10, chapterLabel.Frame.Bottom + 4, 200, 21);
            titleLabel.LineBreakMode = UILineBreakMode.TailTruncation;
            titleLabel.Text          = chapter.Title;
            this.AddSubview(titleLabel);

            // Add book info layer
            AddBookInfoView(bookID, chapter);
        }
        private void UpdateImage()
        {
            try
            {
                String localImagePath = DownloadedFilesCache.BuildCachedFilePath(book.LargeImageURL);
                if (File.Exists(localImagePath))
                {
                    spinner1.StopAnimating();

                    imageView.Alpha = 0f;
                    imageView.Image = UIImage.FromFile(localImagePath);

                    UIView.Animate(0.3d, delegate
                    {
                        imageView.Alpha = 1f;
                    });
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLineDebugging("BookOverviewController - UpdateImage: {0}", ex.ToString());
            }
        }
Ejemplo n.º 15
0
        private static List <String> RemoveAlreadyDownloadedFiles(List <String> fileUrlsToDownload)
        {
            // Set total number of downloads required
            TotalDownloadCount = fileUrlsToDownload.Count;

            if (CurrentBook.Status == Book.BookStatus.DOWNLOADING)
            {
                List <String> removeList = null;
                for (int i = 0; i < fileUrlsToDownload.Count; i++)
                {
                    String localPath = DownloadedFilesCache.BuildCachedFilePath(fileUrlsToDownload[i]);
                    if (File.Exists(localPath))
                    {
                        if (removeList == null)
                        {
                            removeList = new List <String>();
                        }

                        removeList.Add(fileUrlsToDownload[i]);
                    }
                }

                if (removeList != null)
                {
                    for (int i = 0; i < removeList.Count; i++)
                    {
                        fileUrlsToDownload.Remove(removeList[i]);
                    }
                }
            }

            // Set total number of already downloaded files
            CurrentBook.DownloadCount = TotalDownloadCount - fileUrlsToDownload.Count;

            return(fileUrlsToDownload);
        }
Ejemplo n.º 16
0
        public NoteCellView(String bookID, Note note)
        {
            this.BackgroundColor = UIColor.Clear;
            this.pageID          = pageID;
            this.note            = note;

            nfloat height = 300;

            Page page = BooksOnDeviceAccessor.GetPage(bookID, note.PageID);

            if (note.Text == "Header: " + note.PageID)
            {
                this.Frame = new CGRect(0, 0, 200, height);

                // pageView
                UIImageView pageView = new UIImageView();
                pageView.Frame = new CGRect(15, 20, 170, height - 80);
                this.AddSubview(pageView);

                bool notFound = true;
                if (page != null)
                {
                    String        localPath = DownloadedFilesCache.BuildCachedFilePath(page.URL);
                    CGPDFDocument pdfDoc    = CGPDFDocument.FromFile(localPath);
                    if (pdfDoc != null)
                    {
                        notFound = false;

                        CGPDFPage pdfPage   = pdfDoc.GetPage(1);
                        UIImage   pageImage = ImageHelper.PDF2Image(pdfPage, pageView.Frame.Width, UIScreen.MainScreen.Scale);
                        pageView.Image = pageImage;
                    }
                }

                if (notFound)
                {
                    pageView.Image = UIImage.FromBundle("Assets/Icons/empty_page.png");

                    // emptyLabel
                    UILabel emptyLabel = eBriefingAppearance.GenerateLabel(17);
                    emptyLabel.Frame         = pageView.Frame;
                    emptyLabel.Text          = "Empty";
                    emptyLabel.TextAlignment = UITextAlignment.Center;
                    emptyLabel.SizeToFit();
                    emptyLabel.Center = pageView.Center;
                    this.AddSubview(emptyLabel);
                }

                // pageView
                NotePageView circleView = new NotePageView(page, pageView.Frame.Width / 2);
                circleView.Center = new CGPoint(pageView.Center.X, pageView.Frame.Bottom);
                this.AddSubview(circleView);
            }
            else if (note.Text == "Footer: " + note.PageID)
            {
                this.Frame = new CGRect(0, 0, 50, height);

                // footerView
//				UIImageView footerView = new UIImageView(UIImage.FromBundle("Assets/Icons/endPageNote.png"));
//				footerView.Frame = new CGRect(15, ((height - 40) / 2 - 10), 20, 20);
//                this.AddSubview(footerView);
            }
            else
            {
                this.Frame = new CGRect(0, 0, 250, height);

                // noteView
                NoteCellNoteView noteView = new NoteCellNoteView(note, height - 80);
                noteView.Frame          = new CGRect(15, 20, noteView.Frame.Width, noteView.Frame.Height);
                noteView.TouchUpInside += delegate
                {
                    if (ItemPressedEvent != null)
                    {
                        ItemPressedEvent(page.ID, note);
                    }
                };
                this.AddSubview(noteView);
            }
        }
Ejemplo n.º 17
0
        bool GenerateImage(Dictionary <Page, eBriefingMobile.Annotation> dict1, Dictionary <Page, List <eBriefingMobile.Note> > dict2)
        {
            try
            {
                if (pageList != null)
                {
                    nuint       totalImageSize = 0;
                    List <Note> notes          = new List <eBriefingMobile.Note> ();

                    foreach (var page in pageList)
                    {
                        String localPath     = DownloadedFilesCache.BuildCachedFilePath(page.URL);
                        var    printItemDict = new Dictionary <UIImage, List <Note> >();

                        if (!String.IsNullOrEmpty(localPath))
                        {
                            CGPDFDocument pdfDoc = CGPDFDocument.FromFile(localPath);
                            if (pdfDoc != null)
                            {
                                CGPDFPage pdfPage = pdfDoc.GetPage(1);
                                if (pdfPage != null)
                                {
                                    CGRect  pageRect = pdfPage.GetBoxRect(CGPDFBox.Media);
                                    UIImage pdfImg   = ImageHelper.PDF2Image(pdfPage, pageRect.Width, scale);

                                    // Add annotation if option selected
                                    if (dict1.ContainsKey(page))
                                    {
                                        Annotation annotation = dict1 [page];
                                        if (annotation != null)
                                        {
                                            Dictionary <String, PSPDFInkAnnotation> coordinateDict = AnnotationsDataAccessor.GenerateAnnDictionary((UInt32)page.PageNumber - 1, annotation);
                                            if (coordinateDict != null)
                                            {
                                                foreach (KeyValuePair <String, PSPDFInkAnnotation> item in coordinateDict)
                                                {
                                                    // Create full size annotation
                                                    UIImage annImg = ImageHelper.DrawPSPDFAnnotation(item.Key, item.Value);

                                                    if (annImg != null)
                                                    {
                                                        // Scale down the annotation image
                                                        annImg = annImg.Scale(new CGSize(pdfImg.Size.Width, pdfImg.Size.Height));

                                                        // Overlap pdfImg and annImg
                                                        pdfImg = ImageHelper.Overlap(pdfImg, annImg, CGPoint.Empty, CGPoint.Empty, scale);
                                                    }
                                                }
                                            }
                                        }
                                    }

                                    // Create image from text
                                    bool    printNote = false;
                                    UIImage noteImg   = null;
                                    if (dict2.ContainsKey(page) && dict2 [page] != null)
                                    {
                                        printNote = true;
                                        notes     = dict2 [page];

                                        // Create image from text
                                        //noteImg = ImageHelper.Text2Image(_notesText, pdfImg.Size);
                                    }
                                    else
                                    {
                                        notes = null;
                                    }

                                    // Scale down and add to canvas
                                    // Used 900 and 1200 because couldn't control the paper margin
//								if (Orientation == ORIENTATION.PORTRAIT)
//								{
//									//if (printNote)
//									{
//										//pdfImg = ImageHelper.Scale(pdfImg, 500);
//										//pdfImg=ImageHelper.MaxResizeImage(pdfImg,1000,scale);
//										//pdfImg = ImageHelper.Add2Canvas(pdfImg, new CGPoint(0, (1024 / 2) - (pdfImg.Size.Height / 2)), scale);
//
//										// Overlap pdfImg and noteImg
//										//pdfImg = ImageHelper.Overlap(pdfImg, noteImg, CGPoint.Empty, new CGPoint(500, 0), scale);
//									}
//									//else
//									{
//										//pdfImg=ImageHelper.MaxResizeImage(pdfImg,1000,scale);
//										//pdfImg = ImageHelper.Scale(pdfImg, 900);
//										//pdfImg = ImageHelper.Add2Canvas(pdfImg, new CGPoint((768 / 2) - (pdfImg.Size.Width / 2), (1024 / 2) - (pdfImg.Size.Height / 2)), scale);
//									}
//								}
//								else
//								{
//									//if (printNote)
//									{
//										//pdfImg=ImageHelper.MaxResizeImage(pdfImg,500,scale);
//										//pdfImg = ImageHelper.Scale(pdfImg, 500);
//									//		pdfImg = ImageHelper.Add2Canvas(pdfImg, new CGPoint(0,0), scale*2, UIInterfaceOrientation.LandscapeLeft);
//										// Overlap pdfImg and noteImg
//										//pdfImg = ImageHelper.Overlap(pdfImg, noteImg, CGPoint.Empty, new CGPoint(756, 0), scale);
//									}
//									//else
//									{
//										//pdfImg=ImageHelper.MaxResizeImage(pdfImg,1000,scale);
//										//pdfImg = ImageHelper.Scale(pdfImg, 500);
//										///pdfImg = ImageHelper.Add2Canvas(pdfImg, new CGPoint((1024 / 2) - (pdfImg.Size.Width / 2), (768 / 2) - (pdfImg.Size.Height / 2)), scale*2, UIInterfaceOrientation.LandscapeLeft);
//									}
//
//									// Rotate canvas
//									//pdfImg = ImageHelper.Rotate(pdfImg);
//								}

                                    // Save
//								if (printItems == null)
//								{
//									printItems = new List<UIImage>();
//								}
//								printItems.Add(pdfImg);

                                    if (dict == null)
                                    {
                                        dict = new Dictionary <int, Dictionary <UIImage, List <Note> > > ();
                                    }

                                    if (pdfImg != null)
                                    {
                                        printItemDict.Add(pdfImg, notes);
                                        dict.Add(page.PageNumber, printItemDict);

                                        var pngImage = pdfImg.AsPNG();
                                        totalImageSize = pngImage.Length + totalImageSize;
                                        Console.WriteLine("Img : " + totalImageSize.ToString());

                                        //image dispose
                                        pdfImg = null;

                                        if (CheckReachMemoryLimit(totalImageSize))
                                        {
                                            PagesNum = dict.Count - 1;

                                            dict.Clear();
                                            dict = null;

                                            return(false);
                                        }
                                    }
                                }
                            }
                        }
                    }

                    PagesNum = dict.Count;

                    return(true);
                }
                return(false);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Ejemplo n.º 18
0
        public static void Start()
        {
            if (Books2Download != null && Books2Download.Count > 0)
            {
                try
                {
                    // Check to see if there is any book that was downloading or updating in progress.
                    // If there is, then resume downloading and do not sort
                    bool sortRequired = true;
                    foreach (Book book in Books2Download)
                    {
                        if (book.Status == Book.BookStatus.DOWNLOADING || book.Status == Book.BookStatus.UPDATING)
                        {
                            sortRequired = false;
                        }
                    }

                    if (sortRequired)
                    {
                        SortBooks();
                    }

                    InProgress  = true;
                    CurrentBook = Books2Download[0];

                    if (CurrentBook.Status == Book.BookStatus.PENDING2UPDATE)
                    {
                        CurrentBook.Status = Book.BookStatus.UPDATING;
                    }
                    else if (CurrentBook.Status == Book.BookStatus.PENDING2DOWNLOAD)
                    {
                        CurrentBook.Status = Book.BookStatus.DOWNLOADING;
                    }

                    BackgroundWorker downloadWorker = new BackgroundWorker();
                    downloadWorker.WorkerSupportsCancellation = true;
                    downloadWorker.DoWork += async delegate
                    {
                        // Get my stuff for this book
                        if (CurrentBook.Status == Book.BookStatus.DOWNLOADING)
                        {
                            if (!CloudSync.SyncingInProgress)
                            {
                                await eBriefingService.Run(() => CloudSync.PullMyStuffs(CurrentBook));
                            }
                        }

                        List <String> fileUrlsToDownload = new List <String>();

                        // Notify UI the start of the downloading
                        ParentViewController.InvokeOnMainThread(delegate
                        {
                            if (DownloadStartEvent != null)
                            {
                                DownloadStartEvent(CurrentBook.ID);
                            }
                        });

                        // Queue up cover images for the book only if the image version is different
                        if (CurrentBook.Status == Book.BookStatus.UPDATING)
                        {
                            Book deviceBook = BooksOnDeviceAccessor.GetBook(CurrentBook.ID);
                            if (deviceBook != null && (deviceBook.ImageVersion != CurrentBook.ImageVersion))
                            {
                                DownloadedFilesCache.RemoveFile(deviceBook.LargeImageURL);
                                DownloadedFilesCache.RemoveFile(deviceBook.SmallImageURL);

                                fileUrlsToDownload.Add(CurrentBook.LargeImageURL);
                                fileUrlsToDownload.Add(CurrentBook.SmallImageURL);
                            }
                        }

                        // Download chapters
                        await eBriefingService.Run(() => DownloadChaptersWork(CurrentBook.ID, fileUrlsToDownload));

                        // Download pages
                        List <Page> pageList = await eBriefingService.Run(() => DownloadPagesWork(CurrentBook.ID));

                        if (pageList != null)
                        {
                            List <Page> differentPageList = Pages2Download(CurrentBook.ID, pageList);
                            foreach (Page page in differentPageList)
                            {
                                fileUrlsToDownload.Add(page.URL);
                            }
                        }

                        // Filter out those files that are already downloaded (Only if the status is DOWNLOADING, not UPDATING)
                        // CoreServices 2.0 will check for updates too since we can check for version number for each file
                        fileUrlsToDownload = RemoveAlreadyDownloadedFiles(fileUrlsToDownload);

                        // Download Start
                        if (fileUrlsToDownload.Count == 0)
                        {
                            QueueDidFinish(null);
                        }
                        else
                        {
                            DownloadPDFsWork(CurrentBook.ID, fileUrlsToDownload);
                        }
                    };
                    downloadWorker.RunWorkerAsync();
                }
                catch (Exception ex)
                {
                    Logger.WriteLineDebugging("BookUpdater - Start: {0}", ex.ToString());
                }
            }
        }
Ejemplo n.º 19
0
        public BookshelfBookView(Book book, bool updateMenu, BookshelfViewController parentVC) : base(new CGRect(0, 0, 280, 280))
        {
            this.BookshelfBook = book;
            this.updateMenu    = updateMenu;

            this.BackgroundColor     = UIColor.White;
            this.Layer.ShadowColor   = UIColor.Black.CGColor;
            this.Layer.ShadowOpacity = 0.3f;
            this.Layer.ShadowRadius  = 2f;
            this.Layer.ShadowOffset  = new CGSize(5f, 5f);

            // imageView
            imageView       = new UIImageView();
            imageView.Frame = new CGRect(0, 0, this.Frame.Width, 150);
            this.AddSubview(imageView);

            // recognizer
            this.AddGestureRecognizer(new UILongPressGestureRecognizer(this, new Selector("HandleLongPress:")));

            if (!String.IsNullOrEmpty(BookshelfBook.LargeImageURL))
            {
                // imageSpinner
                imageSpinner        = eBriefingAppearance.GenerateBounceSpinner();
                imageSpinner.Center = imageView.Center;
                this.AddSubview(imageSpinner);

                // Download image
                bool exist = FileDownloader.Download(BookshelfBook.LargeImageURL, parentVC);
                if (exist)
                {
                    bool outDated = false;
                    var  item     = BooksOnDeviceAccessor.GetBook(BookshelfBook.ID);
                    if (item != null)
                    {
                        if (item.ImageVersion < BookshelfBook.ImageVersion)
                        {
                            DownloadedFilesCache.RemoveFile(item.LargeImageURL);
                            DownloadedFilesCache.RemoveFile(item.SmallImageURL);

                            outDated = true;
                        }
                    }

                    if (outDated)
                    {
                        FileDownloader.Download(BookshelfBook.LargeImageURL, parentVC, true);
                    }
                    else
                    {
                        UpdateImage(BookshelfBook.LargeImageURL);
                    }
                }
            }

            // favoriteView
            if (BooksDataAccessor.IsFavorite(book.ID))
            {
                AddFavorite();
            }

            if (book.New)
            {
                AddRibbon();
            }

            // titleLabel
            titleLabel               = eBriefingAppearance.GenerateLabel(16);
            titleLabel.Frame         = new CGRect(10, imageView.Frame.Bottom + 8, 260, 21);
            titleLabel.Lines         = 2;
            titleLabel.LineBreakMode = UILineBreakMode.WordWrap;
            titleLabel.Text          = book.Title;
            titleLabel.SizeToFit();
            titleLabel.Frame = new CGRect(10, titleLabel.Frame.Y, 260, titleLabel.Frame.Height);
            this.AddSubview(titleLabel);

            UpdateUI();
        }
Ejemplo n.º 20
0
        public DashboardView(Book book, CGRect frame) : base(frame)
        {
            this.book            = book;
            this.BackgroundColor = UIColor.White;

            // overview
            UILabel overview = eBriefingAppearance.GenerateLabel(21);

            overview.Frame = new CGRect(20, 20, frame.Width - 40, 21);
            overview.Text  = "Overview";
            this.AddSubview(overview);

            // imageView
            UIImageView imageView = new UIImageView();

            imageView.Frame = new CGRect(overview.Frame.X, overview.Frame.Bottom + 16, overview.Frame.Width, 150);

            String localImagePath = DownloadedFilesCache.BuildCachedFilePath(book.LargeImageURL);

            if (File.Exists(localImagePath))
            {
                imageView.Image = UIImage.FromFile(localImagePath);
            }

            this.AddSubview(imageView);

            // bookInfoView
            bookInfoView       = new BookInfoView("0", "0", "0", book.PageCount.ToString(), false, false, frame.Width - 60);
            bookInfoView.Frame = new CGRect(30, imageView.Frame.Bottom + 8, bookInfoView.Frame.Width, bookInfoView.Frame.Height);
            this.AddSubview(bookInfoView);

            // line0
            UIView line0 = new UIView();

            line0.BackgroundColor = eBriefingAppearance.Gray4;
            line0.Frame           = new CGRect(overview.Frame.X, bookInfoView.Frame.Bottom + 10, overview.Frame.Width, 1);
            this.AddSubview(line0);

            // descLabel
            UILabel descLabel = GenerateLabel("Description", true);

            descLabel.Frame = new CGRect(overview.Frame.X, line0.Frame.Bottom + 10, overview.Frame.Width, 21);
            this.AddSubview(descLabel);

            // desc
            UILabel desc = GenerateLabel(book.Description, false);

            desc.Frame = new CGRect(overview.Frame.X, descLabel.Frame.Bottom + 8, overview.Frame.Width, 1);
            desc.Lines = 0;
            desc.SizeToFit();
            this.AddSubview(desc);

            // line1
            UIView line1 = new UIView();

            line1.BackgroundColor = eBriefingAppearance.Gray4;
            line1.Frame           = new CGRect(overview.Frame.X, desc.Frame.Bottom + 10, overview.Frame.Width, 1);
            this.AddSubview(line1);

            // versionLabel
            UILabel versionLabel = GenerateLabel("Version", true);

            versionLabel.Frame = new CGRect(overview.Frame.X, line1.Frame.Bottom + 10, overview.Frame.Width, 21);
            this.AddSubview(versionLabel);

            // version
            UILabel version = GenerateLabel(book.Version.ToString(), false);

            version.Frame = new CGRect(overview.Frame.X, versionLabel.Frame.Bottom + 8, overview.Frame.Width, 21);
            this.AddSubview(version);

            // line2
            UIView line2 = new UIView();

            line2.BackgroundColor = eBriefingAppearance.Gray4;
            line2.Frame           = new CGRect(overview.Frame.X, version.Frame.Bottom + 10, overview.Frame.Width, 1);
            this.AddSubview(line2);

            // createdLabel
            UILabel createdLabel = GenerateLabel("Date Created", true);

            createdLabel.Frame = new CGRect(overview.Frame.X, line2.Frame.Bottom + 10, overview.Frame.Width, 21);
            this.AddSubview(createdLabel);

            // created
            UILabel created = GenerateLabel(book.UserAddedDate.ToString("MMMM dd, yyyy"), false);

            created.Frame = new CGRect(overview.Frame.X, createdLabel.Frame.Bottom + 8, overview.Frame.Width, 21);
            this.AddSubview(created);

            // line3
            UIView line3 = new UIView();

            line3.BackgroundColor = eBriefingAppearance.Gray4;
            line3.Frame           = new CGRect(overview.Frame.X, created.Frame.Bottom + 10, overview.Frame.Width, 1);
            this.AddSubview(line3);

            // modifiedLabel
            UILabel modifiedLabel = GenerateLabel("Date Modified", true);

            modifiedLabel.Frame = new CGRect(overview.Frame.X, line3.Frame.Bottom + 10, overview.Frame.Width, 21);
            this.AddSubview(modifiedLabel);

            // modified
            UILabel modified = GenerateLabel(book.UserModifiedDate.ToString("MMMM dd, yyyy"), false);

            modified.Frame = new CGRect(overview.Frame.X, modifiedLabel.Frame.Bottom + 8, overview.Frame.Width, 21);
            this.AddSubview(modified);

            // shadow
            UIImageView shadow = new UIImageView();

            shadow.AutoresizingMask = UIViewAutoresizing.FlexibleHeight;
            shadow.Frame            = new CGRect(frame.Right - 3, 0, 3, frame.Height);
            shadow.Image            = UIImage.FromBundle("Assets/Backgrounds/shadow.png").CreateResizableImage(new UIEdgeInsets(2, 0, 2, 0));
            this.AddSubview(shadow);

            this.ContentSize = new CGSize(frame.Width, modified.Frame.Bottom + 20);
        }
Ejemplo n.º 21
0
        async private void GenerateThumbnail(String bookID, String pageID, String text, bool bookmark = false)
        {
            try
            {
                // spinner
                RTSpinKitView spinner = eBriefingAppearance.GenerateBounceSpinner();
                spinner.Center = this.Center;
                this.AddSubview(spinner);

                // Generate pdf thumbnail
                Page page = await eBriefingService.Run(() => BooksOnDeviceAccessor.GetPage(bookID, pageID));

                Annotation annotation = null;
                if (String.IsNullOrEmpty(text))
                {
                    annotation = await eBriefingService.Run(() => BooksOnDeviceAccessor.GetAnnotation(bookID, pageID));
                }

                spinner.StopAnimating();

                if (page != null)
                {
                    String localPath = DownloadedFilesCache.BuildCachedFilePath(page.URL);
                    if (!String.IsNullOrEmpty(localPath))
                    {
                        CGPDFDocument pdfDoc = CGPDFDocument.FromFile(localPath);
                        if (pdfDoc != null)
                        {
                            CGPDFPage pdfPage = pdfDoc.GetPage(1);
                            if (pdfPage != null)
                            {
                                UIImage pdfImg = ImageHelper.PDF2Image(pdfPage, this.Frame.Width, UIScreen.MainScreen.Scale);

                                // pageView
                                UIImageView pageView = new UIImageView();
                                pageView.Frame = new CGRect(0, (this.Frame.Height / 2) - (pdfImg.Size.Height / 2), pdfImg.Size.Width, pdfImg.Size.Height);

                                // If this is annotation thumbnail, draw annotation overlay on top of pdf
                                if (annotation != null)
                                {
                                    Dictionary <String, PSPDFInkAnnotation> dictionary = AnnotationsDataAccessor.GenerateAnnDictionary((nuint)page.PageNumber - 1, annotation);
                                    if (dictionary != null)
                                    {
                                        foreach (KeyValuePair <String, PSPDFInkAnnotation> item in dictionary)
                                        {
                                            // Create full size annotation
                                            UIImage annImg = ImageHelper.DrawPSPDFAnnotation(item.Key, item.Value);

                                            if (annImg != null)
                                            {
                                                // Scale down the annotation image
                                                annImg = annImg.Scale(new CGSize(pdfImg.Size.Width, pdfImg.Size.Height));

                                                // Overlap pdfImg and annImg
                                                pdfImg = ImageHelper.Overlap(pdfImg, annImg, CGPoint.Empty, CGPoint.Empty, UIScreen.MainScreen.Scale);
                                            }
                                        }
                                    }
                                }

                                pageView.Image = pdfImg;
                                this.AddSubview(pageView);

                                if (pdfImg.Size.Height < this.Frame.Height)
                                {
                                    this.BackgroundColor = UIColor.Clear;
                                }

                                // THIS IS REQUIRED TO SKIP iCLOUD BACKUP
                                SkipBackup2iCloud.SetAttribute(localPath);

                                // Add ribbon if this is bookmark thumbnail
                                if (bookmark)
                                {
                                    UIImageView ribbon = new UIImageView();
                                    ribbon.Image = UIImage.FromBundle("Assets/Buttons/bookmark_solid.png");
                                    ribbon.Frame = new CGRect(pageView.Frame.Right - 35, pageView.Frame.Y, 25, 33.78f);
                                    this.AddSubview(ribbon);
                                }

                                // Do not add text if this is annotation thumbnail
                                if (!String.IsNullOrEmpty(text))
                                {
                                    // titleLabel
                                    UILabel titleLabel = eBriefingAppearance.GenerateLabel(16);
                                    titleLabel.Frame         = new CGRect(0, pageView.Frame.Bottom + 4, this.Frame.Width, 42);
                                    titleLabel.Lines         = 2;
                                    titleLabel.LineBreakMode = UILineBreakMode.TailTruncation;
                                    titleLabel.TextAlignment = UITextAlignment.Center;
                                    titleLabel.Text          = text;
                                    this.AddSubview(titleLabel);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLineDebugging("ThumbnailView - GenerateThumbnail: {0}", ex.ToString());
            }
        }
Ejemplo n.º 22
0
        private void GenerateThumbnail(String bookID, String pageID, String text, bool bookmark = false)
        {
            try
            {
                // activityIndicator
                UIActivityIndicatorView activityIndicator = new UIActivityIndicatorView();
                activityIndicator.ActivityIndicatorViewStyle = UIActivityIndicatorViewStyle.White;
                activityIndicator.StartAnimating();
                activityIndicator.HidesWhenStopped = true;
                activityIndicator.Frame            = new RectangleF((this.Frame.Width / 2) - 10, (this.Frame.Height / 2) - 10, 20, 20);
                this.AddSubview(activityIndicator);

                // Generate pdf thumbnail
                Page             page       = null;
                Annotation       annotation = null;
                BackgroundWorker worker     = new BackgroundWorker();
                worker.DoWork += delegate
                {
                    page = BooksOnDeviceAccessor.GetPage(bookID, pageID);

                    if (String.IsNullOrEmpty(text))
                    {
                        annotation = BooksOnDeviceAccessor.GetAnnotation(bookID, pageID);
                    }
                };
                worker.RunWorkerCompleted += delegate
                {
                    this.InvokeOnMainThread(delegate
                    {
                        activityIndicator.StopAnimating();

                        if (page != null)
                        {
                            String localPath = DownloadedFilesCache.BuildCachedFilePath(page.URL);
                            if (!String.IsNullOrEmpty(localPath))
                            {
                                CGPDFDocument pdfDoc = CGPDFDocument.FromFile(localPath);
                                if (pdfDoc != null)
                                {
                                    CGPDFPage pdfPage = pdfDoc.GetPage(1);
                                    if (pdfPage != null)
                                    {
                                        UIImage pdfImg = PDFConverter.Transform2Image(pdfPage, this.Frame.Width);

                                        // pageView
                                        UIImageView pageView = new UIImageView();
                                        pageView.Frame       = new RectangleF(0, (this.Frame.Height / 2) - (pdfImg.Size.Height / 2), pdfImg.Size.Width, pdfImg.Size.Height);

                                        // If this is annotation thumbnail, draw annotation overlay on top of pdf
                                        if (annotation != null)
                                        {
                                            Dictionary <String, PSPDFInkAnnotation> dictionary = AnnotationsDataAccessor.GenerateAnnDictionary((UInt32)page.PageNumber - 1, annotation);
                                            if (dictionary != null)
                                            {
                                                foreach (KeyValuePair <String, PSPDFInkAnnotation> item in dictionary)
                                                {
                                                    // Create full size annotation
                                                    UIImage annImg = DrawAnnotation(item.Key, item.Value);

                                                    if (annImg != null)
                                                    {
                                                        // Scale down the annotation image
                                                        annImg = annImg.Scale(new SizeF(pdfImg.Size.Width, pdfImg.Size.Height));

                                                        // Overlap pdfImg and annImg
                                                        pdfImg = Overlap(pdfImg, annImg);
                                                    }
                                                }
                                            }
                                        }

                                        pageView.Image = pdfImg;
                                        this.AddSubview(pageView);

                                        // THIS IS REQUIRED TO SKIP iCLOUD BACKUP
                                        SkipBackup2iCloud.SetAttribute(localPath);

                                        // Add ribbon if this is bookmark thumbnail
                                        if (bookmark)
                                        {
                                            UIImageView ribbon = new UIImageView();
                                            ribbon.Image       = UIImage.FromBundle("Assets/Buttons/bookmark_solid.png");
                                            ribbon.Frame       = new RectangleF(pageView.Frame.Right - 35, pageView.Frame.Y, 25, 33.78f);
                                            this.AddSubview(ribbon);
                                        }

                                        // Do not add text if this is annotation thumbnail
                                        if (!String.IsNullOrEmpty(text))
                                        {
                                            // titleLabel
                                            UILabel titleLabel         = new UILabel();
                                            titleLabel.Frame           = new RectangleF(0, pageView.Frame.Bottom + 4, this.Frame.Width, 42);
                                            titleLabel.Font            = UIFont.SystemFontOfSize(16f);
                                            titleLabel.BackgroundColor = UIColor.Clear;
                                            titleLabel.TextColor       = eBriefingAppearance.DarkGrayColor;
                                            titleLabel.Lines           = 2;
                                            titleLabel.LineBreakMode   = UILineBreakMode.TailTruncation;
                                            titleLabel.TextAlignment   = UITextAlignment.Center;
                                            titleLabel.Text            = text;
                                            this.AddSubview(titleLabel);
                                        }
                                    }
                                }
                            }
                        }
                    });
                };
                worker.RunWorkerAsync();
            }
            catch (Exception ex)
            {
                Logger.WriteLineDebugging("ThumbnailView - GenerateThumbnail: {0}", ex.ToString());
            }
        }
Ejemplo n.º 23
0
        public LibraryBookView(Book book, LibraryViewController parentVC) : base(new CGRect(0, 0, 280, 280))
        {
            this.LibraryBook = book;

            this.BackgroundColor     = UIColor.White;
            this.Layer.ShadowColor   = UIColor.Black.CGColor;
            this.Layer.ShadowOpacity = 0.3f;
            this.Layer.ShadowRadius  = 2f;
            this.Layer.ShadowOffset  = new CGSize(5f, 5f);

            // imageView
            imageView       = new UIImageView();
            imageView.Frame = new CGRect(0, 0, this.Frame.Width, 150);
            this.AddSubview(imageView);

            if (!String.IsNullOrEmpty(LibraryBook.LargeImageURL))
            {
                // imageSpinner
                imageSpinner        = eBriefingAppearance.GenerateBounceSpinner();
                imageSpinner.Center = imageView.Center;
                this.AddSubview(imageSpinner);

                // Download image
                bool exist = FileDownloader.Download(LibraryBook.LargeImageURL, parentVC);
                if (exist)
                {
                    bool outDated = false;
                    var  item     = BooksOnServerAccessor.GetBook(LibraryBook.ID);
                    if (item != null)
                    {
                        if (item.ImageVersion < LibraryBook.ImageVersion)
                        {
                            DownloadedFilesCache.RemoveFile(item.LargeImageURL);
                            DownloadedFilesCache.RemoveFile(item.SmallImageURL);

                            outDated = true;
                        }
                    }

                    if (outDated)
                    {
                        FileDownloader.Download(LibraryBook.LargeImageURL, parentVC, true);
                    }
                    else
                    {
                        UpdateImage(LibraryBook.LargeImageURL);
                    }
                }
            }

            // titleLabel
            UILabel titleLabel = eBriefingAppearance.GenerateLabel(16);

            titleLabel.Frame         = new CGRect(10, imageView.Frame.Bottom + 8, 260, 21);
            titleLabel.Lines         = 2;
            titleLabel.LineBreakMode = UILineBreakMode.WordWrap;
            titleLabel.Text          = book.Title;
            titleLabel.SizeToFit();
            titleLabel.Frame = new CGRect(10, titleLabel.Frame.Y, 260, titleLabel.Frame.Height);
            this.AddSubview(titleLabel);

            // bookInfoView
            BookInfoView bookInfoView = new BookInfoView("0", "0", "0", book.PageCount.ToString(), false, false, this.Frame.Width - 30);

            bookInfoView.Frame = new CGRect(10, this.Frame.Bottom - 44, bookInfoView.Frame.Width, bookInfoView.Frame.Height);
            this.AddSubview(bookInfoView);

            // downloadButton
            UIButton downloadButton = UIButton.FromType(UIButtonType.Custom);

            downloadButton.Font = eBriefingAppearance.ThemeBoldFont(14);
            downloadButton.SetTitleColor(eBriefingAppearance.Color("37b878"), UIControlState.Normal);
            downloadButton.SetTitleColor(UIColor.White, UIControlState.Highlighted);
            downloadButton.SetBackgroundImage(UIImage.FromBundle("Assets/Buttons/green_unfilled.png").CreateResizableImage(new UIEdgeInsets(15f, 14f, 15f, 14f)), UIControlState.Normal);
            downloadButton.SetBackgroundImage(UIImage.FromBundle("Assets/Buttons/green_filled.png").CreateResizableImage(new UIEdgeInsets(15f, 14f, 15f, 14f)), UIControlState.Highlighted);
            downloadButton.Frame = new CGRect(this.Center.X - 65, bookInfoView.Frame.Top - 28, 130, downloadButton.CurrentBackgroundImage.Size.Height);
            downloadButton.SetTitle("DOWNLOAD", UIControlState.Normal);
            downloadButton.TouchUpInside += HandleDownloadButtonTouchUpInside;
            this.AddSubview(downloadButton);
        }
Ejemplo n.º 24
0
        public ChapterView(String bookID, Chapter chapter, Int32 index) : base(new RectangleF(0, 0, 220, 388.33f))
        {
            this.BackgroundColor     = UIColor.Clear;
            this.Layer.ShadowColor   = UIColor.Black.CGColor;
            this.Layer.ShadowOpacity = 0.3f;
            this.Layer.ShadowRadius  = 2f;
            this.Layer.ShadowOffset  = new SizeF(0f, 2f);

            this.Layer.ShadowPath         = UIBezierPath.FromRoundedRect(this.Frame, 7f).CGPath;
            this.Layer.ShouldRasterize    = true;
            this.Layer.RasterizationScale = UIScreen.MainScreen.Scale;

            this.BookChapter = chapter;

            // For rounded corner and shadow
            UIView subView = new UIView(new RectangleF(0, 0, 220, 388.33f));

            subView.BackgroundColor     = UIColor.White;
            subView.Layer.CornerRadius  = 7f;
            subView.Layer.MasksToBounds = true;
            this.AddSubview(subView);

            // imageView
            UIImageView imageView = new UIImageView();

            imageView.Frame = new RectangleF(0, 0, this.Frame.Width, 293.33f);
            String localImagePath = DownloadedFilesCache.BuildCachedFilePath(BookChapter.LargeImageURL);

            imageView.Image       = UIImage.FromFile(localImagePath);
            imageView.ContentMode = UIViewContentMode.ScaleToFill;
            subView.AddSubview(imageView);

            // chapterLabel
            UILabel chapterLabel = new UILabel();

            chapterLabel.Frame           = new RectangleF(10, imageView.Frame.Bottom + 8, 200, 21);
            chapterLabel.Font            = UIFont.SystemFontOfSize(14f);
            chapterLabel.TextAlignment   = UITextAlignment.Left;
            chapterLabel.BackgroundColor = UIColor.Clear;
            chapterLabel.TextColor       = UIColor.DarkGray;
            chapterLabel.Text            = "Chapter " + (index + 1).ToString();
            this.AddSubview(chapterLabel);

            // titleLabel
            UILabel titleLabel = new UILabel();

            titleLabel.Frame           = new RectangleF(10, chapterLabel.Frame.Bottom + 4, 200, 21);
            titleLabel.Font            = UIFont.SystemFontOfSize(14f);
            titleLabel.BackgroundColor = UIColor.Clear;
            titleLabel.TextColor       = UIColor.DarkGray;
            titleLabel.LineBreakMode   = UILineBreakMode.TailTruncation;
            titleLabel.Text            = chapter.Title;
            this.AddSubview(titleLabel);

            // bookInfoView
            String numNotes       = "0";
            String numBookmarks   = "0";
            String numAnnotations = "0";

            BackgroundWorker worker = new BackgroundWorker();

            worker.DoWork += delegate
            {
                numNotes       = BooksOnDeviceAccessor.GetNumNotesInChapter(bookID, chapter.ID);
                numBookmarks   = BooksOnDeviceAccessor.GetNumBookmarksInChapter(bookID, chapter.ID);
                numAnnotations = BooksOnDeviceAccessor.GetNumAnnotationsInChapter(bookID, chapter.ID);
            };
            worker.RunWorkerCompleted += delegate
            {
                this.InvokeOnMainThread(delegate
                {
                    BookInfoView bookInfoView = new BookInfoView(numNotes, numBookmarks, numAnnotations, chapter.Pagecount.ToString(), false, false, this.Frame.Width - 30);
                    bookInfoView.Frame        = new RectangleF(10, this.Frame.Bottom - 40, bookInfoView.Frame.Width, bookInfoView.Frame.Height);
                    this.AddSubview(bookInfoView);
                });
            };
            worker.RunWorkerAsync();
        }