private async void Initialize() { downloadProgress = 0; downloadButtonAction = DownloadButtonAction.START_DOWNLOAD; downloadId = null; downloadedFilePath = null; InitializeLibgenObject(); UpdateDownloadStatus(MainModel.Downloader.GetDownloadItemByDownloadPageUrl(downloadUrl)); MainModel.Downloader.DownloaderEvent += DownloaderEvent; await InitializeCoverAsync(); }
private void UpdateDownloadStatus(DownloadItem downloadItem) { if (downloadItem != null && downloadItem.DownloadPageUrl == downloadUrl) { ExecuteInUiThread(() => { switch (downloadItem.Status) { case DownloadItemStatus.QUEUED: downloadButtonCaptionOption = DownloadButtonCaptionOption.QUEUED; break; case DownloadItemStatus.DOWNLOADING: case DownloadItemStatus.RETRY_DELAY: downloadButtonCaptionOption = DownloadButtonCaptionOption.DOWNLOADING; break; case DownloadItemStatus.STOPPED: downloadButtonCaptionOption = DownloadButtonCaptionOption.STOPPED; break; case DownloadItemStatus.ERROR: downloadButtonCaptionOption = DownloadButtonCaptionOption.ERROR; break; case DownloadItemStatus.COMPLETED: downloadButtonCaptionOption = DownloadButtonCaptionOption.OPEN; break; case DownloadItemStatus.REMOVED: downloadButtonCaptionOption = DownloadButtonCaptionOption.DOWNLOAD; break; } UpdateDownloadButtonCaption(); switch (downloadItem.Status) { case DownloadItemStatus.QUEUED: case DownloadItemStatus.DOWNLOADING: case DownloadItemStatus.RETRY_DELAY: case DownloadItemStatus.STOPPED: case DownloadItemStatus.ERROR: downloadId = downloadItem.Id; downloadButtonAction = DownloadButtonAction.SELECT_DOWNLOAD; break; case DownloadItemStatus.COMPLETED: downloadedFilePath = Path.Combine(downloadItem.DownloadDirectory, downloadItem.FileName); downloadButtonAction = DownloadButtonAction.OPEN_FILE; break; case DownloadItemStatus.REMOVED: downloadId = null; downloadedFilePath = null; downloadButtonAction = DownloadButtonAction.START_DOWNLOAD; break; } if (downloadItem.Status != DownloadItemStatus.REMOVED && downloadItem.DownloadedFileSize.HasValue && downloadItem.TotalFileSize.HasValue && downloadItem.DownloadedFileSize.Value < downloadItem.TotalFileSize.Value) { DownloadProgress = (double)downloadItem.DownloadedFileSize.Value * 100 / downloadItem.TotalFileSize.Value; } else { DownloadProgress = 0; } }); } }