mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
update to WebSearch's custom icon image save behaviour
Load icon image preview on select and only save changes on confirm
This commit is contained in:
parent
203df8f1ae
commit
6cb2cc30a3
4 changed files with 26 additions and 17 deletions
|
|
@ -34,11 +34,6 @@ namespace Flow.Launcher.Plugin.WebSearch
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
public ImageSource Image => ImageLoader.Load(IconPath);
|
|
||||||
|
|
||||||
internal void NotifyImageChange() => OnPropertyChanged(nameof(Image));
|
|
||||||
|
|
||||||
public string Url { get; set; }
|
public string Url { get; set; }
|
||||||
public bool Enabled { get; set; }
|
public bool Enabled { get; set; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@
|
||||||
<TextBlock Margin="10" FontSize="14" Grid.Row="4" Grid.Column="0" VerticalAlignment="Center"
|
<TextBlock Margin="10" FontSize="14" Grid.Row="4" Grid.Column="0" VerticalAlignment="Center"
|
||||||
HorizontalAlignment="Right" Text="{DynamicResource flowlauncher_plugin_websearch_icon}" />
|
HorizontalAlignment="Right" Text="{DynamicResource flowlauncher_plugin_websearch_icon}" />
|
||||||
<StackPanel Orientation="Horizontal" Grid.Row="4" Grid.Column="1" Margin="10">
|
<StackPanel Orientation="Horizontal" Grid.Row="4" Grid.Column="1" Margin="10">
|
||||||
<Image Source="{Binding SearchSource.Image ,IsAsync=True}" Width="24" Height="24" Margin="0 0 20 0" />
|
<Image Name="imgPreviewIcon" Width="24" Height="24" Margin="0 0 20 0" />
|
||||||
<Button Click="OnSelectIconClick" Height="35"
|
<Button Click="OnSelectIconClick" Height="35"
|
||||||
Content="{DynamicResource flowlauncher_plugin_websearch_select_icon}" />
|
Content="{DynamicResource flowlauncher_plugin_websearch_select_icon}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ namespace Flow.Launcher.Plugin.WebSearch
|
||||||
private PluginInitContext _context;
|
private PluginInitContext _context;
|
||||||
private IPublicAPI _api;
|
private IPublicAPI _api;
|
||||||
private SearchSourceViewModel _viewModel;
|
private SearchSourceViewModel _viewModel;
|
||||||
|
private string selectedNewIconImageFullPath;
|
||||||
|
|
||||||
|
|
||||||
public SearchSourceSettingWindow(IList<SearchSource> sources, PluginInitContext context, SearchSource old)
|
public SearchSourceSettingWindow(IList<SearchSource> sources, PluginInitContext context, SearchSource old)
|
||||||
|
|
@ -40,6 +41,8 @@ namespace Flow.Launcher.Plugin.WebSearch
|
||||||
_api = _context.API;
|
_api = _context.API;
|
||||||
|
|
||||||
_viewModel.SetupCustomImagesDirectory();
|
_viewModel.SetupCustomImagesDirectory();
|
||||||
|
|
||||||
|
imgPreviewIcon.Source = _viewModel.LoadPreviewIcon(_searchSource.IconPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnCancelButtonClick(object sender, RoutedEventArgs e)
|
private void OnCancelButtonClick(object sender, RoutedEventArgs e)
|
||||||
|
|
@ -112,6 +115,14 @@ namespace Flow.Launcher.Plugin.WebSearch
|
||||||
var warning = _api.GetTranslation("newActionKeywordsHasBeenAssigned");
|
var warning = _api.GetTranslation("newActionKeywordsHasBeenAssigned");
|
||||||
MessageBox.Show(warning);
|
MessageBox.Show(warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(selectedNewIconImageFullPath))
|
||||||
|
{
|
||||||
|
_viewModel.UpdateIconAttributes(_searchSource, selectedNewIconImageFullPath);
|
||||||
|
|
||||||
|
_viewModel.CopyNewImageToUserDataDirectoryIfRequired(
|
||||||
|
_searchSource, selectedNewIconImageFullPath, _oldSearchSource.IconPath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnSelectIconClick(object sender, RoutedEventArgs e)
|
private void OnSelectIconClick(object sender, RoutedEventArgs e)
|
||||||
|
|
@ -122,17 +133,14 @@ namespace Flow.Launcher.Plugin.WebSearch
|
||||||
var result = dialog.ShowDialog();
|
var result = dialog.ShowDialog();
|
||||||
if (result == true)
|
if (result == true)
|
||||||
{
|
{
|
||||||
var fullpathToSelectedImage = dialog.FileName;
|
selectedNewIconImageFullPath = dialog.FileName;
|
||||||
|
|
||||||
if (_viewModel.ShouldProvideHint(fullpathToSelectedImage))
|
if (!string.IsNullOrEmpty(selectedNewIconImageFullPath))
|
||||||
|
{
|
||||||
|
if (_viewModel.ShouldProvideHint(selectedNewIconImageFullPath))
|
||||||
MessageBox.Show(_api.GetTranslation("flowlauncher_plugin_websearch_iconpath_hint"));
|
MessageBox.Show(_api.GetTranslation("flowlauncher_plugin_websearch_iconpath_hint"));
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(fullpathToSelectedImage))
|
imgPreviewIcon.Source = _viewModel.LoadPreviewIcon(selectedNewIconImageFullPath);
|
||||||
{
|
|
||||||
var fullPathToOriginalImage = _searchSource.IconPath;
|
|
||||||
_viewModel.UpdateIconAttributes(_searchSource, fullpathToSelectedImage);
|
|
||||||
_viewModel.CopyNewImageToUserDataDirectoryIfRequired(
|
|
||||||
_searchSource, fullpathToSelectedImage, fullPathToOriginalImage);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
|
using Flow.Launcher.Infrastructure.Image;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Windows.Media;
|
||||||
|
|
||||||
namespace Flow.Launcher.Plugin.WebSearch
|
namespace Flow.Launcher.Plugin.WebSearch
|
||||||
{
|
{
|
||||||
|
|
@ -40,8 +43,6 @@ namespace Flow.Launcher.Plugin.WebSearch
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
selectedSearchSource.NotifyImageChange();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void SetupCustomImagesDirectory()
|
internal void SetupCustomImagesDirectory()
|
||||||
|
|
@ -54,5 +55,10 @@ namespace Flow.Launcher.Plugin.WebSearch
|
||||||
{
|
{
|
||||||
return Directory.GetParent(fullPathToSelectedImage).ToString() == Main.DefaultImagesDirectory;
|
return Directory.GetParent(fullPathToSelectedImage).ToString() == Main.DefaultImagesDirectory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal ImageSource LoadPreviewIcon(string pathToPreviewIconImage)
|
||||||
|
{
|
||||||
|
return ImageLoader.Load(pathToPreviewIconImage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue