优化部分代码,尝试修复热键回调多次bug

This commit is contained in:
Demo_Liu
2021-07-18 20:10:19 +08:00
parent 3a72bc6e65
commit cdbdae09c7
18 changed files with 359 additions and 112 deletions

17
Constant/UpdateType.cs Normal file
View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// 更新源
/// </summary>
namespace GeekDesk.Constant
{
public enum UpdateType
{
Gitee = 1,
GitHub = 2
}
}

View File

@@ -24,7 +24,7 @@ namespace GeekDesk.Control.Other
{ {
private AppData appData = MainWindow.appData; private AppData appData = MainWindow.appData;
public BacklogNotificatin(BacklogInfo info) public BacklogNotificatin(ToDoInfo info)
{ {
InitializeComponent(); InitializeComponent();
this.DataContext = info; this.DataContext = info;
@@ -32,12 +32,12 @@ namespace GeekDesk.Control.Other
private void BacklogDone_Click(object sender, RoutedEventArgs e) private void BacklogDone_Click(object sender, RoutedEventArgs e)
{ {
BacklogInfo info = this.DataContext as BacklogInfo; ToDoInfo info = this.DataContext as ToDoInfo;
info.DoneTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); info.DoneTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
appData.ExeBacklogList.Remove(info); //执行任务删除 appData.ToDoList.Remove(info); //执行任务删除
appData.HiBacklogList.Add(info); //添加历史任务 appData.HiToDoList.Add(info); //添加历史任务
BacklogTask.activityBacklog[info].Close(); //关闭桌面通知 ToDoTask.activityBacklog[info].Close(); //关闭桌面通知
BacklogTask.activityBacklog.Remove(info);//激活任务删除 ToDoTask.activityBacklog.Remove(info);//激活任务删除
CommonCode.SaveAppData(appData); CommonCode.SaveAppData(appData);
} }
@@ -86,7 +86,7 @@ namespace GeekDesk.Control.Other
/// <param name="e"></param> /// <param name="e"></param>
private void DelayButton_Click(object sender, RoutedEventArgs e) private void DelayButton_Click(object sender, RoutedEventArgs e)
{ {
BacklogInfo info = this.DataContext as BacklogInfo; ToDoInfo info = this.DataContext as ToDoInfo;
int time = int.Parse(DelayTime.Text); int time = int.Parse(DelayTime.Text);
string type = DelayType.Text; string type = DelayType.Text;
switch(type) switch(type)
@@ -98,8 +98,8 @@ namespace GeekDesk.Control.Other
info.ExeTime = DateTime.Now.AddHours(time).ToString("yyyy-MM-dd HH:mm:ss"); info.ExeTime = DateTime.Now.AddHours(time).ToString("yyyy-MM-dd HH:mm:ss");
break; break;
} }
BacklogTask.activityBacklog[info].Close(); //关闭桌面通知 ToDoTask.activityBacklog[info].Close(); //关闭桌面通知
BacklogTask.activityBacklog.Remove(info);//激活任务删除 ToDoTask.activityBacklog.Remove(info);//激活任务删除
} }
} }
} }

View File

@@ -3,6 +3,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:cvt="clr-namespace:GeekDesk.Converts"
xmlns:local="clr-namespace:GeekDesk.Control.UserControls.PannelCard" xmlns:local="clr-namespace:GeekDesk.Control.UserControls.PannelCard"
xmlns:hc="https://handyorg.github.io/handycontrol" xmlns:hc="https://handyorg.github.io/handycontrol"
mc:Ignorable="d" mc:Ignorable="d"
@@ -10,7 +11,7 @@
d:DesignHeight="400" d:DesignWidth="500"> d:DesignHeight="400" d:DesignWidth="500">
<UserControl.Resources> <UserControl.Resources>
<cvt:UpdateTypeConvert x:Key="UpdateTypeConvert"/>
</UserControl.Resources> </UserControl.Resources>
<hc:SimplePanel Margin="20,50,20,20"> <hc:SimplePanel Margin="20,50,20,20">
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Top"> <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Top">
@@ -66,10 +67,10 @@
<TextBlock Text="更新源:" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center"/> <TextBlock Text="更新源:" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}" <RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}"
Style="{StaticResource RadioButtonIcon}" Content="Gitee" Style="{StaticResource RadioButtonIcon}" Content="Gitee"
IsChecked="{Binding AppHideType, Mode=TwoWay, Converter={StaticResource HideTypeConvert}, ConverterParameter=1}"/> IsChecked="{Binding UpdateType, Mode=TwoWay, Converter={StaticResource UpdateTypeConvert}, ConverterParameter=1}"/>
<RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}" <RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}"
Style="{StaticResource RadioButtonIcon}" Content="GitHub" Style="{StaticResource RadioButtonIcon}" Content="GitHub"
IsChecked="{Binding AppHideType, Mode=TwoWay, Converter={StaticResource HideTypeConvert}, ConverterParameter=2}"/> IsChecked="{Binding UpdateType, Mode=TwoWay, Converter={StaticResource UpdateTypeConvert}, ConverterParameter=2}"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
</StackPanel> </StackPanel>
</hc:SimplePanel> </hc:SimplePanel>

