From ca19965aa8e66528ef7420a86f3dfd3e675823da Mon Sep 17 00:00:00 2001 From: MakesYT <42534870+MakesYT@users.noreply.github.com> Date: Thu, 2 May 2024 18:12:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=20=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E5=88=97=E8=A1=A8=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=20=E6=94=AF=E6=8C=81=20=E4=BF=AE=E6=94=B9Eve?= =?UTF-8?q?rything=E7=B4=A2=E5=BC=95=E7=9A=84=E6=96=87=E4=BB=B6=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=20=E4=BC=98=E5=8C=96=20=E4=BF=AE=E6=94=B9=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E6=A1=86=E9=BC=A0=E6=A0=87=E6=82=AC=E6=B5=AE=E6=97=B6?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E6=A0=B7=E5=BC=8F=20=E4=BC=98=E5=8C=96=20?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9B=BE=E6=A0=87=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Core.Window/AppTools.cs | 1 + Core.Window/Everything/Tools.cs | 4 +- Core.Window/IconTools.cs | 4 +- Core.Window/SearchItemTool.cs | 4 +- Core/SDKs/Services/Config/KitopiaConfig.cs | 85 +++++++----- KitopiaAvalonia/App.axaml.cs | 8 +- KitopiaAvalonia/Controls/ListShow.axaml | 125 ++++++++++-------- KitopiaAvalonia/Controls/ListShow.axaml.cs | 50 ++++++- .../SearchWindow/ItemNameMatchCtr.cs | 2 +- KitopiaAvalonia/KitopiaAvalonia.csproj | 19 ++- KitopiaAvalonia/Pages/SettingPage.axaml.cs | 34 +++-- KitopiaAvalonia/Windows/SearchWindow.axaml | 25 ++-- PluginCore | 2 +- 13 files changed, 228 insertions(+), 135 deletions(-) diff --git a/Core.Window/AppTools.cs b/Core.Window/AppTools.cs index 26013172..a7e5c1a9 100644 --- a/Core.Window/AppTools.cs +++ b/Core.Window/AppTools.cs @@ -133,6 +133,7 @@ internal static void DelNullFile(ConcurrentDictionary co case FileType.PDF文档: case FileType.PPT文档: { + if (!File.Exists(searchViewItem.OnlyKey)) { toRemove.Add(key); diff --git a/Core.Window/Everything/Tools.cs b/Core.Window/Everything/Tools.cs index 7b5e805b..e23e8de2 100644 --- a/Core.Window/Everything/Tools.cs +++ b/Core.Window/Everything/Tools.cs @@ -31,7 +31,7 @@ public static void main(List Items) public static void amd32(List Items) { Everything32.Everything_Reset(); - Everything32.Everything_SetSearchW("*.docx|*.doc|*.xls|*.xlsx|*.pdf|*.ppt|*.pptx"); + Everything32.Everything_SetSearchW(String.Join("|",ConfigManger.Config!.everythingSearchExtensions)); Everything32.Everything_SetMatchCase(true); Everything32.Everything_QueryW(true); const int bufsize = 260; @@ -48,7 +48,7 @@ public static void amd32(List Items) public static void amd64(List Items) { Everything64.Everything_Reset(); - Everything64.Everything_SetSearchW("*.docx|*.doc|*.xls|*.xlsx|*.pdf|*.ppt|*.pptx"); + Everything64.Everything_SetSearchW(String.Join("|",ConfigManger.Config!.everythingSearchExtensions)); Everything64.Everything_SetMatchCase(true); Everything64.Everything_QueryW(true); const int bufsize = 260; diff --git a/Core.Window/IconTools.cs b/Core.Window/IconTools.cs index e304c42e..77ad6dd5 100644 --- a/Core.Window/IconTools.cs +++ b/Core.Window/IconTools.cs @@ -225,11 +225,11 @@ internal static async Task GetIconAsync(string path, SearchViewItem item) await Task.Run(() => { - retry: + var iconBase = GetIconBase(path, cacheKey); if (iconBase == null) { - goto retry; + return; } var clone = ((Bitmap)iconBase.ToBitmap()).ToAvaloniaBitmap(); diff --git a/Core.Window/SearchItemTool.cs b/Core.Window/SearchItemTool.cs index 53c001c8..d2330dbe 100644 --- a/Core.Window/SearchItemTool.cs +++ b/Core.Window/SearchItemTool.cs @@ -165,8 +165,8 @@ public void OpenFolder(SearchViewItem? searchViewItem) { WeakReferenceMessenger.Default.Send("a", "SearchWindowClose"); var item = (SearchViewItem)searchViewItem; - Log.Debug("打开指定内容文件夹" + item.OnlyKey); - Shell32.ShellExecute(IntPtr.Zero, "open", "explorer.exe", "/select," + item.OnlyKey, "", + Log.Debug($"打开指定内容文件夹{item.OnlyKey}_{item.StartDirectory}"); + Shell32.ShellExecute(IntPtr.Zero, "open", "explorer.exe", "/select," + item.OnlyKey, item.StartDirectory, ShowWindowCommand.SW_SHOW); switch (item.FileType) diff --git a/Core/SDKs/Services/Config/KitopiaConfig.cs b/Core/SDKs/Services/Config/KitopiaConfig.cs index e9e1e8b4..a0a6afd3 100644 --- a/Core/SDKs/Services/Config/KitopiaConfig.cs +++ b/Core/SDKs/Services/Config/KitopiaConfig.cs @@ -7,6 +7,7 @@ using PluginCore; using PluginCore.Attribute; using PluginCore.Config; +// ReSharper disable InconsistentNaming namespace Core.SDKs.Services.Config; @@ -14,45 +15,52 @@ namespace Core.SDKs.Services.Config; public class KitopiaConfig : ConfigBase { private static ILog log = LogManager.GetLogger("KitopiaConfig"); - + + [ConfigField("截图直接复制到剪贴板","截图直接复制到剪贴板,不显示工具栏", 0xE61C,ConfigFieldType.布尔 )] + public bool 截图直接复制到剪贴板 = true; + public List alwayShows = new(); - + [ConfigFieldCategory("基本")] [ConfigField("自动启动","可能被杀毒软件阻止", 0xE61C,ConfigFieldType.布尔 )] public bool autoStart = true; + [ConfigField("自动启动Everything","在Everything未启动时自动启动", 0xE61C,ConfigFieldType.布尔 )] public bool autoStartEverything = true; + [ConfigField("允许程序读取剪贴板","自动读取剪贴板路径和剪贴板图像保存依赖于此权限", 0xF2D7,ConfigFieldType.布尔 )] public bool canReadClipboard = true; - [ConfigField("主题选择","跟随系统,深色还是浅色?", 0xf33c)] - public ThemeEnum themeChoice = ThemeEnum.跟随系统; - public List EnabledPluginInfos = new(); - - - [ConfigFieldCategory("搜索框")] - [ConfigField("搜索框快捷键","显示搜索框快捷键", 0xF4B8,ConfigFieldType.快捷键 )] - public HotKeyModel searchHotKey = new() - { - MainName = "Kitopia", Name = "显示搜索框", IsUsable = true, IsSelectCtrl = false, IsSelectAlt = true, - IsSelectWin = false, - IsSelectShift = false, SelectKey = EKey.空格, - }; - [ConfigField("允许程序调用Everything索引文档","索引文档依赖于此功能", 0xF3AE,ConfigFieldType.布尔 )] - public bool useEverything = true; + public List customCollections = new(); - [ConfigField("最大历史记录","最大历史记录数", 0xF2D7,ConfigFieldType.整数列表 ,null,10,1,1 )] - public int maxHistory = 6; - [ConfigField("输入平滑延时","在指定时间内不处理数据以减轻性能消耗", 0xED9B,ConfigFieldType.整数滑块 ,null,1000,50,10)] - public int inputSmoothingMilliseconds = 50; + public List EnabledPluginInfos = new(); + + public List errorLnk = new(); + public string everythingOnlyKey = ""; + + [ConfigField("允许程序调用Everything索引的文件类型","设置Everything检索的文件类型,注意已索引的项目仅当重启软件后消失", 0xf8cb,ConfigFieldType.字符串列表支持添加 )] + public ObservableCollection everythingSearchExtensions = ["*.docx","*.doc","*.xls","*.xlsx","*.pdf","*.ppt","*.pptx"]; + [ConfigField("忽略项","忽略指定的文件或文件夹", 0xF2D7,ConfigFieldType.字符串列表 )] public ObservableCollection ignoreItems = new(); + + [ConfigField("输入平滑延时","在指定时间内不处理数据以减轻性能消耗", 0xED9B,ConfigFieldType.整数滑块 ,null,1000,50,10)] + public int inputSmoothingMilliseconds = 50; + public Dictionary lastOpens = new(); - public List errorLnk = new(); - public string everythingOnlyKey = ""; - - - + [ConfigField("最大历史记录","最大历史记录数", 0xF2D7,ConfigFieldType.整数列表 ,null,10,1,1 )] + public int maxHistory = 6; + + [ConfigFieldCategory("鼠标快捷操作")] + [ConfigField("鼠标快捷键","修改鼠标快捷菜单激活按键", 0xF4B8 )] + public MouseHookType mouseKey = MouseHookType.鼠标侧键2; + + [ConfigField("鼠标快捷键间隔","按下按键指定时间后触发", 0xED9B,ConfigFieldType.整数滑块 ,null,3000,100,50)] + public int mouseKeyInverval = 1000; + + public List mouseQuickItems = new(); + + [ConfigFieldCategory("截图")] [ConfigField("截图快捷键","修改截图快捷键", 0xF4B8,ConfigFieldType.快捷键 )] public HotKeyModel screenShotHotKey = new() @@ -62,15 +70,20 @@ public class KitopiaConfig : ConfigBase IsSelectShift = false, SelectKey = EKey.Q, }; - [ConfigField("截图直接复制到剪贴板","截图直接复制到剪贴板,不显示工具栏", 0xE61C,ConfigFieldType.布尔 )] - public bool 截图直接复制到剪贴板 = true; - [ConfigFieldCategory("鼠标快捷操作")] - [ConfigField("鼠标快捷键","修改鼠标快捷菜单激活按键", 0xF4B8 )] - public MouseHookType mouseKey = MouseHookType.鼠标侧键2; - [ConfigField("鼠标快捷键间隔","按下按键指定时间后触发", 0xED9B,ConfigFieldType.整数滑块 ,null,3000,100,50)] - public int mouseKeyInverval = 1000; - public List mouseQuickItems = new(); - - + + [ConfigFieldCategory("搜索框")] + [ConfigField("搜索框快捷键","显示搜索框快捷键", 0xF4B8,ConfigFieldType.快捷键 )] + public HotKeyModel searchHotKey = new() + { + MainName = "Kitopia", Name = "显示搜索框", IsUsable = true, IsSelectCtrl = false, IsSelectAlt = true, + IsSelectWin = false, + IsSelectShift = false, SelectKey = EKey.空格, + }; + + [ConfigField("主题选择","跟随系统,深色还是浅色?", 0xf33c)] + public ThemeEnum themeChoice = ThemeEnum.跟随系统; + + [ConfigField("允许程序调用Everything索引文档","索引文档依赖于此功能", 0xF3AE,ConfigFieldType.布尔 )] + public bool useEverything = true; } \ No newline at end of file diff --git a/KitopiaAvalonia/App.axaml.cs b/KitopiaAvalonia/App.axaml.cs index 79e86fe9..db4b865e 100644 --- a/KitopiaAvalonia/App.axaml.cs +++ b/KitopiaAvalonia/App.axaml.cs @@ -26,7 +26,7 @@ using Core.ViewModel.Pages.customScenario; using Core.ViewModel.Pages.plugin; using Core.ViewModel.TaskEditor; - +using HotAvalonia; using Kitopia.Services; using KitopiaAvalonia.Pages; using KitopiaAvalonia.Services; @@ -45,6 +45,7 @@ public partial class App : Application public override void Initialize() { + //this.EnableHotReload(); AvaloniaXamlLoader.Load(this); } @@ -129,9 +130,4 @@ private static IServiceProvider ConfigureServices() return services.BuildServiceProvider(); } - - - - - } \ No newline at end of file diff --git a/KitopiaAvalonia/Controls/ListShow.axaml b/KitopiaAvalonia/Controls/ListShow.axaml index 9e2f7136..846d93b3 100644 --- a/KitopiaAvalonia/Controls/ListShow.axaml +++ b/KitopiaAvalonia/Controls/ListShow.axaml @@ -4,7 +4,7 @@ xmlns:system="clr-namespace:System;assembly=System.Runtime" xmlns:controls1="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"> - + 123 @@ -15,67 +15,84 @@ - + + + + + + + + + + - ItemsSource="{TemplateBinding ItemsSource}"> - - - - - - + + + + + - - - - + + - - + + + + + + + + - diff --git a/KitopiaAvalonia/Controls/ListShow.axaml.cs b/KitopiaAvalonia/Controls/ListShow.axaml.cs index 8d36108b..a2ba4528 100644 --- a/KitopiaAvalonia/Controls/ListShow.axaml.cs +++ b/KitopiaAvalonia/Controls/ListShow.axaml.cs @@ -20,16 +20,59 @@ public class ListShow : ListBox //DelCommand public static readonly StyledProperty DelCommandProperty = AvaloniaProperty.Register(nameof(DelCommand)); + public static readonly StyledProperty WithAddProperty = AvaloniaProperty.Register(nameof(WithAdd),false); + public static readonly StyledProperty AddCommandProperty = AvaloniaProperty.Register(nameof(AddCommand)); + + public static readonly StyledProperty TextValueProperty = AvaloniaProperty.Register(nameof(TextValue)); + + //设置默认DelCommand + public ListShow() + { + SetValue(DelCommandProperty, new RelayCommand(OnDel)); + SetValue(AddCommandProperty, new RelayCommand(OnAdd)); + } + public ICommand DelCommand { get => GetValue(DelCommandProperty); set => SetValue(DelCommandProperty, value); } - //设置默认DelCommand - public ListShow() + + public bool WithAdd { - SetValue(DelCommandProperty, new RelayCommand(OnDel)); + get => GetValue(WithAddProperty); + set => SetValue(WithAddProperty, value); } + + public ICommand AddCommand + { + get => GetValue(AddCommandProperty); + set => SetValue(AddCommandProperty, value); + } + + public string TextValue + { + get => GetValue(TextValueProperty); + set => SetValue(TextValueProperty, value); + } + + //AddCommand执行方法 + private void OnAdd(string? obj) + { + if (string.IsNullOrWhiteSpace(obj)) + { + return; + } + + if (ItemsSource is IList list) + { + list.Add(obj); + TextValue = ""; + } + + + } + //DelCommand执行方法 private void OnDel(string? obj) { @@ -46,5 +89,4 @@ private void OnDel(string? obj) } - } \ No newline at end of file diff --git a/KitopiaAvalonia/Converter/SearchWindow/ItemNameMatchCtr.cs b/KitopiaAvalonia/Converter/SearchWindow/ItemNameMatchCtr.cs index 81a15af0..ccbcb420 100644 --- a/KitopiaAvalonia/Converter/SearchWindow/ItemNameMatchCtr.cs +++ b/KitopiaAvalonia/Converter/SearchWindow/ItemNameMatchCtr.cs @@ -23,7 +23,7 @@ public class ItemNameMatchCtr : IValueConverter return new InlineCollection(); } InlineCollection list = new(); - if (str.PinyinItem ==null||str.PinyinItem.CharMatchResults.Length-str.PinyinItem.ZhongWenCount !=str.PinyinItem.SplitWords.Length|| str.PinyinItem.CharMatchResults.Length==0) + if (str.PinyinItem ==null||str.PinyinItem.CharMatchResults ==null||str.PinyinItem.CharMatchResults.Length-str.PinyinItem.ZhongWenCount !=str.PinyinItem.SplitWords.Length|| str.PinyinItem.CharMatchResults.Length==0) { list.Add(new Run(str.ItemDisplayName)); return list; diff --git a/KitopiaAvalonia/KitopiaAvalonia.csproj b/KitopiaAvalonia/KitopiaAvalonia.csproj index 9ff39980..f4836ae5 100644 --- a/KitopiaAvalonia/KitopiaAvalonia.csproj +++ b/KitopiaAvalonia/KitopiaAvalonia.csproj @@ -29,6 +29,7 @@ true none 0.0.2.044 + 11.1.0-beta2 @@ -42,12 +43,20 @@ + + $(DefineConstants);ENABLE_XAML_HOT_RELOAD + + + + + + + - - - - - + + + + diff --git a/KitopiaAvalonia/Pages/SettingPage.axaml.cs b/KitopiaAvalonia/Pages/SettingPage.axaml.cs index f4f8997e..277b792c 100644 --- a/KitopiaAvalonia/Pages/SettingPage.axaml.cs +++ b/KitopiaAvalonia/Pages/SettingPage.axaml.cs @@ -304,16 +304,32 @@ private void LoadConfig() })); } listShow.ItemsSource= enumerable; - - - - - /*listShowItemsSource.WhenChanged((d) => + SettingsExpander.ItemsSource=new[] { listShow }; + break; + } + case ConfigFieldType.字符串列表支持添加: + { + var listShow = new ListShow(); + listShow.WithAdd = true; + SettingsExpander.Bind(Expander.WidthProperty, new Binding("Bounds.Width") + { + RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor) { - _configBase.OnConfigChanged(fieldInfo.Name,d); - ConfigManger.Save(_configBase.Name); - })*/ - + AncestorType = typeof(SettingsExpander) + }, + Mode = BindingMode.OneWay, + }); + var enumerable = (IEnumerable?)selectedValue; + if (enumerable is ObservableCollection observableCollection) + { + observableCollection.CollectionChanged += ObservableCollectionChange; + disposables.Add( + new AnonymousDisposable(() => + { + observableCollection.CollectionChanged -= ObservableCollectionChange; + })); + } + listShow.ItemsSource= enumerable; SettingsExpander.ItemsSource=new[] { listShow }; break; } diff --git a/KitopiaAvalonia/Windows/SearchWindow.axaml b/KitopiaAvalonia/Windows/SearchWindow.axaml index 5b4681f7..6a75ab46 100644 --- a/KitopiaAvalonia/Windows/SearchWindow.axaml +++ b/KitopiaAvalonia/Windows/SearchWindow.axaml @@ -19,7 +19,7 @@ ShowInTaskbar="False" ExtendClientAreaToDecorationsHint="True" Width="800" - + CanResize="False" SizeToContent="Height" ExtendClientAreaChromeHints="SystemChrome" SystemDecorations="BorderOnly" @@ -63,18 +63,18 @@ PointerMoved="DataGrid_OnPointerMoved" Margin="0,0,0,0"> - + - @@ -128,11 +127,11 @@ - Background="{x:Null}" - FontWeight="Normal" FontSize="18"> + Background="{x:Null}" + FontWeight="Normal" FontSize="18"> - + diff --git a/PluginCore b/PluginCore index 6db6755b..666a3cc3 160000 --- a/PluginCore +++ b/PluginCore @@ -1 +1 @@ -Subproject commit 6db6755bb4bb222a0177f2acf41b695be3e39e49 +Subproject commit 666a3cc38be85a13931f12bd26f61c721942742e