跳到主要内容

github/tai

公开

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

提交记录
修改Core/Servicers/Instances/AppData.cs+15 −2看文件
@@ -26,6 +26,8 @@ namespace Core.Servicers.Instances
2626 dispatcherTimer.Interval = new TimeSpan(0, 30, 0);
2727 dispatcherTimer.Tick += DispatcherTimer_Tick;
2828 dispatcherTimer.Start();
29新增:
30新增: _apps = new List<AppModel>();
2931 }
3032
3133
@@ -82,7 +84,10 @@ namespace Core.Servicers.Instances
8284 {
8385 return _apps.Where(m => m.Name == name).FirstOrDefault();
8486 }
85删除:
87新增: public AppModel GetApp(int id)
88新增: {
89新增: return _apps.Where(m => m.ID == id).FirstOrDefault();
90新增: }
8691 public void AddApp(AppModel app)
8792 {
8893 if (_apps.Where(m => m.Name == app.Name).Any())
@@ -103,6 +108,7 @@ namespace Core.Servicers.Instances
103108
104109 public void SaveAppChanges()
105110 {
111新增:
106112 using (var db = new TaiDbContext())
107113 {
108114 foreach (var item in _updateTempApps)
@@ -116,11 +122,18 @@ namespace Core.Servicers.Instances
116122 app.Name = item.Name;
117123 app.CategoryID = item.CategoryID;
118124 app.Description = item.Description;
119删除: app.Category = item.Category;
125新增: //app.Category = item.Category;
120126 }
121127 }
122128 db.SaveChanges();
129新增: _updateTempApps.Clear();
123130 }
131新增:
132新增: }
133新增:
134新增: public List<AppModel> GetAppsByCategoryID(int categoryID)
135新增: {
136新增: return _apps.Where(m => m.CategoryID == categoryID).ToList();
124137 }
125138 }
126139}
修改Core/Servicers/Instances/Data.cs+41 −30看文件
@@ -100,6 +100,9 @@ namespace Core.Servicers.Instances
100100
101101 public IEnumerable<DailyLogModel> GetDateRangelogList(DateTime start, DateTime end)
102102 {
103新增:
104新增: IEnumerable<AppModel> apps = appData.GetAllApps();
105新增:
103106 //using (var db = new StatisticContext())
104107 //{
105108
@@ -108,23 +111,45 @@ namespace Core.Servicers.Instances
108111 // //var res = db.DailyLog.Include(m => m.AppModel).SqlQuery("Select *,Sum(Time) as Time,DailyLogModels.ID,AppModelID,Date,AppModels.ID,AppModels.Name,AppModels.Description,AppModels.File,AppModels.CategoryID,AppModels.IconFile,AppModels.TotalTime from DailyLogModels LEFT OUTER JOIN AppModels ON AppModels.ID=DailyLogModels.ID WHERE AppModelID<>0 AND Date between '" + start.ToString("yyyy-MM-dd HH:mm:ss") + "' AND '" + end.ToString("yyyy-MM-dd HH:mm:ss") + "' GROUP BY AppModelID ").ToList();
109112 using (var db = new TaiDbContext())
110113 {
114新增: //var res = db.DailyLog
115新增: //.Include(m => m.AppModel)
116新增: //.Where(m => m.Date >= start && m.Date <= end && m.AppModelID != 0)
117新增: //.GroupBy(m => m.AppModelID)
118新增: //.Select(m => new
119新增: //{
120新增: // Time = m.Sum(a => a.Time),
121新增: // App = m.FirstOrDefault().AppModel,
122新增: // Date = m.FirstOrDefault().Date,
123新增: //})
124新增: //.ToList()
125新增: //.Select(m => new DailyLogModel
126新增: //{
127新增: // Time = m.Time,
128新增: // AppModel = m.App,
129新增: // Date = m.Date
130新增: //});
131新增:
111132 var res = db.DailyLog
112删除: .Include(m => m.AppModel)
113133 .Where(m => m.Date >= start && m.Date <= end && m.AppModelID != 0)
114134 .GroupBy(m => m.AppModelID)
115135 .Select(m => new
116136 {
117137 Time = m.Sum(a => a.Time),
118删除: App = m.FirstOrDefault().AppModel,
119138 Date = m.FirstOrDefault().Date,
139新增: AppID = m.FirstOrDefault().AppModelID
120140 })
121141 .ToList()
122142 .Select(m => new DailyLogModel
123143 {
124144 Time = m.Time,
125删除: AppModel = m.App,
126删除: Date = m.Date
127删除: });
145新增: Date = m.Date,
146新增: AppModelID = m.AppID
147新增: }).ToList();
148新增:
149新增: foreach (var log in res)
150新增: {
151新增: log.AppModel = appData.GetApp(log.AppModelID);
152新增: }
128153
129154 return res;
130155 }
@@ -218,13 +243,13 @@ namespace Core.Servicers.Instances
218243
219244 }
220245
221删除: public List<DailyLogModel> GetProcessMonthLogList(string processName, DateTime month)
246新增: public List<DailyLogModel> GetProcessMonthLogList(int appID, DateTime month)
222247 {
223删除: var app = appData.GetApp(processName);
224删除: if (app == null)
225删除: {
226删除: return new List<DailyLogModel>();
227删除: }
248新增: //var app = appData.GetApp(processName);
249新增: //if (app == null)
250新增: //{
251新增: // return new List<DailyLogModel>();
252新增: //}
228253 using (var db = new TaiDbContext())
229254 {
230255
@@ -232,7 +257,7 @@ namespace Core.Servicers.Instances
232257 m =>
233258 m.Date.Year == month.Year
234259 && m.Date.Month == month.Month
235删除: && m.AppModelID == app.ID
260新增: && m.AppModelID == appID
236261 );
237262 if (res != null)
238263 {
@@ -243,45 +268,31 @@ namespace Core.Servicers.Instances
243268 }
244269
245270
246删除: public void Clear(string processName, DateTime month)
271新增: public void Clear(int appID, DateTime month)
247272 {
248删除: if (string.IsNullOrEmpty(processName))
249删除: {
250删除: return;
251删除: }
252273
253删除: var app = appData.GetApp(processName);
254删除: if (app == null)
255删除: {
256删除: return;
257删除: }
258274 using (var db = new TaiDbContext())
259275 {
260276
261277 db.DailyLog.RemoveRange(
262278 db.DailyLog.Where(m =>
263删除: m.AppModelID == app.ID
279新增: m.AppModelID == appID
264280 && m.Date.Year == month.Year
265281 && m.Date.Month == month.Month));
266282 db.SaveChanges();
267283 }
268284 }
269285
270删除: public DailyLogModel GetProcess(string processName, DateTime day)
286新增: public DailyLogModel GetProcess(int appID, DateTime day)
271287 {
272删除: var app = appData.GetApp(processName);
273288
274删除: if (app == null)
275删除: {
276删除: return null;
277删除: }
278289
279290 using (var db = new TaiDbContext())
280291 {
281292
282293
283294 var res = db.DailyLog.Where(m =>
284删除: m.AppModelID == app.ID
295新增: m.AppModelID == appID
285296 && m.Date.Year == day.Year
286297 && m.Date.Month == day.Month
287298 && m.Date.Day == day.Day);
修改Core/Servicers/Instances/Main.cs+10 −3看文件
@@ -25,6 +25,7 @@ namespace Core.Servicers.Instances
2525 private readonly IAppConfig appConfig;
2626 private readonly IDateObserver dateObserver;
2727 private readonly IAppData appData;
28新增: private readonly ICategorys categories;
2829 // 忽略的进程
2930 private readonly string[] IgnoreProcess = new string[] {
3031 "Tai",
@@ -80,7 +81,7 @@ namespace Core.Servicers.Instances
8081 ISleepdiscover sleepdiscover,
8182 IAppConfig appConfig,
8283 IDateObserver dateObserver,
83删除: IAppData appData)
84新增: IAppData appData, ICategorys categories)
8485 {
8586 this.observer = observer;
8687 this.data = data;
@@ -88,6 +89,7 @@ namespace Core.Servicers.Instances
8889 this.appConfig = appConfig;
8990 this.dateObserver = dateObserver;
9091 this.appData = appData;
92新增: this.categories = categories;
9193
9294 observer.OnAppActive += Observer_OnAppActive;
9395 sleepdiscover.SleepStatusChanged += Sleepdiscover_SleepStatusChanged;
@@ -132,10 +134,15 @@ namespace Core.Servicers.Instances
132134 db.SelfCheck();
133135 }
134136 Debug.WriteLine("db self check over!");
137新增:
138新增: // 加载app信息
139新增: appData.Load();
140新增:
141新增: // 加载分类信息
142新增: categories.Load();
135143 });
136144
137删除: // 加载app信息
138删除: appData.Load();
145新增:
139146
140147 // 加载应用配置(确保配置文件最先加载
141148 appConfig.Load();
修改Core/Servicers/Interfaces/IAppData.cs+7 −0看文件
@@ -23,6 +23,7 @@ namespace Core.Servicers.Interfaces
2323 /// <param name="name"></param>
2424 /// <returns></returns>
2525 AppModel GetApp(string name);
26新增: AppModel GetApp(int id);
2627 /// <summary>
2728 /// 获取所有app
2829 /// </summary>
@@ -33,5 +34,11 @@ namespace Core.Servicers.Interfaces
3334 /// 加载已存储的app列表,仅建议在启动时调用一次,无必要请勿再次调用
3435 /// </summary>
3536 void Load();
37新增: /// <summary>
38新增: /// 获取app列表通过分类ID
39新增: /// </summary>
40新增: /// <param name="categoryID">分类ID</param>
41新增: /// <returns></returns>
42新增: List<AppModel> GetAppsByCategoryID(int categoryID);
3643 }
3744}
修改Core/Servicers/Interfaces/IData.cs+4 −4看文件
@@ -9,7 +9,7 @@ namespace Core.Servicers.Interfaces
99{
1010 public interface IData
1111 {
12删除:
12新增:
1313 /// <summary>
1414 /// 设置进程数据
1515 /// </summary>
@@ -55,14 +55,14 @@ namespace Core.Servicers.Interfaces
5555 /// <param name="processName"></param>
5656 /// <param name="month"></param>
5757 /// <returns></returns>
58删除: List<DailyLogModel> GetProcessMonthLogList(string processName, DateTime month);
58新增: List<DailyLogModel> GetProcessMonthLogList(int appID, DateTime month);
5959
6060
6161 /// <summary>
6262 /// 清空指定进程某月的数据
6363 /// </summary>
6464 /// <param name="processName"></param>
65删除: void Clear(string processName, DateTime month);
65新增: void Clear(int appID, DateTime month);
6666
6767 /// <summary>
6868 /// 获取指定进程某天的数据
@@ -70,6 +70,6 @@ namespace Core.Servicers.Interfaces
7070 /// <param name="processName"></param>
7171 /// <param name="day"></param>
7272 /// <returns></returns>
73删除: DailyLogModel GetProcess(string processName, DateTime day);
73新增: DailyLogModel GetProcess(int appID, DateTime day);
7474 }
7575}
修改UI/MainWindow.xaml+3 −1看文件
@@ -15,7 +15,9 @@
1515 Icon="/Resources/Icons/tai32.ico"
1616 IsShowToast="{Binding IsShowToast,Mode=TwoWay}"
1717 ToastContent="{Binding ToastContent,Mode=TwoWay}"
18删除: ToastIcon="{Binding ToastIcon}">
18新增: ToastIcon="{Binding ToastIcon}"
19新增: ToastType="{Binding ToastType}"
20新增: >
1921 <Grid>
2022 <!--主要功能-->
2123 <Grid>
新增UI/Models/CategoryAppList/ChooseAppModel.cs+17 −0看文件
@@ -0,0 +1,17 @@
1新增:using Core.Models;
2新增:using System;
3新增:using System.Collections.Generic;
4新增:using System.Linq;
5新增:using System.Text;
6新增:using System.Threading.Tasks;
7新增:using UI.Controls.Select;
8新增:
9新增:namespace UI.Models.CategoryAppList
10新增:{
11新增: public class ChooseAppModel
12新增: {
13新增: public bool IsChoosed { get; set; }
14新增: public AppModel App { get; set; }
15新增: public SelectItemModel Value { get; set; } = new SelectItemModel();
16新增: }
17新增:}
修改UI/Models/DetailPageModel.cs+17 −5看文件
@@ -1,4 +1,5 @@
1删除:using System;
1新增:using Core.Models;
2新增:using System;
23using System.Collections.Generic;
34using System.Collections.ObjectModel;
45using System.Linq;
@@ -6,6 +7,7 @@ using System.Text;
67using System.Threading.Tasks;
78using System.Windows;
89using UI.Controls.Charts.Model;
10新增:using UI.Controls.Select;
911
1012namespace UI.Models
1113{
@@ -21,8 +23,8 @@ namespace UI.Models
2123 get { return Data_; }
2224 set { Data_ = value; OnPropertyChanged(); }
2325 }
24删除: private ChartsDataModel Process_;
25删除: public ChartsDataModel Process { get { return Process_; } set { Process_ = value; OnPropertyChanged(); } }
26新增: private AppModel App_;
27新增: public AppModel App { get { return App_; } set { App_ = value; OnPropertyChanged(); } }
2628 private bool IsLoading_;
2729 public bool IsLoading { get { return IsLoading_; } set { IsLoading_ = value; OnPropertyChanged(); } }
2830
@@ -38,8 +40,6 @@ namespace UI.Models
3840 private string LongDay_;
3941 public string LongDay { get { return LongDay_; } set { LongDay_ = value; OnPropertyChanged(); } }
4042
41删除: private string ProcessName_;
42删除: public string ProcessName { get { return ProcessName_; } set { ProcessName_ = value; OnPropertyChanged(); } }
4343
4444 private bool IsIgnore_;
4545 public bool IsIgnore
@@ -79,5 +79,17 @@ namespace UI.Models
7979 /// 相比昨日
8080 /// </summary>
8181 public string Yesterday { get { return Yesterday_; } set { Yesterday_ = value; OnPropertyChanged(); } }
82新增:
83新增: private List<SelectItemModel> Categorys_;
84新增: /// <summary>
85新增: /// 分类数据
86新增: /// </summary>
87新增: public List<SelectItemModel> Categorys { get { return Categorys_; } set { Categorys_ = value; OnPropertyChanged(); } }
88新增:
89新增: private SelectItemModel Category_;
90新增: /// <summary>
91新增: /// 当前分类
92新增: /// </summary>
93新增: public SelectItemModel Category { get { return Category_; } set { Category_ = value; OnPropertyChanged(); } }
8294 }
8395}
修改UI/Models/MainWindowModel.cs+9 −1看文件
@@ -7,6 +7,7 @@ using System.Threading.Tasks;
77using UI.Controls;
88using UI.Controls.Base;
99using UI.Controls.Navigation.Models;
10新增:using UI.Controls.Window;
1011
1112namespace UI.Models
1213{
@@ -87,5 +88,12 @@ namespace UI.Models
8788 public bool IsShowToast { get { return IsShowToast_; } set { IsShowToast_ = value; OnPropertyChanged(); } }
8889 private IconTypes ToastIcon_;
8990 public IconTypes ToastIcon { get { return ToastIcon_; } set { ToastIcon_ = value; OnPropertyChanged(); } }
91新增:
92新增: private ToastType ToastType_;
93新增: public ToastType ToastType
94新增: {
95新增: get { return ToastType_; }
96新增: set { ToastType_ = value; OnPropertyChanged(); }
97新增: }
9098 }
91删除:}
99新增:}
文件末尾没有换行
修改UI/ViewModels/DataPageVM.cs+7 −2看文件
@@ -1,5 +1,6 @@
11using Core.Librarys;
22using Core.Librarys.Image;
3新增:using Core.Models;
34using Core.Servicers.Interfaces;
45using System;
56using System.Collections.Generic;
@@ -57,8 +58,12 @@ namespace UI.ViewModels
5758
5859 if (data != null)
5960 {
60删除: main.Data = data;
61删除: main.Uri = nameof(DetailPage);
61新增: var model = data.Data as DailyLogModel;
62新增: if (model != null && model.AppModel != null)
63新增: {
64新增: main.Data = model.AppModel;
65新增: main.Uri = nameof(DetailPage);
66新增: }
6267 }
6368 }
6469
修改UI/ViewModels/DetailPageVM.cs+70 −30看文件
@@ -11,6 +11,7 @@ using System.Threading.Tasks;
1111using System.Windows;
1212using UI.Controls;
1313using UI.Controls.Charts.Model;
14新增:using UI.Controls.Select;
1415using UI.Librays;
1516using UI.Models;
1617
@@ -21,17 +22,21 @@ namespace UI.ViewModels
2122 private readonly IData data;
2223 private readonly MainViewModel main;
2324 private readonly IAppConfig appConfig;
25新增: private readonly ICategorys categories;
26新增: private readonly IAppData appData;
2427
2528 private ConfigModel config;
2629 public Command BlockActionCommand { get; set; }
2730 public Command ClearSelectMonthDataCommand { get; set; }
2831 public Command InfoMenuActionCommand { get; set; }
2932 public DetailPageVM(
30删除: IData data, MainViewModel main, IAppConfig appConfig)
33新增: IData data, MainViewModel main, IAppConfig appConfig, ICategorys categories, IAppData appData)
3134 {
3235 this.data = data;
3336 this.main = main;
3437 this.appConfig = appConfig;
38新增: this.categories = categories;
39新增: this.appData = appData;
3540
3641 BlockActionCommand = new Command(new Action<object>(OnBlockActionCommand));
3742 ClearSelectMonthDataCommand = new Command(new Action<object>(OnClearSelectMonthDataCommand));
@@ -43,7 +48,7 @@ namespace UI.ViewModels
4348
4449 private async void Init()
4550 {
46删除: Process = main.Data as ChartsDataModel;
51新增: App = main.Data as AppModel;
4752
4853 Date = DateTime.Now;
4954
@@ -61,30 +66,30 @@ namespace UI.ViewModels
6166 switch (obj.ToString())
6267 {
6368 case "copy processname":
64删除: Clipboard.SetText(ProcessName);
69新增: Clipboard.SetText(App.Name);
6570
6671 break;
6772 case "copy process file":
68删除: Clipboard.SetText(Process.PopupText);
73新增: Clipboard.SetText(App.File);
6974 break;
7075 case "open dir":
71删除: if (File.Exists(Process.PopupText))
76新增: if (File.Exists(App.File))
7277 {
73删除: System.Diagnostics.Process.Start("explorer.exe", "/select, " + Process.PopupText);
78新增: System.Diagnostics.Process.Start("explorer.exe", "/select, " + App.File);
7479 }
7580 else
7681 {
77删除: main.Toast("进程文件似乎不存在", Controls.Base.IconTypes.Blocked);
82新增: main.Toast("进程文件似乎不存在", Controls.Window.ToastType.Error, Controls.Base.IconTypes.Blocked);
7883 }
7984 break;
8085 case "open exe":
81删除: if (File.Exists(Process.PopupText))
86新增: if (File.Exists(App.File))
8287 {
83删除: System.Diagnostics.Process.Start(Process.PopupText);
88新增: System.Diagnostics.Process.Start(App.File);
8489 }
8590 else
8691 {
87删除: main.Toast("进程文件似乎不存在", Controls.Base.IconTypes.Blocked);
92新增: main.Toast("进程文件似乎不存在", Controls.Window.ToastType.Error, Controls.Base.IconTypes.Blocked);
8893 }
8994 break;
9095 }
@@ -99,15 +104,15 @@ namespace UI.ViewModels
99104 {
100105 if (obj.ToString() == "block")
101106 {
102删除: config.Behavior.IgnoreProcessList.Add(ProcessName);
107新增: config.Behavior.IgnoreProcessList.Add(App.Name);
103108 IsIgnore = true;
104删除: main.Toast("进程已忽略");
109新增: main.Toast("应用已忽略");
105110 }
106111 else
107112 {
108删除: config.Behavior.IgnoreProcessList.Remove(ProcessName);
113新增: config.Behavior.IgnoreProcessList.Remove(App.Name);
109114 IsIgnore = false;
110删除: main.Toast("进程已取消忽略");
115新增: main.Toast("已取消忽略");
111116 }
112117
113118 appConfig.Save();
@@ -119,24 +124,60 @@ namespace UI.ViewModels
119124 {
120125 await LoadData();
121126 }
127新增:
128新增: if (e.PropertyName == nameof(Category))
129新增: {
130新增: if (App.Category == null && Category != null || Category != null && App.Category.Name != Category.Name)
131新增: {
132新增: App.Category = Category.Data as CategoryModel;
133新增:
134新增: var app = appData.GetApp(App.ID);
135新增: if (app != null)
136新增: {
137新增: app.CategoryID = App.Category.ID;
138新增: appData.UpdateApp(app);
139新增: }
140新增: }
141新增:
142新增: }
143新增: }
144新增:
145新增: private void LoadCategorys(string categoryName)
146新增: {
147新增: var list = new List<SelectItemModel>();
148新增: foreach (var item in categories.GetCategories())
149新增: {
150新增: var option = new SelectItemModel()
151新增: {
152新增: Data = item,
153新增: Img = item.IconFile,
154新增: Name = item.Name,
155新增: };
156新增: list.Add(option);
157新增: if (categoryName == option.Name)
158新增: {
159新增: Category = option;
160新增: }
161新增: }
162新增:
163新增: Categorys = list;
164新增:
122165 }
123166
124167 private async Task LoadInfo()
125168 {
126169 await Task.Run(() =>
127170 {
128删除: if (Process != null)
171新增: if (App != null)
129172 {
130删除: var info = Process.Data as DailyLogModel;
131删除: if (info != null)
132删除: {
133删除: ProcessName = info.AppModel?.Name;
134删除: // 判断是否是忽略的进程
135删除: IsIgnore = config.Behavior.IgnoreProcessList.Contains(ProcessName);
136删除: }
137173
138删除: var today = data.GetProcess(ProcessName, DateTime.Now);
139删除: var yesterday = data.GetProcess(ProcessName, DateTime.Now.AddDays(-1));
174新增: // 判断是否是忽略的进程
175新增: IsIgnore = config.Behavior.IgnoreProcessList.Contains(App.Name);
176新增:
177新增: LoadCategorys(App.Category?.Name);
178新增:
179新增: var today = data.GetProcess(App.ID, DateTime.Now);
180新增: var yesterday = data.GetProcess(App.ID, DateTime.Now.AddDays(-1));
140181
141182 if (today != null)
142183 {
@@ -185,11 +226,10 @@ namespace UI.ViewModels
185226 {
186227 await Task.Run(() =>
187228 {
188删除: if (Process != null)
229新增: if (App != null)
189230 {
190231
191删除: var info = Process.Data as DailyLogModel;
192删除: var monthData = data.GetProcessMonthLogList(info.AppModel.Name, Date);
232新增: var monthData = data.GetProcessMonthLogList(App.ID, Date);
193233 int monthTotal = monthData.Sum(m => m.Time);
194234 Total = Timer.Fromat(monthTotal);
195235
@@ -231,10 +271,10 @@ namespace UI.ViewModels
231271 {
232272 await Task.Run(async () =>
233273 {
234删除: if (Process != null)
274新增: if (App != null)
235275 {
236276 main.Toast("正在处理");
237删除: data.Clear(ProcessName, Date);
277新增: data.Clear(App.ID, Date);
238278
239279 await LoadData();
240280 await LoadInfo();
@@ -253,7 +293,7 @@ namespace UI.ViewModels
253293 {
254294 var bindModel = new ChartsDataModel();
255295 bindModel.Data = item;
256删除: bindModel.Name =item.AppModel.Name;
296新增: bindModel.Name = item.AppModel.Name;
257297 bindModel.Value = item.Time;
258298 bindModel.Tag = Timer.Fromat(item.Time);
259299 bindModel.PopupText = item.AppModel.File;
修改UI/ViewModels/IndexPageVM.cs+8 −2看文件
@@ -1,5 +1,6 @@
11using Core.Librarys;
22using Core.Librarys.Image;
3新增:using Core.Models;
34using Core.Servicers.Interfaces;
45using System;
56using System.Collections.Generic;
@@ -64,8 +65,13 @@ namespace UI.ViewModels
6465
6566 if (data != null)
6667 {
67删除: main.Data = data;
68删除: main.Uri = nameof(DetailPage);
68新增: var model = data.Data as DailyLogModel;
69新增: if (model != null && model.AppModel != null)
70新增: {
71新增: main.Data = model.AppModel;
72新增: main.Uri = nameof(DetailPage);
73新增: }
74新增:
6975 }
7076 }
7177
修改UI/ViewModels/MainViewModel.cs+23 −2看文件
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
66using UI.Controls;
77using UI.Controls.Base;
88using UI.Controls.Navigation.Models;
9新增:using UI.Controls.Window;
910using UI.Models;
1011using UI.Views;
1112
@@ -72,6 +73,7 @@ namespace UI.ViewModels
7273 IndexUriList = new List<string>();
7374 IndexUriList.Add(nameof(IndexPage));
7475 IndexUriList.Add(nameof(DataPage));
76新增: IndexUriList.Add(nameof(CategoryPage));
7577
7678
7779 Items.Add(new Controls.Navigation.Models.NavigationItemModel()
@@ -85,19 +87,38 @@ namespace UI.ViewModels
8587 Items.Add(new Controls.Navigation.Models.NavigationItemModel()
8688 {
8789 Icon = Controls.Base.IconTypes.BIDashboard,
88删除: Title = "详细",
90新增: Title = "统计",
8991 ID = 1,
9092 Uri = nameof(DataPage),
9193
94新增: });
95新增: Items.Add(new Controls.Navigation.Models.NavigationItemModel()
96新增: {
97新增: Icon = Controls.Base.IconTypes.ClipboardListMirrored,
98新增: //Icon = Controls.Base.IconTypes.BIDashboard,
99新增: Title = "详细",
100新增: ID = 2,
101新增: Uri = nameof(DataPage),
102新增:
103新增: });
104新增: Items.Add(new Controls.Navigation.Models.NavigationItemModel()
105新增: {
106新增: Icon = Controls.Base.IconTypes.TagGroup,
107新增: Title = "分类",
108新增: ID = 3,
109新增: Uri = nameof(CategoryPage),
110新增:
92111 });
93112 NavSelectedItem = Items[0];
94113 }
95114
96删除: public void Toast(string content, IconTypes icon = IconTypes.Accept)
115新增: public void Toast(string content, ToastType type = ToastType.Info, IconTypes icon = IconTypes.Accept)
97116 {
98117 ToastContent = content;
99118 ToastIcon = icon;
119新增: ToastType = type;
100120 IsShowToast = true;
121新增:
101122 }
102123 }
103124}
修改UI/ViewModels/SettingPageVM.cs+2 −2看文件
@@ -53,7 +53,7 @@ namespace UI.ViewModels
5353
5454 if (!File.Exists(updaterExePath))
5555 {
56删除: mainVM.Toast("升级程序似乎已被删除,请手动前往发布页查看新版本", Controls.Base.IconTypes.None);
56新增: mainVM.Toast("升级程序似乎已被删除,请手动前往发布页查看新版本", Controls.Window.ToastType.Error, Controls.Base.IconTypes.None);
5757 return;
5858 }
5959 File.Copy(updaterExePath, updaterCacheExePath, true);
@@ -70,7 +70,7 @@ namespace UI.ViewModels
7070 CheckUpdateBtnVisibility = System.Windows.Visibility.Visible;
7171
7272 Logger.Error(ex.Message);
73删除: mainVM.Toast("无法正确启动检查更新程序", Controls.Base.IconTypes.None);
73新增: mainVM.Toast("无法正确启动检查更新程序", Controls.Window.ToastType.Error, Controls.Base.IconTypes.None);
7474 }
7575 }
7676
修改UI/Views/DetailPage.xaml+16 −5看文件
@@ -1,4 +1,4 @@
1删除:<Page
1新增:<Page xmlns:Select="clr-namespace:UI.Controls.Select"
22 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
33 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -34,7 +34,8 @@
3434 <ColumnDefinition Width="3*"/>
3535
3636 </Grid.ColumnDefinitions>
37删除: <Image Source="{Binding Process.Icon}" Width="25" HorizontalAlignment="Center" VerticalAlignment="Center"/>
37新增: <base:Img URL="{Binding App.IconFile}" Width="25" HorizontalAlignment="Center" VerticalAlignment="Center"/>
38新增: <!--<Image Source="{Binding Process.Icon}" Width="25" HorizontalAlignment="Center" VerticalAlignment="Center"/>-->
3839
3940 <StackPanel Grid.Column="1" VerticalAlignment="Center">
4041 <!--<StackPanel Orientation="Horizontal">
@@ -55,10 +56,20 @@
5556 </StackPanel>
5657 </Border>
5758
58删除: <TextBlock ToolTip="描述" Grid.Column="1" Text="{Binding Process.Name}" FontSize="18" VerticalAlignment="Center" TextWrapping="WrapWithOverflow"/>
59新增: <TextBlock ToolTip="描述" Grid.Column="1" Text="{Binding App.Description}" FontSize="18" VerticalAlignment="Center" TextWrapping="WrapWithOverflow"/>
5960
60删除: <TextBlock ToolTip="进程名" Text="{Binding ProcessName}" FontSize="12" Foreground="Gray" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="0,5,0,0"/>
61删除: <TextBlock ToolTip="进程文件路径" Foreground="Gray" Text="{Binding Process.PopupText}" Margin="0,5,0,0" TextWrapping="WrapWithOverflow"/>
61新增: <TextBlock ToolTip="进程名" Text="{Binding App.Name}" FontSize="12" Foreground="Gray" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="0,5,0,0"/>
62新增: <TextBlock ToolTip="进程文件路径" Foreground="Gray" Text="{Binding App.File}" Margin="0,5,0,0" TextWrapping="WrapWithOverflow"/>
63新增: <!--分类-->
64新增:
65新增: <!--<Border Margin="0,10,0,0" Background="#f9f9f9" HorizontalAlignment="Left" Padding="5" CornerRadius="5">
66新增:
67新增: <StackPanel Orientation="Horizontal">
68新增: <base:Img URL="{Binding Process.Data.AppModel.Category.IconFile}" Width="25" Height="25" VerticalAlignment="Center"/>
69新增: <TextBlock Text="{Binding Process.Data.AppModel.Category.Name}" VerticalAlignment="Center" Margin="5,0,0,0"/>
70新增: </StackPanel>
71新增: </Border>-->
72新增: <Select:Select ToolTip="分类" SelectedItem="{Binding Category,Mode=TwoWay}" Options="{Binding Categorys}"/>
6273
6374 </StackPanel>
6475
修改UI/Views/DetailPage.xaml.cs+17 −1看文件
@@ -24,8 +24,24 @@ namespace UI.Views
2424 public DetailPage(DetailPageVM vm)
2525 {
2626 InitializeComponent();
27删除:
27新增:
2828 DataContext = vm;
29新增:
30新增:
31新增: //test.Options = new List<Controls.Select.SelectItemModel>()
32新增: //{
33新增: // new Controls.Select.SelectItemModel()
34新增: //{
35新增: // Name = "123abc",
36新增: // Img = "D:\\projects\\moneylog\\icon.png"
37新增: //},new Controls.Select.SelectItemModel()
38新增: //{
39新增: // Name = "AAA",
40新增: // Img = "D:\\projects\\moneylog\\icon.png"
41新增: //}
42新增: //};
43新增:
44新增: //test.SelectedItem = test.Options[0];
2945 }
3046 }
3147}