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