diff --git a/ContextMenuManager/BluePointLilac.Methods/ImageExtension.cs b/ContextMenuManager/BluePointLilac.Methods/ImageExtension.cs index f1fa1c99..61561e4b 100644 --- a/ContextMenuManager/BluePointLilac.Methods/ImageExtension.cs +++ b/ContextMenuManager/BluePointLilac.Methods/ImageExtension.cs @@ -20,6 +20,11 @@ public static Image ToTransparent(this Image image, float opacity = 0.5F) return bitmap; } + public static Image ToInferredIcon(this Image image, float opacity = 0.5F) + { + return AppConfig.DimInferredIcons ? image.ToTransparent(opacity) : image; + } + public static Image ResizeImage(this Image image, int width, int height) { //return image.GetThumbnailImage(width, height, null, System.IntPtr.Zero);//质量稍微低一点 diff --git a/ContextMenuManager/Controls/ShellItem.cs b/ContextMenuManager/Controls/ShellItem.cs index a6d3818f..762bf309 100644 --- a/ContextMenuManager/Controls/ShellItem.cs +++ b/ContextMenuManager/Controls/ShellItem.cs @@ -52,7 +52,7 @@ public string RegPath if (List != null) { Image = ItemIcon.ToBitmap(); - if (!HasIcon) Image = Image.ToTransparent(); + if (!HasIcon) Image = Image.ToInferredIcon(); BtnSubItems.Visibility = IsMultiItem ? Visibility.Visible : Visibility.Collapsed; } } @@ -291,7 +291,7 @@ public string ItemCommand { if (!TryProtectOpenItem()) return; Registry.SetValue(CommandPath, "", value); - if (!HasIcon) Image = ItemIcon.ToBitmap().ToTransparent(); + if (!HasIcon) Image = ItemIcon.ToBitmap().ToInferredIcon(); } } @@ -478,7 +478,7 @@ private void DeleteIcon() { IconLocation = null; HasLUAShield = false; - Image = Image.ToTransparent(); + Image = Image.ToInferredIcon(); } private void UseShieldIcon() @@ -494,7 +494,7 @@ private void UseShieldIcon() } else { - Image = Image.ToTransparent(); + Image = Image.ToInferredIcon(); } } } diff --git a/ContextMenuManager/Methods/AppConfig.cs b/ContextMenuManager/Methods/AppConfig.cs index 63d12090..54cefe51 100644 --- a/ContextMenuManager/Methods/AppConfig.cs +++ b/ContextMenuManager/Methods/AppConfig.cs @@ -285,6 +285,12 @@ public static bool HideSysStoreItems set => SetGeneralValue("HideSysStoreItems", value ? 1 : 0); } + public static bool DimInferredIcons + { + get => GetGeneralValue("DimInferredIcons") != "0"; + set => SetGeneralValue("DimInferredIcons", value ? 1 : 0); + } + public static bool RequestUseGithub { get diff --git a/ContextMenuManager/Methods/AppString.cs b/ContextMenuManager/Methods/AppString.cs index e109ea82..f49433f3 100644 --- a/ContextMenuManager/Methods/AppString.cs +++ b/ContextMenuManager/Methods/AppString.cs @@ -378,6 +378,7 @@ public static class Other public static string OpenMoreExplorer { get; set; } public static string HideDisabledItems { get; set; } public static string HideSysStoreItems { get; set; } + public static string DimInferredIcons { get; set; } public static string SetPerceivedType { get; set; } public static string SetDefaultDropEffect { get; set; } public static string TopMost { get; set; } diff --git a/ContextMenuManager/Properties/Resources/Texts/AppLanguageDic.ini b/ContextMenuManager/Properties/Resources/Texts/AppLanguageDic.ini index f67e3238..ccce4b26 100644 --- a/ContextMenuManager/Properties/Resources/Texts/AppLanguageDic.ini +++ b/ContextMenuManager/Properties/Resources/Texts/AppLanguageDic.ini @@ -324,6 +324,7 @@ CustomEngine = 自定义 SetCustomEngine = 设置搜索引擎 (以 %s 代替搜索关键词) HideDisabledItems = 隐藏已禁用的菜单项目 HideSysStoreItems = 隐藏公共引用中的系统菜单 +DimInferredIcons = 对推测的图标使用半透明效果 SetPerceivedType = 设置扩展名为 %s 的文件感知类型为 SetDefaultDropEffect = 设置文件对象默认拖拽命令为 TopMost = 使窗口始终在屏幕最上方 diff --git a/ContextMenuManager/Views/AppSettingView.xaml b/ContextMenuManager/Views/AppSettingView.xaml index f2b2a760..3f520151 100644 --- a/ContextMenuManager/Views/AppSettingView.xaml +++ b/ContextMenuManager/Views/AppSettingView.xaml @@ -314,6 +314,27 @@ OnContent="" Toggled="HideSysStoreItemsCheckBox_OnChanged" /> + + + + + + + + + + + + + diff --git a/ContextMenuManager/Views/AppSettingView.xaml.cs b/ContextMenuManager/Views/AppSettingView.xaml.cs index cd733568..d548a754 100644 --- a/ContextMenuManager/Views/AppSettingView.xaml.cs +++ b/ContextMenuManager/Views/AppSettingView.xaml.cs @@ -40,6 +40,7 @@ public void RefreshFromConfig() OpenMoreExplorerCheckBox.IsOn = AppConfig.OpenMoreExplorer; HideDisabledItemsCheckBox.IsOn = AppConfig.HideDisabledItems; HideSysStoreItemsCheckBox.IsOn = AppConfig.HideSysStoreItems; + DimInferredIconsCheckBox.IsOn = AppConfig.DimInferredIcons; var showHideSysStore = WinOsVersion.Current >= WinOsVersion.Win7; HideSysStoreRow.Visibility = showHideSysStore ? Visibility.Visible : Visibility.Collapsed; @@ -110,6 +111,8 @@ private void LoadLabels() HideSysStoreItemsLabel.Text = AppString.Other.HideSysStoreItems; + DimInferredIconsLabel.Text = AppString.Other.DimInferredIcons; + LoadDynamicOptions(); } @@ -282,6 +285,14 @@ private void HideSysStoreItemsCheckBox_OnChanged(object sender, RoutedEventArgs } } + private void DimInferredIconsCheckBox_OnChanged(object sender, RoutedEventArgs e) + { + if (!isLoading) + { + AppConfig.DimInferredIcons = DimInferredIconsCheckBox.IsOn; + } + } + private static int GetUpdateSelectIndex() { return AppConfig.UpdateFrequency switch diff --git a/languages/en-US.ini b/languages/en-US.ini index 51c27e04..5b651135 100644 --- a/languages/en-US.ini +++ b/languages/en-US.ini @@ -328,6 +328,7 @@ CustomEngine = Custom... SetCustomEngine = Define search engine (use %s instead of search keywords) HideDisabledItems = Hide disabled items HideSysStoreItems = Hide system store items +DimInferredIcons = Dim icons inferred from the item's command SetPerceivedType = Set %s perceived type... SetDefaultDropEffect = Set default drop effect TopMost = Always on top diff --git a/languages/zh-CN.ini b/languages/zh-CN.ini index f67e3238..ccce4b26 100644 --- a/languages/zh-CN.ini +++ b/languages/zh-CN.ini @@ -324,6 +324,7 @@ CustomEngine = 自定义 SetCustomEngine = 设置搜索引擎 (以 %s 代替搜索关键词) HideDisabledItems = 隐藏已禁用的菜单项目 HideSysStoreItems = 隐藏公共引用中的系统菜单 +DimInferredIcons = 对推测的图标使用半透明效果 SetPerceivedType = 设置扩展名为 %s 的文件感知类型为 SetDefaultDropEffect = 设置文件对象默认拖拽命令为 TopMost = 使窗口始终在屏幕最上方