新增关联文件夹菜单功能

This commit is contained in:
huangcan
2023-01-29 15:03:38 +08:00
parent 2fd078f722
commit ce17e7174e
9 changed files with 154 additions and 2 deletions

View File

@@ -90,6 +90,7 @@ namespace GeekDesk.Control.Other
= appData.MenuList[
MainWindow.mainWindow.LeftCard.MenuListBox.SelectedIndex
].IconList;
MainWindow.mainWindow.LeftCard.BuildWatcher();
//显示数据托盘
MainWindow.mainWindow.RightCard.WrapUFG.Visibility = Visibility.Visible;
//取消加密操作

View File

@@ -234,6 +234,20 @@
<TextBlock VerticalAlignment="Center" Text="{Binding TextColor}" Foreground="{Binding TextColor}" Width="100"/>
<Button Content="选择" Margin="0,-10,0,0" Tag="Text" Click="ColorButton_Click"/>
</hc:UniformSpacingPanel>
<hc:Divider LineStrokeDashArray="3,3" LineStroke="Black" Grid.ColumnSpan="4"/>
<hc:UniformSpacingPanel Spacing="10" Grid.ColumnSpan="4">
<TextBlock VerticalAlignment="Center" Text="关联文件夹筛选后缀(以“|”分割):" />
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Grid.ColumnSpan="4">
<hc:TextBox HorizontalAlignment="Left"
VerticalAlignment="Top"
IsReadOnlyCaretVisible="True"
Width="300"
Text="{Binding FilterExt}"
InputMethod.IsInputMethodEnabled="False"
/>
</hc:UniformSpacingPanel>
</StackPanel>
</Grid>

View File

@@ -139,6 +139,7 @@
<hc:Card.ContextMenu>
<ContextMenu Width="200">
<MenuItem Header="新建菜单" Click="CreateMenu"/>
<MenuItem Header="新建关联菜单" Click="CreateFolderMenu"/>
<MenuItem x:Name="AlterPW1" Header="修改密码" Click="AlterPassword"/>
</ContextMenu>
</hc:Card.ContextMenu>
@@ -158,6 +159,7 @@
<ListBox.Resources>
<ContextMenu x:Key="MenuDialog" Width="200">
<MenuItem Header="新建菜单" Click="CreateMenu"/>
<MenuItem Header="新建关联菜单" Click="CreateFolderMenu"/>
<MenuItem Header="重命名" Click="RenameMenu" Tag="{Binding}"/>
<MenuItem Header="加密此列表" Click="EncryptMenu" Tag="{Binding}"/>
<MenuItem x:Name="AlterPW2" Header="修改密码" Click="AlterPassword"/>

View File

