private static AutomatedBackupsForm attachToBackupsForm(BackupBook backupBook) { #region create form var automatedBackupsForm = new AutomatedBackupsForm(); #endregion #region define how model actions will affect form behavior void downloadBookBegin(object _, LibraryBook libraryBook) => automatedBackupsForm.AppendText($"Download Step, Begin: {libraryBook.Book}"); void statusUpdate(object _, string str) => automatedBackupsForm.AppendText("- " + str); void downloadBookCompleted(object _, LibraryBook libraryBook) => automatedBackupsForm.AppendText($"Download Step, Completed: {libraryBook.Book}"); void decryptBookBegin(object _, LibraryBook libraryBook) => automatedBackupsForm.AppendText($"Decrypt Step, Begin: {libraryBook.Book}"); // extra line after book is completely finished void decryptBookCompleted(object _, LibraryBook libraryBook) => automatedBackupsForm.AppendText($"Decrypt Step, Completed: {libraryBook.Book}{Environment.NewLine}"); void downloadPdfBegin(object _, LibraryBook libraryBook) => automatedBackupsForm.AppendText($"PDF Step, Begin: {libraryBook.Book}"); // extra line after book is completely finished void downloadPdfCompleted(object _, LibraryBook libraryBook) => automatedBackupsForm.AppendText($"PDF Step, Completed: {libraryBook.Book}{Environment.NewLine}"); #endregion #region subscribe new form to model's events backupBook.DownloadBook.Begin += downloadBookBegin; backupBook.DownloadBook.StatusUpdate += statusUpdate; backupBook.DownloadBook.Completed += downloadBookCompleted; backupBook.DecryptBook.Begin += decryptBookBegin; backupBook.DecryptBook.StatusUpdate += statusUpdate; backupBook.DecryptBook.Completed += decryptBookCompleted; backupBook.DownloadPdf.Begin += downloadPdfBegin; backupBook.DownloadPdf.StatusUpdate += statusUpdate; backupBook.DownloadPdf.Completed += downloadPdfCompleted; #endregion #region when form closes, unsubscribe from model's events // unsubscribe so disposed forms aren't still trying to receive notifications automatedBackupsForm.FormClosing += (_, __) => { backupBook.DownloadBook.Begin -= downloadBookBegin; backupBook.DownloadBook.StatusUpdate -= statusUpdate; backupBook.DownloadBook.Completed -= downloadBookCompleted; backupBook.DecryptBook.Begin -= decryptBookBegin; backupBook.DecryptBook.StatusUpdate -= statusUpdate; backupBook.DecryptBook.Completed -= decryptBookCompleted; backupBook.DownloadPdf.Begin -= downloadPdfBegin; backupBook.DownloadPdf.StatusUpdate -= statusUpdate; backupBook.DownloadPdf.Completed -= downloadPdfCompleted; }; #endregion return(automatedBackupsForm); }
private static BackupBook getWiredUpBackupBook(EventHandler <LibraryBook> completedAction) { var backupBook = new BackupBook(); backupBook.DownloadBook.Begin += (_, __) => wireUpEvents(backupBook.DownloadBook); backupBook.DecryptBook.Begin += (_, __) => wireUpEvents(backupBook.DecryptBook); backupBook.DownloadPdf.Begin += (_, __) => wireUpEvents(backupBook.DownloadPdf); if (completedAction != null) { backupBook.DownloadBook.Completed += completedAction; backupBook.DecryptBook.Completed += completedAction; backupBook.DownloadPdf.Completed += completedAction; } return(backupBook); }