Exemplo n.º 1
0
 private async void SaveBookmarkObject(BookmarkObject BookmarkObject)
 {
     await App.CORE.ZipManager.WriteAsync(
         MangaArchiveFilePath,
         typeof(BookmarkObject).Name,
         BookmarkObject.Serialize(App.SerializeType)).Retry(TIMEOUT);
 }
        private static void OnBookmarkObjectChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            MangaArchiveInformationObject _this = (d as MangaArchiveInformationObject);

            if (!_this.Empty())
            {
                if (BookmarkObject.Equals(_this.BookmarkObject, null))
                {
                    d.SetValue(ResumeChapterObjectPropertyKey, null);
                }
                else
                {
                    d.SetValue(ResumeChapterObjectPropertyKey, _this.MangaObject.ChapterObjectOfBookmarkObject(_this.BookmarkObject));
                }

                if (ChapterObject.Equals(_this.ResumeChapterObject, null))
                {
                    d.SetValue(HasMoreToReadPropertyKey, false);
                }
                else
                {
                    Int32 ResumeChapterObjectIndex = _this.MangaObject.IndexOfChapterObject(_this.ResumeChapterObject) + 1;
                    d.SetValue(HasMoreToReadPropertyKey, ResumeChapterObjectIndex < _this.MangaObject.Chapters.Count);
                }
            }
        }
Exemplo n.º 3
0
        private static void OnBookmarkObjectChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ChapterReaderViewModel control           = d as ChapterReaderViewModel;
            BookmarkObject         newBookmarkObject = e.NewValue as BookmarkObject;

            control.SaveBookmarkObject(newBookmarkObject);
        }
 public MangaArchiveInformationObject(MangaObject MangaObject, BookmarkObject BookmarkObject)
     : base()
 {
     this.MangaObject    = MangaObject;
     this.BookmarkObject = BookmarkObject;
     if (!this.Empty())
     {
         this.SetValue(ResumeChapterObjectPropertyKey, BookmarkObject.Equals(this.BookmarkObject, null) ? null : this.MangaObject.ChapterObjectOfBookmarkObject(this.BookmarkObject));
     }
 }
Exemplo n.º 5
0
        public MangaCacheObject(MangaObject MangaObject, BookmarkObject BookmarkObject, Boolean CreateProgressReporter = true) : base()
        {
            DownloadProgressReporter = new Progress <Int32>(ProgressValue =>
            {
                DownloadProgressActive = (0 < ProgressValue && ProgressValue < 100);
                DownloadProgress       = ProgressValue;
            });

            this.BookmarkObject = BookmarkObject;
            this.MangaObject    = MangaObject;
        }
Exemplo n.º 6
0
        private async Task <BookmarkObject> LoadBookmarkObjectAsync(Boolean OpeningPreviousChapter = false, Boolean ResumeChapter = false)
        {
            BookmarkObject BookmarkObject = null;

            try
            {
                if (!Equals(LoadBookmarkObjectAsyncCTS, null))
                {
                    if (LoadBookmarkObjectAsyncCTS.Token.CanBeCanceled)
                    {
                        LoadBookmarkObjectAsyncCTS.Cancel();
                    }
                }
            }
            catch { }
            using (LoadBookmarkObjectAsyncCTS = new CancellationTokenSource())
            {
                try
                {
                    Stream BookmarkObjectStream = await App.CORE.ZipManager.ReadAsync(MangaArchiveFilePath, typeof(BookmarkObject).Name).Retry(TIMEOUT);

                    LoadBookmarkObjectAsyncCTS.Token.ThrowIfCancellationRequested();
                    using (BookmarkObjectStream)
                    { BookmarkObject = BookmarkObjectStream.Deserialize <BookmarkObject>(SerializeType: App.SerializeType); }

                    if (Equals(BookmarkObject, null))
                    {
                        BookmarkObject = new BookmarkObject();
                    }

                    if (!Equals(BookmarkObject.Volume, ChapterObject.Volume))
                    {
                        BookmarkObject.Volume = ChapterObject.Volume;
                    }
                    if (!Equals(BookmarkObject.Chapter, ChapterObject.Chapter))
                    {
                        BookmarkObject.Chapter = ChapterObject.Chapter;
                    }
                    if (!Equals(BookmarkObject.SubChapter, ChapterObject.SubChapter))
                    {
                        BookmarkObject.SubChapter = ChapterObject.SubChapter;
                    }

                    if (OpeningPreviousChapter)
                    {
                        PageObject LastPageObject = ChapterObject.Pages.Last();
                        if (BookmarkObject.Page < LastPageObject.PageNumber)
                        {
                            BookmarkObject.Page = LastPageObject.PageNumber;
                        }
                    }
                    else if (!ResumeChapter || BookmarkObject.Page <= 0)
                    {
                        BookmarkObject.Page = ChapterObject.Pages.First().PageNumber;
                    }

                    if (!Equals(ChapterObject, null))
                    {
                        BookmarkObject.LastPage = ChapterObject.Pages.Last().PageNumber;
                    }
                }
                catch (OperationCanceledException) { BookmarkObject = new BookmarkObject(); }
                catch (Exception ex) { throw ex; }
                finally { }
            }

            return(BookmarkObject);
        }
Exemplo n.º 7
0
        public static ChapterObject ChapterObjectOfBookmarkObject(this MangaObject value, BookmarkObject bookmark_object)
        {
            ChapterObject rVal = value.Chapters.Find(c => c.Volume == bookmark_object.Volume && c.Chapter == bookmark_object.Chapter && c.SubChapter == bookmark_object.SubChapter);

            if (!ChapterObject.Equals(rVal, null))
            {
                return(rVal);                                   // Return Bookmark of VCS
            }
            rVal = value.Chapters.Find(c => c.Chapter == bookmark_object.Chapter && c.SubChapter == bookmark_object.SubChapter);
            if (!ChapterObject.Equals(rVal, null))
            {
                return(rVal);                                   // Return Bookmark of CS
            }
            rVal = value.Chapters.Find(c => c.Chapter == bookmark_object.Chapter);
            if (!ChapterObject.Equals(rVal, null))
            {
                return(rVal);               // Return Bookmark of C
            }
            return(value.Chapters.First()); // Return Bookmark of C or null
        }
Exemplo n.º 8
0
 public MangaCacheObject(MangaObject MangaObject, BookmarkObject BookmarkObject) :
     this(MangaObject : MangaObject, BookmarkObject : BookmarkObject, CreateProgressReporter : false)
 {
 }
Exemplo n.º 9
0
 public static PageObject PageObjectOfBookmarkObject(this ChapterObject value, BookmarkObject bookmark_object)
 {
     return(value.Pages.Find(p => p.PageNumber == bookmark_object.Page));
 }