View File

@@ -54,8 +54,9 @@
<TextBlock Text="热键设置" VerticalAlignment="Center" Margin="-26,0,26,0"/> <TextBlock Text="热键设置" VerticalAlignment="Center" Margin="-26,0,26,0"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="30,193,0,-180.337" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Margin="30,193,0,-180.337" Grid.ColumnSpan="4">
<TextBlock Text="当前热键:"/> <TextBlock Text="主面板:" Width="55"/>
<hc:TextBox HorizontalAlignment="Left" <hc:TextBox HorizontalAlignment="Left"
Tag="Main"
VerticalAlignment="Top" VerticalAlignment="Top"
IsReadOnly="True" IsReadOnly="True"
IsReadOnlyCaretVisible="True" IsReadOnlyCaretVisible="True"
@@ -65,6 +66,20 @@
KeyUp="HotKeyUp" KeyUp="HotKeyUp"
Margin="12.967,-7.38,-12.967,0"/> Margin="12.967,-7.38,-12.967,0"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="30,229,0,-216.337" Grid.ColumnSpan="4">
<TextBlock Text="新建待办:" Width="55"/>
<hc:TextBox HorizontalAlignment="Left"
Tag="ToDo"
VerticalAlignment="Top"
IsReadOnly="True"
IsReadOnlyCaretVisible="True"
Width="200"
Text="{Binding ToDoHotkeyStr}"
KeyDown="HotKeyDown"
KeyUp="HotKeyUp"
Margin="12.967,-7.38,-12.967,0"/>
</hc:UniformSpacingPanel>
<StackPanel hc:Growl.GrowlParent="True" hc:Growl.Token="HotKeyGrowl" VerticalAlignment="Top"/>
</hc:SimplePanel> </hc:SimplePanel>
</UserControl> </UserControl>

View File

