mirror of
https://github.com/rmcrackan/Libation.git
synced 2026-02-18 00:17:43 +01:00
- Move all settings file logic into new LibationFiles class - Configuration.LibationFiles is a singleton instance of the LibationFiles class. - A LibationFiles instance is bound to a single appsettings.json path. All updates to LibationFiles location are updated in that appsettings.json file - Unify initial setup and settings validation process - Add LibationSetup which handles all startup validation of settings files and prompts users for setup if needed - Added a new LibationUiBase.Tests test project with tests for various
62 lines
1.6 KiB
C#
62 lines
1.6 KiB
C#
using LibationFileManager;
|
|
using LibationUiBase;
|
|
using LibationUiBase.Forms;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
|
|
namespace LibationAvalonia.Dialogs
|
|
{
|
|
public partial class LibationFilesDialog : DialogWindow, ILibationInstallLocation
|
|
{
|
|
private class DirSelectOptions
|
|
{
|
|
public List<Configuration.KnownDirectories> KnownDirectories { get; } = new()
|
|
{
|
|
Configuration.KnownDirectories.UserProfile,
|
|
Configuration.KnownDirectories.AppDir,
|
|
Configuration.KnownDirectories.MyDocs
|
|
};
|
|
|
|
public string Directory { get; set; }
|
|
}
|
|
|
|
private readonly DirSelectOptions dirSelectOptions;
|
|
public string SelectedDirectory => dirSelectOptions.Directory;
|
|
|
|
public LibationFilesDialog() : base(saveAndRestorePosition: false)
|
|
{
|
|
InitializeComponent();
|
|
|
|
DataContext = dirSelectOptions = new();
|
|
}
|
|
|
|
public LibationFilesDialog(string initialDir)
|
|
{
|
|
dirSelectOptions = new();
|
|
dirSelectOptions.Directory = Directory.Exists(initialDir) ? initialDir : Configuration.GetKnownDirectoryPath(Configuration.KnownDirectories.UserProfile);
|
|
InitializeComponent();
|
|
|
|
DataContext = dirSelectOptions;
|
|
}
|
|
|
|
public async void Save_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
|
|
{
|
|
|
|
if (!System.IO.Directory.Exists(SelectedDirectory))
|
|
{
|
|
try
|
|
{
|
|
Directory.CreateDirectory(SelectedDirectory);
|
|
}
|
|
catch
|
|
{
|
|
await MessageBox.Show("Not saving change to Libation Files location. This folder does not exist:\r\n" + SelectedDirectory, "Folder does not exist", MessageBoxButtons.OK, MessageBoxIcon.Error, saveAndRestorePosition: false);
|
|
return;
|
|
}
|
|
}
|
|
|
|
await SaveAndCloseAsync();
|
|
}
|
|
}
|
|
}
|