跳到主要内容

github/tai

公开

Tai · Windows 软件与网站使用时长统计。上游 Planshit/Tai 的源码镜像,非灵栈原创;MIT 许可。来源:https://github.com/Planshit/Tai 。本次为手动同步,暂不提供安装包。

提交记录
修改Core/Models/CategoryModel.cs+24 −1看文件
@@ -1,6 +1,8 @@
1删除:using System;
1新增:using Newtonsoft.Json;
2新增:using System;
23using System.Collections.Generic;
34using System.ComponentModel.DataAnnotations;
5新增:using System.ComponentModel.DataAnnotations.Schema;
46using System.Linq;
57using System.Text;
68using System.Threading.Tasks;
@@ -28,5 +30,26 @@ namespace Core.Models
2830 /// 颜色
2931 /// </summary>
3032 public string Color { get; set; }
33新增: /// <summary>
34新增: /// 是否启用目录匹配
35新增: /// </summary>
36新增: public bool IsDirectoryMath { get; set; } = false;
37新增: /// <summary>
38新增: /// 匹配目录(Json List string)
39新增: /// </summary>
40新增: public string Directories { get; set; }
41新增:
42新增: /// <summary>
43新增: /// 匹配目录集合(已解析)
44新增: /// </summary>
45新增: [NotMapped]
46新增: public List<string> DirectoryList
47新增: {
48新增: get
49新增: {
50新增: if (string.IsNullOrEmpty(Directories)) return new List<string>();
51新增: return JsonConvert.DeserializeObject<List<string>>(Directories);
52新增: }
53新增: }
3154 }
3255}
修改Core/Properties/AssemblyInfo.cs+2 −2看文件
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
3232//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
3333//通过使用 "*",如下所示:
3434// [assembly: AssemblyVersion("1.0.*")]
35删除:[assembly: AssemblyVersion("1.1.0.4")]
36删除:[assembly: AssemblyFileVersion("1.1.0.4")]
35新增:[assembly: AssemblyVersion("1.1.0.5")]
36新增:[assembly: AssemblyFileVersion("1.1.0.5")]
修改Core/Servicers/Instances/Main.cs+52 −1看文件
@@ -471,6 +471,8 @@ namespace Core.Servicers.Instances
471471 // 关联进程更新
472472 HandleLinks(app.Process, duration, startTime);
473473 OnUpdateTime?.Invoke(this, null);
474新增: // 自动分类
475新增: DispatchCateogry(app.Process, app.ExecutablePath);
474476 }
475477 }
476478 catch (Exception ex)
@@ -506,7 +508,56 @@ namespace Core.Servicers.Instances
506508 string path = await FaviconDownloader.DownloadAsync(args.Icon, saveName);
507509 _webData.UpdateUrlFavicon(site, path);
508510 });
509删除: }catch(Exception ex)
511新增: }
512新增: catch (Exception ex)
513新增: {
514新增: Logger.Error(ex.ToString());
515新增: }
516新增: }
517新增: #endregion
518新增:
519新增: #region 自动分类
520新增: /// <summary>
521新增: /// 自动分类
522新增: /// </summary>
523新增: /// <param name="processName_">进程名称</param>
524新增: private void DispatchCateogry(string processName_, string executablePath_)
525新增: {
526新增: try
527新增: {
528新增: AppModel app = appData.GetApp(processName_);
529新增: if (app != null)
530新增: {
531新增: var categoryList = categories.GetCategories().Where(c => c.IsDirectoryMath && c.DirectoryList.Count > 0).ToList();
532新增: CategoryModel mathCategory = null;
533新增: foreach (var category in categoryList)
534新增: {
535新增: if (mathCategory != null)
536新增: {
537新增: break;
538新增: }
539新增: foreach (var item in category.DirectoryList)
540新增: {
541新增: string path = item.Replace("\\", "\\\\");
542新增: if (Regex.IsMatch(executablePath_, @"^" + path))
543新增: {
544新增: mathCategory = category;
545新增: Debug.WriteLine("匹配成功:" + category.Name);
546新增: break;
547新增: }
548新增: }
549新增:
550新增: }
551新增: if (mathCategory != null)
552新增: {
553新增: // 匹配成功
554新增: app.Category = mathCategory;
555新增: app.CategoryID = mathCategory.ID;
556新增: appData.UpdateApp(app);
557新增: }
558新增: }
559新增: }
560新增: catch (Exception ex)
510561 {
511562 Logger.Error(ex.ToString());
512563 }
修改UI/App.xaml+0 −8看文件
@@ -16,14 +16,6 @@
1616 <Setter Property="FontFamily" Value="Segoe UI, Microsoft YaHei UI" />
1717 </Style>
1818
19删除: <Style TargetType="{x:Type ScrollViewer}">
20删除: <EventSetter Event="PreviewMouseWheel" Handler="ScrollViewer_PreviewMouseWheel"/>
21删除: <Setter Property="PanningMode" Value="VerticalFirst"/>
22删除:
23删除: <!--阻止触摸拉到尽头时的弹簧效果-->
24删除: <EventSetter Event="ManipulationBoundaryFeedback" Handler="ScrollViewer_ManipulationBoundaryFeedback"/>
25删除: </Style>
26删除:
2719 <ResourceDictionary.MergedDictionaries>
2820 <ResourceDictionary Source="/Tai;component/Resources/Themes/Light.xaml"/>
2921 <ResourceDictionary Source="/Tai;component/Resources/Themes/Common.xaml"/>
修改UI/App.xaml.cs+0 −23看文件
@@ -176,28 +176,5 @@ namespace UI
176176 // 创建保活窗口
177177 keepaliveWindow = new HideWindow();
178178 }
179删除:
180删除: private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
181删除: {
182删除: try
183删除: {
184删除: if (System.Windows.Forms.SystemInformation.MouseWheelScrollLines == -1)
185删除: {
186删除: e.Handled = false;
187删除: }
188删除: else
189删除: {
190删除: System.Windows.Controls.ScrollViewer SenderScrollViewer = (System.Windows.Controls.ScrollViewer)sender;
191删除: SenderScrollViewer.ScrollToVerticalOffset(SenderScrollViewer.VerticalOffset - e.Delta * 10 * System.Windows.Forms.SystemInformation.MouseWheelScrollLines / (double)120);
192删除: e.Handled = true;
193删除: }
194删除: }
195删除: catch { }
196删除: }
197删除:
198删除: private void ScrollViewer_ManipulationBoundaryFeedback(object sender, System.Windows.Input.ManipulationBoundaryFeedbackEventArgs e)
199删除: {
200删除: e.Handled = true;
201删除: }
202179 }
203180}
修改UI/Controls/List/BaseList.cs+9 −0看文件
@@ -22,6 +22,7 @@ namespace UI.Controls.List
2222 if (e.NewValue != e.OldValue)
2323 {
2424 control.Render();
25新增: control.AddCollectionChangedHandler();
2526 }
2627 }
2728
@@ -52,6 +53,14 @@ namespace UI.Controls.List
5253 DefaultStyleKey = typeof(BaseList);
5354 Items = new ObservableCollection<string>();
5455 ItemsMap = new List<BaseListItem>();
56新增: AddCollectionChangedHandler();
57新增: }
58新增:
59新增: private void AddCollectionChangedHandler()
60新增: {
61新增: if (Items == null) return;
62新增:
63新增: Items.CollectionChanged -= Items_CollectionChanged;
5564 Items.CollectionChanged += Items_CollectionChanged;
5665 }
5766
修改UI/Controls/Toggle/Toggle.cs+9 −3看文件
@@ -23,10 +23,16 @@ namespace UI.Controls.Toggle
2323 private static void OnIsCheckedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
2424 {
2525 var control = d as Toggle;
26删除:
26新增:
2727 VisualStateManager.GoToState(control, control.IsChecked ? "On" : "Off", true);
2828 }
29删除:
29新增: public ToggleTextPosition TextPosition
30新增: {
31新增: get { return (ToggleTextPosition)GetValue(TextPositionProperty); }
32新增: set { SetValue(TextPositionProperty, value); }
33新增: }
34新增: public static readonly DependencyProperty TextPositionProperty =
35新增: DependencyProperty.Register("TextPosition", typeof(ToggleTextPosition), typeof(Toggle), new PropertyMetadata(ToggleTextPosition.Right));
3036 public string OnText
3137 {
3238 get { return (string)GetValue(OnTextProperty); }
@@ -59,7 +65,7 @@ namespace UI.Controls.Toggle
5965 {
6066 base.OnApplyTemplate();
6167 }
62删除:
68新增:
6369 protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
6470 {
6571 base.OnMouseLeftButtonUp(e);
新增UI/Controls/Toggle/ToggleTextPosition.cs+23 −0看文件
@@ -0,0 +1,23 @@
1新增:using System;
2新增:using System.Collections.Generic;
3新增:using System.Linq;
4新增:using System.Text;
5新增:using System.Threading.Tasks;
6新增:
7新增:namespace UI.Controls.Toggle
8新增:{
9新增: /// <summary>
10新增: /// 开关文本位置
11新增: /// </summary>
12新增: public enum ToggleTextPosition
13新增: {
14新增: /// <summary>
15新增: /// 左
16新增: /// </summary>
17新增: Left,
18新增: /// <summary>
19新增: /// 右
20新增: /// </summary>
21新增: Right
22新增: }
23新增:}
修改UI/Models/CategoryPageModel.cs+15 −1看文件
@@ -47,7 +47,21 @@ namespace UI.Models
4747 get { return EditIconFile_; }
4848 set { EditIconFile_ = value; OnPropertyChanged(); }
4949 }
50删除:
50新增: private bool EditIsDirectoryMath_;
51新增: /// <summary>
52新增: /// 是否启用目录匹配
53新增: /// </summary>
54新增: public bool EditIsDirectoryMath { get { return EditIsDirectoryMath_; } set { EditIsDirectoryMath_ = value; OnPropertyChanged(); } }
55新增: private ObservableCollection<string> EditDirectories_ = new ObservableCollection<string>();
56新增: /// <summary>
57新增: /// 匹配目录
58新增: /// </summary>
59新增: public ObservableCollection<string> EditDirectories { get { return EditDirectories_; } set { EditDirectories_ = value; OnPropertyChanged(); } }
60新增: private string EditSelectedDirectory_;
61新增: /// <summary>
62新增: /// 当前列表选择目录
63新增: /// </summary>
64新增: public string EditSelectedDirectory { get { return EditSelectedDirectory_; } set { EditSelectedDirectory_ = value; OnPropertyChanged(); } }
5165 private string EditErrorText_;
5266 public string EditErrorText
5367 {
修改UI/Themes/Toggle/Toggle.xaml+31 −11看文件
@@ -14,18 +14,22 @@
1414 <Border x:Name="Border" Background="{TemplateBinding Background}" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" CornerRadius="4" Margin="{TemplateBinding Margin}">
1515 <Grid>
1616 <Grid.ColumnDefinitions>
17新增: <ColumnDefinition Width="auto"/>
1718 <ColumnDefinition Width="50"/>
18删除: <ColumnDefinition Width="*"/>
19新增: <ColumnDefinition Width="auto"/>
1920 </Grid.ColumnDefinitions>
20删除: <Border x:Name="Button" Background="#f5f5f5" CornerRadius="10" Padding="5">
21新增: <Border x:Name="Button" Grid.Column="1" Background="#f5f5f5" CornerRadius="10" Padding="5">
2122 <Border x:Name="Mark" Width="12" Height="12" CornerRadius="15" Background="#5d5d5d" VerticalAlignment="Center" HorizontalAlignment="Left">
2223 <Border.RenderTransform>
2324 <TranslateTransform X="0"/>
2425 </Border.RenderTransform>
2526 </Border>
2627 </Border>
27删除: <TextBlock x:Name="OnText" Grid.Column="1" VerticalAlignment="Center" Margin="10,0,0,0" Text="{TemplateBinding OnText}"/>
28删除: <TextBlock x:Name="OffText" Grid.Column="1" VerticalAlignment="Center" Margin="10,0,0,0" Text="{TemplateBinding OffText}"/>
28新增: <Grid x:Name="TextContainer" Grid.Column="2" Margin="10,0,0,0">
29新增: <TextBlock x:Name="OnText" VerticalAlignment="Center" Text="{TemplateBinding OnText}"/>
30新增: <TextBlock x:Name="OffText" VerticalAlignment="Center" Text="{TemplateBinding OffText}"/>
31新增: </Grid>
32新增:
2933
3034 </Grid>
3135
@@ -79,13 +83,21 @@
7983 <DataTrigger.EnterActions>
8084 <BeginStoryboard>
8185 <Storyboard>
82删除: <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.RenderTransform).
83删除: (TranslateTransform.X)"
84删除: Storyboard.TargetName="Mark">
85删除: <EasingDoubleKeyFrame KeyTime="00:00:0"
86删除: Value="28" />
87删除: </DoubleAnimationUsingKeyFrames>
88删除:
86新增: <DoubleAnimation Storyboard.TargetProperty="(Border.RenderTransform).
87新增:(TranslateTransform.X)"
88新增: Storyboard.TargetName="Mark" To="28" Duration="0"></DoubleAnimation>
89新增: </Storyboard>
90新增: </BeginStoryboard>
91新增: </DataTrigger.EnterActions>
92新增: </DataTrigger>
93新增: <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsChecked}" Value="False">
94新增: <DataTrigger.EnterActions>
95新增: <BeginStoryboard>
96新增: <Storyboard>
97新增: <DoubleAnimation Storyboard.TargetProperty="(Border.RenderTransform).
98新增:(TranslateTransform.X)"
99新增: Storyboard.TargetName="Mark" To="0" Duration="0"></DoubleAnimation>
100新增:
89101 </Storyboard>
90102 </BeginStoryboard>
91103 </DataTrigger.EnterActions>
@@ -98,6 +110,14 @@
98110 <Setter TargetName="OffText" Property="Visibility" Value="Visible"/>
99111 <Setter TargetName="OnText" Property="Visibility" Value="Collapsed"/>
100112 </Trigger>
113新增: <Trigger Property="IsChecked" Value="False">
114新增: <Setter TargetName="OffText" Property="Visibility" Value="Visible"/>
115新增: <Setter TargetName="OnText" Property="Visibility" Value="Collapsed"/>
116新增: </Trigger>
117新增: <Trigger Property="TextPosition" Value="Left">
118新增: <Setter TargetName="TextContainer" Property="Grid.Column" Value="0"/>
119新增: <Setter TargetName="TextContainer" Property="Margin" Value="0,0,10,0"/>
120新增: </Trigger>
101121 </ControlTemplate.Triggers>
102122
103123 </ControlTemplate>
修改UI/UI.csproj+1 −0看文件
@@ -184,6 +184,7 @@
184184 <Compile Include="Controls\SettingPanel\SettingPanel.cs" />
185185 <Compile Include="Controls\Tabbar\Tabbar.cs" />
186186 <Compile Include="Controls\Toggle\Toggle.cs" />
187新增: <Compile Include="Controls\Toggle\ToggleTextPosition.cs" />
187188 <Compile Include="Controls\TPage.cs" />
188189 <Compile Include="Controls\Window\ToastType.cs" />
189190 <Compile Include="Extensions\ListExtensions.cs" />
修改UI/ViewModels/CategoryPageVM.cs+167 −84看文件
@@ -1,10 +1,15 @@
1删除:using Core.Servicers.Interfaces;
1新增:using Core.Librarys;
2新增:using Core.Servicers.Instances;
3新增:using Core.Servicers.Interfaces;
4新增:using Newtonsoft.Json;
25using System;
36using System.Collections.Generic;
7新增:using System.Diagnostics;
48using System.IO;
59using System.Linq;
610using System.Text;
711using System.Threading.Tasks;
12新增:using System.Windows.Forms;
813using UI.Controls;
914using UI.Controls.Select;
1015using UI.Models;
@@ -40,6 +45,14 @@ namespace UI.ViewModels
4045 /// 刷新
4146 /// </summary>
4247 public Command RefreshCommand { get; set; }
48新增: /// <summary>
49新增: /// 添加目录
50新增: /// </summary>
51新增: public Command AddDirectoryCommand { get; set; }
52新增: /// <summary>
53新增: /// 目录菜单命令
54新增: /// </summary>
55新增: public Command DirectoriesCommand { get; set; }
4356
4457
4558 public CategoryPageVM(ICategorys categorys, MainViewModel mainVM, IAppData appData, IWebData webData_)
@@ -55,6 +68,9 @@ namespace UI.ViewModels
5568 EditCloseCommand = new Command(new Action<object>(OnEditClose));
5669 DelCommand = new Command(new Action<object>(OnDel));
5770 RefreshCommand = new Command(new Action<object>(OnRefresh));
71新增: AddDirectoryCommand = new Command(OnAddDirectory);
72新增: DirectoriesCommand = new Command(OnDirectoriesCommand);
73新增:
5874 LoadData();
5975
6076 PropertyChanged += CategoryPageVM_PropertyChanged;
@@ -65,7 +81,7 @@ namespace UI.ViewModels
6581 LoadData();
6682 }
6783
68删除:
84新增:
6985 private void OnDel(object obj)
7086 {
7187 if (ShowType.Id == 0)
@@ -94,6 +110,44 @@ namespace UI.ViewModels
94110 }
95111 }
96112
113新增: private void OnAddDirectory(object obj)
114新增: {
115新增: try
116新增: {
117新增: FolderBrowserDialog dialog = new FolderBrowserDialog();
118新增: dialog.Description = "选择匹配目录";
119新增: if (dialog.ShowDialog() == DialogResult.OK)
120新增: {
121新增: string path = dialog.SelectedPath + "\\";
122新增: if (EditDirectories.Contains(path))
123新增: {
124新增: mainVM.Toast("目录已存在", Controls.Window.ToastType.Error);
125新增: return;
126新增: }
127新增: EditDirectories.Add(path);
128新增: mainVM.Toast("已添加", Controls.Window.ToastType.Success);
129新增: }
130新增: }
131新增: catch (Exception ec)
132新增: {
133新增: Logger.Error(ec.ToString());
134新增: mainVM.Toast("添加失败,请重试", Controls.Window.ToastType.Error);
135新增: }
136新增: }
137新增:
138新增: private void OnDirectoriesCommand(object obj)
139新增: {
140新增: string action = obj.ToString();
141新增: switch (action)
142新增: {
143新增: case "remove":
144新增: if (string.IsNullOrEmpty(EditSelectedDirectory)) return;
145新增:
146新增: EditDirectories.Remove(EditSelectedDirectory);
147新增: break;
148新增: }
149新增: }
150新增:
97151 #region 编辑校验
98152 /// <summary>
99153 /// 编辑校验
@@ -129,106 +183,121 @@ namespace UI.ViewModels
129183 #region 编辑应用分类
130184 private void EditAppCategoryAction()
131185 {
132删除: if (!IsEditVerify()) return;
133删除:
134删除: if (IsCreate)
186新增: try
135187 {
136删除: // 创建分类
188新增: if (!IsEditVerify()) return;
137189
138删除: // 判断重复分类名称
139删除: if (Data.Where(m => m.Data.Name == EditName).Any())
140删除: {
141删除: mainVM.Toast("分类名称已存在", Controls.Window.ToastType.Error, Controls.Base.IconTypes.ImportantBadge12);
142删除: return;
143删除: }
144删除: if (Data.Where(m => m.Data.Color == EditColor).Any())
190新增: string directoriesStr = JsonConvert.SerializeObject(EditDirectories.ToList());
191新增:
192新增: if (IsCreate)
145193 {
146删除: mainVM.Toast("颜色已存在,请重新选择", Controls.Window.ToastType.Error, Controls.Base.IconTypes.ImportantBadge12);
147删除: return;
148删除: }
149删除: mainVM.Toast("创建完成", Controls.Window.ToastType.Success);
194新增: // 创建分类
150195
151删除: EditVisibility = System.Windows.Visibility.Collapsed;
196新增: // 判断重复分类名称
197新增: if (Data.Where(m => m.Data.Name == EditName).Any())
198新增: {
199新增: mainVM.Toast("分类名称已存在", Controls.Window.ToastType.Error, Controls.Base.IconTypes.ImportantBadge12);
200新增: return;
201新增: }
202新增: //if (Data.Where(m => m.Data.Color == EditColor).Any())
203新增: //{
204新增: // mainVM.Toast("颜色已存在,请重新选择", Controls.Window.ToastType.Error, Controls.Base.IconTypes.ImportantBadge12);
205新增: // return;
206新增: //}
207新增: mainVM.Toast("创建完成", Controls.Window.ToastType.Success);
152208
153删除: var res = categorys.Create(new Core.Models.CategoryModel()
154删除: {
155删除: Name = EditName,
156删除: IconFile = EditIconFile,
157删除: Color = EditColor,
158删除: });
209新增: EditVisibility = System.Windows.Visibility.Collapsed;
159210
160删除: var item = new CategoryModel()
161删除: {
162删除: Data = res,
163删除: Count = 0
164删除: };
165删除: if (Data.Count == 0)
166删除: {
167删除: //Data=new System.Collections.ObjectModel.ObservableCollection<CategoryModel>()
168删除: var list = new System.Collections.ObjectModel.ObservableCollection<CategoryModel>();
169删除: list.Add(item);
170删除: Data = list;
171删除: }
172删除: else
173删除: {
174删除: Data.Add(item);
175删除: }
211新增: var res = categorys.Create(new Core.Models.CategoryModel()
212新增: {
213新增: Name = EditName,
214新增: IconFile = EditIconFile,
215新增: Color = EditColor,
216新增: IsDirectoryMath = EditIsDirectoryMath,
217新增: Directories = directoriesStr,
218新增: });
176219
177删除: }
178删除: else
179删除: {
180删除: // 编辑分类
220新增: var item = new CategoryModel()
221新增: {
222新增: Data = res,
223新增: Count = 0
224新增: };
225新增: if (Data.Count == 0)
226新增: {
227新增: //Data=new System.Collections.ObjectModel.ObservableCollection<CategoryModel>()
228新增: var list = new System.Collections.ObjectModel.ObservableCollection<CategoryModel>();
229新增: list.Add(item);
230新增: Data = list;
231新增: }
232新增: else
233新增: {
234新增: Data.Add(item);
235新增: }
181236
182删除: // 判断重复分类名称
183删除: if (Data.Where(m => m.Data.Name == EditName && m.Data.ID != SelectedAppCategoryItem.Data.ID).Any())
184删除: {
185删除: mainVM.Toast("分类名称已存在", Controls.Window.ToastType.Error, Controls.Base.IconTypes.ImportantBadge12);
186删除: return;
187删除: }
188删除: if (Data.Where(m => m.Data.Color == EditColor && m.Data.ID != SelectedAppCategoryItem.Data.ID).Any())
189删除: {
190删除: mainVM.Toast("颜色已存在,请重新选择", Controls.Window.ToastType.Error, Controls.Base.IconTypes.ImportantBadge12);
191删除: return;
192237 }
193删除: if (EditName == SelectedAppCategoryItem.Data.Name && EditIconFile == SelectedAppCategoryItem.Data.IconFile && EditColor == SelectedAppCategoryItem.Data.Color)
238新增: else
194239 {
195删除: mainVM.Toast("没有修改");
196删除: EditVisibility = System.Windows.Visibility.Collapsed;
197删除: return;
198删除: }
199删除: mainVM.Toast("已更新", Controls.Window.ToastType.Success);
240新增: // 编辑分类
200241
201删除: var category = categorys.GetCategory(SelectedAppCategoryItem.Data.ID);
202删除: if (category != null)
203删除: {
204删除: category.Name = EditName;
205删除: category.IconFile = EditIconFile;
206删除: category.Color = EditColor;
242新增: // 判断重复分类名称
243新增: if (Data.Where(m => m.Data.Name == EditName && m.Data.ID != SelectedAppCategoryItem.Data.ID).Any())
244新增: {
245新增: mainVM.Toast("分类名称已存在", Controls.Window.ToastType.Error, Controls.Base.IconTypes.ImportantBadge12);
246新增: return;
247新增: }
248新增: //if (Data.Where(m => m.Data.Color == EditColor && m.Data.ID != SelectedAppCategoryItem.Data.ID).Any())
249新增: //{
250新增: // mainVM.Toast("颜色已存在,请重新选择", Controls.Window.ToastType.Error, Controls.Base.IconTypes.ImportantBadge12);
251新增: // return;
252新增: //}
253新增: //if (EditName == SelectedAppCategoryItem.Data.Name && EditIconFile == SelectedAppCategoryItem.Data.IconFile && EditColor == SelectedAppCategoryItem.Data.Color)
254新增: //{
255新增: // mainVM.Toast("没有修改");
256新增: // EditVisibility = System.Windows.Visibility.Collapsed;
257新增: // return;
258新增: //}
259新增: mainVM.Toast("已更新", Controls.Window.ToastType.Success);
260新增: var category = categorys.GetCategory(SelectedAppCategoryItem.Data.ID);
261新增: if (category != null)
262新增: {
263新增: category.Name = EditName;
264新增: category.IconFile = EditIconFile;
265新增: category.Color = EditColor;
266新增: category.IsDirectoryMath = EditIsDirectoryMath;
267新增: category.Directories = directoriesStr;
207268
208删除: categorys.Update(category);
209删除: }
269新增: categorys.Update(category);
270新增: }
210271
211删除: var item = Data.Where(m => m.Data.ID == SelectedAppCategoryItem.Data.ID).FirstOrDefault();
272新增: var item = Data.Where(m => m.Data.ID == SelectedAppCategoryItem.Data.ID).FirstOrDefault();
212273
213删除: var changedItem = new CategoryModel()
214删除: {
215删除: Count = item.Count,
216删除: Data = new Core.Models.CategoryModel()
274新增: var changedItem = new CategoryModel()
217275 {
218删除: ID = item.Data.ID,
219删除: Name = EditName,
220删除: IconFile = EditIconFile,
221删除: Color = EditColor
276新增: Count = item.Count,
277新增: Data = new Core.Models.CategoryModel()
278新增: {
279新增: ID = item.Data.ID,
280新增: Name = EditName,
281新增: IconFile = EditIconFile,
282新增: Color = EditColor,
283新增: IsDirectoryMath = EditIsDirectoryMath,
284新增: Directories = directoriesStr
285新增: }
286新增: };
287新增:
288新增: int editItemIndex = Data.IndexOf(item);
289新增: if (editItemIndex != -1)
290新增: {
291新增: Data[editItemIndex] = changedItem;
222292 }
223删除: };
224293
225删除: int editItemIndex = Data.IndexOf(item);
226删除: if (editItemIndex != -1)
227删除: {
228删除: Data[editItemIndex] = changedItem;
294新增: EditVisibility = System.Windows.Visibility.Collapsed;
229295 }
230删除:
231删除: EditVisibility = System.Windows.Visibility.Collapsed;
296新增: }
297新增: catch (Exception ec)
298新增: {
299新增: Logger.Error(ec.ToString());
300新增: mainVM.Toast("操作失败,请重试", Controls.Window.ToastType.Error);
232301 }
233302 }
234303 #endregion
@@ -404,12 +473,26 @@ namespace UI.ViewModels
404473 EditName = appCategory == null ? webCategory.Data.Name : appCategory.Data.Name;
405474 EditIconFile = appCategory == null ? webCategory.Data.IconFile : appCategory.Data.IconFile;
406475 EditColor = string.IsNullOrEmpty(appCategory == null ? webCategory.Data.Color : appCategory.Data.Color) ? "#00FFAB" : appCategory == null ? webCategory.Data.Color : appCategory.Data.Color;
476新增: if (ShowType.Id == 0)
477新增: {
478新增: EditIsDirectoryMath = appCategory.Data.IsDirectoryMath;
479新增: if (appCategory.Data.Directories != null)
480新增: {
481新增: EditDirectories = new System.Collections.ObjectModel.ObservableCollection<string>(appCategory.Data.DirectoryList);
482新增: }
483新增: else
484新增: {
485新增: EditDirectories = new System.Collections.ObjectModel.ObservableCollection<string>();
486新增: }
487新增: }
407488 }
408489 else
409490 {
410491 EditName = "";
411492 EditIconFile = "pack://application:,,,/Tai;component/Resources/Emoji/(1).png";
412493 EditColor = "#00FFAB";
494新增: EditIsDirectoryMath = false;
495新增: EditDirectories = new System.Collections.ObjectModel.ObservableCollection<string>();
413496 }
414497 }
415498
修改UI/Views/CategoryPage.xaml+133 −103看文件
@@ -8,7 +8,8 @@
88 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:converter="clr-namespace:UI.Controls.Converters"
99 xmlns:c="clr-namespace:UI.Controls"
1010 d:DesignHeight="450" d:DesignWidth="800"
11删除: Title="CategoryPage" Foreground="{DynamicResource StandardTextBrush}" IsFillPage="True">
11新增: Title="CategoryPage" Foreground="{DynamicResource StandardTextBrush}" IsFillPage="True"
12新增: xmlns:toggle="clr-namespace:UI.Controls.Toggle" xmlns:list="clr-namespace:UI.Controls.List">
1213
1314
1415 <Grid>
@@ -53,9 +54,29 @@
5354
5455 <input:InputBox Grid.Column="1" Error="{Binding EditErrorText}" IsShowError="{Binding IsEditError,Mode=TwoWay}" Text="{Binding EditName,Mode=TwoWay}" MaxLength="10" Margin="5,10,0,0" Placeholder="请输入分类名称"/>
5556 </Grid>
56删除:
5757 <TextBlock Text="图标" Margin="0,10,0,0"/>
5858 <base:IconSelect URL="{Binding EditIconFile,Mode=TwoWay}" HorizontalAlignment="Left" Margin="0,10,0,0" />
59新增: <base:View Condition="=0" Value="{Binding ShowType.Id}">
60新增: <StackPanel>
61新增: <Border Margin="0,10,0,0">
62新增: <toggle:Toggle IsChecked="{Binding EditIsDirectoryMath,Mode=TwoWay}" TextPosition="Left" OnText="目录匹配" OffText="目录匹配"></toggle:Toggle>
63新增: </Border>
64新增: <base:View Condition="True" Value="{Binding EditIsDirectoryMath}">
65新增: <StackPanel Margin="0,10,0,0">
66新增: <Button:Button HorizontalAlignment="Right" Width="100" Command="{Binding AddDirectoryCommand}">添加目录</Button:Button>
67新增: <list:BaseList Items="{Binding EditDirectories}" SelectedItem="{Binding EditSelectedDirectory,Mode=TwoWay}">
68新增: <list:BaseList.ContextMenu>
69新增: <ContextMenu>
70新增: <MenuItem Header="移除" Command="{Binding DirectoriesCommand}" CommandParameter="remove"/>
71新增: </ContextMenu>
72新增: </list:BaseList.ContextMenu>
73新增: </list:BaseList>
74新增: </StackPanel>
75新增: </base:View>
76新增: </StackPanel>
77新增: </base:View>
78新增:
79新增:
5980 </StackPanel>
6081 </ScrollViewer>
6182 <Button:Button Grid.Row="2" HorizontalAlignment="Right" Text="?创建:更新" Value="{Binding IsCreate}" Width="120" Margin="0,0,10,0" VerticalAlignment="Center" Command="{Binding EditDoneCommand}">
@@ -112,121 +133,130 @@
112133 </TabControl.Resources>
113134 <TabItem>
114135 <!--应用分类-->
115删除: <ScrollViewer>
116删除: <StackPanel>
117删除: <base:View Condition="empty" Value="{Binding Data}">
118删除: <base:EmptyData/>
119删除: </base:View>
120删除:
121删除: <ListView Margin="10,20,10,0" ItemsSource="{Binding Data}" SelectedItem="{Binding SelectedAppCategoryItem,Mode=TwoWay}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
122删除: <i:Interaction.Triggers>
123删除: <i:EventTrigger EventName="MouseLeftButtonUp">
124删除: <i:InvokeCommandAction Command="{Binding GotoListCommand}"
136新增: <!--<ScrollViewer>-->
137新增: <!--<StackPanel>-->
138新增: <Grid>
139新增: <base:View Condition="empty" Value="{Binding Data}">
140新增: <base:EmptyData/>
141新增: </base:View>
142新增:
143新增: <ListView Margin="10,20,10,0" ItemsSource="{Binding Data}" SelectedItem="{Binding SelectedAppCategoryItem,Mode=TwoWay}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
144新增: <i:Interaction.Triggers>
145新增: <i:EventTrigger EventName="MouseLeftButtonUp">
146新增: <i:InvokeCommandAction Command="{Binding GotoListCommand}"
125147 CommandParameter="{Binding SelectedAppCategoryItem}" />
126删除: </i:EventTrigger>
127删除: </i:Interaction.Triggers>
128删除:
129删除: <ListView.ContextMenu>
130删除: <ContextMenu>
131删除: <MenuItem Header="查看分类应用列表" Command="{Binding GotoListCommand}" CommandParameter="{Binding SelectedAppCategoryItem}"/>
132删除:
133删除: <MenuItem Header="编辑" Command="{Binding EditCommand}" CommandParameter="{Binding SelectedAppCategoryItem}"/>
134删除: <MenuItem Header="删除分类" Command="{Binding DelCommand}" CommandParameter="{Binding SelectedAppCategoryItem}"/>
135删除: </ContextMenu>
136删除: </ListView.ContextMenu>
137删除: <ListBox.Resources>
138删除: <converter:HextoColorConverter x:Key="HextoColorConverter"/>
139删除:
140删除: <Style TargetType="{x:Type ListView}">
141删除: <Setter Property="OverridesDefaultStyle" Value="True"/>
142删除:
143删除: <Setter Property="Template">
144删除: <Setter.Value>
145删除: <ControlTemplate TargetType="{x:Type ListView}">
148新增: </i:EventTrigger>
149新增: </i:Interaction.Triggers>
150新增:
151新增: <ListView.ContextMenu>
152新增: <ContextMenu>
153新增: <MenuItem Header="查看分类应用列表" Command="{Binding GotoListCommand}" CommandParameter="{Binding SelectedAppCategoryItem}"/>
154新增:
155新增: <MenuItem Header="编辑" Command="{Binding EditCommand}" CommandParameter="{Binding SelectedAppCategoryItem}"/>
156新增: <MenuItem Header="删除分类" Command="{Binding DelCommand}" CommandParameter="{Binding SelectedAppCategoryItem}"/>
157新增: </ContextMenu>
158新增: </ListView.ContextMenu>
159新增: <ListBox.Resources>
160新增: <converter:HextoColorConverter x:Key="HextoColorConverter"/>
161新增:
162新增: <Style TargetType="{x:Type ListView}">
163新增: <Setter Property="OverridesDefaultStyle" Value="True"/>
164新增:
165新增: <Setter Property="Template">
166新增: <Setter.Value>
167新增: <ControlTemplate TargetType="{x:Type ListView}">
168新增: <ScrollViewer>
146169 <Border>
147170 <ItemsPresenter />
148171 </Border>
149删除: </ControlTemplate>
150删除: </Setter.Value>
151删除: </Setter>
152删除: </Style>
153删除: <Style TargetType="{x:Type ListViewItem}">
154删除: <Setter Property="OverridesDefaultStyle" Value="True"/>
155删除: <Setter Property="Template">
156删除: <Setter.Value>
157删除: <ControlTemplate TargetType="{x:Type ListViewItem}">
158删除: <Grid>
159删除: <Border BorderBrush="{Binding ElementName=Border,Path=BorderBrush}" BorderThickness="{Binding ElementName=Border,Path=BorderThickness}" Margin="{Binding ElementName=Border,Path=Margin}" CornerRadius="{Binding ElementName=Border,Path=CornerRadius}">
160删除: <Border.Effect>
161删除: <DropShadowEffect Color="#d8d2d2" BlurRadius="10" Direction="300" ShadowDepth="4" Opacity="0.1" RenderingBias="Performance" ></DropShadowEffect>
162删除: </Border.Effect>
163删除: </Border>
164删除: <Border BorderBrush="Transparent" BorderThickness="2" x:Name="Border" Background="{DynamicResource StandardBackgroundBrush}" Margin="5" CornerRadius="20">
165删除: <ContentPresenter/>
166删除: </Border>
167删除: </Grid>
168删除:
169删除: <ControlTemplate.Triggers>
170删除: <Trigger Property="IsMouseOver" Value="True">
171删除: <!--<Setter TargetName="Border" Property="Background" Value="#FFE8E6FF"/>-->
172删除: <Setter TargetName="Border" Property="BorderBrush" Value="{DynamicResource ThemeBrush}"/>
173删除:
174删除: </Trigger>
175删除: </ControlTemplate.Triggers>
176删除: </ControlTemplate>
177删除: </Setter.Value>
178删除: </Setter>
179删除:
180删除: </Style>
181删除: </ListBox.Resources>
182删除: <ListBox.ItemsPanel>
183删除: <ItemsPanelTemplate>
184删除: <WrapPanel/>
185删除: </ItemsPanelTemplate>
186删除: </ListBox.ItemsPanel>
187删除: <ListView.ItemTemplate>
188删除: <DataTemplate>
189删除:
190删除:
191删除: <WrapPanel Orientation="Vertical">
192删除: <Border Width="150" Height="150">
193删除:
172新增: </ScrollViewer>
173新增: </ControlTemplate>
174新增: </Setter.Value>
175新增: </Setter>
176新增: </Style>
177新增: <Style TargetType="{x:Type ListViewItem}">
178新增: <Setter Property="OverridesDefaultStyle" Value="True"/>
179新增: <Setter Property="Template">
180新增: <Setter.Value>
181新增: <ControlTemplate TargetType="{x:Type ListViewItem}">
194182 <Grid>
195删除: <Grid.RowDefinitions>
196删除: <RowDefinition Height="40"/>
197删除:
198删除: <RowDefinition Height="40"/>
199删除: <RowDefinition Height="30"/>
200删除: <RowDefinition Height="*"/>
183新增: <Border BorderBrush="{Binding ElementName=Border,Path=BorderBrush}" BorderThickness="{Binding ElementName=Border,Path=BorderThickness}" Margin="{Binding ElementName=Border,Path=Margin}" CornerRadius="{Binding ElementName=Border,Path=CornerRadius}">
184新增: <Border.Effect>
185新增: <DropShadowEffect Color="#d8d2d2" BlurRadius="10" Direction="300" ShadowDepth="4" Opacity="0.1" RenderingBias="Performance" ></DropShadowEffect>
186新增: </Border.Effect>
187新增: </Border>
188新增: <Border BorderBrush="Transparent" BorderThickness="2" x:Name="Border" Background="{DynamicResource StandardBackgroundBrush}" Margin="5" CornerRadius="20">
189新增: <ContentPresenter/>
190新增: </Border>
191新增: </Grid>
201192
202删除: </Grid.RowDefinitions>
203删除: <Rectangle HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Center" RadiusX="20" RadiusY="20" Width="15" Height="15" Fill="{Binding Data.Color,Converter={StaticResource HextoColorConverter}}"/>
204删除: <Grid Grid.Row="1">
193新增: <ControlTemplate.Triggers>
194新增: <Trigger Property="IsMouseOver" Value="True">
195新增: <!--<Setter TargetName="Border" Property="Background" Value="#FFE8E6FF"/>-->
196新增: <Setter TargetName="Border" Property="BorderBrush" Value="{DynamicResource ThemeBrush}"/>
197新增:
198新增: </Trigger>
199新增: </ControlTemplate.Triggers>
200新增: </ControlTemplate>
201新增: </Setter.Value>
202新增: </Setter>
203新增:
204新增: </Style>
205新增: </ListBox.Resources>
206新增: <ListBox.ItemsPanel>
207新增: <ItemsPanelTemplate>
208新增: <WrapPanel/>
209新增: </ItemsPanelTemplate>
210新增: </ListBox.ItemsPanel>
211新增: <ListView.ItemTemplate>
212新增: <DataTemplate>
213新增:
214新增:
215新增: <WrapPanel Orientation="Vertical">
216新增: <Border Width="160" Height="160">
217新增:
218新增: <Grid>
219新增: <Grid.RowDefinitions>
220新增: <RowDefinition Height="50"/>
221新增:
222新增: <RowDefinition Height="40"/>
223新增: <RowDefinition Height="30"/>
224新增: <RowDefinition Height="*"/>
225新增:
226新增: </Grid.RowDefinitions>
227新增: <Rectangle HorizontalAlignment="Left" Margin="10" VerticalAlignment="Top" RadiusX="20" RadiusY="20" Width="15" Height="15" Fill="{Binding Data.Color,Converter={StaticResource HextoColorConverter}}"/>
228新增: <base:View Value="{Binding Data.IsDirectoryMath}">
229新增: <Border Background="{DynamicResource ThemeBrush}" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10" Padding="8,0" CornerRadius="10" Height="20">
230新增: <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" Foreground="White" Text="目录匹配"></TextBlock>
231新增: </Border>
232新增: </base:View>
233新增: <Grid Grid.Row="1">
205234
206删除: <base:Img Radius="8" Width="40" Height="40" URL="{Binding Data.IconFile}"/>
207删除: </Grid>
208删除: <TextBlock Foreground="{DynamicResource StandardTextBrush}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="2" Text="{Binding Data.Name}" FontSize="14"/>
235新增: <base:Img Radius="8" Width="40" Height="40" URL="{Binding Data.IconFile}"/>
236新增: </Grid>
237新增: <TextBlock Foreground="{DynamicResource StandardTextBrush}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="2" Text="{Binding Data.Name}" FontSize="14" FontWeight="Bold"/>
209238
210删除: <Border Grid.Row="3" >
211删除: <Border Margin="10,0,10,0" CornerRadius="10" Background="{DynamicResource CategoryAppNumBgBrush}" HorizontalAlignment="Right" VerticalAlignment="Center" Padding="10,5">
212删除: <TextBlock Foreground="{DynamicResource DefaultTextBrush}">
239新增: <Border Grid.Row="3" >
240新增: <Border Margin="10,0,10,0" CornerRadius="10" Background="{DynamicResource CategoryAppNumBgBrush}" HorizontalAlignment="Right" VerticalAlignment="Center" Padding="10,5" ToolTip="分类应用数量">
241新增: <TextBlock Foreground="{DynamicResource DefaultTextBrush}">
213242 <Run Text="×"/>
214243
215244 <Run Text="{Binding Count}"/>
216删除: </TextBlock>
217删除:
218删除: </Border>
245新增: </TextBlock>
219246
220247 </Border>
221删除: </Grid>
222删除: </Border>
223248
224删除: </WrapPanel>
225删除: </DataTemplate>
226删除: </ListView.ItemTemplate>
227删除: </ListView>
228删除: </StackPanel>
229删除: </ScrollViewer>
249新增: </Border>
250新增: </Grid>
251新增: </Border>
252新增:
253新增: </WrapPanel>
254新增: </DataTemplate>
255新增: </ListView.ItemTemplate>
256新增: </ListView>
257新增: </Grid>
258新增: <!--</StackPanel>-->
259新增: <!--</ScrollViewer>-->
230260 </TabItem>
231261 <TabItem>
232262 <!--网页分类-->