Пример #1
0
        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);
        }
Пример #2
0
        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);
        }