private async void Initialize() { mainActionProgress = 0; downloadId = null; if (LibgenObject.FileId.HasValue) { LibraryFile file = await MainModel.LoadFileAsync(LibgenObject.FileId.Value); localFilePath = file.FilePath; } else { localFilePath = null; } if (localFilePath != null) { downloadUrl = null; IsMainActionButtonEnabled = true; mainActionButtonMode = MainActionButtonMode.OPEN_FILE; mainActionButtonCaptionOption = MainActionButtonCaptionOption.OPEN; mainActionButtonTooltipOption = MainActionButtonTooltipOption.NO_TOOLTIP; } else { mainActionButtonMode = MainActionButtonMode.START_DOWNLOAD; mainActionButtonCaptionOption = MainActionButtonCaptionOption.DOWNLOAD; if (downloadMirrorName == null) { downloadActionTextOption = DownloadActionTextOption.DOWNLOAD; IsMainActionButtonEnabled = false; mainActionButtonTooltipOption = MainActionButtonTooltipOption.NO_DOWNLOAD_MIRROR; downloadUrl = null; } else { downloadActionTextOption = DownloadActionTextOption.DOWNLOAD_FROM_MIRROR; if (IsInOfflineMode) { IsMainActionButtonEnabled = false; mainActionButtonTooltipOption = MainActionButtonTooltipOption.OFFLINE_MODE_IS_ON; downloadUrl = null; } else { IsMainActionButtonEnabled = true; mainActionButtonTooltipOption = MainActionButtonTooltipOption.NO_TOOLTIP; downloadUrl = GenerateDownloadUrl(MainModel.Mirrors[downloadMirrorName]); } } } UpdateMainActionButtonCaption(); UpdateMainActionButtonTooltip(); UpdateDownloadStatus(MainModel.Downloader.GetDownloadItemByDownloadPageUrl(downloadUrl)); MainModel.Downloader.DownloaderEvent += DownloaderEvent; await InitializeCoverAsync(); }
private void UpdateDownloadStatus(DownloadItem downloadItem) { ExecuteInUiThread(() => { switch (downloadItem.Status) { case DownloadItemStatus.QUEUED: mainActionButtonCaptionOption = MainActionButtonCaptionOption.QUEUED; break; case DownloadItemStatus.DOWNLOADING: case DownloadItemStatus.RETRY_DELAY: mainActionButtonCaptionOption = MainActionButtonCaptionOption.DOWNLOADING; break; case DownloadItemStatus.STOPPED: mainActionButtonCaptionOption = MainActionButtonCaptionOption.STOPPED; break; case DownloadItemStatus.ERROR: mainActionButtonCaptionOption = MainActionButtonCaptionOption.ERROR; break; case DownloadItemStatus.COMPLETED: mainActionButtonCaptionOption = MainActionButtonCaptionOption.OPEN; break; case DownloadItemStatus.REMOVED: mainActionButtonCaptionOption = MainActionButtonCaptionOption.DOWNLOAD; break; } UpdateMainActionButtonCaption(); switch (downloadItem.Status) { case DownloadItemStatus.QUEUED: case DownloadItemStatus.DOWNLOADING: case DownloadItemStatus.RETRY_DELAY: case DownloadItemStatus.STOPPED: case DownloadItemStatus.ERROR: downloadId = downloadItem.Id; mainActionButtonMode = MainActionButtonMode.SELECT_DOWNLOAD; break; case DownloadItemStatus.COMPLETED: localFilePath = Path.Combine(downloadItem.DownloadDirectory, downloadItem.FileName); mainActionButtonMode = MainActionButtonMode.OPEN_FILE; break; case DownloadItemStatus.REMOVED: downloadId = null; localFilePath = null; mainActionButtonMode = MainActionButtonMode.START_DOWNLOAD; break; } if (downloadItem.Status != DownloadItemStatus.REMOVED && downloadItem.DownloadedFileSize.HasValue && downloadItem.TotalFileSize.HasValue && downloadItem.DownloadedFileSize.Value < downloadItem.TotalFileSize.Value) { MainActionProgress = (double)downloadItem.DownloadedFileSize.Value * 100 / downloadItem.TotalFileSize.Value; } else { MainActionProgress = 0; } }); }