feat: Update package references and enhance AI extraction service with CSV output functionality
This commit is contained in:
parent
55e8f0face
commit
af74c90ce7
12 changed files with 400 additions and 153 deletions
|
|
@ -17,6 +17,7 @@ public partial class AvaloniaMainWindow : Window
|
|||
private readonly DataModel _model;
|
||||
private readonly PickerPreferenceService _pickerPreferenceService;
|
||||
private bool _isDarkTheme;
|
||||
private bool _startupSettingsRestoreAttempted;
|
||||
|
||||
public AvaloniaMainWindow(DataModel model)
|
||||
{
|
||||
|
|
@ -26,7 +27,11 @@ public partial class AvaloniaMainWindow : Window
|
|||
_pickerPreferenceService = Program.ServiceProvider.GetRequiredService<PickerPreferenceService>();
|
||||
DataContext = _model;
|
||||
|
||||
Opened += (_, _) => SyncThemeStateFromCurrentTheme();
|
||||
Opened += async (_, _) =>
|
||||
{
|
||||
SyncThemeStateFromCurrentTheme();
|
||||
await TryLoadLastSettingsOnStartupAsync();
|
||||
};
|
||||
Closing += AvaloniaMainWindow_Closing;
|
||||
|
||||
// Let DataModel marshal callbacks onto Avalonia UI thread.
|
||||
|
|
@ -120,30 +125,38 @@ public partial class AvaloniaMainWindow : Window
|
|||
|
||||
_model.SaveSettingsRequested += async (_, _) =>
|
||||
{
|
||||
var suggestedStartLocation = await _pickerPreferenceService.TryGetStartFolderAsync(StorageProvider, PickerPreferenceKeys.SettingsFile);
|
||||
var file = await StorageProvider.SaveFilePickerAsync(new FilePickerSaveOptions
|
||||
{
|
||||
Title = "Salva impostazioni",
|
||||
DefaultExtension = "xml",
|
||||
FileTypeChoices = [new FilePickerFileType("Setup") { Patterns = ["*.xml"] }]
|
||||
FileTypeChoices = [new FilePickerFileType("Setup") { Patterns = ["*.xml"] }],
|
||||
SuggestedStartLocation = suggestedStartLocation
|
||||
});
|
||||
|
||||
if (file is not null)
|
||||
{
|
||||
await _model.SaveSettingsToFileAsync(file.Path.LocalPath);
|
||||
_pickerPreferenceService.RememberPath(PickerPreferenceKeys.SettingsFile, file.Path.LocalPath);
|
||||
_pickerPreferenceService.RememberValue(PickerPreferenceKeys.LastSettingsFile, file.Path.LocalPath);
|
||||
}
|
||||
};
|
||||
|
||||
_model.LoadSettingsRequested += async (_, _) =>
|
||||
{
|
||||
var suggestedStartLocation = await _pickerPreferenceService.TryGetStartFolderAsync(StorageProvider, PickerPreferenceKeys.SettingsFile);
|
||||
var files = await StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
|
||||
{
|
||||
Title = "Carica impostazioni",
|
||||
FileTypeFilter = [new FilePickerFileType("Setup") { Patterns = ["*.xml"] }]
|
||||
FileTypeFilter = [new FilePickerFileType("Setup") { Patterns = ["*.xml"] }],
|
||||
SuggestedStartLocation = suggestedStartLocation
|
||||
});
|
||||
|
||||
if (files.Count > 0)
|
||||
{
|
||||
await _model.LoadSettingsFromFileAsync(files[0].Path.LocalPath);
|
||||
_pickerPreferenceService.RememberPath(PickerPreferenceKeys.SettingsFile, files[0].Path.LocalPath);
|
||||
_pickerPreferenceService.RememberValue(PickerPreferenceKeys.LastSettingsFile, files[0].Path.LocalPath);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -165,6 +178,38 @@ public partial class AvaloniaMainWindow : Window
|
|||
|
||||
private bool _isStoppingFaceEncoderForClose;
|
||||
|
||||
private async Task TryLoadLastSettingsOnStartupAsync()
|
||||
{
|
||||
if (_startupSettingsRestoreAttempted)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_startupSettingsRestoreAttempted = true;
|
||||
|
||||
var lastSettingsFile = _pickerPreferenceService.GetRememberedValue(PickerPreferenceKeys.LastSettingsFile);
|
||||
if (string.IsNullOrWhiteSpace(lastSettingsFile))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!File.Exists(lastSettingsFile))
|
||||
{
|
||||
_pickerPreferenceService.ForgetValue(PickerPreferenceKeys.LastSettingsFile);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
await _model.LoadSettingsFromFileAsync(lastSettingsFile);
|
||||
_pickerPreferenceService.RememberPath(PickerPreferenceKeys.SettingsFile, lastSettingsFile);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await ShowMessageDialogAsync("Impostazioni", $"Impossibile caricare il file impostazioni automatico:\n{ex.GetBaseException().Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private async void AvaloniaMainWindow_Closing(object? sender, CancelEventArgs e)
|
||||
{
|
||||
if (_isStoppingFaceEncoderForClose || (!_model.IsFaceEncoderRunning && !_model.IsFaceMatcherRunning))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue