private void btnConfirm_Click(object sender, EventArgs e) { if (inputSourceID.Text.Length == 0) { MessageBox.Show("Invalid Novel Source ID", "Novel Source ID must not be empty", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!validSource) { MessageBox.Show("Please validate novel source first", "Invalid Novel Source ID", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (novelTitle != novel.NovelTitle) { DialogResult forceAddSourceResult = MessageBox.Show("Title for " + novel.NovelTitle + " is different from title found at specified source. Are you sure you want to add this source?", "Mismatch Title", MessageBoxButtons.YesNo); if (forceAddSourceResult == DialogResult.No) { return; } } string message = ""; bool result = novel.AddSource(source, true, out message); if (!result) { MessageBox.Show(message, "Invalid Source", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } BackgroundService.Instance.novelSourceController.RefreshSourceList(); BackgroundService.Instance.novelSourceController.CloseAddSourceController(); }
/*============Public Function=======*/ public Novel AddNovel(string novelTitle, ISource source, out string message) { foreach (Novel n in _novelList) { if (novelTitle.Equals(n.NovelTitle)) { message = novelTitle + " already exists."; return(null); } } string newNovelLocation = Path.Combine(Configuration.Instance.NovelFolderLocation, novelTitle); if (!Directory.Exists(newNovelLocation)) { Directory.CreateDirectory(newNovelLocation); Directory.CreateDirectory(Path.Combine(newNovelLocation, "audios")); Directory.CreateDirectory(Path.Combine(newNovelLocation, "texts")); File.Create(Path.Combine(newNovelLocation, Configuration.Instance.ReplaceSpecification)); File.Create(Path.Combine(newNovelLocation, Configuration.Instance.DeleteSpecification)); } else { if (!Directory.Exists(Path.Combine(newNovelLocation, "audios"))) { Directory.CreateDirectory(Path.Combine(newNovelLocation, "audios")); } if (!Directory.Exists(Path.Combine(newNovelLocation, "texts"))) { Directory.CreateDirectory(Path.Combine(newNovelLocation, "texts")); } if (!File.Exists(Path.Combine(newNovelLocation, Configuration.Instance.ReplaceSpecification))) { File.Create(Path.Combine(newNovelLocation, Configuration.Instance.ReplaceSpecification)); } if (!File.Exists(Path.Combine(newNovelLocation, Configuration.Instance.DeleteSpecification))) { File.Create(Path.Combine(newNovelLocation, Configuration.Instance.DeleteSpecification)); } } Novel newNovel = new Novel(); using (var transaction = new TransactionScope()) { try { newNovel.NovelTitle = novelTitle; newNovel.LastReadChapterID = -1; newNovel.State = Novel.NovelState.Active; newNovel.Reading = false; newNovel.Rank = GetNonDroppedNovelCount(); libraryData.Novels.InsertOnSubmit(newNovel); libraryData.SubmitChanges(); newNovel.Initiate(); _novelList.Insert(GetNonDroppedNovelCount(), newNovel); UpdateNovelRanking(); string msg; newNovel.AddSource(source, false, out msg); transaction.Complete(); } catch (Exception e) { Console.WriteLine("Unable to add novel"); Console.WriteLine(e.ToString()); message = "Unable to add novel " + novelTitle; return(null); } } message = novelTitle + " successfully added."; return(newNovel); }