* Moved item filter script directory handling code to new ItemFilterScriptDirectorySerivce class

* Fixed issue #94 where the user was prompted to select their Path of Exile data directory after every upgrade.
* The default Path of Exile data directory is now automatically chosen on first run if it exists
* Moved CommonOpenFileDialog usage to new DialogService class
* Changed Custom Sounds code in ItemFilterScriptViewModel to use ItemFilterScriptDirectory instead of DefaultPathOfExileDirectory
* Moved Custom Sounds code from constructor to Initialise method to prevent the files being enumerated before the directory is set during startup
This commit is contained in:
Ben Wallis
2018-11-27 20:40:00 +00:00
parent 63236769aa
commit fb37faa7bc
13 changed files with 249 additions and 139 deletions

View File

@@ -1,11 +1,7 @@
using System.IO;
using System.Windows;
using Filtration.Common.Services;
using Filtration.Properties;
using Filtration.Properties;
using Filtration.Services;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.CommandWpf;
using Microsoft.WindowsAPICodePack.Dialogs;
namespace Filtration.ViewModels
{
@@ -20,13 +16,11 @@ namespace Filtration.ViewModels
internal class SettingsPageViewModel : ViewModelBase, ISettingsPageViewModel
{
private readonly IItemFilterPersistenceService _itemFilterPersistenceService;
private readonly IMessageBoxService _messageBoxService;
private readonly IItemFilterScriptDirectoryService _itemFilterScriptDirectoryService;
public SettingsPageViewModel(IItemFilterPersistenceService itemFilterPersistenceService, IMessageBoxService messageBoxService)
public SettingsPageViewModel(IItemFilterScriptDirectoryService itemFilterScriptDirectoryService)
{
_itemFilterPersistenceService = itemFilterPersistenceService;
_messageBoxService = messageBoxService;
_itemFilterScriptDirectoryService = itemFilterScriptDirectoryService;
SetItemFilterScriptDirectoryCommand = new RelayCommand(OnSetItemFilterScriptDirectoryCommand);
}
@@ -48,24 +42,8 @@ namespace Filtration.ViewModels
private void OnSetItemFilterScriptDirectoryCommand()
{
using (var dialog = new CommonOpenFileDialog())
{
dialog.IsFolderPicker = true;
var result = dialog.ShowDialog();
if (result == CommonFileDialogResult.Ok)
{
try
{
_itemFilterPersistenceService.SetItemFilterScriptDirectory(dialog.FileName);
RaisePropertyChanged(nameof(DefaultFilterDirectory));
}
catch (DirectoryNotFoundException)
{
_messageBoxService.Show("Error", "The entered Default Filter Directory is invalid or does not exist.",
MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
}
_itemFilterScriptDirectoryService.SetItemFilterScriptDirectory();
RaisePropertyChanged(nameof(DefaultFilterDirectory));
}
}
}