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; }
private void GlobalSettingsMenu_Click(object sender, RoutedEventArgs args) { new SettingsWindow(BackupSettings.Default).ShowDialog(); BackupSettings.ReloadDefault(); }