Esempio n. 1
0
        public static void Update(this MangaCacheObject current, MangaCacheObject update)
        {
            if (!Equals(update, null))
            {
                // Update BookmarkObject
                if (!Equals(update.BookmarkObject, null))
                {
                    current.BookmarkObject = update.BookmarkObject;
                }

                // Update MangaObject
                if (!Equals(update.MangaObject, null))
                {
                    current.MangaObject = update.MangaObject;
                }

                // Update CoverImage
                if (!Equals(update.CoverImage, null))
                {
                    current.CoverImage = update.CoverImage.Clone();
                }
            }
        }
Esempio n. 2
0
        private static void OnCacheObjectChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
        {
            MangaCacheObject control = source as MangaCacheObject;

            if (!Equals(control.MangaObject, null))
            {   // MangaObject exists
                // Use the first ChapterObject or null for the ResumeChapterObject
                ChapterObject ResumeChapterObject = control.MangaObject.Chapters.FirstOrDefault();

                if (!Equals(control.BookmarkObject, null))
                {   // BookmarkObject exists
                    control.IsNewManga = false;
                    // A BookmarkObject exists, lookup the ResumeChapterObject
                    ResumeChapterObject = control.MangaObject.ChapterObjectOfBookmarkObject(control.BookmarkObject);

                    Double ChapterProgressMaxValue = control.MangaObject.Chapters.Count,
                           ChapterProgressValue    = control.MangaObject.IndexOfChapterObject(ResumeChapterObject),
                           ChapterProgressStep     = 1 / ChapterProgressMaxValue,
                           ChapterProgress         = ChapterProgressValue / ChapterProgressMaxValue,
                           ChapterSubProgress      = 1;
                    if (control.BookmarkObject.LastPage > 0)
                    {
                        ChapterSubProgress = (Double)control.BookmarkObject.Page / (Double)control.BookmarkObject.LastPage;
                    }
                    // Calculate and round the readers progress for chapters
                    control.ChapterProgress = (Int32)Math.Round((ChapterProgress + (ChapterSubProgress * ChapterProgressStep)) * 100);

                    ChapterObject LastChapterObject = control.MangaObject.Chapters.LastOrDefault();
                    if (!Equals(LastChapterObject, null))
                    {   // If there is a ChapterObject to resume, check to see if there are more chapters/pages to read.
                        control.HasMoreToRead = false;
                        if (!control.HasMoreToRead)
                        {
                            control.HasMoreToRead = control.BookmarkObject.Volume < LastChapterObject.Volume;
                        }
                        if (!control.HasMoreToRead)
                        {
                            control.HasMoreToRead = control.BookmarkObject.Chapter < LastChapterObject.Chapter;
                        }
                        if (!control.HasMoreToRead)
                        {
                            control.HasMoreToRead = control.BookmarkObject.SubChapter < LastChapterObject.SubChapter;
                        }
                        if (!control.HasMoreToRead)
                        {
                            control.HasMoreToRead = control.BookmarkObject.Page < control.BookmarkObject.LastPage;
                        }
                    }
                }
                else
                {
                    control.IsNewManga      = true;
                    control.ChapterProgress = 0;
                    control.HasMoreToRead   = !Equals(ResumeChapterObject, null);
                }

                // Store boolean for if the ResumeChapterObject is null
                Boolean ResumeChapterIsNull          = Equals(ResumeChapterObject, null);
                String  MangaObjectChaptersDirectory = System.IO.Path.Combine(control.App.CORE.CHAPTER_ARCHIVE_DIRECTORY, control.MangaObject.MangaFileName());
                control.ChapterCacheObjects = new List <ChapterCacheObject>(
                    from ChapterObject in control.MangaObject.Chapters
                    select new ChapterCacheObject(control.MangaObject, ChapterObject)
                {
                    // If ResumeChapterIsNull is true, there is no ResumeChapter
                    IsResumeChapter = ResumeChapterIsNull ? false : Equals(ChapterObject, ResumeChapterObject),

                    // Store if the ChapterObject archive exists locally
                    IsLocal = ChapterObject.IsLocal(
                        MangaObjectChaptersDirectory,
                        control.App.CORE.CHAPTER_ARCHIVE_EXTENSION)
                });
            }
            else
            {
                control.IsNewManga      = false;
                control.HasMoreToRead   = false;
                control.ChapterProgress = 0;
            }
        }