@@ -7,11 +7,19 @@ using GeekDesk.ViewModel;
using System;
using System.Collections.ObjectModel;
using System.IO;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
using System.Windows.Input;
using System.Windows.Media;
using DragEventArgs = System.Windows.DragEventArgs;
using KeyEventArgs = System.Windows.Input.KeyEventArgs;
using MenuItem = System.Windows.Controls.MenuItem;
using MouseEventArgs = System.Windows.Input.MouseEventArgs;
using TextBox = System.Windows.Controls.TextBox;
using UserControl = System.Windows.Controls.UserControl;
namespace GeekDesk.Control.UserControls.PannelCard
{
@@ -23,6 +31,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
private int menuSelectIndexTemp = -1;
private AppData appData = MainWindow.appData;
private SolidColorBrush bac = new SolidColorBrush(Color.FromRgb(236, 236, 236));
private FileSystemWatcher Watcher = new FileSystemWatcher();
public LeftCardControl()
@@ -34,9 +43,33 @@ namespace GeekDesk.Control.UserControls.PannelCard
{
SelectLastMenu();
SetMenuListBoxItemEvent();
BindWatcherEvent();
BuildWatcher();
};
}
private void BindWatcherEvent()
{
Watcher.Created += WatcherEvent;
Watcher.Renamed += WatcherEvent;
Watcher.Deleted += WatcherEvent;
}
public void BuildWatcher()
{
MenuInfo menuInfo = appData.MenuList[appData.AppConfig.SelectedMenuIndex];
if (menuInfo.MenuType == MenuTypeEnum.RELATION_FOLDER)
{
Watcher.Path = menuInfo.RelationPath;
}
Watcher.EnableRaisingEvents = menuInfo.MenuType == MenuTypeEnum.RELATION_FOLDER;
}
private void WatcherEvent(object sender, EventArgs e)
{
MenuInfo menuInfo = appData.MenuList[appData.AppConfig.SelectedMenuIndex];
appData.AppConfig.SelectedMenuIcons = menuInfo.IconList;
}
private void SetMenuListBoxItemEvent()
{
@@ -189,7 +222,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
/// <param name="e"></param>
private void CreateMenu(object sender, RoutedEventArgs e)
{
MenuInfo info = new MenuInfo() { MenuEdit = Visibility.Collapsed, MenuId = System.Guid.NewGuid().ToString(), MenuName = "NewMenu" };
MenuInfo info = new MenuInfo() { MenuEdit = Visibility.Collapsed, MenuId = System.Guid.NewGuid().ToString(), MenuName = "NewMenu", MenuType = MenuTypeEnum.NORMAL};
appData.MenuList.Add(info);
MenuListBox.SelectedIndex = appData.MenuList.Count - 1;
appData.AppConfig.SelectedMenuIndex = MenuListBox.SelectedIndex;
@@ -341,6 +374,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
{
MainWindow.mainWindow.RightCard.PDDialog.Visibility = Visibility.Collapsed;
appData.AppConfig.SelectedMenuIcons = appData.MenuList[MenuListBox.SelectedIndex].IconList;
BuildWatcher();
}
}
MainWindow.mainWindow.RightCard.WrapUFG.Visibility = Visibility.Visible;
@@ -599,5 +633,34 @@ namespace GeekDesk.Control.UserControls.PannelCard
}
}
/// <summary>
/// 创建关联文件夹的菜单
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CreateFolderMenu(object sender, RoutedEventArgs e)
{
FolderBrowserDialog dialog = new FolderBrowserDialog();
dialog.RootFolder = Environment.SpecialFolder.Desktop;
if (dialog.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(dialog.SelectedPath))
{
MenuInfo info = new MenuInfo()
{
MenuEdit = Visibility.Collapsed, MenuId = System.Guid.NewGuid().ToString(), MenuName = new DirectoryInfo(dialog.SelectedPath).Name,
MenuType = MenuTypeEnum.RELATION_FOLDER, RelationPath = dialog.SelectedPath
};
appData.MenuList.Add(info);
MenuListBox.SelectedIndex = appData.MenuList.Count - 1;
appData.AppConfig.SelectedMenuIndex = MenuListBox.SelectedIndex;
appData.AppConfig.SelectedMenuIcons = info.IconList;
//首次触发不了Selected事件
object obj = MenuListBox.ItemContainerGenerator.ContainerFromIndex(MenuListBox.SelectedIndex);
SetListBoxItemEvent((ListBoxItem)obj);
Lbi_Selected(obj, null);
}
}
}
}

View File

@@ -207,7 +207,7 @@
<ContextMenu x:Key="IconDialog" Width="200">
<MenuItem Header="管理员方式运行" Click="IconAdminStart" Tag="{Binding}"/>
<MenuItem Header="打开文件所在位置" Click="ShowInExplore" Tag="{Binding}"/>
<MenuItem Header="添加URL项目" Click="AddUrlIcon"/>
<MenuItem Header="添加URL项目" Click="AddUrlIcon" />
<MenuItem Header="添加系统项目" Click="AddSystemIcon"/>
<MenuItem Header="资源管理器菜单" Click="SystemContextMenu" Tag="{Binding}"/>
<MenuItem Header="属性" Click="PropertyConfig" Tag="{Binding}"/>