Files
Libation/Source/LibationWinForms/Dialogs/LibationFilesDialog.cs
MBucari e8c911e603 Improve management and validation of Libation settings
- 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
2025-11-17 10:49:23 -07:00

61 lines
1.8 KiB
C#

using LibationFileManager;
using LibationUiBase;
using System;
using System.Windows.Forms;
namespace LibationWinForms.Dialogs
{
public partial class LibationFilesDialog : Form, ILibationInstallLocation
{
public string SelectedDirectory { get; private set; }
public LibationFilesDialog() => InitializeComponent();
private void LibationFilesDialog_Load(object sender, EventArgs e)
{
if (this.DesignMode)
return;
var config = Configuration.Instance;
libationFilesDescLbl.Text = Configuration.GetDescription(nameof(config.LibationFiles));
libationFilesSelectControl.SetSearchTitle("Libation Files");
libationFilesSelectControl.SetDirectoryItems(new()
{
Configuration.KnownDirectories.UserProfile,
Configuration.KnownDirectories.AppDir,
Configuration.KnownDirectories.MyDocs
}, Configuration.KnownDirectories.UserProfile);
var selectedDir = System.IO.Directory.Exists(Configuration.Instance.LibationFiles.Location.PathWithoutPrefix)
? Configuration.Instance.LibationFiles.Location.PathWithoutPrefix
: Configuration.GetKnownDirectoryPath(Configuration.KnownDirectories.UserProfile);
libationFilesSelectControl.SelectDirectory(selectedDir);
}
private void saveBtn_Click(object sender, EventArgs e)
{
var libationDir = libationFilesSelectControl.SelectedDirectory;
if (!System.IO.Directory.Exists(libationDir))
{
MessageBox.Show("Not saving change to Libation Files location. This folder does not exist:\r\n" + libationDir, "Folder does not exist", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
SelectedDirectory = libationDir;
this.DialogResult = DialogResult.OK;
this.Close();
}
private void cancelBtn_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
}
}