@@ -46,23 +46,48 @@ namespace GeekDesk.Control.UserControls.Config
/// <param name="e"></param> /// <param name="e"></param>
private void HotKeyDown(object sender, KeyEventArgs e) private void HotKeyDown(object sender, KeyEventArgs e)
{ {
string tag = (sender as TextBox).Tag.ToString();
bool main = false;
if ("Main".Equals(tag))
{
main = true;
}
if (!e.IsRepeat) if (!e.IsRepeat)
{ {
if (hotkeyFinished) if (hotkeyFinished)
{
if (main)
{ {
appConfig.Hotkey = 0; appConfig.Hotkey = 0;
appConfig.HotkeyStr = ""; appConfig.HotkeyStr = "";
appConfig.HotkeyModifiers = 0; appConfig.HotkeyModifiers = 0;
} else
{
appConfig.ToDoHotkey = 0;
appConfig.ToDoHotkeyStr = "";
appConfig.ToDoHotkeyModifiers = 0;
}
hotkeyFinished = false; hotkeyFinished = false;
} }
//首次按下按键 //首次按下按键
if (appConfig.HotkeyStr == null || appConfig.HotkeyStr.Length == 0) if ((main && (appConfig.HotkeyStr == null || appConfig.HotkeyStr.Length == 0))
|| (!main && (appConfig.ToDoHotkeyStr == null || appConfig.ToDoHotkeyStr.Length == 0)))
{ {
if (CheckModifierKeys(e)) if (CheckModifierKeys(e))
{ {
//辅助键 //辅助键
if (main)
{
appConfig.HotkeyStr = GetKeyName(e); appConfig.HotkeyStr = GetKeyName(e);
appConfig.HotkeyModifiers = GetModifierKeys(e); appConfig.HotkeyModifiers = GetModifierKeys(e);
} else
{
appConfig.ToDoHotkeyStr = GetKeyName(e);
appConfig.ToDoHotkeyModifiers = GetModifierKeys(e);
}
prevKeyTemp = e; prevKeyTemp = e;
keysTemp.Add(e); keysTemp.Add(e);
} }
@@ -74,16 +99,31 @@ namespace GeekDesk.Control.UserControls.Config
&& ((e.Key >= Key.A && e.Key <= Key.Z) && ((e.Key >= Key.A && e.Key <= Key.Z)
|| (e.Key >= Key.F1 && e.Key <= Key.F12) || (e.Key >= Key.F1 && e.Key <= Key.F12)
|| (e.Key >= Key.D0 && e.Key <= Key.D9))) || (e.Key >= Key.D0 && e.Key <= Key.D9)))
{
if (main)
{ {
appConfig.Hotkey = e.Key; appConfig.Hotkey = e.Key;
appConfig.HotkeyStr += e.Key.ToString(); appConfig.HotkeyStr += e.Key.ToString();
} else
{
appConfig.ToDoHotkey = e.Key;
appConfig.ToDoHotkeyStr += e.Key.ToString();
}
prevKeyTemp = e; prevKeyTemp = e;
keysTemp.Add(e); keysTemp.Add(e);
} }
else if (CheckModifierKeys(e)) else if (CheckModifierKeys(e))
{
if (main)
{ {
appConfig.HotkeyStr += GetKeyName(e); appConfig.HotkeyStr += GetKeyName(e);
appConfig.HotkeyModifiers |= GetModifierKeys(e); appConfig.HotkeyModifiers |= GetModifierKeys(e);
} else
{
appConfig.ToDoHotkeyStr += GetKeyName(e);
appConfig.ToDoHotkeyModifiers |= GetModifierKeys(e);
}
prevKeyTemp = e; prevKeyTemp = e;
keysTemp.Add(e); keysTemp.Add(e);
} }
@@ -146,13 +186,18 @@ namespace GeekDesk.Control.UserControls.Config
[MethodImpl(MethodImplOptions.Synchronized)] [MethodImpl(MethodImplOptions.Synchronized)]
private void HotKeyUp(object sender, KeyEventArgs e) private void HotKeyUp(object sender, KeyEventArgs e)
{ {
string tag = (sender as TextBox).Tag.ToString();
bool main = false;
if ("Main".Equals(tag))
{
main = true;
}
lock(this) lock(this)
{ {
bool allKeyUp = true; bool allKeyUp = true;
//判断所有键是否都松开 //判断所有键是否都松开
foreach (KeyEventArgs key in keysTemp) foreach (KeyEventArgs key in keysTemp)
{ {
HandyControl.Controls.Growl.SuccessGlobal(key.Key.ToString() + "=" + key.KeyStates);
if (key.KeyStates == KeyStates.Down) if (key.KeyStates == KeyStates.Down)
{ {
allKeyUp = false; allKeyUp = false;
@@ -163,11 +208,24 @@ namespace GeekDesk.Control.UserControls.Config
{ {
keysTemp.Clear(); keysTemp.Clear();
hotkeyFinished = true; hotkeyFinished = true;
if (main)
{
if (MainWindow.hotKeyId != -1) if (MainWindow.hotKeyId != -1)
{ {
Hotkey.UnRegist(new WindowInteropHelper(MainWindow.mainWindow).Handle, Hotkey.keymap[MainWindow.hotKeyId]); Hotkey.UnRegist(new WindowInteropHelper(MainWindow.mainWindow).Handle, Hotkey.keymap[MainWindow.hotKeyId]);
} }
MainWindow.RegisterHotKey(); MainWindow.RegisterHotKey(false);
} else
{
if (MainWindow.toDoHotKeyId != -1)
{
Hotkey.UnRegist(new WindowInteropHelper(MainWindow.toDoInfoWindow).Handle, Hotkey.keymap[MainWindow.toDoHotKeyId]);
}
MainWindow.RegisterCreateToDoHotKey(false);
}
} }
} }
} }

View File

@@ -1,4 +1,4 @@
<UserControl x:Class="GeekDesk.Control.UserControls.Backlog.BacklogControl" <UserControl x:Class="GeekDesk.Control.UserControls.Backlog.TodoControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

View File

@@ -22,22 +22,22 @@ namespace GeekDesk.Control.UserControls.Backlog
/// <summary> /// <summary>
/// BacklogControl.xaml 的交互逻辑 /// BacklogControl.xaml 的交互逻辑
/// </summary> /// </summary>
public partial class BacklogControl : UserControl public partial class TodoControl : UserControl
{ {
private AppData appData = MainWindow.appData; private AppData appData = MainWindow.appData;
public BacklogControl() public TodoControl()
{ {
InitializeComponent(); InitializeComponent();
} }
private void DeleteMenu_Click(object sender, RoutedEventArgs e) private void DeleteMenu_Click(object sender, RoutedEventArgs e)
{ {
BacklogInfo info = BacklogList.SelectedItem as BacklogInfo; ToDoInfo info = BacklogList.SelectedItem as ToDoInfo;
Growl.Ask("确认删除吗?", isConfirmed => Growl.Ask("确认删除吗?", isConfirmed =>
{ {
if (isConfirmed) if (isConfirmed)
{ {
appData.ExeBacklogList.Remove(info); appData.ToDoList.Remove(info);
CommonCode.SaveAppData(MainWindow.appData); CommonCode.SaveAppData(MainWindow.appData);
} }
return true; return true;
@@ -46,8 +46,8 @@ namespace GeekDesk.Control.UserControls.Backlog
private void DetailMenu_Click(object sender, RoutedEventArgs e) private void DetailMenu_Click(object sender, RoutedEventArgs e)
{ {
BacklogInfo info = BacklogList.SelectedItem as BacklogInfo; ToDoInfo info = BacklogList.SelectedItem as ToDoInfo;
BacklogInfoWindow.ShowDetail(info); ToDoInfoWindow.ShowDetail(info);
} }
/// <summary> /// <summary>

View File

@@ -1,4 +1,4 @@
<Window x:Class="GeekDesk.Control.Windows.BacklogInfoWindow" <Window x:Class="GeekDesk.Control.Windows.ToDoInfoWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

View File

@@ -20,24 +20,24 @@ namespace GeekDesk.Control.Windows
/// <summary> /// <summary>
/// BacklogInfoWindow.xaml 的交互逻辑 /// BacklogInfoWindow.xaml 的交互逻辑
/// </summary> /// </summary>
public partial class BacklogInfoWindow public partial class ToDoInfoWindow
{ {
private static int windowType = -1; private static int windowType = -1;
private static readonly int NEW_BACKLOG = 1; private static readonly int NEW_TODO = 1;
private static readonly int DETAIL_BACKLOG = 2; private static readonly int DETAIL_TODO = 2;
private AppData appData = MainWindow.appData; private AppData appData = MainWindow.appData;
private BacklogInfo info; private ToDoInfo info;
private BacklogInfoWindow() private ToDoInfoWindow()
{ {
InitializeComponent(); InitializeComponent();
ExeTime.SelectedDateTime = DateTime.Now.AddMinutes(10); ExeTime.SelectedDateTime = DateTime.Now.AddMinutes(10);
this.Topmost = true; this.Topmost = true;
} }
private BacklogInfoWindow(BacklogInfo info) private ToDoInfoWindow(ToDoInfo info)
{ {
InitializeComponent(); InitializeComponent();
this.Topmost = true; this.Topmost = true;
@@ -96,24 +96,24 @@ namespace GeekDesk.Control.Windows
return; return;
} }
} }
if (windowType == NEW_BACKLOG) if (windowType == NEW_TODO)
{ {
info = new BacklogInfo info = new ToDoInfo
{ {
Title = Title.Text, Title = Title.Text,
Msg = Msg.Text, Msg = Msg.Text,
ExeTime = ExeTime.Text ExeTime = ExeTime.Text
}; };
appData.ExeBacklogList.Add(info); appData.ToDoList.Add(info);
} else } else
{ {
int index =appData.ExeBacklogList.IndexOf(info); int index =appData.ToDoList.IndexOf(info);
appData.ExeBacklogList.Remove(info); appData.ToDoList.Remove(info);
info.Title = Title.Text; info.Title = Title.Text;
info.Msg = Msg.Text; info.Msg = Msg.Text;
info.ExeTime = ExeTime.Text; info.ExeTime = ExeTime.Text;
info.DoneTime = DoneTime.Text; info.DoneTime = DoneTime.Text;
appData.ExeBacklogList.Insert(index, info); appData.ToDoList.Insert(index, info);
} }
CommonCode.SaveAppData(MainWindow.appData); CommonCode.SaveAppData(MainWindow.appData);
this.Close(); this.Close();
@@ -124,21 +124,33 @@ namespace GeekDesk.Control.Windows
{ {
if (window == null || !window.Activate()) if (window == null || !window.Activate())
{ {
window = new BacklogInfoWindow(); window = new ToDoInfoWindow();
} }
windowType = NEW_BACKLOG; windowType = NEW_TODO;
window.Show(); window.Show();
} }
public static System.Windows.Window GetThis()
{
if (window == null || !window.Activate())
{
window = new ToDoInfoWindow();
}
windowType = NEW_TODO;
return window;
}
private static System.Windows.Window window2 = null; private static System.Windows.Window window2 = null;
public static void ShowDetail(BacklogInfo info) public static void ShowDetail(ToDoInfo info)
{ {
if (window2 == null || !window2.Activate()) if (window2 == null || !window2.Activate())
{ {
window2 = new BacklogInfoWindow(info); window2 = new ToDoInfoWindow(info);
} }
windowType = DETAIL_BACKLOG; windowType = DETAIL_TODO;
window2.Show(); window2.Show();
} }
} }

View File

@@ -1,4 +1,4 @@
<Window x:Class="GeekDesk.Control.Windows.BacklogWindow" <Window x:Class="GeekDesk.Control.Windows.ToDoWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

View File

@@ -21,15 +21,15 @@ namespace GeekDesk.Control.Windows
/// <summary> /// <summary>
/// BacklogWindow.xaml 的交互逻辑 /// BacklogWindow.xaml 的交互逻辑
/// </summary> /// </summary>
public partial class BacklogWindow public partial class ToDoWindow
{ {
private static BacklogControl backlog = new BacklogControl(); private static TodoControl backlog = new TodoControl();
private AppData appData = MainWindow.appData; private AppData appData = MainWindow.appData;
private BacklogWindow() private ToDoWindow()
{ {
InitializeComponent(); InitializeComponent();
RightCard.Content = backlog; RightCard.Content = backlog;
backlog.BacklogList.ItemsSource = appData.ExeBacklogList; backlog.BacklogList.ItemsSource = appData.ToDoList;
this.Topmost = true; this.Topmost = true;
} }
@@ -63,10 +63,10 @@ namespace GeekDesk.Control.Windows
switch (smi.Tag.ToString()) switch (smi.Tag.ToString())
{ {
case "History": case "History":
backlog.BacklogList.ItemsSource = appData.HiBacklogList; backlog.BacklogList.ItemsSource = appData.HiToDoList;
break; break;
default: default:
backlog.BacklogList.ItemsSource = appData.ExeBacklogList; backlog.BacklogList.ItemsSource = appData.ToDoList;
break; break;
} }
} }
@@ -78,7 +78,7 @@ namespace GeekDesk.Control.Windows
/// <param name="e"></param> /// <param name="e"></param>
private void CreateBacklog_BtnClick(object sender, RoutedEventArgs e) private void CreateBacklog_BtnClick(object sender, RoutedEventArgs e)
{ {
BacklogInfoWindow.ShowNone(); ToDoInfoWindow.ShowNone();
} }
@@ -87,7 +87,7 @@ namespace GeekDesk.Control.Windows
{ {
if (window == null || !window.Activate()) if (window == null || !window.Activate())
{ {
window = new BacklogWindow(); window = new ToDoWindow();
} }
window.Show(); window.Show();
} }

View File

@@ -0,0 +1,29 @@
using GeekDesk.Constant;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace GeekDesk.Converts
{
class UpdateTypeConvert : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (UpdateType)value == (UpdateType)int.Parse(parameter.ToString());
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
bool isChecked = (bool)value;
if (!isChecked)
{
return null;
}
return (UpdateType)int.Parse(parameter.ToString());
}
}
}

View File

@@ -117,23 +117,24 @@
<Compile Include="Constant\MainWindowEnum.cs" /> <Compile Include="Constant\MainWindowEnum.cs" />
<Compile Include="Constant\IconStartType.cs" /> <Compile Include="Constant\IconStartType.cs" />
<Compile Include="Constant\SortType.cs" /> <Compile Include="Constant\SortType.cs" />
<Compile Include="Constant\UpdateType.cs" />
<Compile Include="Control\Other\BacklogNotificatin.xaml.cs"> <Compile Include="Control\Other\BacklogNotificatin.xaml.cs">
<DependentUpon>BacklogNotificatin.xaml</DependentUpon> <DependentUpon>BacklogNotificatin.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Control\Other\CustomIconUrlDialog.xaml.cs"> <Compile Include="Control\Other\CustomIconUrlDialog.xaml.cs">
<DependentUpon>CustomIconUrlDialog.xaml</DependentUpon> <DependentUpon>CustomIconUrlDialog.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Control\UserControls\Backlog\BacklogControl.xaml.cs"> <Compile Include="Control\UserControls\ToDo\TodoControl.xaml.cs">
<DependentUpon>BacklogControl.xaml</DependentUpon> <DependentUpon>TodoControl.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Control\UserControls\IconFont\IconPannel.xaml.cs"> <Compile Include="Control\UserControls\IconFont\IconPannel.xaml.cs">
<DependentUpon>IconPannel.xaml</DependentUpon> <DependentUpon>IconPannel.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Control\Windows\BacklogInfoWindow.xaml.cs"> <Compile Include="Control\Windows\ToDoInfoWindow.xaml.cs">
<DependentUpon>BacklogInfoWindow.xaml</DependentUpon> <DependentUpon>ToDoInfoWindow.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Control\Windows\BacklogWindow.xaml.cs"> <Compile Include="Control\Windows\ToDoWindow.xaml.cs">
<DependentUpon>BacklogWindow.xaml</DependentUpon> <DependentUpon>ToDoWindow.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Control\Windows\ConfigWindow.xaml.cs"> <Compile Include="Control\Windows\ConfigWindow.xaml.cs">
<DependentUpon>ConfigWindow.xaml</DependentUpon> <DependentUpon>ConfigWindow.xaml</DependentUpon>
@@ -165,10 +166,11 @@
<Compile Include="Converts\DoubleToGridLength.cs" /> <Compile Include="Converts\DoubleToGridLength.cs" />
<Compile Include="Converts\IntToCornerRadius.cs" /> <Compile Include="Converts\IntToCornerRadius.cs" />
<Compile Include="Converts\OpcityConvert.cs" /> <Compile Include="Converts\OpcityConvert.cs" />
<Compile Include="Converts\UpdateTypeConvert.cs" />
<Compile Include="DraggAnimatedPanel\DraggAnimatedPanel.cs" /> <Compile Include="DraggAnimatedPanel\DraggAnimatedPanel.cs" />
<Compile Include="DraggAnimatedPanel\DraggAnimatedPanel.Drag.cs" /> <Compile Include="DraggAnimatedPanel\DraggAnimatedPanel.Drag.cs" />
<Compile Include="Converts\HideTypeConvert.cs" /> <Compile Include="Converts\HideTypeConvert.cs" />
<Compile Include="Task\BacklogTask.cs" /> <Compile Include="Task\ToDoTask.cs" />
<Compile Include="Thread\UpdateThread.cs" /> <Compile Include="Thread\UpdateThread.cs" />
<Compile Include="Util\AeroGlassHelper.cs" /> <Compile Include="Util\AeroGlassHelper.cs" />
<Compile Include="Util\CommonCode.cs" /> <Compile Include="Util\CommonCode.cs" />
@@ -188,7 +190,7 @@
<Compile Include="Util\SystemIcon.cs" /> <Compile Include="Util\SystemIcon.cs" />
<Compile Include="ViewModel\AppConfig.cs" /> <Compile Include="ViewModel\AppConfig.cs" />
<Compile Include="ViewModel\AppData.cs" /> <Compile Include="ViewModel\AppData.cs" />
<Compile Include="ViewModel\BacklogInfo.cs" /> <Compile Include="ViewModel\ToDoInfo.cs" />
<Compile Include="ViewModel\IconfontInfo.cs" /> <Compile Include="ViewModel\IconfontInfo.cs" />
<Compile Include="ViewModel\IconInfo.cs" /> <Compile Include="ViewModel\IconInfo.cs" />
<Compile Include="ViewModel\MenuInfo.cs" /> <Compile Include="ViewModel\MenuInfo.cs" />
@@ -200,7 +202,7 @@
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Page>
<Page Include="Control\UserControls\Backlog\BacklogControl.xaml"> <Page Include="Control\UserControls\ToDo\TodoControl.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
@@ -208,11 +210,11 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="Control\Windows\BacklogInfoWindow.xaml"> <Page Include="Control\Windows\ToDoInfoWindow.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="Control\Windows\BacklogWindow.xaml"> <Page Include="Control\Windows\ToDoWindow.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>

View File

@@ -30,7 +30,9 @@ namespace GeekDesk
{ {
public static AppData appData = CommonCode.GetAppDataByFile(); public static AppData appData = CommonCode.GetAppDataByFile();
public static ToDoInfoWindow toDoInfoWindow = (ToDoInfoWindow)ToDoInfoWindow.GetThis();
public static int hotKeyId = -1; public static int hotKeyId = -1;
public static int toDoHotKeyId = -1;
public static MainWindow mainWindow; public static MainWindow mainWindow;
public HotKeyManager hkm = new HotKeyManager(); public HotKeyManager hkm = new HotKeyManager();
public MainWindow() public MainWindow()
@@ -41,7 +43,7 @@ namespace GeekDesk
this.Topmost = true; this.Topmost = true;
this.Loaded += Window_Loaded; this.Loaded += Window_Loaded;
this.SizeChanged += MainWindow_Resize; this.SizeChanged += MainWindow_Resize;
BacklogTask.BackLogCheck(); ToDoTask.BackLogCheck();
} }
private void LoadData() private void LoadData()
@@ -54,6 +56,7 @@ namespace GeekDesk
this.Width = appData.AppConfig.WindowWidth; this.Width = appData.AppConfig.WindowWidth;
this.Height = appData.AppConfig.WindowHeight; this.Height = appData.AppConfig.WindowHeight;
} }
void Window_Loaded(object sender, RoutedEventArgs e) void Window_Loaded(object sender, RoutedEventArgs e)
@@ -65,16 +68,18 @@ namespace GeekDesk
{ {
ShowApp(); ShowApp();
} }
RegisterHotKey(true);
RegisterCreateToDoHotKey(true);
} }
/// <summary> /// <summary>
/// 注册当前窗口的热键 /// 注册当前窗口的热键
/// </summary> /// </summary>
public static void RegisterHotKey() public static void RegisterHotKey(bool first)
{ {
try try
{
if (appData.AppConfig.HotkeyModifiers != 0)
{ {
//加载完毕注册热键 //加载完毕注册热键
hotKeyId = Hotkey.Regist(new WindowInteropHelper(MainWindow.mainWindow).Handle, appData.AppConfig.HotkeyModifiers, appData.AppConfig.Hotkey, () => hotKeyId = Hotkey.Regist(new WindowInteropHelper(MainWindow.mainWindow).Handle, appData.AppConfig.HotkeyModifiers, appData.AppConfig.Hotkey, () =>
@@ -91,14 +96,61 @@ namespace GeekDesk
} }
} }
}); });
//HandyControl.Controls.Growl.SuccessGlobal("快捷键注册成功(" + appData.AppConfig.HotkeyStr + ")!"); }
if (!first)
{
HandyControl.Controls.Growl.Success("GeekDesk快捷键注册成功(" + appData.AppConfig.HotkeyStr + ")!", "HotKeyGrowl");
}
} }
catch (Exception) catch (Exception)
{
if (first)
{ {
HandyControl.Controls.Growl.WarningGlobal("GeekDesk启动快捷键已被其它程序占用(" + appData.AppConfig.HotkeyStr + ")!"); HandyControl.Controls.Growl.WarningGlobal("GeekDesk启动快捷键已被其它程序占用(" + appData.AppConfig.HotkeyStr + ")!");
} }
else
{
HandyControl.Controls.Growl.Warning("GeekDesk启动快捷键已被其它程序占用(" + appData.AppConfig.HotkeyStr + ")!", "HotKeyGrowl");
} }
}
}
/// <summary>
/// 注册新建待办的热键
/// </summary>
public static void RegisterCreateToDoHotKey(bool first)
{
try
{
if (appData.AppConfig.ToDoHotkeyModifiers!=0)
{
//加载完毕注册热键
toDoHotKeyId = Hotkey.Regist(new WindowInteropHelper(toDoInfoWindow).Handle, appData.AppConfig.ToDoHotkeyModifiers, appData.AppConfig.ToDoHotkey, () =>
{
if (MotionControl.hotkeyFinished)
{
ToDoInfoWindow.ShowNone();
}
});
}
if (!first)
{
HandyControl.Controls.Growl.Success("新建待办任务快捷键注册成功(" + appData.AppConfig.ToDoHotkeyStr + ")!", "HotKeyGrowl");
}
}
catch (Exception)
{
if (first)
{
HandyControl.Controls.Growl.WarningGlobal("新建待办任务快捷键已被其它程序占用(" + appData.AppConfig.ToDoHotkeyStr + ")!");
}
else
{
HandyControl.Controls.Growl.Warning("新建待办任务快捷键已被其它程序占用(" + appData.AppConfig.ToDoHotkeyStr + ")!", "HotKeyGrowl");
}
}
}
private void DisplayWindowHotKeyPress(object sender, KeyPressedEventArgs e) private void DisplayWindowHotKeyPress(object sender, KeyPressedEventArgs e)
{ {
@@ -336,7 +388,7 @@ namespace GeekDesk
/// <param name="e"></param> /// <param name="e"></param>
private void BacklogMenuClick(object sender, RoutedEventArgs e) private void BacklogMenuClick(object sender, RoutedEventArgs e)
{ {
BacklogWindow.Show(); ToDoWindow.Show();
} }
/// <summary> /// <summary>
/// 禁用设置按钮右键菜单 /// 禁用设置按钮右键菜单

View File

@@ -14,12 +14,12 @@ using System.Timers;
namespace GeekDesk.Task namespace GeekDesk.Task
{ {
public class BacklogTask public class ToDoTask
{ {
///public static ObservableCollection<BacklogInfo> activityBacklog = new ObservableCollection<BacklogInfo>(); ///public static ObservableCollection<ToDoInfo> activityBacklog = new ObservableCollection<ToDoInfo>();
public static Dictionary<BacklogInfo, Notification> activityBacklog = new Dictionary<BacklogInfo, Notification>(); public static Dictionary<ToDoInfo, Notification> activityBacklog = new Dictionary<ToDoInfo, Notification>();
public static void BackLogCheck() public static void BackLogCheck()
{ {
@@ -36,11 +36,11 @@ namespace GeekDesk.Task
{ {
App.Current.Dispatcher.Invoke((Action)(() => App.Current.Dispatcher.Invoke((Action)(() =>
{ {
if (MainWindow.appData.ExeBacklogList.Count > 0) if (MainWindow.appData.ToDoList.Count > 0)
{ {
string nowTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string nowTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
ObservableCollection<BacklogInfo> exeBacklogList = MainWindow.appData.ExeBacklogList; ObservableCollection<ToDoInfo> exeBacklogList = MainWindow.appData.ToDoList;
foreach (BacklogInfo info in exeBacklogList) foreach (ToDoInfo info in exeBacklogList)
{ {
if (info.ExeTime.CompareTo(nowTime) == -1 && !activityBacklog.ContainsKey(info)) if (info.ExeTime.CompareTo(nowTime) == -1 && !activityBacklog.ContainsKey(info))
{ {

View File

@@ -37,18 +37,79 @@ namespace GeekDesk.ViewModel
private int pannelCornerRadius = 4; //面板圆角 默认4 private int pannelCornerRadius = 4; //面板圆角 默认4
[field: NonSerialized] [field: NonSerialized]
private ObservableCollection<IconInfo> selectedMenuIcons; private ObservableCollection<IconInfo> selectedMenuIcons;
private string hotkeyStr = "Ctrl + Q"; //默认启动面板快捷键 private string hotkeyStr = "Ctrl + Q"; //默认启动面板快捷键
private HotkeyModifiers hotkeyModifiers = HotkeyModifiers.MOD_CONTROL; //默认启动面板快捷键 private HotkeyModifiers hotkeyModifiers = HotkeyModifiers.MOD_CONTROL; //默认启动面板快捷键
private Key hotkey = Key.Q; //默认启动面板快捷键 private Key hotkey = Key.Q; //默认启动面板快捷键
private string toDoHotkeyStr; //待办任务快捷键
private HotkeyModifiers toDoHotkeyModifiers; //待办任务快捷键
private Key toDoHotkey; //待办任务快捷键
private string customIconUrl; //自定义图标url private string customIconUrl; //自定义图标url
private string customIconJsonUrl; //自定义图标json信息url private string customIconJsonUrl; //自定义图标json信息url
private bool blurEffect = false; //毛玻璃效果 默认否 private bool blurEffect = false; //毛玻璃效果 默认否
private double blurValue; private double blurValue;
private UpdateType updateType = UpdateType.Gitee; //更新源 默认gitee源
#region GetSet #region GetSet
public Key ToDoHotkey
{
get
{
return toDoHotkey;
}
set
{
toDoHotkey = value;
OnPropertyChanged("ToDoHotkey");
}
}
public HotkeyModifiers ToDoHotkeyModifiers
{
get
{
return toDoHotkeyModifiers;
}
set
{
toDoHotkeyModifiers = value;
OnPropertyChanged("ToDoHotkeyModifiers");
}
}
public string ToDoHotkeyStr
{
get
{
return toDoHotkeyStr;
}
set
{
toDoHotkeyStr = value;
OnPropertyChanged("ToDoHotkeyStr");
}
}
public UpdateType UpdateType
{
get
{
return updateType;
}
set
{
updateType = value;
OnPropertyChanged("UpdateType");
}
}
public double BlurValue public double BlurValue
{ {
get get

View File

@@ -14,42 +14,42 @@ namespace GeekDesk.ViewModel
{ {
private ObservableCollection<MenuInfo> menuList; //菜单信息及菜单对应icon信息 private ObservableCollection<MenuInfo> menuList; //菜单信息及菜单对应icon信息
private AppConfig appConfig = new AppConfig(); //程序设置信息 private AppConfig appConfig = new AppConfig(); //程序设置信息
private ObservableCollection<BacklogInfo> hiBacklogList; //历史待办 private ObservableCollection<ToDoInfo> hiToDoList; //历史待办
private ObservableCollection<BacklogInfo> exeBacklogList; //未处理待办 为了提高任务效率 分开处理 private ObservableCollection<ToDoInfo> toDoList; //未处理待办 为了提高任务效率 分开处理
public ObservableCollection<BacklogInfo> HiBacklogList public ObservableCollection<ToDoInfo> HiToDoList
{ {
get get
{ {
if (hiBacklogList == null) if (hiToDoList == null)
{ {
hiBacklogList = new ObservableCollection<BacklogInfo>(); hiToDoList = new ObservableCollection<ToDoInfo>();
} }
return hiBacklogList; return hiToDoList;
} }
set set
{ {
hiBacklogList = value; hiToDoList = value;
OnPropertyChanged("HiBacklogList"); OnPropertyChanged("HiToDoList");
} }
} }
public ObservableCollection<BacklogInfo> ExeBacklogList public ObservableCollection<ToDoInfo> ToDoList
{ {
get get
{ {
if (exeBacklogList == null) if (toDoList == null)
{ {
exeBacklogList = new ObservableCollection<BacklogInfo>(); toDoList = new ObservableCollection<ToDoInfo>();
} }
return exeBacklogList; return toDoList;
} }
set set
{ {
exeBacklogList = value; toDoList = value;
OnPropertyChanged("ExeBacklogList"); OnPropertyChanged("ToDoList");
} }
} }

View File

@@ -10,7 +10,7 @@ namespace GeekDesk.ViewModel
{ {
[Serializable] [Serializable]
public class BacklogInfo : INotifyPropertyChanged public class ToDoInfo : INotifyPropertyChanged
{ {
//private string id; //任务唯一id //private string id; //任务唯一id
private string title; //待办事项 private string title; //待办事项