public DownloadViewModel(DownloadedChapterInfo downloadInfo, ISemaphore downloadSemaphore) { if (downloadInfo == null) throw new ArgumentNullException("downloadInfo"); if (downloadSemaphore == null) throw new ArgumentNullException("downloadSemaphore"); if (downloadInfo.ChapterRecord == null) throw new ArgumentException("Chapter record is invalid.", "downloadInfo"); if (String.IsNullOrEmpty(downloadInfo.ChapterRecord.ChapterId)) throw new ArgumentException("Chapter record id is invalid.", "downloadInfo"); if (downloadInfo.ChapterRecord.MangaRecord == null) throw new ArgumentException("Manga record is invalid.", "downloadInfo"); if (String.IsNullOrEmpty(downloadInfo.ChapterRecord.MangaRecord.MangaId)) throw new ArgumentException("Manga record id is invalid.", "downloadInfo"); _downloadInfo = downloadInfo; _downloadSemaphore = downloadSemaphore; _scraper = ScraperLoader.Instance.AllScrapers.FirstOrDefault(s => s.ScraperGuid == downloadInfo.ChapterRecord.Scraper); if (_scraper != null) { _downloader = _scraper.GetDownloader(); // register downloader events _downloader.DownloadProgress += _downloader_DownloadProgress; _downloader.DownloadCompleted += _downloader_DownloadCompleted; } if (!String.IsNullOrEmpty(_downloadInfo.Path)) { // file was already downloaded State = DownloadState.Unknown; Completed = true; } else { // we will be downloading the file now State = DownloadState.Ok; Completed = false; } CurrentActionText = String.Empty; _cancelDownloadCommand = new RelayCommand(Cancel, x => !Completed); _removeDownloadCommand = new RelayCommand(Remove); _openDownloadCommand = new RelayCommand(Open, x => DownloadExists); _retryDownloadCommand = new RelayCommand(RetryDownload, x => _downloader != null && Completed && !DownloadExists && !String.IsNullOrEmpty(_downloadInfo.DownloadFolder)); CancelText = ButtonCancelText; }
public ChapterViewModel(IChapterRecord chapter, DownloadedChapterInfo downloadInfo) { if (chapter == null) throw new ArgumentNullException("chapter"); _chapterRecord = chapter; _downloadInfo = downloadInfo; }
public ChapterViewModel(IChapterRecord chapter, DownloadedChapterInfo downloadInfo) { if (chapter == null) { throw new ArgumentNullException("chapter"); } _chapterRecord = chapter; _downloadInfo = downloadInfo; }
public bool RemoveDownloadInfo(DownloadedChapterInfo downloadedChapterInfo) { if (downloadedChapterInfo == null) { throw new ArgumentNullException("downloadedChapterInfo"); } if (downloadedChapterInfo.ChapterRecord == null) { throw new ArgumentException("Invalid chapter record.", "downloadedChapterInfo"); } return(_storage.RemoveDownloadInfo(downloadedChapterInfo.ChapterRecord.ChapterId)); }
public bool StoreDownloadInfo(DownloadedChapterInfo downloadedChapterInfo) { return _storage.StoreChapterInfo(downloadedChapterInfo); }
public bool RemoveDownloadInfo(DownloadedChapterInfo downloadedChapterInfo) { if (downloadedChapterInfo == null) throw new ArgumentNullException("downloadedChapterInfo"); if (downloadedChapterInfo.ChapterRecord == null) throw new ArgumentException("Invalid chapter record.", "downloadedChapterInfo"); return _storage.RemoveDownloadInfo(downloadedChapterInfo.ChapterRecord.ChapterId); }
public bool StoreChapterInfo(DownloadedChapterInfo chapterInfo) { if (chapterInfo == null) { throw new ArgumentNullException("chapterInfo"); } if (chapterInfo.ChapterRecord == null) { throw new ArgumentException("Chapter record is invalid.", "chapterInfo"); } if (String.IsNullOrEmpty(chapterInfo.ChapterRecord.ChapterId)) { throw new ArgumentException("Chapter record id is invalid.", "chapterInfo"); } if (chapterInfo.ChapterRecord.MangaRecord == null) { throw new ArgumentException("Manga record is invalid.", "chapterInfo"); } if (String.IsNullOrEmpty(chapterInfo.ChapterRecord.MangaRecord.MangaId)) { throw new ArgumentException("Manga record id is invalid.", "chapterInfo"); } const string insertMangaSql = @"INSERT OR IGNORE INTO Mangas( ScraperId, MangaId, MangaName, Url) VALUES ( @ScraperId, @MangaId, @MangaName, @Url)"; const string insertChapterSql = @"INSERT OR REPLACE INTO Chapters( ScraperId, MangaId, ChapterId, ChapterName, Url, Downloaded, Path, DownloadFolder, FormatProviderId) VALUES ( @ScraperId, @MangaId, @ChapterId, @ChapterName, @Url, @Downloaded, @Path, @DownloadFolder, @FormatProviderId);"; int affectedRows; using (var connection = GetConnection()) using (var transaction = connection.BeginTransaction()) { using (var command = GetTextCommand(insertMangaSql)) { command.Parameters.AddWithValue("@ScraperId", chapterInfo.ChapterRecord.MangaRecord.Scraper); command.Parameters.AddWithValue("@MangaId", chapterInfo.ChapterRecord.MangaRecord.MangaId); command.Parameters.AddWithValue("@MangaName", chapterInfo.ChapterRecord.MangaRecord.MangaName); command.Parameters.AddWithValue("@Url", chapterInfo.ChapterRecord.MangaRecord.Url); ExecuteNonQuery(command, connection, transaction); } using (var command = GetTextCommand(insertChapterSql)) { command.Parameters.AddWithValue("@ScraperId", chapterInfo.ChapterRecord.MangaRecord.Scraper); command.Parameters.AddWithValue("@MangaId", chapterInfo.ChapterRecord.MangaRecord.MangaId); command.Parameters.AddWithValue("@ChapterId", chapterInfo.ChapterRecord.ChapterId); command.Parameters.AddWithValue("@ChapterName", chapterInfo.ChapterRecord.ChapterName); command.Parameters.AddWithValue("@Url", chapterInfo.ChapterRecord.Url); command.Parameters.AddWithValue("@Downloaded", GetDBSafeDateTime(chapterInfo.Downloaded)); command.Parameters.AddWithValue("@Path", chapterInfo.Path); command.Parameters.AddWithValue("@DownloadFolder", chapterInfo.DownloadFolder); command.Parameters.AddWithValue("@FormatProviderId", chapterInfo.DownloadFormatProviderId); affectedRows = ExecuteNonQuery(command, connection, transaction); } CommitTransaction(transaction); } return(affectedRows == 1); }
public DownloadViewModel(DownloadedChapterInfo downloadInfo, ISemaphore downloadSemaphore) { if (downloadInfo == null) { throw new ArgumentNullException("downloadInfo"); } if (downloadSemaphore == null) { throw new ArgumentNullException("downloadSemaphore"); } if (downloadInfo.ChapterRecord == null) { throw new ArgumentException("Chapter record is invalid.", "downloadInfo"); } if (String.IsNullOrEmpty(downloadInfo.ChapterRecord.ChapterId)) { throw new ArgumentException("Chapter record id is invalid.", "downloadInfo"); } if (downloadInfo.ChapterRecord.MangaRecord == null) { throw new ArgumentException("Manga record is invalid.", "downloadInfo"); } if (String.IsNullOrEmpty(downloadInfo.ChapterRecord.MangaRecord.MangaId)) { throw new ArgumentException("Manga record id is invalid.", "downloadInfo"); } _downloadInfo = downloadInfo; _downloadSemaphore = downloadSemaphore; _scraper = ScraperLoader.Instance.AllScrapers.FirstOrDefault(s => s.ScraperGuid == downloadInfo.ChapterRecord.Scraper); if (_scraper != null) { _downloader = _scraper.GetDownloader(); // register downloader events _downloader.DownloadProgress += _downloader_DownloadProgress; _downloader.DownloadCompleted += _downloader_DownloadCompleted; } if (!String.IsNullOrEmpty(_downloadInfo.Path)) { // file was already downloaded State = DownloadState.Unknown; Completed = true; } else { // we will be downloading the file now State = DownloadState.Ok; Completed = false; } CurrentActionText = String.Empty; _cancelDownloadCommand = new RelayCommand(Cancel, x => !Completed); _removeDownloadCommand = new RelayCommand(Remove); _openDownloadCommand = new RelayCommand(Open, x => DownloadExists); _retryDownloadCommand = new RelayCommand(RetryDownload, x => _downloader != null && Completed && !DownloadExists && !String.IsNullOrEmpty(_downloadInfo.DownloadFolder)); CancelText = ButtonCancelText; }
public bool StoreChapterInfo(DownloadedChapterInfo chapterInfo) { if (chapterInfo == null) throw new ArgumentNullException("chapterInfo"); if (chapterInfo.ChapterRecord == null) throw new ArgumentException("Chapter record is invalid.", "chapterInfo"); if (String.IsNullOrEmpty(chapterInfo.ChapterRecord.ChapterId)) throw new ArgumentException("Chapter record id is invalid.", "chapterInfo"); if (chapterInfo.ChapterRecord.MangaRecord == null) throw new ArgumentException("Manga record is invalid.", "chapterInfo"); if (String.IsNullOrEmpty(chapterInfo.ChapterRecord.MangaRecord.MangaId)) throw new ArgumentException("Manga record id is invalid.", "chapterInfo"); const string insertMangaSql = @"INSERT OR IGNORE INTO Mangas( ScraperId, MangaId, MangaName, Url) VALUES ( @ScraperId, @MangaId, @MangaName, @Url)"; const string insertChapterSql = @"INSERT OR REPLACE INTO Chapters( ScraperId, MangaId, ChapterId, ChapterName, Url, Downloaded, Path, DownloadFolder, FormatProviderId) VALUES ( @ScraperId, @MangaId, @ChapterId, @ChapterName, @Url, @Downloaded, @Path, @DownloadFolder, @FormatProviderId);"; int affectedRows; using (var connection = GetConnection()) using (var transaction = connection.BeginTransaction()) { using (var command = GetTextCommand(insertMangaSql)) { command.Parameters.AddWithValue("@ScraperId", chapterInfo.ChapterRecord.MangaRecord.Scraper); command.Parameters.AddWithValue("@MangaId", chapterInfo.ChapterRecord.MangaRecord.MangaId); command.Parameters.AddWithValue("@MangaName", chapterInfo.ChapterRecord.MangaRecord.MangaName); command.Parameters.AddWithValue("@Url", chapterInfo.ChapterRecord.MangaRecord.Url); ExecuteNonQuery(command, connection, transaction); } using (var command = GetTextCommand(insertChapterSql)) { command.Parameters.AddWithValue("@ScraperId", chapterInfo.ChapterRecord.MangaRecord.Scraper); command.Parameters.AddWithValue("@MangaId", chapterInfo.ChapterRecord.MangaRecord.MangaId); command.Parameters.AddWithValue("@ChapterId", chapterInfo.ChapterRecord.ChapterId); command.Parameters.AddWithValue("@ChapterName", chapterInfo.ChapterRecord.ChapterName); command.Parameters.AddWithValue("@Url", chapterInfo.ChapterRecord.Url); command.Parameters.AddWithValue("@Downloaded", GetDBSafeDateTime(chapterInfo.Downloaded)); command.Parameters.AddWithValue("@Path", chapterInfo.Path); command.Parameters.AddWithValue("@DownloadFolder", chapterInfo.DownloadFolder); command.Parameters.AddWithValue("@FormatProviderId", chapterInfo.DownloadFormatProviderId); affectedRows = ExecuteNonQuery(command, connection, transaction); } CommitTransaction(transaction); } return affectedRows == 1; }
public bool StoreDownloadInfo(DownloadedChapterInfo downloadedChapterInfo) { return(_storage.StoreChapterInfo(downloadedChapterInfo)); }