diff --git a/Flow.Launcher.Core/Plugin/PluginManager.cs b/Flow.Launcher.Core/Plugin/PluginManager.cs index 3b4a6e445..f8c9a3f17 100644 --- a/Flow.Launcher.Core/Plugin/PluginManager.cs +++ b/Flow.Launcher.Core/Plugin/PluginManager.cs @@ -48,6 +48,9 @@ namespace Flow.Launcher.Core.Plugin } } + /// + /// Save json and ISavable + /// public static void Save() { foreach (var plugin in AllPlugins) diff --git a/Flow.Launcher.Infrastructure/Image/ImageCache.cs b/Flow.Launcher.Infrastructure/Image/ImageCache.cs index e7b1f46f7..7a2b57637 100644 --- a/Flow.Launcher.Infrastructure/Image/ImageCache.cs +++ b/Flow.Launcher.Infrastructure/Image/ImageCache.cs @@ -28,7 +28,7 @@ namespace Flow.Launcher.Infrastructure.Image private const int permissibleFactor = 2; private SemaphoreSlim semaphore = new(1, 1); - public void Initialization(Dictionary<(string, bool), int> usage) + public void Initialize(Dictionary<(string, bool), int> usage) { foreach (var key in usage.Keys) { diff --git a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs index 0a51d56f9..fee2c60bd 100644 --- a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs +++ b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs @@ -40,6 +40,8 @@ namespace Flow.Launcher.Infrastructure.Image var usage = LoadStorageToConcurrentDictionary(); + ImageCache.Initialize(usage.ToDictionary(x => x.Key, x => x.Value)); + foreach (var icon in new[] { Constant.DefaultIcon, Constant.MissingImgIcon diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 96b114dac..43bd9fd35 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -69,13 +69,11 @@ namespace Flow.Launcher _viewModel.ResultCopy(QueryTextBox.SelectedText); } } - + private async void OnClosing(object sender, CancelEventArgs e) { - _settings.WindowTop = Top; - _settings.WindowLeft = Left; _notifyIcon.Visible = false; - _viewModel.Save(); + App.API.SaveAppAllSettings(); e.Cancel = true; await PluginManager.DisposePluginsAsync(); Notification.Uninstall(); diff --git a/Flow.Launcher/PublicAPIInstance.cs b/Flow.Launcher/PublicAPIInstance.cs index 80addcbee..636699ad0 100644 --- a/Flow.Launcher/PublicAPIInstance.cs +++ b/Flow.Launcher/PublicAPIInstance.cs @@ -77,7 +77,7 @@ namespace Flow.Launcher public void SaveAppAllSettings() { - SavePluginSettings(); + PluginManager.Save(); _mainVM.Save(); _settingsVM.Save(); ImageLoader.Save(); @@ -158,6 +158,9 @@ namespace Flow.Launcher private readonly ConcurrentDictionary _pluginJsonStorages = new(); + /// + /// Save plugin settings. + /// public void SavePluginSettings() { foreach (var value in _pluginJsonStorages.Values) diff --git a/Flow.Launcher/SettingWindow.xaml.cs b/Flow.Launcher/SettingWindow.xaml.cs index f39974142..b80208a0c 100644 --- a/Flow.Launcher/SettingWindow.xaml.cs +++ b/Flow.Launcher/SettingWindow.xaml.cs @@ -226,6 +226,7 @@ namespace Flow.Launcher settings.SettingWindowTop = Top; settings.SettingWindowLeft = Left; viewModel.Save(); + API.SavePluginSettings(); } private void OnCloseExecuted(object sender, ExecutedRoutedEventArgs e) diff --git a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs index 9bdf2db4d..47a5cd672 100644 --- a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs +++ b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs @@ -133,6 +133,9 @@ namespace Flow.Launcher.ViewModel } } + /// + /// Save Flow settings. Plugins settings are not included. + /// public void Save() { foreach (var vm in PluginViewModels) @@ -143,7 +146,6 @@ namespace Flow.Launcher.ViewModel Settings.PluginSettings.Plugins[id].Priority = vm.Priority; } - PluginManager.Save(); _storage.Save(); }