Ejemplo n.º 1
0
        public static ChapterSlots <TResource> CreateChapterSlots <TResource>(this IComicVisiting <TResource> visiting)
        {
            if (visiting is null)
            {
                throw new System.ArgumentNullException(nameof(visiting));
            }

            return(new ChapterSlots <TResource>(visiting));
        }
Ejemplo n.º 2
0
        public static bool IsLoad <TResource>(this IComicVisiting <TResource> visiting)
        {
            if (visiting is null)
            {
                throw new ArgumentNullException(nameof(visiting));
            }

            return(!string.IsNullOrEmpty(visiting.Address));
        }
Ejemplo n.º 3
0
 public VisitingViewModel(
     IComicVisiting <TImage> visiting,
     HttpClient httpClient,
     RecyclableMemoryStreamManager recyclableMemoryStreamManager,
     IStreamImageConverter <TImage> streamImageConverter,
     IObservableCollectionFactory observableCollectionFactory)
 {
     this.streamImageConverter          = streamImageConverter ?? throw new ArgumentNullException(nameof(streamImageConverter));
     this.recyclableMemoryStreamManager = recyclableMemoryStreamManager ?? throw new ArgumentNullException(nameof(recyclableMemoryStreamManager));
     this.httpClient = httpClient ?? throw new ArgumentNullException(nameof(httpClient));
     this.visiting   = visiting ?? throw new ArgumentNullException(nameof(visiting));
     this.observableCollectionFactory = observableCollectionFactory ?? throw new ArgumentNullException(nameof(observableCollectionFactory));
     provider = visiting.Host;
     InitVisiting();
 }
Ejemplo n.º 4
0
 public MAUIVisitingViewModel(IComicVisiting <ImageSource> visiting, HttpClient httpClient, RecyclableMemoryStreamManager recyclableMemoryStreamManager, IStreamImageConverter <ImageSource> streamImageConverter, IObservableCollectionFactory observableCollectionFactory) : base(visiting, httpClient, recyclableMemoryStreamManager, streamImageConverter, observableCollectionFactory)
 {
     MAUIInit();
 }
Ejemplo n.º 5
0
 public StoreBoxVisitingViewModel(IComicVisiting <TImage> visiting, HttpClient httpClient, RecyclableMemoryStreamManager recyclableMemoryStreamManager, IStreamImageConverter <TImage> streamImageConverter, IObservableCollectionFactory observableCollectionFactory)
     : base(visiting, httpClient, recyclableMemoryStreamManager, streamImageConverter, observableCollectionFactory)
 {
 }
Ejemplo n.º 6
0
 public DesktopVisitingViewModel(IComicVisiting <Bitmap> visiting, HttpClient httpClient, RecyclableMemoryStreamManager recyclableMemoryStreamManager, IStreamImageConverter <Bitmap> streamImageConverter, IObservableCollectionFactory observableCollectionFactory)
     : base(visiting, httpClient, recyclableMemoryStreamManager, streamImageConverter, observableCollectionFactory)
 {
     AvalonInit();
 }
Ejemplo n.º 7
0
        public static async Task <IComicVisitPage <TResource>[]> DownloadChapterAsync <TResource>(this IComicVisiting <TResource> visiting,
                                                                                                  int index,
                                                                                                  int concurrent = 1)
        {
            if (visiting is null)
            {
                throw new ArgumentNullException(nameof(visiting));
            }
            if (index < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(index));
            }

            var streamMgr = visiting.Host.GetRequiredService <RecyclableMemoryStreamManager>();
            var mgr       = await visiting.GetChapterManagerAsync(index);

            if (mgr == null || mgr.ChapterWithPage?.Pages == null)
            {
                return(null);
            }
            var workingTask = Enumerable.Range(0, mgr.ChapterWithPage.Pages.Length)
                              .Select(x => new Func <Task <IComicVisitPage <TResource> > >(() => mgr.GetVisitPageAsync(x)))
                              .ToArray();
            var orderMap = Enumerable.Range(0, mgr.ChapterWithPage.Pages.Length)
                           .ToDictionary(x => mgr.ChapterWithPage.Pages[x]);
            var results = await TaskQuene.RunAsync(workingTask, concurrent);

            return(results.OrderBy(x => orderMap[x.Page]).ToArray());
        }
Ejemplo n.º 8
0
        public static async Task <IComicVisitPage <TResource> > GoToPageAsync <TResource>(this IComicVisiting <TResource> visiting, ComicPos pos)
        {
            if (visiting is null)
            {
                throw new ArgumentNullException(nameof(visiting));
            }

            var mgr = await visiting.GetChapterManagerAsync(pos.ChapterIndex);

            var page = await mgr.GetVisitPageAsync(pos.PageIndex);

            return(page);
        }
Ejemplo n.º 9
0
 public ChapterSlots(IComicVisiting <TResource> visiting)
     : base(visiting?.Entity?.Chapters?.Length ?? 0)
 {
     Visiting = visiting ?? throw new System.ArgumentNullException(nameof(visiting));
 }