diff --git a/Source/LibationAvalonia/ViewModels/MainVM.Import.cs b/Source/LibationAvalonia/ViewModels/MainVM.Import.cs
index 9947a488..de88b2bb 100644
--- a/Source/LibationAvalonia/ViewModels/MainVM.Import.cs
+++ b/Source/LibationAvalonia/ViewModels/MainVM.Import.cs
@@ -20,6 +20,7 @@ namespace LibationAvalonia.ViewModels
private bool _removeButtonsVisible = Design.IsDesignMode;
private int _numAccountsScanning = 2;
private int _accountsCount = 0;
+ public string LocateAudiobooksTip => Configuration.GetHelpText("LocateAudiobooks");
/// Auto scanning accounts is enables
public bool AutoScanChecked { get => _autoScanChecked; set => Configuration.Instance.AutoScan = this.RaiseAndSetIfChanged(ref _autoScanChecked, value); }
@@ -173,8 +174,19 @@ namespace LibationAvalonia.ViewModels
public async Task LocateAudiobooksAsync()
{
- var locateDialog = new LibationAvalonia.Dialogs.LocateAudiobooksDialog();
- await locateDialog.ShowDialog(MainWindow);
+ var result = await MessageBox.Show(
+ MainWindow,
+ Configuration.GetHelpText(nameof(LibationAvalonia.Dialogs.LocateAudiobooksDialog)),
+ "Locate Previously-Liberated Audiobook Files",
+ MessageBoxButtons.OKCancel,
+ MessageBoxIcon.Information,
+ MessageBoxDefaultButton.Button1);
+
+ if (result is DialogResult.OK)
+ {
+ var locateDialog = new LibationAvalonia.Dialogs.LocateAudiobooksDialog();
+ await locateDialog.ShowDialog(MainWindow);
+ }
}
private void setyNumScanningAccounts(int numScanning)
diff --git a/Source/LibationAvalonia/Views/MainWindow.axaml b/Source/LibationAvalonia/Views/MainWindow.axaml
index d34ec041..5934c5a1 100644
--- a/Source/LibationAvalonia/Views/MainWindow.axaml
+++ b/Source/LibationAvalonia/Views/MainWindow.axaml
@@ -110,7 +110,7 @@
-
+
diff --git a/Source/LibationFileManager/Configuration.HelpText.cs b/Source/LibationFileManager/Configuration.HelpText.cs
index 26371122..52a59810 100644
--- a/Source/LibationFileManager/Configuration.HelpText.cs
+++ b/Source/LibationFileManager/Configuration.HelpText.cs
@@ -107,8 +107,27 @@ namespace LibationFileManager
don't have a spatial audio version will be download
as usual based on your other file quality settings.
""" },
- }
- .AsReadOnly();
+ {"LocateAudiobooks","""
+ Scan the contents a folder to find audio files that
+ match books in Libation's database. This is useful
+ if you moved your Books folder or re-installed
+ Libation and want it to be able to find your
+ already downloaded audiobooks.
+
+ Prerequisite: An audiobook must already exist in
+ Libation's database (through an Audible account
+ scan) for a matching audio file to be found.
+ """ },
+ {"LocateAudiobooksDialog","""
+ Libation will search all .m4b and .mp3 files in a folder, looking for audio files belonging to library books in Libation's database.
+
+ If an audiobook file is found that matches one of Libation's library books, Libation will mark that book as "Liberated" (green stoplight).
+
+ For an audio file to be identified, Libation must have that library book in its database. If you're on a fresh installation of Libation, be sure to add and scan all of your Audible accounts before running this action.
+
+ This may take a while, depending on the number of audio files in the folder and the speed of your storage device.
+ """ }
+ }.AsReadOnly();
public static string GetHelpText(string? settingName)
=> settingName != null && HelpText.TryGetValue(settingName, out var value) ? value : "";
diff --git a/Source/LibationWinForms/Form1.ScanManual.cs b/Source/LibationWinForms/Form1.ScanManual.cs
index 93214d63..48333ae0 100644
--- a/Source/LibationWinForms/Form1.ScanManual.cs
+++ b/Source/LibationWinForms/Form1.ScanManual.cs
@@ -17,6 +17,7 @@ namespace LibationWinForms
{
this.Load += refreshImportMenu;
AccountsSettingsPersister.Saved += (_, _) => Invoke(refreshImportMenu, null, null);
+ locateAudiobooksToolStripMenuItem.ToolTipText = Configuration.GetHelpText("LocateAudiobooks");
}
private void refreshImportMenu(object _, EventArgs __)
@@ -96,7 +97,16 @@ namespace LibationWinForms
private void locateAudiobooksToolStripMenuItem_Click(object sender, EventArgs e)
{
- new LocateAudiobooksDialog().ShowDialog();
+ var result = MessageBox.Show(
+ this,
+ Configuration.GetHelpText(nameof(LocateAudiobooksDialog)),
+ "Locate Previously-Liberated Audiobook Files",
+ MessageBoxButtons.OKCancel,
+ MessageBoxIcon.Information,
+ MessageBoxDefaultButton.Button1);
+
+ if (result is DialogResult.OK)
+ new LocateAudiobooksDialog().ShowDialog();
}
}
}