private async Task ShowNotifyIcon(BackupTask task) { int itemsCount = task.Items.Length; if (viewModel.IsHidden) { string balloonTipTextBegin = itemsCount + (itemsCount == 1 ? " Directory" : " Directories"); notifyIcon.ShowBalloonTip(5000, "Backup started.", balloonTipTextBegin, ToolTipIcon.Info); } BackupTaskResult result = await task; if (!viewModel.IsHidden) { return; } TimeSpan backupTimeSpan = DateTime.Now - task.Started; string balloonTipTextEnd = itemsCount + (itemsCount == 1 ? " Directory\n" : " Directories\n") + ConvertTimeSpanToStringLong(backupTimeSpan); switch (result) { case BackupTaskResult.Successful: notifyIcon.ShowBalloonTip(5000, "Backup finished.", balloonTipTextEnd, ToolTipIcon.Info); break; case BackupTaskResult.DestinationFolderNotFound: notifyIcon.ShowBalloonTip(5000, "Destination folder not found.", balloonTipTextEnd, ToolTipIcon.Warning); break; case BackupTaskResult.NoItemsToBackup: notifyIcon.ShowBalloonTip(5000, "No items to backup.", balloonTipTextEnd, ToolTipIcon.Warning); break; case BackupTaskResult.Exception: notifyIcon.ShowBalloonTip(5000, "Backup failed.", task.FailedException.Message, ToolTipIcon.Error); break; case BackupTaskResult.ValidationError: notifyIcon.ShowBalloonTip(5000, "Validation of backup failed.", balloonTipTextEnd, ToolTipIcon.Warning); break; case BackupTaskResult.Canceled: notifyIcon.ShowBalloonTip(5000, "Backup got canceled.", balloonTipTextEnd, ToolTipIcon.Warning); break; } }
private async Task BackupAsync() { if (!btnStartBackup.IsEnabled) { return; } try { btnStartBackup.IsEnabled = btnStartValidation.IsEnabled = false; string destFolderPath = viewModel.BackupDestFolder?.FullName; ICollection <BackupItem> backupItems = viewModel.Config.BackupItems; if (string.IsNullOrWhiteSpace(destFolderPath) || !Directory.Exists(destFolderPath) || backupItems == null || backupItems.Count == 0) { return; } BackupTask task = BackupTask.Run(destFolderPath, backupItems); viewModel.BackupTask = task; BackupTaskResult result = await task; viewModel.Config.UpdateNextScheduledBackup(); if (result == BackupTaskResult.Successful) { await bbc.ReloadBackups(); } } finally { btnStartBackup.IsEnabled = btnStartValidation.IsEnabled = true; } }