Пример #1
0
        private async Task DownloadCoverImage(ComicData comic, CancellationToken cancelToken = default)
        {
            if (comic == null || comic.Pages.Count() == 0)
            {
                return;
            }

            string url = await ComicUpdater.Instance.GetComicImageUrl(comic.Pages.ElementAt(0), cancelToken);

            if (string.IsNullOrEmpty(url))
            {
                return;
            }

            string filePath = await LocalImageService.DownloadImage(new Uri(url), comic.Id, cancelToken);

            if (string.IsNullOrEmpty(filePath))
            {
                return;
            }

            CoverImage.Source = new FileImageSource {
                File = filePath
            };
        }
Пример #2
0
        public static void DeletingComicDeletesCoverImage()
        {
            var comic = new ComicData();

            database.AddComic(comic);
            string imagePath = LocalImageService.WriteImage(comic.Id, new byte[0]);

            database.DeleteComic(comic);

            Assert.IsFalse(File.Exists(imagePath), "Comic cover image was not deleted.");
        }
Пример #3
0
        private void ComicChanged(ComicData newComic)
        {
            if (newComic != previousComic)
            {
                if (previousComic != null)
                {
                    previousComic.Updated         -= RefreshComic;
                    previousComic.PropertyChanged -= OnComicDataPropertyChanged;
                }

                if (newComic != null)
                {
                    newComic.Updated         += RefreshComic;
                    newComic.PropertyChanged += OnComicDataPropertyChanged;
                }

                previousComic = newComic;
            }

            if (coverImageDownloadCancel != null)
            {
                coverImageDownloadCancel.Cancel();
            }

            if (newComic == null)
            {
                CoverImage.Source = null;
                return;
            }

            // Load cover image
            string coverImagePath = LocalImageService.GetImagePath(newComic.Id);

            // Cover image hasn't been download yet
            if (string.IsNullOrEmpty(coverImagePath))
            {
                coverImageDownloadCancel = new CancellationTokenSource();

                // Download image, and then set image source
                DownloadCoverImage(newComic, coverImageDownloadCancel.Token)
                .SafeFireAndForget();
            }
            else
            {
                // Set image source immediately
                CoverImage.Source = new FileImageSource {
                    File = coverImagePath
                };
            }

            OnComicChanged(newComic);
        }
Пример #4
0
        public LocalImageService CreateImageService()
        {
            var config = new Mock <IConfiguration>();

            config.Setup(c => c["ImagesUploadPath"]).Returns(_tempDirectory);

            var options      = new LocalImageFactoryOptions(config.Object);
            var validator    = new ImageFactoryValidator();
            var imageFactory = new LocalImageFactory(options, validator);

            var imageService = new LocalImageService(Configuration, imageFactory);

            return(imageService);
        }
Пример #5
0
        public override void OnViewCreated(View view, Bundle savedInstanceState)
        {
            base.OnViewCreated(view, savedInstanceState);
            var metrics    = Resources.DisplayMetrics;
            var widthInDp  = ConvertPixelsToDp(metrics.WidthPixels / 2);
            var heightInDp = ConvertPixelsToDp(metrics.HeightPixels / 2);

            iv = (ImageView)view.FindViewById(Resource.Id.imageview_card);
            var t = Task.Run(async() =>
            {
                iv.SetImageBitmap(await LocalImageService.LoadDrawableAsync(Resources, IDIMG, widthInDp, heightInDp));
            });

            t.Wait();
            //Button clicks?
        }
Пример #6
0
        private async Task SetCoverImage()
        {
            if (lastNavigatedWebView == null)
            {
                return;
            }

            // TODO: Expand to work with more sites
            string imageUrl = await lastNavigatedWebView.EvaluateJavaScriptAsync(
                "document.getElementById('cc-comic').getAttribute('src')");

            if (string.IsNullOrEmpty(imageUrl))
            {
                await CoreMethods.DisplayAlert(
                    title : AppResources.Alert_Error_Title,
                    message : AppResources.ImageDownload_LocateError_Msg,
                    cancel : AppResources.Alert_Generic_Confirm);

                return;
            }

            try
            {
                var cancelToken = pageEndCancel.Token;

                // Start download image task so download can progress while user is reading "Download Started" popup
                Task <string> downloadImageTask = LocalImageService.DownloadImage(new Uri(imageUrl), Comic.Id, cancelToken);

                await CoreMethods.DisplayAlert(
                    title : AppResources.ImageDownload_FoundUrl_Title,
                    message : AppResources.ImageDownload_FoundUrl_Msg,
                    cancel : AppResources.Alert_Generic_Confirm);

                await downloadImageTask;

                cancelToken.ThrowIfCancellationRequested();

                await CoreMethods.DisplayAlert(
                    title : AppResources.ImageDownload_Complete_Title,
                    message : AppResources.ImageDownload_Complete_Msg,
                    cancel : AppResources.Alert_Generic_Confirm);
            }
            catch (OperationCanceledException) { }
        }