跳到主要内容

github/tai

公开

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

提交记录
修改UI/App.xaml+3 −1看文件
@@ -219,6 +219,8 @@
219219 Fill="#2B20D9"
220220 Width="5"
221221 Height="5"
222新增: RadiusX="5"
223新增: RadiusY="5"
222224 VerticalAlignment="Center"
223225 HorizontalAlignment="Center"
224226 Visibility="Hidden"
@@ -357,7 +359,7 @@
357359 <ScrollViewer CanContentScroll="True"
358360 >
359361 <StackPanel IsItemsHost="True"
360删除: KeyboardNavigation.DirectionalNavigation="Cycle" />
362新增: KeyboardNavigation.DirectionalNavigation="Cycle" Margin="5"/>
361363 </ScrollViewer>
362364 </Border>
363365 </Grid>
修改UI/App.xaml.cs+3 −0看文件
@@ -17,6 +17,7 @@ using System.Windows;
1717using System.Windows.Controls;
1818using System.Windows.Resources;
1919using UI.Controls.Window;
20新增:using UI.Servicers;
2021using UI.ViewModels;
2122using UI.Views;
2223
@@ -190,6 +191,8 @@ namespace UI
190191 services.AddSingleton<IAppData, AppData>();
191192 services.AddSingleton<ICategorys, Categorys>();
192193
194新增: services.AddSingleton<IAppContextMenuServicer, AppContextMenuServicer>();
195新增:
193196 // 主窗口
194197 services.AddSingleton<MainViewModel>();
195198 services.AddTransient<MainWindow>();
修改UI/Controls/Charts/Charts.cs+20 −0看文件
@@ -372,6 +372,18 @@ namespace UI.Controls.Charts
372372 }
373373
374374 }
375新增:
376新增: #region 右键菜单
377新增: public ContextMenu ItemMenu
378新增: {
379新增: get { return (ContextMenu)GetValue(ItemMenuProperty); }
380新增: set { SetValue(ItemMenuProperty, value); }
381新增: }
382新增: public static readonly DependencyProperty ItemMenuProperty =
383新增: DependencyProperty.Register("ItemMenu",
384新增: typeof(ContextMenu),
385新增: typeof(Charts));
386新增: #endregion
375387 /// <summary>
376388 /// 点击项目时发生
377389 /// </summary>
@@ -1003,6 +1015,14 @@ namespace UI.Controls.Charts
10031015 OnItemClick?.Invoke(data, null);
10041016 ClickCommand?.Execute(data);
10051017 };
1018新增: el.MouseRightButtonUp += (s, e) =>
1019新增: {
1020新增: if (ItemMenu != null)
1021新增: {
1022新增: ItemMenu.IsOpen = true;
1023新增: ItemMenu.Tag = data;
1024新增: }
1025新增: };
10061026 }
10071027 }
10081028}
修改UI/Models/ChartPageModel.cs+4 −0看文件
@@ -4,6 +4,7 @@ using System.Collections.ObjectModel;
44using System.Linq;
55using System.Text;
66using System.Threading.Tasks;
7新增:using System.Windows.Controls;
78using UI.Controls.Charts.Model;
89using UI.Controls.Select;
910
@@ -80,5 +81,8 @@ namespace UI.Models
8081
8182 private double DataMaximum_ = 0;
8283 public double DataMaximum { get { return DataMaximum_; } set { DataMaximum_ = value; OnPropertyChanged(); } }
84新增:
85新增: private ContextMenu AppContextMenu_;
86新增: public ContextMenu AppContextMenu { get { return AppContextMenu_; } set { AppContextMenu_ = value; OnPropertyChanged(); } }
8387 }
8488}
新增UI/Models/ContextMenuItemModel.cs+12 −0看文件
@@ -0,0 +1,12 @@
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.Models
8新增:{
9新增: internal class ContextMenuItemModel
10新增: {
11新增: }
12新增:}
修改UI/Models/DataPageModel.cs+4 −0看文件
@@ -4,6 +4,7 @@ using System.Collections.ObjectModel;
44using System.Linq;
55using System.Text;
66using System.Threading.Tasks;
7新增:using System.Windows.Controls;
78using UI.Controls.Charts.Model;
89using UI.Controls.DatePickerBar;
910
@@ -94,5 +95,8 @@ namespace UI.Models
9495 get { return YearDate_; }
9596 set { YearDate_ = value; OnPropertyChanged(); }
9697 }
98新增:
99新增: private ContextMenu AppContextMenu_;
100新增: public ContextMenu AppContextMenu { get { return AppContextMenu_; } set { AppContextMenu_ = value; OnPropertyChanged(); } }
97101 }
98102}
修改UI/Models/IndexPageModel.cs+5 −1看文件
@@ -4,6 +4,7 @@ using System.Collections.ObjectModel;
44using System.Linq;
55using System.Text;
66using System.Threading.Tasks;
7新增:using System.Windows.Controls;
78using UI.Controls.Charts.Model;
89
910namespace UI.Models
@@ -34,7 +35,7 @@ namespace UI.Models
3435 }
3536 }
3637
37删除:
38新增:
3839 private List<ChartsDataModel> WeekData_;
3940 /// <summary>
4041 /// week data
@@ -47,5 +48,8 @@ namespace UI.Models
4748
4849 private bool IsLoading_;
4950 public bool IsLoading { get { return IsLoading_; } set { IsLoading_ = value; OnPropertyChanged(); } }
51新增:
52新增: private ContextMenu AppContextMenu_;
53新增: public ContextMenu AppContextMenu { get { return AppContextMenu_; } set { AppContextMenu_ = value; OnPropertyChanged(); } }
5054 }
5155}
新增UI/Servicers/AppContextMenuServicer.cs+187 −0看文件
@@ -0,0 +1,187 @@
1新增:using Core.Models;
2新增:using Core.Servicers.Interfaces;
3新增:using System;
4新增:using System.Collections.Generic;
5新增:using System.Diagnostics;
6新增:using System.IO;
7新增:using System.Linq;
8新增:using System.Text;
9新增:using System.Threading.Tasks;
10新增:using System.Windows.Controls;
11新增:using UI.Controls.Charts.Model;
12新增:using UI.ViewModels;
13新增:
14新增:namespace UI.Servicers
15新增:{
16新增: public class AppContextMenuServicer : IAppContextMenuServicer
17新增: {
18新增:
19新增: private readonly MainViewModel main;
20新增: private readonly ICategorys categorys;
21新增: private readonly IAppData appData;
22新增: private readonly IAppConfig appConfig;
23新增:
24新增: private ContextMenu menu;
25新增: private MenuItem setCategory;
26新增: MenuItem block = new MenuItem();
27新增:
28新增:
29新增: public AppContextMenuServicer(MainViewModel main, ICategorys categorys, IAppData appData, IAppConfig appConfig)
30新增: {
31新增: this.main = main;
32新增: this.categorys = categorys;
33新增: this.appData = appData;
34新增: this.appConfig = appConfig;
35新增:
36新增: menu = new ContextMenu();
37新增: }
38新增:
39新增: public void Init()
40新增: {
41新增: menu.Items.Clear();
42新增:
43新增: MenuItem run = new MenuItem();
44新增: run.Header = "启动应用";
45新增: run.Click += Run_Click;
46新增:
47新增: MenuItem openDir = new MenuItem();
48新增: openDir.Header = "打开应用所在目录";
49新增: openDir.Click += OpenDir_Click;
50新增:
51新增: setCategory = new MenuItem();
52新增: setCategory.Header = "设置分类";
53新增:
54新增: block.Header = "忽略此应用";
55新增: block.Click += Block_Click;
56新增:
57新增: menu.Items.Add(run);
58新增: menu.Items.Add(new Separator());
59新增: menu.Items.Add(setCategory);
60新增: menu.Items.Add(openDir);
61新增: menu.Items.Add(new Separator());
62新增: menu.Items.Add(block);
63新增:
64新增: menu.ContextMenuOpening += SetCategory_ContextMenuOpening;
65新增: }
66新增:
67新增: private void Block_Click(object sender, System.Windows.RoutedEventArgs e)
68新增: {
69新增: var data = menu.Tag as ChartsDataModel;
70新增: var log = data.Data as DailyLogModel;
71新增: var app = log.AppModel;
72新增:
73新增: var config = appConfig.GetConfig();
74新增: if (config.Behavior.IgnoreProcessList.Contains(app.Name))
75新增: {
76新增: config.Behavior.IgnoreProcessList.Remove(app.Name);
77新增: main.Toast($"已取消忽略此应用 {app.Description}", Controls.Window.ToastType.Success);
78新增: }
79新增: else
80新增: {
81新增: config.Behavior.IgnoreProcessList.Add(app.Name);
82新增: main.Toast($"已忽略此应用 {app.Description}", Controls.Window.ToastType.Success);
83新增: }
84新增: }
85新增:
86新增: private void SetCategory_ContextMenuOpening(object sender, ContextMenuEventArgs e)
87新增: {
88新增: var data = menu.Tag as ChartsDataModel;
89新增: var log = data.Data as DailyLogModel;
90新增: var app = log.AppModel;
91新增:
92新增: var config = appConfig.GetConfig();
93新增: if (config.Behavior.IgnoreProcessList.Contains(app.Name))
94新增: {
95新增: block.Header = "取消忽略此应用";
96新增: }
97新增: else
98新增: {
99新增: block.Header = "忽略此应用";
100新增: }
101新增:
102新增: UpdateCategory();
103新增: }
104新增:
105新增: private void UpdateCategory()
106新增: {
107新增: setCategory.Items.Clear();
108新增:
109新增: var data = menu.Tag as ChartsDataModel;
110新增: var log = data.Data as DailyLogModel;
111新增: var app = log.AppModel;
112新增:
113新增: var categories = categorys.GetCategories();
114新增: foreach (var category in categories)
115新增: {
116新增: var categoryMenu = new MenuItem();
117新增: categoryMenu.Header = category.Name;
118新增: categoryMenu.IsChecked = app.CategoryID == category.ID;
119新增: categoryMenu.Click += (s, e) =>
120新增: {
121新增: SetAppCategory(app.ID, category);
122新增: };
123新增: setCategory.Items.Add(categoryMenu);
124新增: }
125新增:
126新增: }
127新增:
128新增: private void SetAppCategory(int appId, CategoryModel category)
129新增: {
130新增: var app = appData.GetApp(appId);
131新增: app.CategoryID = category.ID;
132新增: app.Category = category;
133新增: appData.UpdateApp(app);
134新增:
135新增: main.Toast("操作已执行", Controls.Window.ToastType.Success);
136新增: }
137新增:
138新增:
139新增:
140新增: private void OpenDir_Click(object sender, System.Windows.RoutedEventArgs e)
141新增: {
142新增:
143新增:
144新增: var data = menu.Tag as ChartsDataModel;
145新增:
146新增: var log = data.Data as DailyLogModel;
147新增:
148新增: var app = log.AppModel;
149新增:
150新增: if (File.Exists(app.File))
151新增: {
152新增: System.Diagnostics.Process.Start("explorer.exe", "/select, " + app.File);
153新增: }
154新增: else
155新增: {
156新增: main.Toast("应用文件似乎不存在", Controls.Window.ToastType.Error, Controls.Base.IconTypes.Blocked);
157新增: }
158新增: }
159新增:
160新增: private void Run_Click(object sender, System.Windows.RoutedEventArgs e)
161新增: {
162新增: var data = menu.Tag as ChartsDataModel;
163新增:
164新增: var log = data.Data as DailyLogModel;
165新增:
166新增: var app = log.AppModel;
167新增:
168新增: if (File.Exists(app.File))
169新增: {
170新增: System.Diagnostics.Process.Start(app.File);
171新增: main.Toast("操作已执行", Controls.Window.ToastType.Info);
172新增:
173新增: }
174新增: else
175新增: {
176新增: main.Toast("应用文件似乎不存在", Controls.Window.ToastType.Error, Controls.Base.IconTypes.Blocked);
177新增: }
178新增: }
179新增:
180新增: public ContextMenu GetContextMenu()
181新增: {
182新增: return menu;
183新增: }
184新增:
185新增:
186新增: }
187新增:}
新增UI/Servicers/IAppContextMenuServicer.cs+15 −0看文件
@@ -0,0 +1,15 @@
1新增:using System;
2新增:using System.Collections.Generic;
3新增:using System.Linq;
4新增:using System.Text;
5新增:using System.Threading.Tasks;
6新增:using System.Windows.Controls;
7新增:
8新增:namespace UI.Servicers
9新增:{
10新增: public interface IAppContextMenuServicer
11新增: {
12新增: void Init();
13新增: ContextMenu GetContextMenu();
14新增: }
15新增:}
修改UI/UI.csproj+3 −0看文件
@@ -180,6 +180,7 @@
180180 <Compile Include="Models\CategoryPageModel.cs" />
181181 <Compile Include="Models\Category\CategoryModel.cs" />
182182 <Compile Include="Models\ChartPageModel.cs" />
183新增: <Compile Include="Models\ContextMenuItemModel.cs" />
183184 <Compile Include="Models\DataPageModel.cs" />
184185 <Compile Include="Models\DetailPageModel.cs" />
185186 <Compile Include="Models\IndexPageModel.cs" />
@@ -187,6 +188,8 @@
187188 <Compile Include="Models\ModelBase.cs" />
188189 <Compile Include="Models\SettingPageModel.cs" />
189190 <Compile Include="Models\UINotifyPropertyChanged.cs" />
191新增: <Compile Include="Servicers\AppContextMenuServicer.cs" />
192新增: <Compile Include="Servicers\IAppContextMenuServicer.cs" />
190193 <Compile Include="ViewModels\CategoryAppListPageVM.cs" />
191194 <Compile Include="ViewModels\CategoryPageVM.cs" />
192195 <Compile Include="ViewModels\ChartPageVM.cs" />
修改UI/ViewModels/ChartPageVM.cs+7 −1看文件
@@ -10,6 +10,7 @@ using UI.Controls;
1010using UI.Controls.Charts.Model;
1111using UI.Controls.Select;
1212using UI.Models;
13新增:using UI.Servicers;
1314using UI.Views;
1415
1516namespace UI.ViewModels
@@ -19,13 +20,16 @@ namespace UI.ViewModels
1920 private readonly ICategorys categorys;
2021 private readonly IData data;
2122 private readonly MainViewModel mainVM;
23新增: private readonly IAppContextMenuServicer appContextMenuServicer;
24新增:
2225 public Command ToDetailCommand { get; set; }
2326
24删除: public ChartPageVM(IData data, ICategorys categorys, MainViewModel mainVM)
27新增: public ChartPageVM(IData data, ICategorys categorys, MainViewModel mainVM, IAppContextMenuServicer appContextMenuServicer)
2528 {
2629 this.data = data;
2730 this.categorys = categorys;
2831 this.mainVM = mainVM;
32新增: this.appContextMenuServicer = appContextMenuServicer;
2933
3034
3135 ToDetailCommand = new Command(new Action<object>(OnTodetailCommand));
@@ -60,6 +64,8 @@ namespace UI.ViewModels
6064 LoadDayData();
6165
6266 PropertyChanged += ChartPageVM_PropertyChanged;
67新增:
68新增: AppContextMenu = appContextMenuServicer.GetContextMenu();
6369 }
6470 public override void Dispose()
6571 {
修改UI/ViewModels/DataPageVM.cs+8 −2看文件
@@ -13,6 +13,7 @@ using System.Windows.Media.Imaging;
1313using UI.Controls;
1414using UI.Controls.Charts.Model;
1515using UI.Models;
16新增:using UI.Servicers;
1617using UI.Views;
1718
1819namespace UI.ViewModels
@@ -22,10 +23,13 @@ namespace UI.ViewModels
2223 public Command ToDetailCommand { get; set; }
2324 private readonly IData data;
2425 private readonly MainViewModel main;
25删除: public DataPageVM(IData data, MainViewModel main)
26新增: private readonly IAppContextMenuServicer appContextMenuServicer;
27新增:
28新增: public DataPageVM(IData data, MainViewModel main, IAppContextMenuServicer appContextMenuServicer)
2629 {
2730 this.data = data;
2831 this.main = main;
32新增: this.appContextMenuServicer = appContextMenuServicer;
2933
3034 ToDetailCommand = new Command(new Action<object>(OnTodetailCommand));
3135
@@ -45,10 +49,12 @@ namespace UI.ViewModels
4549
4650 TabbarData = new System.Collections.ObjectModel.ObservableCollection<string>()
4751 {
48删除: "按天查看","按月查看","按年查看"
52新增: "按天","按月","按年"
4953 };
5054
5155 TabbarSelectedIndex = 0;
56新增:
57新增: AppContextMenu = appContextMenuServicer.GetContextMenu();
5258 }
5359
5460 private void OnTodetailCommand(object obj)
修改UI/ViewModels/IndexPageVM.cs+7 −1看文件
@@ -14,6 +14,7 @@ using System.Windows.Media.Imaging;
1414using UI.Controls;
1515using UI.Controls.Charts.Model;
1616using UI.Models;
17新增:using UI.Servicers;
1718using UI.Views;
1819
1920namespace UI.ViewModels
@@ -24,13 +25,15 @@ namespace UI.ViewModels
2425 private readonly IData data;
2526 private readonly MainViewModel main;
2627 private readonly IMain mainServicer;
28新增: private readonly IAppContextMenuServicer appContextMenuServicer;
2729
2830 public IndexPageVM(
29删除: IData data, MainViewModel main, IMain mainServicer)
31新增: IData data, MainViewModel main, IMain mainServicer, IAppContextMenuServicer appContextMenuServicer)
3032 {
3133 this.data = data;
3234 this.main = main;
3335 this.mainServicer = mainServicer;
36新增: this.appContextMenuServicer = appContextMenuServicer;
3437
3538 ToDetailCommand = new Command(new Action<object>(OnTodetailCommand));
3639
@@ -56,6 +59,9 @@ namespace UI.ViewModels
5659 PropertyChanged += IndexPageVM_PropertyChanged;
5760
5861 LoadThisWeekData();
62新增:
63新增: appContextMenuServicer.Init();
64新增: AppContextMenu = appContextMenuServicer.GetContextMenu();
5965 }
6066
6167 private void OnTodetailCommand(object obj)
修改UI/Views/ChartPage.xaml+1 −1看文件
@@ -45,7 +45,7 @@
4545 </Border>
4646 <TextBlock Text="最为频繁的应用" Foreground="#5c5c5c" FontSize="15" Margin="0,20,0,5"/>
4747 <Border Margin="0,10,0,0" Width="680" HorizontalAlignment="Left" Background="White" Padding="20" CornerRadius="10">
48删除: <charts:Charts Height="300" Data="{Binding TopData}" ChartsType="HorizontalA" ClickCommand="{Binding ToDetailCommand}"/>
48新增: <charts:Charts Height="300" ItemMenu="{Binding AppContextMenu}" Data="{Binding TopData}" ChartsType="HorizontalA" ClickCommand="{Binding ToDetailCommand}"/>
4949 </Border>
5050 </StackPanel>
5151</Page>
修改UI/Views/DataPage.xaml+4 −4看文件
@@ -17,7 +17,7 @@
1717 </Grid.RowDefinitions>
1818 <TextBlock Text="详细" FontSize="18" Margin="0,5,0,20"/>
1919
20删除: <Tabbar:Tabbar Width="245" HorizontalAlignment="Left" Grid.Row="1" Data="{Binding TabbarData}" SelectedIndex="{Binding TabbarSelectedIndex,Mode=TwoWay}"/>
20新增: <Tabbar:Tabbar Width="145" HorizontalAlignment="Left" Grid.Row="1" Data="{Binding TabbarData}" SelectedIndex="{Binding TabbarSelectedIndex,Mode=TwoWay}"/>
2121
2222
2323 <TabControl
@@ -48,7 +48,7 @@
4848 </Grid.RowDefinitions>
4949 <DatePickerBar:DatePickerBar SelectedDate="{Binding DayDate,Mode=TwoWay}" ShowType="Day"/>
5050
51删除: <Charts:Charts Grid.Row="1" Data="{Binding Data}" ChartsType="HorizontalA" Margin="0,20,0,0" ClickCommand="{Binding ToDetailCommand}"/>
51新增: <Charts:Charts Grid.Row="1" ItemMenu="{Binding AppContextMenu}" Data="{Binding Data}" ChartsType="HorizontalA" Margin="0,20,0,0" ClickCommand="{Binding ToDetailCommand}"/>
5252 </Grid>
5353 </TabItem>
5454 <TabItem>
@@ -60,7 +60,7 @@
6060 </Grid.RowDefinitions>
6161 <DatePickerBar:DatePickerBar SelectedDate="{Binding MonthDate,Mode=TwoWay}" ShowType="Month"/>
6262
63删除: <Charts:Charts Grid.Row="1" Data="{Binding MonthData}" ChartsType="HorizontalA" Margin="0,20,0,0" ClickCommand="{Binding ToDetailCommand}"/>
63新增: <Charts:Charts Grid.Row="1" ItemMenu="{Binding AppContextMenu}" Data="{Binding MonthData}" ChartsType="HorizontalA" Margin="0,20,0,0" ClickCommand="{Binding ToDetailCommand}"/>
6464 </Grid>
6565 </TabItem>
6666 <TabItem>
@@ -72,7 +72,7 @@
7272 </Grid.RowDefinitions>
7373 <DatePickerBar:DatePickerBar SelectedDate="{Binding YearDate,Mode=TwoWay}" ShowType="Year"/>
7474
75删除: <Charts:Charts Grid.Row="1" Data="{Binding YearData}" ChartsType="HorizontalA" Margin="0,20,0,0" ClickCommand="{Binding ToDetailCommand}"/>
75新增: <Charts:Charts Grid.Row="1" ItemMenu="{Binding AppContextMenu}" Data="{Binding YearData}" ChartsType="HorizontalA" Margin="0,20,0,0" ClickCommand="{Binding ToDetailCommand}"/>
7676 </Grid>
7777 </TabItem>
7878 </TabControl>
修改UI/Views/IndexPage.xaml+2 −2看文件
@@ -25,9 +25,9 @@
2525 <TextBlock Text="概览" FontSize="18" Margin="0,5,0,20"/>
2626 <Tabbar:Tabbar Width="100" HorizontalAlignment="Left" Data="{Binding TabbarData}" SelectedIndex="{Binding TabbarSelectedIndex,Mode=TwoWay}"/>
2727 <TextBlock Text="最为频繁" FontSize="15" Margin="0,20,0,10"/>
28删除: <Charts:Charts IsCanScroll="False" Height="180" Data="{Binding WeekData}" ChartsType="HorizontalA" ShowLimit="3" IsLoading="{Binding IsLoading,Mode=TwoWay}" ClickCommand="{Binding ToDetailCommand}"/>
28新增: <Charts:Charts IsCanScroll="False" Height="180" Data="{Binding WeekData}" ChartsType="HorizontalA" ShowLimit="3" IsLoading="{Binding IsLoading,Mode=TwoWay}" ClickCommand="{Binding ToDetailCommand}" ItemMenu="{Binding AppContextMenu}"/>
2929 <TextBlock Text="更多" FontSize="15" Margin="0,20,0,10"/>
30删除: <Charts:Charts Data="{Binding WeekData}" ChartsType="Card" ShowLimit="12" IsLoading="{Binding IsLoading,Mode=TwoWay}" ClickCommand="{Binding ToDetailCommand}"/>
30新增: <Charts:Charts Data="{Binding WeekData}" ItemMenu="{Binding AppContextMenu}" ChartsType="Card" ShowLimit="12" IsLoading="{Binding IsLoading,Mode=TwoWay}" ClickCommand="{Binding ToDetailCommand}"/>
3131
3232
3333 </StackPanel>