提交记录修改Core/Librarys/Win32API.cs+13 −0看文件
修改UI/App.xaml.cs+7 −14看文件
新增UI/Servicers/IInputServicer.cs+21 −0看文件
新增UI/Servicers/IMainServicer.cs+13 −0看文件
新增UI/Servicers/InputEventHandler.cs+11 −0看文件
新增UI/Servicers/InputServicer.cs+56 −0看文件
新增UI/Servicers/MainServicer.cs+33 −0看文件
修改UI/UI.csproj+5 −0看文件
修改UI/ViewModels/ChartPageVM.cs+47 −22看文件
修改UI/ViewModels/DetailPageVM.cs+57 −64看文件
修改UI/ViewModels/IndexPageVM.cs+38 −12看文件
修改UI/Views/ChartPage.xaml+6 −2看文件
修改UI/Views/DetailPage.xaml+6 −2看文件
修改UI/Views/IndexPage.xaml+7 −2看文件
| @@ -220,11 +220,24 @@ namespace Core.Librarys | ||
| 220 | 220 | #endregion |
| 221 | 221 | |
| 222 | 222 | #region 键盘钩子 |
| 223 | 新增: [StructLayout(LayoutKind.Sequential)] | |
| 224 | 新增: public class KeyboardHookStruct | |
| 225 | 新增: { | |
| 226 | 新增: public int vkCode; //定一个虚拟键码。该代码必须有一个价值的范围1至254 | |
| 227 | 新增: public int scanCode; // 指定的硬件扫描码的关键 | |
| 228 | 新增: public int flags; // 键标志 | |
| 229 | 新增: public int time; // 指定的时间戳记的这个讯息 | |
| 230 | 新增: public int dwExtraInfo; // 指定额外信息相关的信息 | |
| 231 | 新增: } | |
| 232 | 新增: | |
| 223 | 233 | private const int WH_KEYBOARD_LL = 13; |
| 224 | 234 | public const int WM_KEYDOWN = 0x0100; |
| 225 | 235 | private const int WH_MOUSE_LL = 14; |
| 226 | 236 | public const int WM_LBUTTONDBLCLK = 0x202; |
| 227 | 237 | public const int WM_WHEEL = 0x20a; |
| 238 | 新增: public const int WM_KEYUP = 0x101; | |
| 239 | 新增: public const int WM_SYSKEYDOWN = 0x104; | |
| 240 | 新增: public const int WM_SYSKEYUP = 0x105; | |
| 228 | 241 | /// <summary> |
| 229 | 242 | /// 设置键盘钩子 |
| 230 | 243 | /// </summary> |
| @@ -191,8 +191,11 @@ namespace UI | ||
| 191 | 191 | services.AddSingleton<IAppData, AppData>(); |
| 192 | 192 | services.AddSingleton<ICategorys, Categorys>(); |
| 193 | 193 | |
| 194 | 新增: // UI服务 | |
| 194 | 195 | services.AddSingleton<IAppContextMenuServicer, AppContextMenuServicer>(); |
| 195 | 196 | services.AddSingleton<IThemeServicer, ThemeServicer>(); |
| 197 | 新增: services.AddSingleton<IMainServicer, MainServicer>(); | |
| 198 | 新增: services.AddSingleton<IInputServicer, InputServicer>(); | |
| 196 | 199 | |
| 197 | 200 | // 主窗口 |
| 198 | 201 | services.AddSingleton<MainViewModel>(); |
| @@ -235,13 +238,10 @@ namespace UI | ||
| 235 | 238 | Shutdown(); |
| 236 | 239 | } |
| 237 | 240 | |
| 238 | 删除: var main = serviceProvider.GetService<IMain>(); | |
| 241 | 新增: var main = serviceProvider.GetService<IMainServicer>(); | |
| 242 | 新增: main.Start(); | |
| 243 | 新增: | |
| 239 | 244 | var observer = serviceProvider.GetService<IObserver>(); |
| 240 | 删除: | |
| 241 | 删除: main.OnStarted += Main_OnStarted; | |
| 242 | 删除: main.Run(); | |
| 243 | 删除: | |
| 244 | 删除: | |
| 245 | 245 | observer.OnAppActive += (p, d, f) => |
| 246 | 246 | { |
| 247 | 247 | Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, new Action(() => |
| @@ -251,16 +251,9 @@ namespace UI | ||
| 251 | 251 | }; |
| 252 | 252 | // 创建保活窗口 |
| 253 | 253 | keepaliveWindow = new HideWindow(); |
| 254 | 删除: | |
| 255 | 删除: | |
| 256 | 删除: appData = serviceProvider.GetService<IAppData>(); | |
| 257 | 254 | } |
| 258 | 255 | |
| 259 | 删除: private void Main_OnStarted(object sender, EventArgs e) | |
| 260 | 删除: { | |
| 261 | 删除: var theme = serviceProvider.GetService<IThemeServicer>(); | |
| 262 | 删除: theme.Init(); | |
| 263 | 删除: } | |
| 256 | 新增: | |
| 264 | 257 | |
| 265 | 258 | private void ShowMainWindow() |
| 266 | 259 | { |
| @@ -0,0 +1,21 @@ | ||
| 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.Servicers | |
| 8 | 新增:{ | |
| 9 | 新增: public interface IInputServicer | |
| 10 | 新增: { | |
| 11 | 新增: void Start(); | |
| 12 | 新增: /// <summary> | |
| 13 | 新增: /// 当键盘按下时发生 | |
| 14 | 新增: /// </summary> | |
| 15 | 新增: event InputEventHandler OnKeyDownInput; | |
| 16 | 新增: /// <summary> | |
| 17 | 新增: /// 当键盘抬起时发生 | |
| 18 | 新增: /// </summary> | |
| 19 | 新增: event InputEventHandler OnKeyUpInput; | |
| 20 | 新增: } | |
| 21 | 新增:} | |
| @@ -0,0 +1,13 @@ | ||
| 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.Servicers | |
| 8 | 新增:{ | |
| 9 | 新增: public interface IMainServicer | |
| 10 | 新增: { | |
| 11 | 新增: void Start(); | |
| 12 | 新增: } | |
| 13 | 新增:} | |
| @@ -0,0 +1,11 @@ | ||
| 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.Forms; | |
| 7 | 新增: | |
| 8 | 新增:namespace UI.Servicers | |
| 9 | 新增:{ | |
| 10 | 新增: public delegate void InputEventHandler(object sender, Keys key); | |
| 11 | 新增:} | |
| @@ -0,0 +1,56 @@ | ||
| 1 | 新增:using Core.Librarys; | |
| 2 | 新增:using System; | |
| 3 | 新增:using System.Collections.Generic; | |
| 4 | 新增:using System.Diagnostics; | |
| 5 | 新增:using System.Linq; | |
| 6 | 新增:using System.Runtime.InteropServices; | |
| 7 | 新增:using System.Text; | |
| 8 | 新增:using System.Threading.Tasks; | |
| 9 | 新增:using System.Windows.Forms; | |
| 10 | 新增: | |
| 11 | 新增:namespace UI.Servicers | |
| 12 | 新增:{ | |
| 13 | 新增: public class InputServicer : IInputServicer | |
| 14 | 新增: { | |
| 15 | 新增: public event InputEventHandler OnKeyDownInput; | |
| 16 | 新增: public event InputEventHandler OnKeyUpInput; | |
| 17 | 新增: | |
| 18 | 新增: private Win32API.LowLevelKeyboardProc keyboardProc; | |
| 19 | 新增: private static IntPtr hookKeyboardID = IntPtr.Zero; | |
| 20 | 新增: private IntPtr keyboardHook; | |
| 21 | 新增: public InputServicer() | |
| 22 | 新增: { | |
| 23 | 新增: keyboardProc = HookCallback; | |
| 24 | 新增: } | |
| 25 | 新增: public void Start() | |
| 26 | 新增: { | |
| 27 | 新增: // 设置键盘钩子 | |
| 28 | 新增: keyboardHook = Win32API.SetKeyboardHook(keyboardProc); | |
| 29 | 新增: } | |
| 30 | 新增: | |
| 31 | 新增: private IntPtr HookCallback( | |
| 32 | 新增: int nCode, IntPtr wParam, IntPtr lParam) | |
| 33 | 新增: { | |
| 34 | 新增: if (nCode >= 0) | |
| 35 | 新增: { | |
| 36 | 新增: Win32API.KeyboardHookStruct MyKeyboardHookStruct = (Win32API.KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(Win32API.KeyboardHookStruct)); | |
| 37 | 新增: | |
| 38 | 新增: Keys key = (Keys)MyKeyboardHookStruct.vkCode; | |
| 39 | 新增: | |
| 40 | 新增: // 键盘按下 | |
| 41 | 新增: if (wParam == (IntPtr)Win32API.WM_KEYDOWN) | |
| 42 | 新增: { | |
| 43 | 新增: OnKeyDownInput?.Invoke(this, key); | |
| 44 | 新增: } | |
| 45 | 新增: | |
| 46 | 新增: // 键盘抬起 | |
| 47 | 新增: if ((wParam == (IntPtr)Win32API.WM_KEYUP || wParam == (IntPtr)Win32API.WM_SYSKEYUP)) | |
| 48 | 新增: { | |
| 49 | 新增: OnKeyUpInput?.Invoke(this, key); | |
| 50 | 新增: } | |
| 51 | 新增: } | |
| 52 | 新增: return Win32API.CallNextHookEx(hookKeyboardID, nCode, wParam, lParam); | |
| 53 | 新增: | |
| 54 | 新增: } | |
| 55 | 新增: } | |
| 56 | 新增:} | |
| @@ -0,0 +1,33 @@ | ||
| 1 | 新增:using Core.Servicers.Interfaces; | |
| 2 | 新增:using System; | |
| 3 | 新增:using System.Collections.Generic; | |
| 4 | 新增:using System.Linq; | |
| 5 | 新增:using System.Text; | |
| 6 | 新增:using System.Threading.Tasks; | |
| 7 | 新增: | |
| 8 | 新增:namespace UI.Servicers | |
| 9 | 新增:{ | |
| 10 | 新增: public class MainServicer : IMainServicer | |
| 11 | 新增: { | |
| 12 | 新增: private readonly IMain main; | |
| 13 | 新增: private readonly IThemeServicer themeServicer; | |
| 14 | 新增: private readonly IInputServicer inputServicer; | |
| 15 | 新增: public MainServicer(IMain main, IThemeServicer themeServicer, IInputServicer inputServicer) | |
| 16 | 新增: { | |
| 17 | 新增: this.main = main; | |
| 18 | 新增: this.themeServicer = themeServicer; | |
| 19 | 新增: this.inputServicer = inputServicer; | |
| 20 | 新增: } | |
| 21 | 新增: public void Start() | |
| 22 | 新增: { | |
| 23 | 新增: main.OnStarted += Main_OnStarted; | |
| 24 | 新增: main.Run(); | |
| 25 | 新增: } | |
| 26 | 新增: | |
| 27 | 新增: private void Main_OnStarted(object sender, EventArgs e) | |
| 28 | 新增: { | |
| 29 | 新增: themeServicer.Init(); | |
| 30 | 新增: inputServicer.Start(); | |
| 31 | 新增: } | |
| 32 | 新增: } | |
| 33 | 新增:} | |
| @@ -191,7 +191,12 @@ | ||
| 191 | 191 | <Compile Include="Models\UINotifyPropertyChanged.cs" /> |
| 192 | 192 | <Compile Include="Servicers\AppContextMenuServicer.cs" /> |
| 193 | 193 | <Compile Include="Servicers\IAppContextMenuServicer.cs" /> |
| 194 | 新增: <Compile Include="Servicers\IInputServicer.cs" /> | |
| 195 | 新增: <Compile Include="Servicers\IMainServicer.cs" /> | |
| 196 | 新增: <Compile Include="Servicers\InputEventHandler.cs" /> | |
| 197 | 新增: <Compile Include="Servicers\InputServicer.cs" /> | |
| 194 | 198 | <Compile Include="Servicers\IThemeServicer.cs" /> |
| 199 | 新增: <Compile Include="Servicers\MainServicer.cs" /> | |
| 195 | 200 | <Compile Include="Servicers\ThemeServicer.cs" /> |
| 196 | 201 | <Compile Include="ViewModels\CategoryAppListPageVM.cs" /> |
| 197 | 202 | <Compile Include="ViewModels\CategoryPageVM.cs" /> |
| @@ -22,18 +22,21 @@ namespace UI.ViewModels | ||
| 22 | 22 | private readonly IData data; |
| 23 | 23 | private readonly MainViewModel mainVM; |
| 24 | 24 | private readonly IAppContextMenuServicer appContextMenuServicer; |
| 25 | 删除: | |
| 25 | 新增: private readonly IInputServicer inputServicer; | |
| 26 | 26 | public Command ToDetailCommand { get; set; } |
| 27 | 新增: public Command RefreshCommand { get; set; } | |
| 27 | 28 | |
| 28 | 删除: public ChartPageVM(IData data, ICategorys categorys, MainViewModel mainVM, IAppContextMenuServicer appContextMenuServicer) | |
| 29 | 新增: public ChartPageVM(IData data, ICategorys categorys, MainViewModel mainVM, IAppContextMenuServicer appContextMenuServicer, IInputServicer inputServicer) | |
| 29 | 30 | { |
| 30 | 31 | this.data = data; |
| 31 | 32 | this.categorys = categorys; |
| 32 | 33 | this.mainVM = mainVM; |
| 33 | 34 | this.appContextMenuServicer = appContextMenuServicer; |
| 35 | 新增: this.inputServicer = inputServicer; | |
| 34 | 36 | |
| 35 | 37 | |
| 36 | 38 | ToDetailCommand = new Command(new Action<object>(OnTodetailCommand)); |
| 39 | 新增: RefreshCommand = new Command(new Action<object>(OnRefreshCommand)); | |
| 37 | 40 | |
| 38 | 41 | TabbarData = new System.Collections.ObjectModel.ObservableCollection<string>() |
| 39 | 42 | { |
| @@ -65,9 +68,12 @@ namespace UI.ViewModels | ||
| 65 | 68 | LoadDayData(); |
| 66 | 69 | |
| 67 | 70 | PropertyChanged += ChartPageVM_PropertyChanged; |
| 71 | 新增: inputServicer.OnKeyUpInput += InputServicer_OnKeyUpInput; | |
| 68 | 72 | |
| 69 | 73 | AppContextMenu = appContextMenuServicer.GetContextMenu(); |
| 70 | 74 | } |
| 75 | 新增: | |
| 76 | 新增: | |
| 71 | 77 | public override void Dispose() |
| 72 | 78 | { |
| 73 | 79 | base.Dispose(); |
| @@ -90,6 +96,19 @@ namespace UI.ViewModels | ||
| 90 | 96 | |
| 91 | 97 | } |
| 92 | 98 | } |
| 99 | 新增: private void OnRefreshCommand(object obj) | |
| 100 | 新增: { | |
| 101 | 新增: LoadData(); | |
| 102 | 新增: } | |
| 103 | 新增: | |
| 104 | 新增: private void InputServicer_OnKeyUpInput(object sender, System.Windows.Forms.Keys key) | |
| 105 | 新增: { | |
| 106 | 新增: if(key== System.Windows.Forms.Keys.F5) | |
| 107 | 新增: { | |
| 108 | 新增: LoadData(); | |
| 109 | 新增: } | |
| 110 | 新增: } | |
| 111 | 新增: | |
| 93 | 112 | |
| 94 | 113 | private void ChartPageVM_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) |
| 95 | 114 | { |
| @@ -99,27 +118,8 @@ namespace UI.ViewModels | ||
| 99 | 118 | } |
| 100 | 119 | if (e.PropertyName == nameof(TabbarSelectedIndex)) |
| 101 | 120 | { |
| 102 | 删除: if (TabbarSelectedIndex == 0) | |
| 103 | 删除: { | |
| 104 | 删除: NameIndexStart = 0; | |
| 105 | 删除: | |
| 106 | 删除: LoadDayData(); | |
| 107 | 删除: } | |
| 108 | 删除: else if (TabbarSelectedIndex == 1) | |
| 109 | 删除: { | |
| 110 | 删除: LoadWeekData(); | |
| 111 | 删除: } | |
| 112 | 删除: else if (TabbarSelectedIndex == 2) | |
| 113 | 删除: { | |
| 114 | 删除: NameIndexStart = 1; | |
| 115 | 删除: | |
| 116 | 删除: LoadMonthlyData(); | |
| 117 | 删除: } | |
| 118 | 删除: else if (TabbarSelectedIndex == 3) | |
| 119 | 删除: { | |
| 120 | 删除: LoadYearData(); | |
| 121 | 删除: } | |
| 122 | 121 | |
| 122 | 新增: LoadData(); | |
| 123 | 123 | } |
| 124 | 124 | if (e.PropertyName == nameof(SelectedWeek)) |
| 125 | 125 | { |
| @@ -135,6 +135,31 @@ namespace UI.ViewModels | ||
| 135 | 135 | } |
| 136 | 136 | } |
| 137 | 137 | |
| 138 | 新增: | |
| 139 | 新增: private void LoadData() | |
| 140 | 新增: { | |
| 141 | 新增: if (TabbarSelectedIndex == 0) | |
| 142 | 新增: { | |
| 143 | 新增: NameIndexStart = 0; | |
| 144 | 新增: | |
| 145 | 新增: LoadDayData(); | |
| 146 | 新增: } | |
| 147 | 新增: else if (TabbarSelectedIndex == 1) | |
| 148 | 新增: { | |
| 149 | 新增: LoadWeekData(); | |
| 150 | 新增: } | |
| 151 | 新增: else if (TabbarSelectedIndex == 2) | |
| 152 | 新增: { | |
| 153 | 新增: NameIndexStart = 1; | |
| 154 | 新增: | |
| 155 | 新增: LoadMonthlyData(); | |
| 156 | 新增: } | |
| 157 | 新增: else if (TabbarSelectedIndex == 3) | |
| 158 | 新增: { | |
| 159 | 新增: LoadYearData(); | |
| 160 | 新增: } | |
| 161 | 新增: } | |
| 162 | 新增: | |
| 138 | 163 | /// <summary> |
| 139 | 164 | /// 加载天数据 |
| 140 | 165 | /// </summary> |
| @@ -13,6 +13,7 @@ using UI.Controls; | ||
| 13 | 13 | using UI.Controls.Charts.Model; |
| 14 | 14 | using UI.Controls.Select; |
| 15 | 15 | using UI.Models; |
| 16 | 新增:using UI.Servicers; | |
| 16 | 17 | |
| 17 | 18 | namespace UI.ViewModels |
| 18 | 19 | { |
| @@ -23,23 +24,29 @@ namespace UI.ViewModels | ||
| 23 | 24 | private readonly IAppConfig appConfig; |
| 24 | 25 | private readonly ICategorys categories; |
| 25 | 26 | private readonly IAppData appData; |
| 27 | 新增: private readonly IInputServicer inputServicer; | |
| 26 | 28 | |
| 27 | 29 | private ConfigModel config; |
| 28 | 30 | public Command BlockActionCommand { get; set; } |
| 29 | 31 | public Command ClearSelectMonthDataCommand { get; set; } |
| 30 | 32 | public Command InfoMenuActionCommand { get; set; } |
| 33 | 新增: public Command RefreshCommand { get; set; } | |
| 34 | 新增: | |
| 31 | 35 | public DetailPageVM( |
| 32 | 删除: IData data, MainViewModel main, IAppConfig appConfig, ICategorys categories, IAppData appData) | |
| 36 | 新增: IData data, MainViewModel main, IAppConfig appConfig, ICategorys categories, IAppData appData, IInputServicer inputServicer) | |
| 33 | 37 | { |
| 34 | 38 | this.data = data; |
| 35 | 39 | this.main = main; |
| 36 | 40 | this.appConfig = appConfig; |
| 37 | 41 | this.categories = categories; |
| 38 | 42 | this.appData = appData; |
| 43 | 新增: this.inputServicer = inputServicer; | |
| 39 | 44 | |
| 40 | 45 | BlockActionCommand = new Command(new Action<object>(OnBlockActionCommand)); |
| 41 | 46 | ClearSelectMonthDataCommand = new Command(new Action<object>(OnClearSelectMonthDataCommand)); |
| 42 | 47 | InfoMenuActionCommand = new Command(new Action<object>(OnInfoMenuActionCommand)); |
| 48 | 新增: RefreshCommand = new Command(new Action<object>(OnRefreshCommand)); | |
| 49 | 新增: | |
| 43 | 50 | Init(); |
| 44 | 51 | } |
| 45 | 52 | |
| @@ -89,7 +96,27 @@ namespace UI.ViewModels | ||
| 89 | 96 | await LoadInfo(); |
| 90 | 97 | |
| 91 | 98 | LoadDayData(); |
| 99 | 新增: | |
| 100 | 新增: inputServicer.OnKeyUpInput += InputServicer_OnKeyUpInput; | |
| 101 | 新增: } | |
| 102 | 新增: | |
| 103 | 新增: private async void InputServicer_OnKeyUpInput(object sender, System.Windows.Forms.Keys key) | |
| 104 | 新增: { | |
| 105 | 新增: if (key == System.Windows.Forms.Keys.F5) | |
| 106 | 新增: { | |
| 107 | 新增: // 刷新 | |
| 108 | 新增: LoadChartData(); | |
| 109 | 新增: await LoadData(); | |
| 110 | 新增: } | |
| 111 | 新增: } | |
| 112 | 新增: | |
| 113 | 新增: private async void OnRefreshCommand(object obj) | |
| 114 | 新增: { | |
| 115 | 新增: // 刷新 | |
| 116 | 新增: LoadChartData(); | |
| 117 | 新增: await LoadData(); | |
| 92 | 118 | } |
| 119 | 新增: | |
| 93 | 120 | private void OnInfoMenuActionCommand(object obj) |
| 94 | 121 | { |
| 95 | 122 | switch (obj.ToString()) |
| @@ -193,26 +220,7 @@ namespace UI.ViewModels | ||
| 193 | 220 | } |
| 194 | 221 | if (e.PropertyName == nameof(TabbarSelectedIndex)) |
| 195 | 222 | { |
| 196 | 删除: if (TabbarSelectedIndex == 0) | |
| 197 | 删除: { | |
| 198 | 删除: NameIndexStart = 0; | |
| 199 | 删除: | |
| 200 | 删除: LoadDayData(); | |
| 201 | 删除: } | |
| 202 | 删除: else if (TabbarSelectedIndex == 1) | |
| 203 | 删除: { | |
| 204 | 删除: LoadWeekData(); | |
| 205 | 删除: } | |
| 206 | 删除: else if (TabbarSelectedIndex == 2) | |
| 207 | 删除: { | |
| 208 | 删除: NameIndexStart = 1; | |
| 209 | 删除: | |
| 210 | 删除: LoadMonthlyData(); | |
| 211 | 删除: } | |
| 212 | 删除: else if (TabbarSelectedIndex == 3) | |
| 213 | 删除: { | |
| 214 | 删除: LoadYearData(); | |
| 215 | 删除: } | |
| 223 | 新增: LoadChartData(); | |
| 216 | 224 | |
| 217 | 225 | } |
| 218 | 226 | if (e.PropertyName == nameof(SelectedWeek)) |
| @@ -229,6 +237,33 @@ namespace UI.ViewModels | ||
| 229 | 237 | } |
| 230 | 238 | } |
| 231 | 239 | |
| 240 | 新增: /// <summary> | |
| 241 | 新增: /// 加载柱状图图表数据 | |
| 242 | 新增: /// </summary> | |
| 243 | 新增: private void LoadChartData() | |
| 244 | 新增: { | |
| 245 | 新增: if (TabbarSelectedIndex == 0) | |
| 246 | 新增: { | |
| 247 | 新增: NameIndexStart = 0; | |
| 248 | 新增: | |
| 249 | 新增: LoadDayData(); | |
| 250 | 新增: } | |
| 251 | 新增: else if (TabbarSelectedIndex == 1) | |
| 252 | 新增: { | |
| 253 | 新增: LoadWeekData(); | |
| 254 | 新增: } | |
| 255 | 新增: else if (TabbarSelectedIndex == 2) | |
| 256 | 新增: { | |
| 257 | 新增: NameIndexStart = 1; | |
| 258 | 新增: | |
| 259 | 新增: LoadMonthlyData(); | |
| 260 | 新增: } | |
| 261 | 新增: else if (TabbarSelectedIndex == 3) | |
| 262 | 新增: { | |
| 263 | 新增: LoadYearData(); | |
| 264 | 新增: } | |
| 265 | 新增: } | |
| 266 | 新增: | |
| 232 | 267 | private void LoadCategorys(string categoryName) |
| 233 | 268 | { |
| 234 | 269 | var list = new List<SelectItemModel>(); |
| @@ -267,50 +302,8 @@ namespace UI.ViewModels | ||
| 267 | 302 | var link = config.Links.Where(m => m.ProcessList.Contains(App.Name)).FirstOrDefault(); |
| 268 | 303 | if (link != null) |
| 269 | 304 | { |
| 270 | 删除: LinkApps = appData.GetAllApps().Where(m => link.ProcessList.Contains(m.Name) && m.Name!=App.Name).ToList(); | |
| 305 | 新增: LinkApps = appData.GetAllApps().Where(m => link.ProcessList.Contains(m.Name) && m.Name != App.Name).ToList(); | |
| 271 | 306 | } |
| 272 | 删除: | |
| 273 | 删除: //var today = data.GetProcess(App.ID, DateTime.Now); | |
| 274 | 删除: //var yesterday = data.GetProcess(App.ID, DateTime.Now.AddDays(-1)); | |
| 275 | 删除: | |
| 276 | 删除: //if (today != null) | |
| 277 | 删除: //{ | |
| 278 | 删除: // TodayTime = Time.ToString(today.Time); | |
| 279 | 删除: //} | |
| 280 | 删除: //else | |
| 281 | 删除: //{ | |
| 282 | 删除: // TodayTime = "暂无数据"; | |
| 283 | 删除: //} | |
| 284 | 删除: | |
| 285 | 删除: //if (yesterday != null) | |
| 286 | 删除: //{ | |
| 287 | 删除: // int diffseconds = today != null ? today.Time - yesterday.Time : yesterday.Time; | |
| 288 | 删除: | |
| 289 | 删除: // string diffText = string.Empty; | |
| 290 | 删除: // if (diffseconds != yesterday.Time) | |
| 291 | 删除: // { | |
| 292 | 删除: // if (diffseconds == 0) | |
| 293 | 删除: // { | |
| 294 | 删除: // // 无变化 | |
| 295 | 删除: // diffText = "持平"; | |
| 296 | 删除: // } | |
| 297 | 删除: // else if (diffseconds > 0) | |
| 298 | 删除: // { | |
| 299 | 删除: // // 增加 | |
| 300 | 删除: // diffText = "增加了" + Time.ToString(diffseconds); | |
| 301 | 删除: // } | |
| 302 | 删除: // else | |
| 303 | 删除: // { | |
| 304 | 删除: // // 减少 | |
| 305 | 删除: // diffText = "减少了" + Time.ToString(Math.Abs(diffseconds)); | |
| 306 | 删除: // } | |
| 307 | 删除: // } | |
| 308 | 删除: // Yesterday = diffseconds == yesterday.Time ? "减少100%" : diffText; | |
| 309 | 删除: //} | |
| 310 | 删除: //else | |
| 311 | 删除: //{ | |
| 312 | 删除: // Yesterday = "昨日未使用"; | |
| 313 | 删除: //} | |
| 314 | 307 | } |
| 315 | 308 | } |
| 316 | 309 | ); |
| @@ -22,24 +22,31 @@ namespace UI.ViewModels | ||
| 22 | 22 | public class IndexPageVM : IndexPageModel |
| 23 | 23 | { |
| 24 | 24 | public Command ToDetailCommand { get; set; } |
| 25 | 新增: public Command RefreshCommand { get; set; } | |
| 25 | 26 | private readonly IData data; |
| 26 | 27 | private readonly MainViewModel main; |
| 27 | 28 | private readonly IMain mainServicer; |
| 28 | 29 | private readonly IAppContextMenuServicer appContextMenuServicer; |
| 29 | 删除: | |
| 30 | 新增: private readonly IInputServicer inputServicer; | |
| 30 | 31 | public IndexPageVM( |
| 31 | 删除: IData data, MainViewModel main, IMain mainServicer, IAppContextMenuServicer appContextMenuServicer) | |
| 32 | 新增: IData data, MainViewModel main, IMain mainServicer, IAppContextMenuServicer appContextMenuServicer, IInputServicer inputServicer) | |
| 32 | 33 | { |
| 33 | 34 | this.data = data; |
| 34 | 35 | this.main = main; |
| 35 | 36 | this.mainServicer = mainServicer; |
| 36 | 37 | this.appContextMenuServicer = appContextMenuServicer; |
| 38 | 新增: this.inputServicer = inputServicer; | |
| 37 | 39 | |
| 38 | 40 | ToDetailCommand = new Command(new Action<object>(OnTodetailCommand)); |
| 41 | 新增: RefreshCommand = new Command(new Action<object>(OnRefreshCommand)); | |
| 39 | 42 | |
| 40 | 43 | Init(); |
| 41 | 44 | } |
| 42 | 45 | |
| 46 | 新增: private void OnRefreshCommand(object obj) | |
| 47 | 新增: { | |
| 48 | 新增: LoadData(); | |
| 49 | 新增: } | |
| 43 | 50 | |
| 44 | 51 | public override void Dispose() |
| 45 | 52 | { |
| @@ -57,11 +64,21 @@ namespace UI.ViewModels | ||
| 57 | 64 | TabbarSelectedIndex = 1; |
| 58 | 65 | |
| 59 | 66 | PropertyChanged += IndexPageVM_PropertyChanged; |
| 60 | 删除: | |
| 61 | 67 | LoadThisWeekData(); |
| 62 | 68 | |
| 63 | 69 | appContextMenuServicer.Init(); |
| 64 | 70 | AppContextMenu = appContextMenuServicer.GetContextMenu(); |
| 71 | 新增: | |
| 72 | 新增: inputServicer.OnKeyUpInput += InputServicer_OnKeyUpInput; | |
| 73 | 新增: } | |
| 74 | 新增: | |
| 75 | 新增: private void InputServicer_OnKeyUpInput(object sender, System.Windows.Forms.Keys key) | |
| 76 | 新增: { | |
| 77 | 新增: if(key== System.Windows.Forms.Keys.F5) | |
| 78 | 新增: { | |
| 79 | 新增: // 重新加载数据 | |
| 80 | 新增: LoadData(); | |
| 81 | 新增: } | |
| 65 | 82 | } |
| 66 | 83 | |
| 67 | 84 | private void OnTodetailCommand(object obj) |
| @@ -84,19 +101,29 @@ namespace UI.ViewModels | ||
| 84 | 101 | { |
| 85 | 102 | if (e.PropertyName == nameof(TabbarSelectedIndex)) |
| 86 | 103 | { |
| 87 | 删除: if (TabbarSelectedIndex == 1) | |
| 88 | 删除: { | |
| 89 | 删除: LoadThisWeekData(); | |
| 90 | 删除: } | |
| 91 | 删除: else | |
| 92 | 删除: { | |
| 93 | 删除: LoadLastWeekData(); | |
| 94 | 删除: } | |
| 104 | 新增: LoadData(); | |
| 95 | 105 | } |
| 96 | 106 | } |
| 97 | 107 | |
| 98 | 108 | #region 读取数据 |
| 99 | 109 | |
| 110 | 新增: private void LoadData() | |
| 111 | 新增: { | |
| 112 | 新增: if (IsLoading) | |
| 113 | 新增: { | |
| 114 | 新增: return; | |
| 115 | 新增: } | |
| 116 | 新增: | |
| 117 | 新增: if (TabbarSelectedIndex == 1) | |
| 118 | 新增: { | |
| 119 | 新增: LoadThisWeekData(); | |
| 120 | 新增: } | |
| 121 | 新增: else | |
| 122 | 新增: { | |
| 123 | 新增: LoadLastWeekData(); | |
| 124 | 新增: } | |
| 125 | 新增: } | |
| 126 | 新增: | |
| 100 | 127 | #region 本周数据 |
| 101 | 128 | private void LoadThisWeekData() |
| 102 | 129 | { |
| @@ -127,7 +154,6 @@ namespace UI.ViewModels | ||
| 127 | 154 | } |
| 128 | 155 | #endregion |
| 129 | 156 | |
| 130 | 删除: | |
| 131 | 157 | #region 上周数据 |
| 132 | 158 | private void LoadLastWeekData() |
| 133 | 159 | { |
| @@ -6,8 +6,12 @@ | ||
| 6 | 6 | xmlns:local="clr-namespace:UI.Views" xmlns:charts="clr-namespace:UI.Controls.Charts" xmlns:Tabbar="clr-namespace:UI.Controls.Tabbar" xmlns:select="clr-namespace:UI.Controls.Select" xmlns:base="clr-namespace:UI.Controls.Base" xmlns:DatePickerBar="clr-namespace:UI.Controls.DatePickerBar" |
| 7 | 7 | mc:Ignorable="d" |
| 8 | 8 | d:DesignHeight="450" d:DesignWidth="800" |
| 9 | 删除: Title="ChartPage" Foreground="{DynamicResource StandardTextBrush}"> | |
| 10 | 删除: | |
| 9 | 新增: Title="ChartPage" Foreground="{DynamicResource StandardTextBrush}" Background="Transparent"> | |
| 10 | 新增: <Page.ContextMenu> | |
| 11 | 新增: <ContextMenu> | |
| 12 | 新增: <MenuItem Header="刷新" Command="{Binding RefreshCommand}"/> | |
| 13 | 新增: </ContextMenu> | |
| 14 | 新增: </Page.ContextMenu> | |
| 11 | 15 | <StackPanel Margin="20"> |
| 12 | 16 | <TextBlock Text="统计" FontSize="18" Margin="0,5,0,20"/> |
| 13 | 17 | <Tabbar:Tabbar Data="{Binding TabbarData}" SelectedIndex="{Binding TabbarSelectedIndex,Mode=TwoWay}" Width="180" HorizontalAlignment="Left"/> |
| @@ -9,8 +9,12 @@ | ||
| 9 | 9 | d:DesignHeight="450" d:DesignWidth="800" |
| 10 | 10 | Title="DetailPage" |
| 11 | 11 | xmlns:btn="clr-namespace:UI.Controls.Button" |
| 12 | 删除: xmlns:base="clr-namespace:UI.Controls.Base" xmlns:Tabbar="clr-namespace:UI.Controls.Tabbar" Foreground="{DynamicResource StandardTextBrush}"> | |
| 13 | 删除: | |
| 12 | 新增: xmlns:base="clr-namespace:UI.Controls.Base" xmlns:Tabbar="clr-namespace:UI.Controls.Tabbar" Foreground="{DynamicResource StandardTextBrush}" Background="Transparent"> | |
| 13 | 新增: <Page.ContextMenu> | |
| 14 | 新增: <ContextMenu> | |
| 15 | 新增: <MenuItem Header="刷新" Command="{Binding RefreshCommand}"/> | |
| 16 | 新增: </ContextMenu> | |
| 17 | 新增: </Page.ContextMenu> | |
| 14 | 18 | <StackPanel Margin="20"> |
| 15 | 19 | <TextBlock Text="查看" FontSize="18" Margin="0,0,0,20"/> |
| 16 | 20 | |
| @@ -8,9 +8,14 @@ | ||
| 8 | 8 | mc:Ignorable="d" |
| 9 | 9 | d:DesignHeight="450" d:DesignWidth="800" |
| 10 | 10 | Title="IndexPage" |
| 11 | 删除: Foreground="{DynamicResource StandardTextBrush}"> | |
| 12 | 删除: | |
| 11 | 新增: Foreground="{DynamicResource StandardTextBrush}" Background="Transparent"> | |
| 12 | 新增: <Page.ContextMenu> | |
| 13 | 新增: <ContextMenu> | |
| 14 | 新增: <MenuItem Header="刷新" Command="{Binding RefreshCommand}"/> | |
| 15 | 新增: </ContextMenu> | |
| 16 | 新增: </Page.ContextMenu> | |
| 13 | 17 | <StackPanel Margin="20"> |
| 18 | 新增: | |
| 14 | 19 | <!--<Border Width="60" Height="60" HorizontalAlignment="Left" RenderTransformOrigin="1,0.5"> |
| 15 | 20 | <Border.Effect> |
| 16 | 21 | <DropShadowEffect BlurRadius="4" ShadowDepth="0" Direction="0" Opacity="1"/> |

