跳到主要内容

github/tai

公开

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

提交记录
修改Core/Core.csproj+1 −0看文件
@@ -144,6 +144,7 @@
144144 <Compile Include="Event\EventHandler.cs" />
145145 <Compile Include="Event\ObserverEventHandler.cs" />
146146 <Compile Include="Librarys\ProcessHelper.cs" />
147新增: <Compile Include="Librarys\RegexHelper.cs" />
147148 <Compile Include="Librarys\Shortcut.cs" />
148149 <Compile Include="Librarys\Iconer.cs" />
149150 <Compile Include="Librarys\SQLite\SQLiteBuilder.cs" />
新增Core/Librarys/RegexHelper.cs+31 −0看文件
@@ -0,0 +1,31 @@
1新增:using System;
2新增:using System.Collections.Generic;
3新增:using System.Linq;
4新增:using System.Text;
5新增:using System.Text.RegularExpressions;
6新增:using System.Threading.Tasks;
7新增:
8新增:namespace Core.Librarys
9新增:{
10新增: public static class RegexHelper
11新增: {
12新增: /// <summary>
13新增: /// 是否正则匹配成功
14新增: /// </summary>
15新增: /// <param name="input"></param>
16新增: /// <param name="pattern"></param>
17新增: /// <returns></returns>
18新增: public static bool IsMatch(string input, string pattern)
19新增: {
20新增: try
21新增: {
22新增: return Regex.IsMatch(input, pattern);
23新增: }
24新增: catch (Exception ex)
25新增: {
26新增: Logger.Error("正则表达式错误。" + ex.ToString());
27新增: return false;
28新增: }
29新增: }
30新增: }
31新增:}
修改Core/Models/Config/BehaviorModel.cs+1 −1看文件
@@ -11,7 +11,7 @@ namespace Core.Models.Config
1111 /// </summary>
1212 public class BehaviorModel
1313 {
14删除: [Config(IsCanImportExport = true, Name = "忽略应用", Description = "忽略的应用将不进行时长统计", Group = "忽略应用", Placeholder = "应用进程名称,不需要输入.exe。支持正则表达式")]
14新增: [Config(IsCanImportExport = true, Name = "忽略应用", Description = "可以通过进程名称或者正则表达式进行匹配。当使用正则表达式时可以匹配程序路径", Group = "忽略应用", Placeholder = "进程名称,不需要输入.exe。支持正则表达式")]
1515 /// <summary>
1616 /// 忽略的进程列表
1717 /// </summary>
修改Core/Servicers/Instances/Main.cs+1 −2看文件
@@ -254,10 +254,9 @@ namespace Core.Servicers.Instances
254254 // 正则表达式
255255 foreach (string reg in ConfigIgnoreProcessRegxList)
256256 {
257删除: if (Regex.IsMatch(processName, reg))
257新增: if (RegexHelper.IsMatch(processName, reg) || RegexHelper.IsMatch(file, reg))
258258 {
259259 IgnoreProcessCacheList.Add(processName);
260删除:
261260 return false;
262261 }
263262 }
修改UI/Controls/SettingPanel/SettingPanel.cs+8 −0看文件
@@ -484,6 +484,14 @@ namespace UI.Controls.SettingPanel
484484 {
485485 listControl.Items.Remove(listControl.SelectedItem);
486486 };
487新增: var contextMenuItemCopy = new MenuItem();
488新增: contextMenuItemCopy.Header = "复制内容";
489新增: contextMenuItemCopy.Click += (e, c) =>
490新增: {
491新增: Clipboard.SetText(listControl.SelectedItem);
492新增: };
493新增: contextMenu.Items.Add(contextMenuItemCopy);
494新增: contextMenu.Items.Add(new Separator());
487495 contextMenu.Items.Add(contextMenuItemDel);
488496 listControl.ContextMenu = contextMenu;
489497
修改UI/Models/DetailPageModel.cs+5 −0看文件
@@ -161,5 +161,10 @@ namespace UI.Models
161161 /// 关联的应用
162162 /// </summary>
163163 public List<AppModel> LinkApps { get { return LinkApps_; } set { LinkApps_ = value; OnPropertyChanged(); } }
164新增: private bool IsRegexIgnore_;
165新增: /// <summary>
166新增: /// 是否已被正则忽略
167新增: /// </summary>
168新增: public bool IsRegexIgnore { get { return IsRegexIgnore_; } set { IsRegexIgnore_ = value; OnPropertyChanged(); } }
164169 }
165170}
修改UI/ViewModels/DetailPageVM.cs+13 −0看文件
@@ -7,6 +7,7 @@ using System.Collections.Generic;
77using System.IO;
88using System.Linq;
99using System.Text;
10新增:using System.Text.RegularExpressions;
1011using System.Threading.Tasks;
1112using System.Windows;
1213using UI.Controls;
@@ -98,8 +99,20 @@ namespace UI.ViewModels
9899 LoadDayData();
99100
100101 inputServicer.OnKeyUpInput += InputServicer_OnKeyUpInput;
102新增:
103新增: // 判断正则忽略
104新增: var regexList = config.Behavior.IgnoreProcessList.Where(m => Regex.IsMatch(m, @"[\.|\*|\?|\{|\\|\[|\^|\|]"));
105新增: foreach (string reg in regexList)
106新增: {
107新增: if (RegexHelper.IsMatch(App.Name, reg) || RegexHelper.IsMatch(App.File, reg))
108新增: {
109新增: IsRegexIgnore = true;
110新增: break;
111新增: }
112新增: }
101113 }
102114
115新增:
103116 private async void InputServicer_OnKeyUpInput(object sender, System.Windows.Forms.Keys key)
104117 {
105118 if (key == System.Windows.Forms.Keys.F5)
修改UI/Views/DetailPage.xaml+19 −9看文件
@@ -56,13 +56,22 @@
5656 <TextBlock ToolTip="进程名" Text="{Binding ProcessName}" FontSize="12" Foreground="Gray" VerticalAlignment="Center" Margin="10,0,0,0"/>
5757
5858 </StackPanel>-->
59删除: <Border Background="#f51837" Padding="10,5" CornerRadius="4" Margin="0,0,0,5" VerticalAlignment="Center" HorizontalAlignment="Left" Visibility="{Binding CancelBlockBtnVisibility}" ToolTip="该应用将不再统计使用时长">
60删除: <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
61删除: <base:Icon IconType="StatusCircleBlock" FontSize="12" VerticalAlignment="Center" Foreground="White"/>
62删除: <TextBlock Text="已被忽略" Foreground="White" VerticalAlignment="Center" Margin="5,0,0,0"/>
63删除: </StackPanel>
64删除: </Border>
65删除:
59新增: <base:View Condition="=false" Value="{Binding IsRegexIgnore}">
60新增: <Border Background="#f51837" Padding="10,5" CornerRadius="4" Margin="0,0,0,5" VerticalAlignment="Center" HorizontalAlignment="Left" Visibility="{Binding CancelBlockBtnVisibility}" ToolTip="该应用将不再统计使用时长">
61新增: <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
62新增: <base:Icon IconType="StatusCircleBlock" FontSize="12" VerticalAlignment="Center" Foreground="White"/>
63新增: <TextBlock Text="已被忽略" Foreground="White" VerticalAlignment="Center" Margin="5,0,0,0"/>
64新增: </StackPanel>
65新增: </Border>
66新增: </base:View>
67新增: <base:View Value="{Binding IsRegexIgnore}">
68新增: <Border Background="#f51837" Padding="10,5" CornerRadius="4" Margin="0,0,0,5" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="该应用将不再统计使用时长">
69新增: <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
70新增: <base:Icon IconType="StatusCircleBlock" FontSize="12" VerticalAlignment="Center" Foreground="White"/>
71新增: <TextBlock Text="已被正则忽略匹配" Foreground="White" VerticalAlignment="Center" Margin="5,0,0,0"/>
72新增: </StackPanel>
73新增: </Border>
74新增: </base:View>
6675 <TextBlock ToolTip="应用描述" Grid.Column="1" Text="{Binding App.Description}" FontSize="18" VerticalAlignment="Center" TextWrapping="WrapWithOverflow"/>
6776
6877 <TextBlock ToolTip="应用进程名称" Text="{Binding App.Name}" FontSize="12" Foreground="Gray" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="0,5,0,0"/>
@@ -85,12 +94,13 @@
8594
8695 </StackPanel>
8796 <Grid Grid.Column="2">
88删除: <StackPanel Grid.Column="2" HorizontalAlignment="Right" Margin="0,0,20,0">
97新增: <base:View Grid.Column="2" Condition="=false" Value="{Binding IsRegexIgnore}">
98新增: <StackPanel HorizontalAlignment="Right" Margin="0,0,20,0">
8999 <btn:Button Command="{Binding BlockActionCommand}" CommandParameter="block" Width="120" Visibility="{Binding BlockBtnVisibility}" Icon="StatusCircleBlock">忽略此应用</btn:Button>
90100 <btn:Button Command="{Binding BlockActionCommand}" CommandParameter="unblock" Width="120" Visibility="{Binding CancelBlockBtnVisibility}" Icon="Remove">取消忽略</btn:Button>
91101
92102 </StackPanel>
93删除:
103新增: </base:View>
94104 <ItemsControl Margin="0,20,10,0" VerticalAlignment="Bottom" ItemsSource="{Binding LinkApps}" HorizontalAlignment="Right">
95105 <ItemsControl.ItemsPanel>
96106 <ItemsPanelTemplate>