private async Task OnSaveCurrentPresetCommand() { // Create preset _logger.Info("Creating preset"); var newPreset = _presetManager.CreateExistingPreset(_game.InstalledLocation); // Validate file count without any binaries if (newPreset.Files.Count() == 0) { var messageDialog = new MessageDialog(Strings.INVALID_PRESET_NO_FILES); await messageDialog.OpenAsync(); _logger.Info(Strings.INVALID_PRESET_NO_FILES); return; } // Prompt name var inputDialog = new InputDialog(Strings.ENTER_A_NEW_NAME); var result = await inputDialog.OpenAsync(); if (result) { using (var dialog = new ProgressDialog(true)) { try { _ = dialog.OpenAsync(); // Save preset _logger.Info("Saving current preset"); newPreset.Name = inputDialog.Value; await _presetManager.SaveCurrentPresetAsync(Paths.GetPresetsDirectory(_game.Module), _game.InstalledLocation, newPreset); // Reload preset newPreset = await _presetManager.GetPresetAsync(Paths.GetPresetsDirectory(_game.Module), newPreset.Name); newPreset.IsActive = true; Presets.Add(newPreset); await OnActivatePresetCommand(newPreset); RaisePropertyChanged(nameof(Presets)); _eventAggregator.GetEvent <ShowSnackbarMessageEvent>().Publish(Strings.PRESET_ADDED); } catch (IdenticalNameException ex) { await new MessageDialog(Strings.AN_ITEM_WITH_THIS_NAME_ALREADY_EXISTS).OpenAsync(); _logger.Debug(ex.Message); } catch (IOException ex) { await new MessageDialog(Strings.INVALID_NAME).OpenAsync(); _logger.Warn(ex); } } } }
private async Task OnSaveCommand() { _logger.Info("Saving preset"); if (string.IsNullOrEmpty(_name) || Items == null || Items.Count == 0) { return; } // Create preset var preset = new Preset { Name = Name, FullPath = Items.Single().Path, // Map paths Files = TreeViewHelper.GetPaths(Items.Single() as DirectoryNode) }; // Save preset using (var dialog = new ProgressDialog(true)) { try { dialog.SetHost(RegionNames.AddPresetDialogHost); _ = dialog.OpenAsync(); await _presetManager.SaveNewPresetAsync(Paths.GetPresetsDirectory(_game.Module), preset); _logger.Info($"Preset {preset.Name} added"); } catch (IdenticalNameException ex) { var messageDialog = new MessageDialog(Strings.AN_ITEM_WITH_THIS_NAME_ALREADY_EXISTS); messageDialog.SetHost(RegionNames.AddPresetDialogHost); await messageDialog.OpenAsync(); _logger.Debug(ex.Message); return; } catch (IOException ex) { var messageDialog = new MessageDialog(Strings.INVALID_NAME); messageDialog.SetHost(RegionNames.AddPresetDialogHost); await messageDialog.OpenAsync(); _logger.Warn(ex); return; } } var dp = new DialogParameters { { "PresetName", preset.Name } }; RequestClose.Invoke(new DialogResult(ButtonResult.OK, dp)); }