diff --git a/Source/HangoverAvalonia/HangoverAvalonia.csproj b/Source/HangoverAvalonia/HangoverAvalonia.csproj
index e9473042..fa9d602a 100644
--- a/Source/HangoverAvalonia/HangoverAvalonia.csproj
+++ b/Source/HangoverAvalonia/HangoverAvalonia.csproj
@@ -6,7 +6,7 @@
copyused
true
true
-
+ Hangover
true
false
false
diff --git a/Source/HangoverAvalonia/Properties/PublishProfiles/LinuxProfile.pubxml b/Source/HangoverAvalonia/Properties/PublishProfiles/LinuxProfile.pubxml
index a846a327..11791d50 100644
--- a/Source/HangoverAvalonia/Properties/PublishProfiles/LinuxProfile.pubxml
+++ b/Source/HangoverAvalonia/Properties/PublishProfiles/LinuxProfile.pubxml
@@ -3,14 +3,15 @@
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
-
- Release
- Any CPU
- ..\bin\Release\linux-chardonnay
- FileSystem
- net6.0
- linux-x64
- false
- false
-
+
+ Release
+ Any CPU
+ ..\bin\Release\linux-chardonnay
+ FileSystem
+ net6.0
+ linux-x64
+ true
+ false
+ false
+
\ No newline at end of file
diff --git a/Source/HangoverAvalonia/Properties/PublishProfiles/MacOSProfile.pubxml b/Source/HangoverAvalonia/Properties/PublishProfiles/MacOSProfile.pubxml
index 5d1e98f9..b982645c 100644
--- a/Source/HangoverAvalonia/Properties/PublishProfiles/MacOSProfile.pubxml
+++ b/Source/HangoverAvalonia/Properties/PublishProfiles/MacOSProfile.pubxml
@@ -10,7 +10,8 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
FileSystem
net6.0
osx-x64
- false
- false
+ true
+ false
+ false
\ No newline at end of file
diff --git a/Source/LibationAvalonia/App.axaml.cs b/Source/LibationAvalonia/App.axaml.cs
index 016c1f28..c32d82f4 100644
--- a/Source/LibationAvalonia/App.axaml.cs
+++ b/Source/LibationAvalonia/App.axaml.cs
@@ -72,7 +72,6 @@ namespace LibationAvalonia
var SEGOEUI = new Typeface(new FontFamily(new Uri("avares://Libation/Assets/WINGDING.TTF"), "SEGOEUI_Local"));
var gtf = FontManager.Current.GetOrAddGlyphTypeface(SEGOEUI);
-
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
if (SetupRequired)
@@ -115,28 +114,21 @@ namespace LibationAvalonia
// all returns should be preceded by either:
// - if config.LibationSettingsAreValid
// - error message, Exit()
-
- if ((!setupDialog.IsNewUser
- && !setupDialog.IsReturningUser) ||
- !await RunInstall(setupDialog))
+ if (setupDialog.IsNewUser)
+ {
+ setupDialog.Config.SetLibationFiles(Configuration.UserProfile);
+ ShowSettingsWindow(desktop, setupDialog.Config, OnSettingsCompleted);
+ }
+ else if (setupDialog.IsReturningUser)
+ {
+ ShowLibationFilesDialog(desktop, setupDialog.Config, OnLibationFilesCompleted);
+ }
+ else
{
await CancelInstallation();
return;
}
-
- // most migrations go in here
- AppScaffolding.LibationScaffolding.RunPostConfigMigrations(setupDialog.Config);
-
- await MessageBox.VerboseLoggingWarning_ShowIfTrue();
-
-#if !DEBUG
- //AutoUpdater.NET only works for WinForms or WPF application projects.
- //checkForUpdate();
-#endif
- // logging is init'd here
- AppScaffolding.LibationScaffolding.RunPostMigrationScaffolding(setupDialog.Config);
-
}
catch (Exception ex)
{
@@ -152,32 +144,83 @@ namespace LibationAvalonia
}
return;
}
-
- LibraryTask = Task.Run(() => DbContexts.GetLibrary_Flat_NoTracking(includeParents: true));
- AudibleUtilities.AudibleApiStorage.EnsureAccountsSettingsFileExists();
- ShowMainWindow(desktop);
}
- private static async Task RunInstall(SetupDialog setupDialog)
+ private async Task RunMigrationsAsync(Configuration config)
{
- var config = setupDialog.Config;
+ // most migrations go in here
+ AppScaffolding.LibationScaffolding.RunPostConfigMigrations(config);
- if (setupDialog.IsNewUser)
+ await MessageBox.VerboseLoggingWarning_ShowIfTrue();
+
+ // logging is init'd here
+ AppScaffolding.LibationScaffolding.RunPostMigrationScaffolding(config);
+ }
+
+ private void ShowSettingsWindow(IClassicDesktopStyleApplicationLifetime desktop, Configuration config, Action OnClose)
+ {
+ config.Books ??= Path.Combine(Configuration.UserProfile, "Books");
+
+ AppScaffolding.LibationScaffolding.PopulateMissingConfigValues(config);
+
+ var settingsDialog = new SettingsDialog();
+ desktop.MainWindow = settingsDialog;
+ settingsDialog.RestoreSizeAndLocation(Configuration.Instance);
+ settingsDialog.Show();
+
+ void WindowClosing(object sender, System.ComponentModel.CancelEventArgs e)
{
- config.SetLibationFiles(Configuration.UserProfile);
+ settingsDialog.Closing -= WindowClosing;
+ e.Cancel = true;
+ OnClose?.Invoke(desktop, settingsDialog, config);
}
- else if (setupDialog.IsReturningUser)
+ settingsDialog.Closing += WindowClosing;
+ }
+
+ private async void OnSettingsCompleted(IClassicDesktopStyleApplicationLifetime desktop, SettingsDialog settingsDialog, Configuration config)
+ {
+ if (config.LibationSettingsAreValid)
{
+ await RunMigrationsAsync(config);
+ LibraryTask = Task.Run(() => DbContexts.GetLibrary_Flat_NoTracking(includeParents: true));
+ AudibleUtilities.AudibleApiStorage.EnsureAccountsSettingsFileExists();
+ ShowMainWindow(desktop);
+ }
+ else
+ await CancelInstallation();
- var libationFilesDialog = new LibationFilesDialog();
+ settingsDialog.Close();
+ }
- if (await libationFilesDialog.ShowDialog(setupDialog) != DialogResult.OK)
- return false;
- config.SetLibationFiles(libationFilesDialog.SelectedDirectory);
- if (config.LibationSettingsAreValid)
- return true;
+ private void ShowLibationFilesDialog(IClassicDesktopStyleApplicationLifetime desktop, Configuration config, Action OnClose)
+ {
+ var libationFilesDialog = new LibationFilesDialog();
+ desktop.MainWindow = libationFilesDialog;
+ libationFilesDialog.Show();
+ void WindowClosing(object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ libationFilesDialog.Closing -= WindowClosing;
+ e.Cancel = true;
+ OnClose?.Invoke(desktop, libationFilesDialog, config);
+ }
+ libationFilesDialog.Closing += WindowClosing;
+ }
+
+ private async void OnLibationFilesCompleted(IClassicDesktopStyleApplicationLifetime desktop, LibationFilesDialog libationFilesDialog, Configuration config)
+ {
+ config.SetLibationFiles(libationFilesDialog.SelectedDirectory);
+ if (config.LibationSettingsAreValid)
+ {
+ await RunMigrationsAsync(config);
+
+ LibraryTask = Task.Run(() => DbContexts.GetLibrary_Flat_NoTracking(includeParents: true));
+ AudibleUtilities.AudibleApiStorage.EnsureAccountsSettingsFileExists();
+ ShowMainWindow(desktop);
+ }
+ else
+ {
// path did not result in valid settings
var continueResult = await MessageBox.Show(
$"No valid settings were found at this location.\r\nWould you like to create a new install settings in this folder?\r\n\r\n{libationFilesDialog.SelectedDirectory}",
@@ -185,17 +228,13 @@ namespace LibationAvalonia
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
- if (continueResult != DialogResult.Yes)
- return false;
+ if (continueResult == DialogResult.Yes)
+ ShowSettingsWindow(desktop, config, OnSettingsCompleted);
+ else
+ await CancelInstallation();
+
}
-
- // INIT DEFAULT SETTINGS
- // if 'new user' was clicked, or if 'returning user' chose new install: show basic settings dialog
- config.Books ??= Path.Combine(Configuration.UserProfile, "Books");
-
- AppScaffolding.LibationScaffolding.PopulateMissingConfigValues(config);
- return await new SettingsDialog().ShowDialog(setupDialog) == DialogResult.OK
- && config.LibationSettingsAreValid;
+ libationFilesDialog.Close();
}
static async Task CancelInstallation()
diff --git a/Source/LibationAvalonia/Dialogs/LibationFilesDialog.axaml b/Source/LibationAvalonia/Dialogs/LibationFilesDialog.axaml
index 0ddabd5e..b394e510 100644
--- a/Source/LibationAvalonia/Dialogs/LibationFilesDialog.axaml
+++ b/Source/LibationAvalonia/Dialogs/LibationFilesDialog.axaml
@@ -7,6 +7,7 @@
MinWidth="800" MaxWidth="800"
x:Class="LibationAvalonia.Dialogs.LibationFilesDialog"
xmlns:controls="clr-namespace:LibationAvalonia.Controls"
+ WindowStartupLocation="CenterScreen"
Title="Book Details"
Icon="/Assets/libation.ico">
diff --git a/Source/LibationAvalonia/Dialogs/LibationFilesDialog.axaml.cs b/Source/LibationAvalonia/Dialogs/LibationFilesDialog.axaml.cs
index a1ba044f..bdc73730 100644
--- a/Source/LibationAvalonia/Dialogs/LibationFilesDialog.axaml.cs
+++ b/Source/LibationAvalonia/Dialogs/LibationFilesDialog.axaml.cs
@@ -23,6 +23,7 @@ namespace LibationAvalonia.Dialogs
}
private DirSelectOptions dirSelectOptions;
public string SelectedDirectory => dirSelectOptions.Directory;
+ public DialogResult DialogResult { get; private set; }
public LibationFilesDialog()
{
InitializeComponent();
@@ -44,7 +45,8 @@ namespace LibationAvalonia.Dialogs
return;
}
- Close(DialogResult.OK);
+ DialogResult = DialogResult.OK;
+ Close(DialogResult);
}
private void InitializeComponent()
diff --git a/Source/LibationAvalonia/Properties/PublishProfiles/LinuxProfile.pubxml b/Source/LibationAvalonia/Properties/PublishProfiles/LinuxProfile.pubxml
index a846a327..11791d50 100644
--- a/Source/LibationAvalonia/Properties/PublishProfiles/LinuxProfile.pubxml
+++ b/Source/LibationAvalonia/Properties/PublishProfiles/LinuxProfile.pubxml
@@ -3,14 +3,15 @@
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
-
- Release
- Any CPU
- ..\bin\Release\linux-chardonnay
- FileSystem
- net6.0
- linux-x64
- false
- false
-
+
+ Release
+ Any CPU
+ ..\bin\Release\linux-chardonnay
+ FileSystem
+ net6.0
+ linux-x64
+ true
+ false
+ false
+
\ No newline at end of file
diff --git a/Source/LibationAvalonia/Properties/PublishProfiles/MacOSProfile.pubxml b/Source/LibationAvalonia/Properties/PublishProfiles/MacOSProfile.pubxml
index 5d1e98f9..51602bd3 100644
--- a/Source/LibationAvalonia/Properties/PublishProfiles/MacOSProfile.pubxml
+++ b/Source/LibationAvalonia/Properties/PublishProfiles/MacOSProfile.pubxml
@@ -3,14 +3,15 @@
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
-
- Release
- Any CPU
- ..\bin\Release\macos-chardonnay
- FileSystem
- net6.0
- osx-x64
- false
- false
-
+
+ Release
+ Any CPU
+ ..\bin\Release\macos-chardonnay
+ FileSystem
+ net6.0
+ osx-x64
+ true
+ false
+ false
+
\ No newline at end of file
diff --git a/Source/LibationAvalonia/Views/MainWindow/MainWindow.axaml.cs b/Source/LibationAvalonia/Views/MainWindow/MainWindow.axaml.cs
index 64d0dced..e6e747ff 100644
--- a/Source/LibationAvalonia/Views/MainWindow/MainWindow.axaml.cs
+++ b/Source/LibationAvalonia/Views/MainWindow/MainWindow.axaml.cs
@@ -70,7 +70,7 @@ namespace LibationAvalonia.Views
#if !DEBUG
//This is temporaty until we have a solution for linux/mac so that
//Libation doesn't download a zip every time it runs.
- if (!App.IsWindows)
+ if (!LibationScaffolding.IsWindows)
return;
try
@@ -85,15 +85,15 @@ namespace LibationAvalonia.Views
if (result != DialogResult.Yes)
return;
- if (App.IsWindows)
+ if (LibationScaffolding.IsWindows)
{
runWindowsUpgrader(zipFile);
}
- else if (App.IsLinux)
+ else if (LibationScaffolding.IsLinux)
{
}
- else if (App.IsMacOs)
+ else if (LibationScaffolding.IsMacOs)
{
}
diff --git a/Source/LibationCli/Properties/PublishProfiles/LinuxProfile.pubxml b/Source/LibationCli/Properties/PublishProfiles/LinuxProfile.pubxml
index a846a327..11791d50 100644
--- a/Source/LibationCli/Properties/PublishProfiles/LinuxProfile.pubxml
+++ b/Source/LibationCli/Properties/PublishProfiles/LinuxProfile.pubxml
@@ -3,14 +3,15 @@
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
-
- Release
- Any CPU
- ..\bin\Release\linux-chardonnay
- FileSystem
- net6.0
- linux-x64
- false
- false
-
+
+ Release
+ Any CPU
+ ..\bin\Release\linux-chardonnay
+ FileSystem
+ net6.0
+ linux-x64
+ true
+ false
+ false
+
\ No newline at end of file
diff --git a/Source/LibationCli/Properties/PublishProfiles/MacOSProfile.pubxml b/Source/LibationCli/Properties/PublishProfiles/MacOSProfile.pubxml
index 5d1e98f9..51602bd3 100644
--- a/Source/LibationCli/Properties/PublishProfiles/MacOSProfile.pubxml
+++ b/Source/LibationCli/Properties/PublishProfiles/MacOSProfile.pubxml
@@ -3,14 +3,15 @@
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
-
- Release
- Any CPU
- ..\bin\Release\macos-chardonnay
- FileSystem
- net6.0
- osx-x64
- false
- false
-
+
+ Release
+ Any CPU
+ ..\bin\Release\macos-chardonnay
+ FileSystem
+ net6.0
+ osx-x64
+ true
+ false
+ false
+
\ No newline at end of file
diff --git a/Source/LibationCli/Properties/PublishProfiles/WindowsProfile.pubxml b/Source/LibationCli/Properties/PublishProfiles/WindowsProfile.pubxml
index 1490c0a5..24f5783e 100644
--- a/Source/LibationCli/Properties/PublishProfiles/WindowsProfile.pubxml
+++ b/Source/LibationCli/Properties/PublishProfiles/WindowsProfile.pubxml
@@ -3,15 +3,15 @@
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
-
- Release
- Any CPU
- ..\bin\Release\win-chardonnay
- FileSystem
- net6.0
- win-x64
- true
- false
- false
-
+
+ Release
+ Any CPU
+ ..\bin\Release\win-chardonnay
+ FileSystem
+ net6.0
+ win-x64
+ true
+ false
+ false
+
\ No newline at end of file