示例#1
0
        private async void RestoreButton_ClickAsync(object sender, RoutedEventArgs args)
        {
            if (!Directory.Exists(originPath.Text.Trim()) && !(copyAttributesOnDatabaseCheck.IsChecked && copyOnlyAttributesCheck.IsChecked))
            {
                MessageBox.Show($"{originPathLabel.Content}が不正です。\n正しいディレクトリパスを入力してください。",
                                $"{App.AssemblyName.Name} - 警告",
                                MessageBoxButton.OK,
                                MessageBoxImage.Warning);
                return;
            }

            RestoreButton.IsEnabled = false;
            progressBar.Visibility  = Visibility.Visible;
            BackupSettings settings = LoadCurrentSettings;

            if (settings.IsRecordPassword && settings.IsDifferentPassword(password.Password))
            {
                var changePassword = MessageBox.Show("入力されたパスワードが保存されているパスワードと異なります。\nこのまま続行しますか?",
                                                     $"{App.AssemblyName.Name} - パスワードの確認",
                                                     MessageBoxButton.YesNo,
                                                     MessageBoxImage.Information);
                switch (changePassword)
                {
                case MessageBoxResult.Yes:
                    break;

                case MessageBoxResult.No:
                default:
                    MessageBox.Show("リストアを中止します。");
                    RestoreButton.IsEnabled = true;
                    progressBar.Visibility  = Visibility.Collapsed;
                    return;
                }
            }

            Message.Text  = $"'{originPath.Text.Trim()}' => '{destPath.Text.Trim()}'";
            Message.Text += $"\nリストア開始: {DateTime.Now}\n";
            var restore = new RestoreController(originPath.Text.Trim(),
                                                destPath.Text.Trim(),
                                                password.Password,
                                                settings,
                                                copyAttributesOnDatabaseCheck.IsChecked,
                                                copyOnlyAttributesCheck.IsChecked,
                                                isEnableWriteDatabaseCheck.IsChecked);
            var m = Message.Text;

            restore.Results.MessageChanged += (_, _) =>
            {
                _ = Dispatcher.InvokeAsync(() => { Message.Text = m + restore.Results.Message + "\n"; },
                                           DispatcherPriority.ApplicationIdle);
            };
            await Task.Run(() => restore.StartRestore());

            RestoreButton.IsEnabled = true;
            progressBar.Visibility  = Visibility.Collapsed;
        }
示例#2
0
 private void GlobalSettingsMenu_Click(object sender, RoutedEventArgs args)
 {
     new SettingsWindow(BackupSettings.Default).ShowDialog();
     BackupSettings.ReloadDefault();
 }