Example #1
0
        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;
            }
        }
Example #2
0
        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;
            }
        }