Example #1
0
        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();
        }
Example #2
0
        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;
                }
            });
        }