فهرست منبع

下班 还有一些小问题 1.0版本就可以发布了

liufei 4 سال پیش
والد
کامیت
2ed8bd8148
40فایلهای تغییر یافته به همراه1131 افزوده شده و 108 حذف شده
  1. 2 1
      App.xaml
  2. 43 0
      Control/Other/BacklogNotificatin.xaml
  3. 28 0
      Control/Other/BacklogNotificatin.xaml.cs
  4. 2 2
      Control/Other/IconInfoDialog.xaml
  5. 2 2
      Control/Other/IconInfoDialog.xaml.cs
  6. 56 0
      Control/Other/MenuGeometryDialog.xaml
  7. 28 0
      Control/Other/MenuGeometryDialog.xaml.cs
  8. 57 0
      Control/UserControls/Backlog/BacklogControl.xaml
  9. 72 0
      Control/UserControls/Backlog/BacklogControl.xaml.cs
  10. 2 2
      Control/UserControls/Config/AboutControl.xaml
  11. 1 1
      Control/UserControls/Config/AboutControl.xaml.cs
  12. 1 1
      Control/UserControls/Config/MotionControl.xaml
  13. 3 2
      Control/UserControls/Config/MotionControl.xaml.cs
  14. 2 2
      Control/UserControls/Config/ThemeControl.xaml
  15. 1 1
      Control/UserControls/Config/ThemeControl.xaml.cs
  16. 16 8
      Control/UserControls/PannelCard/LeftCardControl.xaml
  17. 21 1
      Control/UserControls/PannelCard/LeftCardControl.xaml.cs
  18. 2 2
      Control/UserControls/PannelCard/RightCardControl.xaml
  19. 2 1
      Control/UserControls/PannelCard/RightCardControl.xaml.cs
  20. 69 0
      Control/Windows/BacklogInfoWindow.xaml
  21. 145 0
      Control/Windows/BacklogInfoWindow.xaml.cs
  22. 99 0
      Control/Windows/BacklogWindow.xaml
  23. 97 0
      Control/Windows/BacklogWindow.xaml.cs
  24. 7 5
      Control/Windows/ConfigWindow.xaml
  25. 13 2
      Control/Windows/ConfigWindow.xaml.cs
  26. 4 0
      Fonts/iconfont.css
  27. 0 0
      Fonts/iconfont.js
  28. 0 0
      Fonts/iconfont.json
  29. BIN
      Fonts/iconfont.ttf
  30. 61 18
      GeekDesk.csproj
  31. 10 3
      MainWindow.xaml
  32. 25 10
      MainWindow.xaml.cs
  33. 12 0
      Resource/DefaultIconfont/MyIcon.xaml
  34. 0 40
      Resource/DefaultIconfont/iconfont.svg
  35. BIN
      Resource/DefaultIconfont/iconfont.ttf
  36. 28 2
      Resource/Dictionary/Geometry.xaml
  37. 35 0
      Task/BacklogTask.cs
  38. 44 2
      ViewModel/AppData.cs
  39. 112 0
      ViewModel/BacklogInfo.cs
  40. 29 0
      ViewModel/MenuInfo.cs

+ 2 - 1
App.xaml

@@ -7,9 +7,10 @@
              d1p1:Ignorable="d" 
              xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006">
   <Application.Resources>
-    <ResourceDictionary>
+        <ResourceDictionary>
             <ResourceDictionary.MergedDictionaries>
                 <ResourceDictionary Source="/GeekDesk;component/Resource/Dictionary/Geometry.xaml"/>
+                <ResourceDictionary Source="/GeekDesk;component/Resource/DefaultIconfont/MyIcon.xaml" />
                 <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
                 <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
             </ResourceDictionary.MergedDictionaries>

+ 43 - 0
Control/Other/BacklogNotificatin.xaml

@@ -0,0 +1,43 @@
+<Border x:Class="GeekDesk.Control.Other.BacklogNotificatin"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:hc="https://handyorg.github.io/handycontrol"
+        Background="AliceBlue"
+        BorderThickness="1"
+        BorderBrush="{DynamicResource BorderBrush}"
+        Width="320"
+        Height="450">
+    <Grid>
+
+        <!--<TextBlock Text="You have a new task" 
+                   VerticalAlignment="Top" 
+                   FontSize="25" 
+                   Foreground="#326CF3"
+                   HorizontalAlignment="Center" Margin="37.686,17.333,36.353,0"/>
+        <Border Margin="27.647,69,36.354,329" Style="{StaticResource BorderTipInfo}" Height="50">
+            <TextBlock Margin="10,0,0,0" FontSize="20" Text="任务名称"/>
+        </Border>
+
+        <Border Style="{StaticResource BorderRegion}" Width="250" Height="200"  Effect="{StaticResource EffectShadow1}" Margin="31.646,168,36.353,80">
+            <Border Background="{DynamicResource InfoBrush}">
+                <TextBlock Text="agaharhaewrhehssssssss任务名称ssssssssssssssssss"
+                           VerticalAlignment="Center"
+                           HorizontalAlignment="Center"
+                           Foreground="White"
+                           TextWrapping="Wrap"
+                           TextAlignment="Center"
+                           Margin="10"
+                           FontSize="15"/>
+            </Border>
+        </Border>-->
+
+        <ComboBox hc:DropDownElement.ConsistentWidth="False" SelectedIndex="0" Margin="219,334,39,84" Height="20" Width="60">
+            <ComboBox.Items>
+                <ComboBoxItem Content="分"/>
+                <ComboBoxItem Content="时"/>
+            </ComboBox.Items>
+        </ComboBox>
+
+        <Button Command="{Binding OpenCmd}" Content="关闭" Margin="10,0,10,20" Width="298" VerticalAlignment="Bottom"/>
+    </Grid>
+</Border>

+ 28 - 0
Control/Other/BacklogNotificatin.xaml.cs

@@ -0,0 +1,28 @@
+using GeekDesk.ViewModel;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace GeekDesk.Control.Other
+{
+    /// <summary>
+    /// BacklogNotificatin.xaml 的交互逻辑
+    /// </summary>
+    public partial class BacklogNotificatin
+    {
+        public BacklogNotificatin(BacklogInfo info)
+        {
+            InitializeComponent();
+        }
+    }
+}

+ 2 - 2
Control/IconInfoDialog.xaml → Control/Other/IconInfoDialog.xaml

@@ -1,4 +1,4 @@
-<Border x:Class="GeekDesk.Control.IconInfoDialog"
+<Border x:Class="GeekDesk.Control.Other.IconInfoDialog"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:hc="https://handyorg.github.io/handycontrol"
@@ -34,7 +34,7 @@
                 <TextBlock  Text="图标:"  Style="{StaticResource LeftTB}"/>
                 <Image x:Name="IconImg" Source="{Binding BitmapImage, Mode=OneWay}" Width="60" Height="60"/>
                 <Button Content="修改" Click="EditImage"/>
-                <Button Content="默认" Click="EditImageToDefault"/>
+                <Button Content="重置" Click="ReStoreImage"/>
             </hc:UniformSpacingPanel>
             <hc:Divider LineStrokeDashArray="3,3" Margin="0,128,0,23" LineStroke="Black" Grid.ColumnSpan="4"/>
             <hc:UniformSpacingPanel Spacing="10" Margin="0,150,0,10" Grid.ColumnSpan="4">

+ 2 - 2
Control/IconInfoDialog.xaml.cs → Control/Other/IconInfoDialog.xaml.cs

@@ -7,7 +7,7 @@ using System.Windows.Controls;
 using System.Windows.Media.Imaging;
 
 
-namespace GeekDesk.Control
+namespace GeekDesk.Control.Other
 {
     /// <summary>
     /// TextDialog.xaml 的交互逻辑
@@ -45,7 +45,7 @@ namespace GeekDesk.Control
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
-        private void EditImageToDefault(object sender, RoutedEventArgs e)
+        private void ReStoreImage(object sender, RoutedEventArgs e)
         {
             IconInfo info = ((Button)sender).Tag as IconInfo;
             info.BitmapImage = ImageUtil.ByteArrToImage(info.DefaultImage);

+ 56 - 0
Control/Other/MenuGeometryDialog.xaml

@@ -0,0 +1,56 @@
+<Border x:Class="GeekDesk.Control.Other.MenuGeometryDialog"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:hc="https://handyorg.github.io/handycontrol"
+        CornerRadius="10"
+        Width="300"
+        Height="300"
+        Opacity="0.9">
+    <!--<Border.Resources>
+        <Style x:Key="LeftTB" TargetType="TextBlock" BasedOn="{StaticResource TextBlockBaseStyle}">
+            <Setter Property="Width" Value="40"/>
+            <Setter Property="HorizontalAlignment" Value="Left"/>
+            <Setter Property="VerticalAlignment" Value="Center"/>
+            <Setter Property="FontSize" Value="14"/>
+        </Style>
+    </Border.Resources>
+    <Border.Background>
+        <SolidColorBrush Color="AliceBlue" Opacity="0.9"/>
+    </Border.Background>
+    <hc:SimplePanel Margin="10">
+        <Grid Margin="8,20,8,20">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="93*"/>
+                <ColumnDefinition Width="38*"/>
+                <ColumnDefinition Width="126*"/>
+                <ColumnDefinition Width="7*"/>
+            </Grid.ColumnDefinitions>
+            <hc:UniformSpacingPanel Spacing="10" Grid.ColumnSpan="4">
+                <TextBlock Text="名称:"  Style="{StaticResource LeftTB}"/>
+                <TextBox x:Name="IconName" Text="{Binding Name, Mode=OneWay}" Width="180" FontSize="14"/>
+            </hc:UniformSpacingPanel>
+            <hc:Divider LineStrokeDashArray="3,3" Margin="0,50,0,71" LineStroke="Black" Grid.ColumnSpan="4"/>
+            <hc:UniformSpacingPanel Spacing="10" Margin="0,59,0,-9" Grid.ColumnSpan="4">
+                <TextBlock  Text="图标:"  Style="{StaticResource LeftTB}"/>
+                <Image x:Name="IconImg" Source="{Binding BitmapImage, Mode=OneWay}" Width="60" Height="60"/>
+                <Button Content="修改" Click="EditImage"/>
+                <Button Content="重置" Click="ReStoreImage"/>
+            </hc:UniformSpacingPanel>
+            <hc:Divider LineStrokeDashArray="3,3" Margin="0,128,0,23" LineStroke="Black" Grid.ColumnSpan="4"/>
+            <hc:UniformSpacingPanel Spacing="10" Margin="0,150,0,10" Grid.ColumnSpan="4">
+                <CheckBox x:Name="IconIsAdmin" Content="始终以管理员方式启动" IsChecked="{Binding AdminStartUp, Mode=OneWay}">
+                    <CheckBox.Background>
+                        <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
+                            <GradientStop Color="#FF9EA3A6"/>
+                        </LinearGradientBrush>
+                    </CheckBox.Background>
+                </CheckBox>
+            </hc:UniformSpacingPanel>
+            <hc:Divider LineStrokeDashArray="3,3" Margin="0,200,0,-27" LineStroke="Black" Grid.ColumnSpan="4"/>
+            <hc:UniformSpacingPanel Spacing="10" Margin="0,218,0,-38" Grid.ColumnSpan="4">
+                <Button Content="保存" Command="hc:ControlCommands.Close" Click="SaveProperty" Margin="208,6,-208,-10"/>
+            </hc:UniformSpacingPanel>
+        </Grid>
+        <Button Width="22" Height="22" Command="hc:ControlCommands.Close" Style="{StaticResource ButtonIcon}" Foreground="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" hc:IconElement.Geometry="{StaticResource ErrorGeometry}" Padding="0" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,4,4,0"/>
+    </hc:SimplePanel>-->
+</Border>

+ 28 - 0
Control/Other/MenuGeometryDialog.xaml.cs

@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace GeekDesk.Control.Other
+{
+    /// <summary>
+    /// MenuGeometryDialogxaml.xaml 的交互逻辑
+    /// </summary>
+    public partial class MenuGeometryDialog
+    {
+        public MenuGeometryDialog()
+        {
+            InitializeComponent();
+        }
+    }
+}

+ 57 - 0
Control/UserControls/Backlog/BacklogControl.xaml

@@ -0,0 +1,57 @@
+<UserControl x:Class="GeekDesk.Control.UserControls.Backlog.BacklogControl"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:GeekDesk.Control.UserControls.PannelCard"
+             xmlns:hc="https://handyorg.github.io/handycontrol"
+             mc:Ignorable="d" 
+             Background="AliceBlue"
+             >
+    
+    <hc:SimplePanel Margin="20">
+        <Grid>
+            <DataGrid x:Name="BacklogList" 
+                  HeadersVisibility="All"  
+                  AutoGenerateColumns="False" 
+                  ItemsSource="{Binding}"
+                  IsReadOnly="True"
+                  Initialized="DataGridMenu_Initialized"
+                  >
+                <DataGrid.ContextMenu>
+                    <ContextMenu x:Name="Menu" Width="120">
+                        <MenuItem Header="详情" Click="DetailMenu_Click"/>
+                        <MenuItem Header="删除" Click="DeleteMenu_Click"/>
+                    </ContextMenu>
+                </DataGrid.ContextMenu>
+                <DataGrid.RowStyle>
+                    <Style TargetType="DataGridRow" BasedOn="{StaticResource DataGridRowStyle}">
+                        <EventSetter Event="MouseRightButtonUp" Handler="DataGridRow_MouseRightButtonUp" />
+                    </Style>
+                </DataGrid.RowStyle>
+
+                <DataGrid.CellStyle>
+                    <Style TargetType="DataGridCell" BasedOn="{StaticResource DataGridCellStyle}">
+                        <Setter Property="HorizontalContentAlignment" Value="Center"/>
+                    </Style>
+                </DataGrid.CellStyle>
+                <DataGrid.ColumnHeaderStyle>
+                    <Style TargetType="DataGridColumnHeader" BasedOn="{StaticResource DataGridColumnHeaderStyle}">
+                        <Setter Property="HorizontalContentAlignment" Value="Center"/>
+                    </Style>
+                </DataGrid.ColumnHeaderStyle>
+
+                <DataGrid.Background>
+                    <SolidColorBrush Color="AliceBlue"/>
+                </DataGrid.Background>
+                <DataGrid.Columns>
+                    <DataGridTextColumn Width="120" Binding="{Binding Title}" Header="待办任务"/>
+                    <DataGridTextColumn Width="210" Binding="{Binding Msg}" Header="待办详情"/>
+                    <DataGridTextColumn Width="147" Binding="{Binding ExeTime}" Header="待办时间"/>
+                    <DataGridTextColumn Width="147" Binding="{Binding DoneTime}" Header="完成时间"/>
+                </DataGrid.Columns>
+            </DataGrid>
+            <StackPanel hc:Growl.GrowlParent="True" hc:Growl.Token="DeleteConfirm" VerticalAlignment="Center" Margin="0,10,10,50"/>
+        </Grid>
+    </hc:SimplePanel>
+</UserControl>

+ 72 - 0
Control/UserControls/Backlog/BacklogControl.xaml.cs

@@ -0,0 +1,72 @@
+using GeekDesk.Control.Windows;
+using GeekDesk.Util;
+using GeekDesk.ViewModel;
+using HandyControl.Controls;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace GeekDesk.Control.UserControls.Backlog
+{
+    /// <summary>
+    /// BacklogControl.xaml 的交互逻辑
+    /// </summary>
+    public partial class BacklogControl : UserControl
+    {
+        private AppData appData = MainWindow.appData;
+        public BacklogControl()
+        {
+            InitializeComponent();
+        }
+
+        private void DeleteMenu_Click(object sender, RoutedEventArgs e)
+        {
+            BacklogInfo info = BacklogList.SelectedItem as BacklogInfo;
+            Growl.Ask("确认删除吗?", isConfirmed =>
+            {
+                if (isConfirmed)
+                {
+                    appData.ExeBacklogList.Remove(info);
+                    CommonCode.SaveAppData(MainWindow.appData);
+                }
+                return true;
+            }, "DeleteConfirm");
+        }
+
+        private void DetailMenu_Click(object sender, RoutedEventArgs e)
+        {
+            BacklogInfo info = BacklogList.SelectedItem as BacklogInfo;
+            BacklogInfoWindow.ShowDetail(info);
+        }
+
+        /// <summary>
+        /// 禁用设置按钮右键菜单
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void DataGridMenu_Initialized(object sender, EventArgs e)
+        {
+            BacklogList.ContextMenu = null;
+        }
+
+
+        private void DataGridRow_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
+        {
+            BacklogList.SelectedIndex = ((DataGridRow)sender).GetIndex();
+            Menu.IsOpen = true;
+        }
+
+
+    }
+}

+ 2 - 2
Control/UserControls/AboutControl.xaml → Control/UserControls/Config/AboutControl.xaml

@@ -1,9 +1,9 @@
-<UserControl x:Class="GeekDesk.Control.UserControls.AboutControl"
+<UserControl x:Class="GeekDesk.Control.UserControls.Config.AboutControl"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:GeekDesk.Control.UserControls"
+             xmlns:local="clr-namespace:GeekDesk.Control.UserControls.PannelCard"
              xmlns:hc="https://handyorg.github.io/handycontrol"
              mc:Ignorable="d" 
              Background="AliceBlue"

+ 1 - 1
Control/UserControls/AboutControl.xaml.cs → Control/UserControls/Config/AboutControl.xaml.cs

@@ -13,7 +13,7 @@ using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
 
-namespace GeekDesk.Control.UserControls
+namespace GeekDesk.Control.UserControls.Config
 {
     /// <summary>
     /// AboutControl.xaml 的交互逻辑

+ 1 - 1
Control/UserControls/MotionControl.xaml → Control/UserControls/Config/MotionControl.xaml

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

+ 3 - 2
Control/UserControls/MotionControl.xaml.cs → Control/UserControls/Config/MotionControl.xaml.cs

@@ -1,4 +1,5 @@
-using GeekDesk.Util;
+using GeekDesk.Control.Windows;
+using GeekDesk.Util;
 using GeekDesk.ViewModel;
 using GlobalHotKey;
 using HandyControl.Data;
@@ -19,7 +20,7 @@ using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
 
-namespace GeekDesk.Control.UserControls
+namespace GeekDesk.Control.UserControls.Config
 {
     /// <summary>
     /// 动作设置

+ 2 - 2
Control/UserControls/ThemeControl.xaml → Control/UserControls/Config/ThemeControl.xaml

@@ -1,9 +1,9 @@
-<UserControl x:Class="GeekDesk.Control.UserControls.ThemeControl"
+<UserControl x:Class="GeekDesk.Control.UserControls.Config.ThemeControl"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:GeekDesk.Control.UserControls"
+             xmlns:local="clr-namespace:GeekDesk.Control.UserControls.Config"
              xmlns:hc="https://handyorg.github.io/handycontrol"
              mc:Ignorable="d" 
              Background="AliceBlue"

+ 1 - 1
Control/UserControls/ThemeControl.xaml.cs → Control/UserControls/Config/ThemeControl.xaml.cs

@@ -16,7 +16,7 @@ using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
 
-namespace GeekDesk.Control.UserControls
+namespace GeekDesk.Control.UserControls.Config
 {
     /// <summary>
     /// MotionControl.xaml 的交互逻辑

+ 16 - 8
Control/UserControls/LeftCardControl.xaml → Control/UserControls/PannelCard/LeftCardControl.xaml

@@ -1,9 +1,9 @@
-<UserControl x:Class="GeekDesk.Control.UserControls.LeftCardControl"
+<UserControl x:Class="GeekDesk.Control.UserControls.PannelCard.LeftCardControl"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:GeekDesk.Control.UserControls"
+             xmlns:local="clr-namespace:GeekDesk.Control.UserControls.PannelCard"
              xmlns:hc="https://handyorg.github.io/handycontrol"
              xmlns:cvt="clr-namespace:GeekDesk.Converts"
              xmlns:DraggAnimatedPanel="clr-namespace:DraggAnimatedPanel"
@@ -83,8 +83,9 @@
                         <ContextMenu x:Key="menuDialog" Width="200">
                             <MenuItem Header="新建菜单" Click="CreateMenu"/>
                             <MenuItem Header="重命名"  Click="RenameMenu" Tag="{Binding}"/>
+                            <MenuItem Header="修改图标"  Click="EditMenuGeometry" Tag="{Binding}"/>
                             <MenuItem Header="删除" Click="DeleteMenu" Tag="{Binding}"/>
-                        </ContextMenu>
+                    </ContextMenu>
                     </ListBox.Resources>
 
                     <ListBox.ItemContainerStyle>
@@ -116,19 +117,26 @@
                                      IsVisibleChanged="MenuEditWhenVisibilityChanged"
                                      Visibility="{Binding MenuEdit}"/>
                                 <StackPanel Orientation="Horizontal">
-                                    <Button Background="Transparent" 
+                                    <!--<Button Background="Transparent" 
                                         BorderThickness="0"
-                                        hc:IconElement.Geometry="M438.857143 548.571429a36.571429 36.571429 0 0 1 36.571428 36.571428v256a36.571429 36.571429 0 0 1-36.571428 36.571429H182.857143a36.571429 36.571429 0 0 1-36.571429-36.571429v-256a36.571429 36.571429 0 0 1 36.571429-36.571428h256z m402.285714 0a36.571429 36.571429 0 0 1 36.571429 36.571428v256a36.571429 36.571429 0 0 1-36.571429 36.571429h-256a36.571429 36.571429 0 0 1-36.571428-36.571429v-256a36.571429 36.571429 0 0 1 36.571428-36.571428h256z m-438.857143 73.142857H219.428571v182.857143h182.857143v-182.857143z m402.285715 0h-182.857143v182.857143h182.857143v-182.857143zM438.857143 146.285714a36.571429 36.571429 0 0 1 36.571428 36.571429v256a36.571429 36.571429 0 0 1-36.571428 36.571428H182.857143a36.571429 36.571429 0 0 1-36.571429-36.571428V182.857143a36.571429 36.571429 0 0 1 36.571429-36.571429h256z m402.285714 0a36.571429 36.571429 0 0 1 36.571429 36.571429v256a36.571429 36.571429 0 0 1-36.571429 36.571428h-256a36.571429 36.571429 0 0 1-36.571428-36.571428V182.857143a36.571429 36.571429 0 0 1 36.571428-36.571429h256zM402.285714 219.428571H219.428571v182.857143h182.857143V219.428571z m402.285715 0h-182.857143v182.857143h182.857143V219.428571z" 
+                                        hc:IconElement.Geometry="{StaticResource test}" 
                                         hc:IconElement.Height="18"
                                         hc:IconElement.Width="18"
-                                        />
-                                    <TextBlock Text="{Binding MenuName}"
+                                        />-->
+                                <!--<Button Background="Transparent" BorderThickness="0" Height="10" Width="10">
+                                    <Canvas>
+                                        <Path Fill="#92E3C3" Data="M391.68 957.44h-66.56v-158.4128H66.56v-66.56h258.56v-174.08H66.56v-66.56h258.56V307.2h66.56l-0.0512 184.6272h240.6912V307.2h66.56l-0.0512 184.6272H957.44v307.2h-258.6112V957.44h-66.4576l-0.0512-158.4128H391.6288V957.44z m-0.0512-224.9728h240.6912v-174.08H391.6288v174.08z m565.8112-174.08h-258.6112v174.08H957.44v-174.08z"/>
+                                        <Path Fill="#5D7092" Data="M51.2 51.2h921.6v256H51.2z"/>
+                                        <Path Fill="#5D7092" Data="M921.6 0a102.4 102.4 0 0 1 102.4 102.4v819.2a102.4 102.4 0 0 1-102.4 102.4H102.4a102.4 102.4 0 0 1-102.4-102.4V102.4a102.4 102.4 0 0 1 102.4-102.4h819.2z m0 66.56H102.4a35.84 35.84 0 0 0-35.5328 30.976L66.56 102.4v819.2a35.84 35.84 0 0 0 30.976 35.5328L102.4 957.44h819.2a35.84 35.84 0 0 0 35.5328-30.976L957.44 921.6V102.4a35.84 35.84 0 0 0-30.976-35.5328L921.6 66.56z"/>
+                                    </Canvas>
+                                </Button>-->
+                                <TextBlock Text="&#xe606;" Style="{StaticResource MyIcon}"/>
+                                <TextBlock Text="{Binding MenuName}"
                                            VerticalAlignment="Center"
                                            IsVisibleChanged="MenuWhenVisibilityChanged"
                                            Visibility="{Binding NotMenuEdit}"
                                            />
                                 </StackPanel>
-
                             </StackPanel>
                         </DataTemplate>
                     </ListBox.ItemTemplate>

+ 21 - 1
Control/UserControls/LeftCardControl.xaml.cs → Control/UserControls/PannelCard/LeftCardControl.xaml.cs

@@ -17,7 +17,7 @@ using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
 
-namespace GeekDesk.Control.UserControls
+namespace GeekDesk.Control.UserControls.PannelCard
 {
     /// <summary>
     /// LeftCardControl.xaml 的交互逻辑
@@ -123,7 +123,19 @@ namespace GeekDesk.Control.UserControls
         private void DeleteMenu(object sender, RoutedEventArgs e)
         {
             MenuInfo menuInfo = ((MenuItem)sender).Tag as MenuInfo;
+            if (appData.MenuList.Count == 1)
+            {
+                //如果删除以后没有菜单的话 先创建一个
+                CreateMenu(null, null);
+            }
             appData.MenuList.Remove(menuInfo);
+            if (menus.SelectedIndex == -1)
+            {
+                // 选中下一个菜单
+                menus.SelectedIndex = 0;
+                appData.AppConfig.SelectedMenuIndex = menus.SelectedIndex;
+                appData.AppConfig.SelectedMenuIcons = appData.MenuList[0].IconList;
+            }
         }
 
         /// <summary>
@@ -171,6 +183,14 @@ namespace GeekDesk.Control.UserControls
             }
         }
 
+        /// <summary>
+        /// 修改菜单图标
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void EditMenuGeometry(object sender, RoutedEventArgs e)
+        {
 
+        }
     }
 }

+ 2 - 2
Control/UserControls/RightCardControl.xaml → Control/UserControls/PannelCard/RightCardControl.xaml

@@ -1,9 +1,9 @@
-<UserControl x:Class="GeekDesk.Control.UserControls.RightCardControl"
+<UserControl x:Class="GeekDesk.Control.UserControls.PannelCard.RightCardControl"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:GeekDesk.Control.UserControls"
+             xmlns:local="clr-namespace:GeekDesk.Control.UserControls.PannelCard"
              xmlns:hc="https://handyorg.github.io/handycontrol"
              xmlns:cvt="clr-namespace:GeekDesk.Converts"
              xmlns:DraggAnimatedPanel="clr-namespace:DraggAnimatedPanel"

+ 2 - 1
Control/UserControls/RightCardControl.xaml.cs → Control/UserControls/PannelCard/RightCardControl.xaml.cs

@@ -1,5 +1,6 @@
 using DraggAnimatedPanelExample;
 using GeekDesk.Constant;
+using GeekDesk.Control.Other;
 using GeekDesk.Util;
 using GeekDesk.ViewModel;
 using System;
@@ -20,7 +21,7 @@ using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
 
-namespace GeekDesk.Control.UserControls
+namespace GeekDesk.Control.UserControls.PannelCard
 {
     /// <summary>
     /// RightCardControl.xaml 的交互逻辑

+ 69 - 0
Control/Windows/BacklogInfoWindow.xaml

@@ -0,0 +1,69 @@
+<Window x:Class="GeekDesk.Control.Windows.BacklogInfoWindow"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+           xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+           xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+           xmlns:hc="https://handyorg.github.io/handycontrol"
+           xmlns:local="clr-namespace:GeekDesk"
+           mc:Ignorable="d"
+           WindowStartupLocation="CenterScreen"
+           Height="670" 
+           Width="450" 
+           WindowStyle="None"
+           AllowsTransparency="True"
+           Background="Transparent" ShowInTaskbar="False"
+        >
+    <Window.Resources>
+       
+    </Window.Resources>
+    <Border CornerRadius="3" BorderThickness="2" BorderBrush="Black" Margin="0,0,0,313.323"  MouseDown="DragMove">
+        <Border.Background>
+            <SolidColorBrush Color="AliceBlue"/>
+        </Border.Background>
+        <Border.Resources>
+            <Style x:Key="LeftTB" TargetType="TextBlock" BasedOn="{StaticResource TextBlockBaseStyle}">
+                <Setter Property="Width" Value="65"/>
+                <Setter Property="HorizontalAlignment" Value="Left"/>
+                <Setter Property="VerticalAlignment" Value="Center"/>
+                <Setter Property="FontSize" Value="14"/>
+            </Style>
+        </Border.Resources>
+        <Grid Margin="0,0,0,8">
+            <hc:SimplePanel Margin="20" HorizontalAlignment="Center">
+                <hc:UniformSpacingPanel Spacing="10" Grid.ColumnSpan="4">
+                    <TextBlock Text="待办任务*:"  Style="{StaticResource LeftTB}"/>
+                    <TextBox x:Name="Title" Width="290" FontSize="14" />
+                </hc:UniformSpacingPanel>
+
+                <hc:UniformSpacingPanel Spacing="10" Grid.ColumnSpan="4" Margin="0,48.997,0,-48.997">
+                    <TextBlock Text="待办详情:"  Style="{StaticResource LeftTB}"/>
+                    <TextBox x:Name="Msg" TextWrapping="Wrap"
+                             AcceptsReturn="True"
+                             VerticalScrollBarVisibility="Visible" 
+                             Height="100" MaxHeight="150"  MinHeight="100" Width="290" MinWidth="290" 
+                             VerticalAlignment="Center" HorizontalAlignment="Center"/>
+                </hc:UniformSpacingPanel>
+
+                <hc:UniformSpacingPanel Spacing="10" Grid.ColumnSpan="4" Margin="0,167.622,0,-167.622">
+                    <TextBlock Text="待办时间*:" Style="{StaticResource LeftTB}"/>
+                    <hc:DateTimePicker x:Name="ExeTime" ErrorStr="test"  Width="200"/>
+                </hc:UniformSpacingPanel>
+
+                <hc:UniformSpacingPanel Spacing="10" Grid.ColumnSpan="4" Margin="0,228,0,-228">
+                    <TextBlock Text="完成时间:"  Style="{StaticResource LeftTB}"/>
+                    <TextBlock x:Name="DoneTime" Width="200"/>
+                </hc:UniformSpacingPanel>
+
+
+                <hc:UniformSpacingPanel Spacing="10" Margin="0,273.333,0,-93.333" Grid.ColumnSpan="4">
+                    <Button Content="保存" Background="#5BC0DE"
+                            Foreground="White" Margin="320,6,-208,-10"
+                            Click="Save_Button_Click"/>
+                </hc:UniformSpacingPanel>
+            </hc:SimplePanel>
+            <Button Panel.ZIndex="2" Width="22" Height="22" Click="Close_Button_Click" Style="{StaticResource ButtonIcon}" Foreground="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" hc:IconElement.Geometry="{StaticResource ErrorGeometry}" Padding="0" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,10,10,0"/>
+            <StackPanel hc:Growl.GrowlParent="True" VerticalAlignment="Top" Margin="0,10,10,0"/>
+        </Grid>
+        
+    </Border>
+</Window>

+ 145 - 0
Control/Windows/BacklogInfoWindow.xaml.cs

@@ -0,0 +1,145 @@
+using GeekDesk.Util;
+using GeekDesk.ViewModel;
+using HandyControl.Controls;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace GeekDesk.Control.Windows
+{
+    /// <summary>
+    /// BacklogInfoWindow.xaml 的交互逻辑
+    /// </summary>
+    public partial class BacklogInfoWindow
+    {
+
+        private static int windowType = -1;
+        private static readonly int NEW_BACKLOG = 1;
+        private static readonly int DETAIL_BACKLOG = 2;
+
+        private AppData appData = MainWindow.appData;
+
+        private BacklogInfo info;
+
+        private BacklogInfoWindow()
+        {
+            InitializeComponent();
+            ExeTime.SelectedDateTime = DateTime.Now.AddMinutes(10);
+            this.Topmost = true;
+        }
+        private BacklogInfoWindow(BacklogInfo info)
+        {
+            InitializeComponent();
+            this.Topmost = true;
+            Title.Text = info.Title;
+            Msg.Text = info.Msg;
+            ExeTime.Text = info.ExeTime;
+            DoneTime.Text = info.DoneTime;
+            this.info = info;
+        }
+
+
+        /// <summary>
+        /// 点击关闭按钮
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Close_Button_Click(object sender, RoutedEventArgs e)
+        {
+            this.Close();
+        }
+
+        /// <summary>
+        /// 移动窗口
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void DragMove(object sender, System.Windows.Input.MouseButtonEventArgs e)
+        {
+            if (e.LeftButton == MouseButtonState.Pressed)
+            {
+                DragMove();
+            }
+        }
+
+        /// <summary>
+        /// 保存待办
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Save_Button_Click(object sender, RoutedEventArgs e)
+        {
+
+
+            if (Title.Text.Trim() == "" || ExeTime.Text.Trim() == "")
+            {
+                Growl.Warning("任务标题 和 待办时间不能为空!");
+                return;
+            } else
+            {
+                try
+                {
+                    Convert.ToDateTime(ExeTime.Text);
+                } catch (Exception)
+                {
+                    Growl.Warning("请输入正确的时间!");
+                    return;
+                }
+            }
+            if (windowType == NEW_BACKLOG)
+            {
+                info = new BacklogInfo
+                {
+                    Title = Title.Text,
+                    Msg = Msg.Text,
+                    ExeTime = ExeTime.Text
+                };
+                appData.ExeBacklogList.Add(info);
+            } else
+            {
+                int index =appData.ExeBacklogList.IndexOf(info);
+                appData.ExeBacklogList.Remove(info);
+                info.Title = Title.Text;
+                info.Msg = Msg.Text;
+                info.ExeTime = ExeTime.Text;
+                info.DoneTime = DoneTime.Text;
+                appData.ExeBacklogList.Insert(index, info);
+            }
+            CommonCode.SaveAppData(MainWindow.appData);
+            this.Close();
+        }
+
+        private static System.Windows.Window window = null;
+        public static void ShowNone()
+        {
+            if (window == null || !window.Activate())
+            {
+                window = new BacklogInfoWindow();
+                
+            }
+            windowType = NEW_BACKLOG;
+            window.Show();
+        }
+
+        private static System.Windows.Window window2 = null;
+        public static void ShowDetail(BacklogInfo info)
+        {
+            if (window2 == null || !window2.Activate())
+            {
+                window2 = new BacklogInfoWindow(info);
+            }
+            windowType = DETAIL_BACKLOG;
+            window2.Show();
+        }
+    }
+}

+ 99 - 0
Control/Windows/BacklogWindow.xaml

@@ -0,0 +1,99 @@
+<Window x:Class="GeekDesk.Control.Windows.BacklogWindow"
+       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+           xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+           xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+           xmlns:hc="https://handyorg.github.io/handycontrol"
+           xmlns:local="clr-namespace:GeekDesk"
+           mc:Ignorable="d"
+           WindowStartupLocation="CenterScreen"
+           Height="450" 
+           Width="850" 
+           WindowStyle="None"
+           AllowsTransparency="True"
+           Background="Transparent" ShowInTaskbar="False"
+        >
+    <Window.Resources>
+        <Style x:Key="MenuStyle" TargetType="hc:SideMenuItem" BasedOn="{StaticResource SideMenuItemBaseStyle}">
+            <Style.Setters>
+                <Setter Property="Background" Value="AliceBlue"/>
+            </Style.Setters>
+            <Style.Triggers>
+                <Trigger Property="IsMouseOver" Value="True">
+                    <Setter Property="Background" Value="#FFE2E2E2"/>
+                </Trigger>
+                <Trigger Property="IsSelected" Value="True">
+                    <Setter Property="Background" Value="#FFDAD7D7"/>
+                </Trigger>
+            </Style.Triggers>
+        </Style>
+    </Window.Resources>
+    <Border CornerRadius="8" BorderThickness="0">
+        <Border.Background>
+            <SolidColorBrush Color="AliceBlue" Opacity="0.9"/>
+        </Border.Background>
+        <Grid>
+            <Grid.RowDefinitions>
+                <RowDefinition Height="*"/>
+            </Grid.RowDefinitions>
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="140"/>
+                <ColumnDefinition Width="*"/>
+            </Grid.ColumnDefinitions>
+
+            <hc:Card Grid.Row="0" Grid.Column="0">
+                <hc:SideMenu BorderThickness="1" 
+                             AutoSelect="True" 
+                             >
+                    <hc:SideMenu.Background>
+                        <SolidColorBrush Color="AliceBlue"/>
+                    </hc:SideMenu.Background>
+
+                    <hc:SideMenu.ItemContainerStyle>
+                        <Style TargetType="hc:SideMenuItem" BasedOn="{StaticResource MenuStyle}"/>
+                    </hc:SideMenu.ItemContainerStyle>
+
+                    <hc:SideMenuItem Header="待办列表"
+                                     IsSelected="True"
+                                     Selected="MemuClick"
+                                     Tag="ExeList"
+                                     >
+                        <hc:SideMenuItem.Icon>
+                            <Button Background="Transparent" 
+                            BorderThickness="0"
+                            hc:IconElement.Geometry="{StaticResource About}" 
+                            hc:IconElement.Height="18"
+                            hc:IconElement.Width="18"
+                            HorizontalAlignment="Right"
+                            />
+                        </hc:SideMenuItem.Icon>
+                    </hc:SideMenuItem>
+                    <hc:SideMenuItem Header="历史待办"
+                                     Tag="History"
+                                     Selected="MemuClick">
+                        <hc:SideMenuItem.Icon>
+                            <Button Background="Transparent" 
+                            BorderThickness="0"
+                            hc:IconElement.Geometry="{StaticResource Pannel}"
+                            hc:IconElement.Height="18"
+                            hc:IconElement.Width="18"
+                            HorizontalAlignment="Right"
+                            />
+                        </hc:SideMenuItem.Icon>
+                    </hc:SideMenuItem>
+                </hc:SideMenu>
+            </hc:Card>
+            <hc:Card Grid.Row="0" Grid.Column="1" x:Name="RightCard" Height="450"  MouseDown="DragMove" />
+
+
+            <Button Width="22" Height="22" Click="Close_Button_Click" Style="{StaticResource ButtonIcon}" Foreground="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" hc:IconElement.Geometry="{StaticResource ErrorGeometry}" Padding="0" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,10,10,0" Grid.Column="1"/>
+            <Button Content="新建待办"
+                    Panel.ZIndex="1"
+                    Background="#5BC0DE"
+                    Foreground="White"
+                    Grid.Column="1"
+                    Margin="590,29,10,384"
+                    Click="CreateBacklog_BtnClick"/>
+        </Grid>
+    </Border>
+</Window>

+ 97 - 0
Control/Windows/BacklogWindow.xaml.cs

@@ -0,0 +1,97 @@
+using GeekDesk.Control.UserControls.Backlog;
+using GeekDesk.ViewModel;
+using HandyControl.Controls;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace GeekDesk.Control.Windows
+{
+    /// <summary>
+    /// BacklogWindow.xaml 的交互逻辑
+    /// </summary>
+    public partial class BacklogWindow
+    {
+        private static BacklogControl backlog = new BacklogControl();
+        private AppData appData = MainWindow.appData;
+        private BacklogWindow()
+        {
+            InitializeComponent();
+            RightCard.Content = backlog;
+            backlog.BacklogList.ItemsSource = appData.ExeBacklogList;
+            this.Topmost = true;
+        }
+
+
+        /// <summary>
+        /// 移动窗口
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void DragMove(object sender, System.Windows.Input.MouseButtonEventArgs e)
+        {
+            if (e.LeftButton == MouseButtonState.Pressed)
+            {
+                DragMove();
+            }
+        }
+
+        /// <summary>
+        /// 点击关闭按钮
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Close_Button_Click(object sender, RoutedEventArgs e)
+        {
+            this.Close();
+        }
+
+        private void MemuClick(object sender, RoutedEventArgs e)
+        {
+            SideMenuItem smi = sender as SideMenuItem;
+            switch (smi.Tag.ToString())
+            {
+                case "History":
+                    backlog.BacklogList.ItemsSource = appData.HiBacklogList;
+                    break;
+                default:
+                    backlog.BacklogList.ItemsSource = appData.ExeBacklogList;
+                    break;
+            }
+        }
+
+        /// <summary>
+        /// 新建待办
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void CreateBacklog_BtnClick(object sender, RoutedEventArgs e)
+        {
+            BacklogInfoWindow.ShowNone();
+        }
+
+
+        private static System.Windows.Window window = null;
+        public static void Show()
+        {
+            if (window == null || !window.Activate())
+            {
+                window = new BacklogWindow();
+            }
+            window.Show();
+        }
+
+        
+    }
+}

+ 7 - 5
Control/ConfigWindow.xaml → Control/Windows/ConfigWindow.xaml

@@ -1,16 +1,17 @@
-<hc:Window x:Class="GeekDesk.Control.ConfigWindow"
+<hc:Window x:Class="GeekDesk.Control.Windows.ConfigWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:hc="https://handyorg.github.io/handycontrol"
+           xmlns:local="clr-namespace:GeekDesk"
            mc:Ignorable="d"
            WindowStartupLocation="CenterScreen"
            Height="450" 
            Width="600" 
            WindowStyle="None"
            AllowsTransparency="True"
-           Background="Transparent"
+           Background="Transparent" ShowInTaskbar="False"
            >
 
     <Window.Resources>
@@ -37,7 +38,7 @@
                 <RowDefinition Height="*"/>
             </Grid.RowDefinitions>
             <Grid.ColumnDefinitions>
-                <ColumnDefinition Width="200"/>
+                <ColumnDefinition Width="140"/>
                 <ColumnDefinition Width="*"/>
             </Grid.ColumnDefinitions>
 
@@ -72,13 +73,14 @@
                                      Tag="Theme"
                                      Selected="MemuClick">
                         <hc:SideMenuItem.Icon>
-                            <Button Background="Transparent" 
+                            <!--<Button Background="Transparent" 
                             BorderThickness="0"
                             hc:IconElement.Geometry="{StaticResource Pannel}"
                             hc:IconElement.Height="18"
                             hc:IconElement.Width="18"
                             HorizontalAlignment="Right"
-                            />
+                            />-->
+                            <TextBlock Text="&#xe70b;" Style="{StaticResource MyIcon}"/>
                         </hc:SideMenuItem.Icon>
                     </hc:SideMenuItem>
 

+ 13 - 2
Control/ConfigWindow.xaml.cs → Control/Windows/ConfigWindow.xaml.cs

@@ -1,6 +1,7 @@
 
 using GalaSoft.MvvmLight.Command;
 using GeekDesk.Control.UserControls;
+using GeekDesk.Control.UserControls.Config;
 using GeekDesk.ViewModel;
 using HandyControl.Controls;
 using HandyControl.Data;
@@ -8,7 +9,7 @@ using System;
 using System.Windows;
 using System.Windows.Input;
 
-namespace GeekDesk.Control
+namespace GeekDesk.Control.Windows
 {
     /// <summary>
     /// ConfigDialog.xaml 的交互逻辑
@@ -20,7 +21,7 @@ namespace GeekDesk.Control
         private static MotionControl motion = new MotionControl();
         public MainWindow mainWindow;
 
-        public ConfigWindow(AppConfig appConfig, MainWindow mainWindow)
+        private ConfigWindow(AppConfig appConfig, MainWindow mainWindow)
         {
             InitializeComponent();
             this.DataContext = appConfig;
@@ -69,5 +70,15 @@ namespace GeekDesk.Control
                     break;
             }
         }
+
+        private static System.Windows.Window window = null;
+        public static void Show(AppConfig appConfig, MainWindow mainWindow)
+        {
+            if (window == null || !window.Activate())
+            {
+                window = new ConfigWindow(appConfig, mainWindow);
+            }
+            window.Show();
+        }
     }
 }

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 4 - 0
Fonts/iconfont.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
Fonts/iconfont.js


+ 0 - 0
Resource/DefaultIconfont/iconfont.json → Fonts/iconfont.json


BIN
Fonts/iconfont.ttf


+ 61 - 18
GeekDesk.csproj

@@ -104,25 +104,40 @@
     <Compile Include="Constant\DefaultConstant.cs" />
     <Compile Include="Constant\IconStartType.cs" />
     <Compile Include="Constant\SortType.cs" />
-    <Compile Include="Control\ConfigWindow.xaml.cs">
+    <Compile Include="Control\Other\BacklogNotificatin.xaml.cs">
+      <DependentUpon>BacklogNotificatin.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Control\UserControls\Backlog\BacklogControl.xaml.cs">
+      <DependentUpon>BacklogControl.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Control\Windows\BacklogInfoWindow.xaml.cs">
+      <DependentUpon>BacklogInfoWindow.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Control\Windows\BacklogWindow.xaml.cs">
+      <DependentUpon>BacklogWindow.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Control\Windows\ConfigWindow.xaml.cs">
       <DependentUpon>ConfigWindow.xaml</DependentUpon>
     </Compile>
-    <Compile Include="Control\IconInfoDialog.xaml.cs">
+    <Compile Include="Control\Other\IconInfoDialog.xaml.cs">
       <DependentUpon>IconInfoDialog.xaml</DependentUpon>
     </Compile>
-    <Compile Include="Control\UserControls\AboutControl.xaml.cs">
+    <Compile Include="Control\Other\MenuGeometryDialog.xaml.cs">
+      <DependentUpon>MenuGeometryDialog.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Control\UserControls\Config\AboutControl.xaml.cs">
       <DependentUpon>AboutControl.xaml</DependentUpon>
     </Compile>
-    <Compile Include="Control\UserControls\LeftCardControl.xaml.cs">
+    <Compile Include="Control\UserControls\PannelCard\LeftCardControl.xaml.cs">
       <DependentUpon>LeftCardControl.xaml</DependentUpon>
     </Compile>
-    <Compile Include="Control\UserControls\ThemeControl.xaml.cs">
+    <Compile Include="Control\UserControls\Config\ThemeControl.xaml.cs">
       <DependentUpon>ThemeControl.xaml</DependentUpon>
     </Compile>
-    <Compile Include="Control\UserControls\RightCardControl.xaml.cs">
+    <Compile Include="Control\UserControls\PannelCard\RightCardControl.xaml.cs">
       <DependentUpon>RightCardControl.xaml</DependentUpon>
     </Compile>
-    <Compile Include="Control\UserControls\MotionControl.xaml.cs">
+    <Compile Include="Control\UserControls\Config\MotionControl.xaml.cs">
       <DependentUpon>MotionControl.xaml</DependentUpon>
     </Compile>
     <Compile Include="Converts\DoubleToGridLength.cs" />
@@ -133,6 +148,7 @@
     <Compile Include="EditTextBlock\EditableTextBlock.cs" />
     <Compile Include="EditTextBlock\EditableTextBlockAdorner.cs" />
     <Compile Include="Converts\HideTypeConvert.cs" />
+    <Compile Include="Task\BacklogTask.cs" />
     <Compile Include="Util\CommonCode.cs" />
     <Compile Include="Util\ConsoleManager.cs" />
     <Compile Include="Util\DragAdorner.cs" />
@@ -148,33 +164,54 @@
     <Compile Include="Util\SystemIcon.cs" />
     <Compile Include="ViewModel\AppConfig.cs" />
     <Compile Include="ViewModel\AppData.cs" />
+    <Compile Include="ViewModel\BacklogInfo.cs" />
     <Compile Include="ViewModel\IconInfo.cs" />
     <Compile Include="ViewModel\MenuInfo.cs" />
-    <Page Include="Control\ConfigWindow.xaml">
+    <Page Include="Control\Other\BacklogNotificatin.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
-    <Page Include="Control\IconInfoDialog.xaml">
+    <Page Include="Control\UserControls\Backlog\BacklogControl.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
-    <Page Include="Control\UserControls\AboutControl.xaml">
+    <Page Include="Control\Windows\BacklogInfoWindow.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
-    <Page Include="Control\UserControls\LeftCardControl.xaml">
+    <Page Include="Control\Windows\BacklogWindow.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
-    <Page Include="Control\UserControls\ThemeControl.xaml">
+    <Page Include="Control\Windows\ConfigWindow.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
-    <Page Include="Control\UserControls\RightCardControl.xaml">
+    <Page Include="Control\Other\IconInfoDialog.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
-    <Page Include="Control\UserControls\MotionControl.xaml">
+    <Page Include="Control\Other\MenuGeometryDialog.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Control\UserControls\Config\AboutControl.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Control\UserControls\PannelCard\LeftCardControl.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Control\UserControls\Config\ThemeControl.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Control\UserControls\PannelCard\RightCardControl.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Control\UserControls\Config\MotionControl.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
@@ -190,6 +227,10 @@
       <DependentUpon>MainWindow.xaml</DependentUpon>
       <SubType>Code</SubType>
     </Compile>
+    <Page Include="Resource\DefaultIconfont\MyIcon.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Resource\Dictionary\Geometry.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
@@ -213,25 +254,27 @@
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
+    <Resource Include="Fonts\iconfont.ttf" />
+    <None Include="Fonts\iconfont.json" />
     <None Include="packages.config" />
     <None Include="Properties\Settings.settings">
       <Generator>SettingsSingleFileGenerator</Generator>
       <LastGenOutput>Settings.Designer.cs</LastGenOutput>
     </None>
-    <None Include="Resource\DefaultIconfont\iconfont.json" />
-    <Resource Include="Resource\DefaultIconfont\iconfont.ttf" />
   </ItemGroup>
   <ItemGroup>
     <None Include="App.config" />
   </ItemGroup>
   <ItemGroup>
-    <Content Include="Resource\DefaultIconfont\iconfont.svg" />
     <Resource Include="Resource\Image\图片.png" />
     <Resource Include="Resource\Image\文件夹.png" />
     <Resource Include="Resource\Image\Ico.png" />
     <Resource Include="Resource\Image\Ico.ico" />
     <Resource Include="Resource\Image\WindowLogo.png" />
   </ItemGroup>
-  <ItemGroup />
+  <ItemGroup>
+    <Content Include="Fonts\iconfont.css" />
+    <Content Include="Fonts\iconfont.js" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>

+ 10 - 3
MainWindow.xaml

@@ -5,7 +5,7 @@
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:GeekDesk"
         xmlns:tp="clr-namespace:GeekDesk.EditTextBlock"
-        xmlns:uc="clr-namespace:GeekDesk.Control.UserControls"
+        xmlns:uc="clr-namespace:GeekDesk.Control.UserControls.PannelCard"
         mc:Ignorable="d"
         xmlns:cvt="clr-namespace:GeekDesk.Converts"
         xmlns:DraggAnimatedPanel="clr-namespace:DraggAnimatedPanel"
@@ -62,7 +62,7 @@
                         <SolidColorBrush Opacity="0.01"/>
                     </DockPanel.Background>
                     <hc:UniformSpacingPanel Spacing="0" Grid.ColumnSpan="4" HorizontalAlignment="Right" VerticalAlignment="Center">
-                        <Button Background="Transparent" 
+                        <Button Background="Transparent"
                                 BorderThickness="0"
                                 hc:IconElement.Geometry="M917.930667 512c0-57.6 36.181333-106.496 86.869333-125.952a505.429333 505.429333 0 0 0-55.210667-133.461333A134.826667 134.826667 0 0 1 771.413333 74.410667 507.733333 507.733333 0 0 0 637.952 19.2 135.168 135.168 0 0 1 512 106.069333 134.912 134.912 0 0 1 386.048 19.2 505.429333 505.429333 0 0 0 252.586667 74.410667c22.186667 49.749333 13.141333 109.824-27.562667 150.528a135.168 135.168 0 0 1-150.528 27.648 502.016 502.016 0 0 0-55.296 133.461333c50.688 19.626667 86.869333 68.437333 86.869333 125.952 0 57.6-36.181333 106.496-86.869333 125.952 12.117333 47.530667 30.72 92.330667 55.210667 133.461333a134.826667 134.826667 0 0 1 178.090666 178.176 507.733333 507.733333 0 0 0 133.546667 55.210667A135.168 135.168 0 0 1 512 917.930667c57.6 0 106.496 36.181333 125.952 86.869333a505.429333 505.429333 0 0 0 133.461333-55.210667 134.912 134.912 0 0 1 27.562667-150.528 135.168 135.168 0 0 1 150.528-27.648 502.016 502.016 0 0 0 55.296-133.461333A134.912 134.912 0 0 1 917.930667 512zM512 647.338667a135.338667 135.338667 0 1 1 0.085333-270.762667A135.338667 135.338667 0 0 1 512 647.338667z"
                                 hc:IconElement.Height="18"
@@ -72,6 +72,12 @@
                                 Initialized="SettingButton_Initialized"
                                 x:Name="SettingButton"
                                 >
+                            <Button.ContextMenu>
+                                <ContextMenu x:Name="SettingMenus" Width="130">
+                                    <MenuItem Header="设置" Click="ConfigMenuClick"/>
+                                    <MenuItem Header="待办" Click="BacklogMenuClick"/>
+                                </ContextMenu>
+                            </Button.ContextMenu>
                         </Button>
                         <Button Background="Transparent" 
                                 BorderThickness="0"
@@ -94,8 +100,9 @@
                 
                 <hc:NotifyIcon Icon="/Resource/Image/Ico.png" Text="GeekDesk" Click="NotifyIcon_Click">
                     <hc:NotifyIcon.ContextMenu>
-                        <ContextMenu Width="200">
+                        <ContextMenu Width="130">
                             <MenuItem Header="打开面板" Click="ShowApp"/>
+                            <MenuItem Header="待办"  Click="BacklogMenuClick"/>
                             <MenuItem Header="设置"  Click="ConfigApp"/>
                             <MenuItem Header="退出" Click="ExitApp"/>
                         </ContextMenu>

+ 25 - 10
MainWindow.xaml.cs

@@ -1,6 +1,7 @@
 using DraggAnimatedPanelExample;
 using GeekDesk.Constant;
 using GeekDesk.Control;
+using GeekDesk.Control.Windows;
 using GeekDesk.Util;
 using GeekDesk.ViewModel;
 using GlobalHotKey;
@@ -264,12 +265,7 @@ namespace GeekDesk
         /// <param name="e"></param>
         private void ConfigApp(object sender, RoutedEventArgs e)
         {
-            //MenuInfo menuInfo = ((MenuItem)sender).Tag as MenuInfo;
-            //appData.MenuList.Remove(menuInfo);
-
-
-
-            //CommonCode.SaveAppData(appData);
+            ConfigWindow.Show(appData.AppConfig, this);
         }
 
         /// <summary>
@@ -282,7 +278,7 @@ namespace GeekDesk
             Application.Current.Shutdown();
         }
 
-        
+
 
         //public static void ShowContextMenu(IntPtr hAppWnd, Window taskBar, System.Windows.Point pt)
         //{
@@ -296,16 +292,33 @@ namespace GeekDesk
         //}
 
         /// <summary>
-        /// 设置按钮左键弹出菜单
+        /// 设置图标
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
         private void ConfigButtonClick(object sender, RoutedEventArgs e)
         {
-            //SettingMenu.IsOpen = true;
-            new ConfigWindow(appData.AppConfig, this).Show();
+            SettingMenus.IsOpen = true;
         }
 
+        /// <summary>
+        /// 设置菜单点击
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ConfigMenuClick(object sender, RoutedEventArgs e)
+        {
+            ConfigWindow.Show(appData.AppConfig, this);
+        }
+        /// <summary>
+        /// 待办任务
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void BacklogMenuClick(object sender, RoutedEventArgs e)
+        {
+            BacklogWindow.Show();
+        }
         /// <summary>
         /// 禁用设置按钮右键菜单
         /// </summary>
@@ -331,6 +344,8 @@ namespace GeekDesk
                 this.Visibility = Visibility.Collapsed;
             }
         }
+
+        
     }
 
 

+ 12 - 0
Resource/DefaultIconfont/MyIcon.xaml

@@ -0,0 +1,12 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+                    >
+
+    <Style x:Key="MyIcon" TargetType="TextBlock">
+        <Setter Property="FontFamily" Value="/GeekDesk;component/Fonts/#iconfont"></Setter>
+        <Setter Property="TextAlignment" Value="Center"/>
+        <Setter Property="HorizontalAlignment" Value="Center"/>
+        <Setter Property="VerticalAlignment" Value="Center"/>
+        <Setter Property="FontSize" Value="20"/>
+    </Style>
+</ResourceDictionary>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 40
Resource/DefaultIconfont/iconfont.svg


BIN
Resource/DefaultIconfont/iconfont.ttf


+ 28 - 2
Resource/Dictionary/Geometry.xaml

@@ -2,8 +2,6 @@
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                     xmlns:local="clr-namespace:GeekDesk.Resource.Dictionary">
 
-
-
     <Geometry x:Key="About">
         M512 992C246.912 992 32 777.088 32 512 32 246.912 246.912 32 512 32c265.088 0 480 214.912 480 480 0 265.088-214.912 480-480 480z m-59.072-512v236.32a54.144 54.144 0 1 0 108.288 0V480a54.144 54.144 0 1 0-108.288 0z m53.76-226.464c-14.72 0-27.232 4.544-37.568 15.136-11.04 9.856-16.192 22.72-16.192 38.656 0 15.136 5.152 28 16.192 38.624 10.336 10.592 22.848 15.904 37.6 15.904a57.6 57.6 0 0 0 39.04-15.168c10.304-10.592 15.456-23.456 15.456-39.36s-5.12-28.8-15.456-38.656c-10.304-10.56-23.584-15.136-39.04-15.136z
     </Geometry>
@@ -18,4 +16,32 @@
         M604.337231 269.666462a33.595077 33.595077 0 0 1-33.634462-33.595077 140.366769 140.366769 0 0 0-140.169846-140.209231 140.366769 140.366769 0 0 0-140.209231 140.209231 33.595077 33.595077 0 0 1-67.150769 0A207.596308 207.596308 0 0 1 430.532923 28.711385a207.596308 207.596308 0 0 1 207.399385 207.36 33.713231 33.713231 0 0 1-33.595077 33.595077z m-287.586462 259.150769V283.608615A114.569846 114.569846 0 0 1 431.241846 169.117538 114.609231 114.609231 0 0 1 545.693538 283.569231v46.158769a34.067692 34.067692 0 0 1 5.435077-0.393846c37.336615 0 70.380308 18.668308 90.19077 47.261538a109.764923 109.764923 0 0 1 119.414153 41.314462c7.758769-1.654154 15.675077-2.520615 23.709539-2.520616h7.207385a113.821538 113.821538 0 0 1 113.703384 113.664v131.15077a29.577846 29.577846 0 0 1 0.196923 3.820307v67.741539c0 153.521231-67.702154 250.052923-190.621538 271.753846-38.4 6.616615-74.161231 10.003692-107.52 10.003692-101.454769 0-181.011692-31.507692-245.681231-96.17723L154.249846 710.025846a122.052923 122.052923 0 0 1 0-172.347077 122.092308 122.092308 0 0 1 162.500923-8.861538z m386.520616 408.457846c89.6-15.753846 135.089231-84.873846 135.08923-205.508923v-19.337846a34.067692 34.067692 0 0 1-0.078769-2.756923v-180.657231c0-25.718154-20.873846-46.473846-46.473846-46.473846h-7.246769c-1.102769 0-2.166154 0-3.308308 0.118154v110.788923a33.634462 33.634462 0 1 1-67.268923-0.118154v-111.773539a42.023385 42.023385 0 0 0-53.169231-40.487384v115.672615a33.595077 33.595077 0 0 1-67.190154 0v-117.76c0-23.433846-19.062154-42.456615-42.496-42.456615a33.792 33.792 0 0 1-5.435077-0.472616v126.267077a33.595077 33.595077 0 1 1-67.229538 0V283.608615a47.379692 47.379692 0 0 0-94.759385 0v321.457231a33.555692 33.555692 0 0 1-57.107692 27.569231l-47.497846-47.458462a54.744615 54.744615 0 0 0-77.390769 77.351385l207.478154 207.399385c69.080615 69.001846 162.500923 90.348308 294.084923 67.347692z
     </Geometry>
 
+    <!-- Converted from svg with Ab2d.ReaderSvg. -->
+    <ControlTemplate x:Key="test">
+        <Viewbox>
+            <Canvas Width="896" Height="649">
+                <Canvas Canvas.Left="-64" Canvas.Top="-187">
+                    <Path Fill="#FFA7B8C6" StrokeThickness="1" Data="F1M910,837L173,837C146,837,123,814,123,787L123,290C123,263,146,240,173,240L910,240C938,240,960,262,960,290L960,787C960,814,938,837,910,837z"/>
+                    <Path Fill="#FF7ACAE7" StrokeThickness="1" Data="F1M273,201L119,201C96,201,78,220,78,242L78,756C78,779,96,797,119,797L873,797C896,797,914,779,914,756L914,242C914,220,896,201,873,201L273,201z"/>
+                    <Path Fill="#FFFFFFFF" StrokeThickness="1" Data="F1M722,207L569,360C566,363 561,363 559,360 556,357 556,353 559,350L712,196C715,194 719,194 722,196 725,199 725,204 722,207z M917,577L754,740C752,743 747,743 744,740 742,737 742,732 744,730L907,567C910,564 915,564 917,567 920,569 920,574 917,577z M283,383C286,380 291,380 293,383 296,386 296,391 293,393L140,547C137,550 133,550 130,547 127,544 127,539 130,537 M320,652L171,801C168,803 164,803 161,801 158,798 158,793 161,791L310,642C313,639 317,639 320,642 323,644 323,649 320,652z"/>
+                    <Path Fill="#FF3E3A39" StrokeThickness="1" Data="F1M873,811L119,811C89,811,64,786,64,756L64,242C64,212,89,187,119,187L873,187C903,187,928,212,928,242L928,756C928,786,903,811,873,811z M119,215C104,215,91,227,91,242L91,756C91,771,104,784,119,784L873,784C888,784,901,771,901,756L901,242C901,227,888,215,873,215L119,215z"/>
+                    <Path Fill="#FFFFFFFF" StrokeThickness="1" Data="F1M500,660C505,665 507,670 507,677 507,684 505,690 499,695 497,698 491,703 483,708 475,713 471,718 469,722L507,722 507,733 453,733C453,725 456,718 461,712 464,709 470,704 479,698 483,695 487,692 489,689 493,685 494,681 494,677 494,673 493,670 491,668 489,666 485,665 481,665 476,665 472,666 470,669 468,672 466,677 466,683L453,683C454,675 456,668 461,662 466,657 473,654 481,654 489,654 495,656 500,660z M554,655L554,733 541,733 541,671C536,675,530,678,523,680L523,667C527,666 530,665 535,663 538,660 542,658 544,655L554,655z M606,646C609,649 610,652 610,656 610,660 608,663 606,666 603,669 600,670 596,670 592,670 589,669 586,666 583,663 582,660 582,656 582,652 583,649 586,646 589,644 592,642 596,642 600,642 603,644 606,646z M591,651C589,652 589,654 589,656 589,658 589,660 591,661 592,663 594,663 596,663 598,663 600,663 601,661 603,660 603,658 603,656 603,654 603,652 601,651 600,649 598,649 596,649 594,649 592,649 591,651z"/>
+                    <Path Fill="#FFEEE4AA" StrokeThickness="1" Data="F1M230,416A113,113,0,1,0,456,416A113,113,0,1,0,230,416z"/>
+                    <Path Fill="#FFF2D31F" StrokeThickness="1" Data="F1M256,416A87,87,0,1,0,429,416A87,87,0,1,0,256,416z"/>
+                    <Path Fill="#FFC1E1EF" StrokeThickness="1" Data="F1M622,425C617,425 613,422 611,418 594,380 554,354 508,358 461,362 422,398 414,445 413,451 413,459 413,467 413,475 408,482 401,483 374,489 355,513 355,541 355,574 381,601 414,601L622,601C670,601 710,561 710,513 710,464 670,425 622,425z"/>
+                    <Path Fill="#FFE5F2F8" StrokeThickness="1" Data="F1M605,445C601,445 597,443 596,439 582,408 549,387 512,390 475,394 443,423 437,460 436,465 436,472 436,478 437,484 432,490 426,491 405,496 389,515 389,538 389,564 411,586 437,586L604,586C643,586 675,554 675,515 675,476 644,445 605,445z"/>
+                    <Path Fill="#FFFFFFFF" StrokeThickness="1" Data="F1M593,461C590,461 588,460 586,457 576,434 551,418 523,420 495,423 471,445 466,473 466,477 466,482 466,487 466,491 463,496 458,497 442,500 430,515 430,532 430,552 446,568 466,568L593,568C622,568 646,544 646,515 646,485 622,461 593,461z"/>
+                </Canvas>
+            </Canvas>
+        </Viewbox>
+    </ControlTemplate>
+
+
+    <Canvas x:Key="test2">
+        <Path Fill="#92E3C3" Data="M391.68 957.44h-66.56v-158.4128H66.56v-66.56h258.56v-174.08H66.56v-66.56h258.56V307.2h66.56l-0.0512 184.6272h240.6912V307.2h66.56l-0.0512 184.6272H957.44v307.2h-258.6112V957.44h-66.4576l-0.0512-158.4128H391.6288V957.44z m-0.0512-224.9728h240.6912v-174.08H391.6288v174.08z m565.8112-174.08h-258.6112v174.08H957.44v-174.08z"/>
+        <Path Fill="#5D7092" Data="M51.2 51.2h921.6v256H51.2z"/>
+        <Path Fill="#5D7092" Data="M921.6 0a102.4 102.4 0 0 1 102.4 102.4v819.2a102.4 102.4 0 0 1-102.4 102.4H102.4a102.4 102.4 0 0 1-102.4-102.4V102.4a102.4 102.4 0 0 1 102.4-102.4h819.2z m0 66.56H102.4a35.84 35.84 0 0 0-35.5328 30.976L66.56 102.4v819.2a35.84 35.84 0 0 0 30.976 35.5328L102.4 957.44h819.2a35.84 35.84 0 0 0 35.5328-30.976L957.44 921.6V102.4a35.84 35.84 0 0 0-30.976-35.5328L921.6 66.56z"/>
+    </Canvas>
+
+
 </ResourceDictionary>

+ 35 - 0
Task/BacklogTask.cs

@@ -0,0 +1,35 @@
+using GeekDesk.Control;
+using GeekDesk.Control.Other;
+using GeekDesk.ViewModel;
+using HandyControl.Controls;
+using HandyControl.Data;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace GeekDesk.Task
+{
+    class BacklogTask
+    {
+      
+        private static void BackLogCheck()
+        {
+            while (true)
+            {
+                string nowTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+                ObservableCollection<BacklogInfo> exeBacklogList = MainWindow.appData.ExeBacklogList;
+                foreach (BacklogInfo info in exeBacklogList)
+                {
+                    if (info.ExeTime.CompareTo(nowTime) == -1)
+                    {
+                        Notification.Show(new BacklogNotificatin(info), ShowAnimation.Fade, true);
+                    }
+                }
+            }
+        }
+
+    }
+}

+ 44 - 2
ViewModel/AppData.cs

@@ -12,13 +12,55 @@ namespace GeekDesk.ViewModel
     [Serializable]
     public class AppData : INotifyPropertyChanged
     {
-        private ObservableCollection<MenuInfo> menuList = new ObservableCollection<MenuInfo>();
-        private AppConfig appConfig = new AppConfig();
+        private ObservableCollection<MenuInfo> menuList; //菜单信息及菜单对应icon信息
+        private AppConfig appConfig = new AppConfig(); //程序设置信息
+        private ObservableCollection<BacklogInfo> hiBacklogList; //历史待办
+        private ObservableCollection<BacklogInfo> exeBacklogList; //未处理待办 为了提高任务效率 分开处理
+
+
+        public ObservableCollection<BacklogInfo> HiBacklogList
+        {
+            get
+            {
+                if (hiBacklogList == null)
+                {
+                    hiBacklogList = new ObservableCollection<BacklogInfo>();
+
+                }
+                return hiBacklogList;
+            }
+            set
+            {
+                hiBacklogList = value;
+                OnPropertyChanged("HiBacklogList");
+            }
+        }
+
+        public ObservableCollection<BacklogInfo> ExeBacklogList
+        {
+            get
+            {
+                if (exeBacklogList == null)
+                {
+                    exeBacklogList = new ObservableCollection<BacklogInfo>();
+                }
+                return exeBacklogList;
+            }
+            set
+            {
+                exeBacklogList = value;
+                OnPropertyChanged("ExeBacklogList");
+            }
+        }
 
         public ObservableCollection<MenuInfo> MenuList
         {
             get
             {
+                if (menuList == null)
+                {
+                    menuList = new ObservableCollection<MenuInfo>();
+                }
                 return menuList;
             }
             set

+ 112 - 0
ViewModel/BacklogInfo.cs

@@ -0,0 +1,112 @@
+using GeekDesk.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace GeekDesk.ViewModel
+{
+
+    [Serializable]
+    public class BacklogInfo : INotifyPropertyChanged
+    {
+        //private string id;   //任务唯一id
+        private string title; //待办事项
+        private string msg;  //事项详情
+        private string exeTime;  //待办时间
+        private string doneTime; //完成时间
+        //private int status;  //状态 0 未处理  1 已处理
+
+
+        public string DoneTime
+        {
+            get
+            {
+                return doneTime;
+            }
+            set
+            {
+                doneTime = value;
+                OnPropertyChanged("DoneTime");
+            }
+        }
+
+        //public string Id
+        //{
+        //    get
+        //    {
+        //        return id;
+        //    }
+        //    set
+        //    {
+        //        id = value;
+        //        OnPropertyChanged("Id");
+        //    }
+        //}
+
+        public string Title
+        {
+            get
+            {
+                return title;
+            }
+            set
+            {
+                title = value;
+                OnPropertyChanged("Title");
+            }
+        }
+
+        public string Msg
+        {
+            get
+            {
+                return msg;
+            }
+            set
+            {
+                msg = value;
+                OnPropertyChanged("Msg");
+            }
+        }
+
+        public string ExeTime
+        {
+            get
+            {
+                return exeTime;
+            }
+            set
+            {
+                exeTime = value;
+                OnPropertyChanged("ExeTime");
+            }
+        }
+
+        //public int Status
+        //{
+        //    get
+        //    {
+        //        return status;
+        //    }
+        //    set
+        //    {
+        //        status = value;
+        //        OnPropertyChanged("status");
+        //    }
+        //}
+
+
+
+
+        [field: NonSerializedAttribute()]
+        public event PropertyChangedEventHandler PropertyChanged;
+        private void OnPropertyChanged(string propertyName)
+        {
+            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+            CommonCode.SaveAppData(MainWindow.appData);
+        }
+    }
+}

+ 29 - 0
ViewModel/MenuInfo.cs

@@ -16,8 +16,37 @@ namespace GeekDesk.ViewModel
         private string menuId;
         private Visibility menuEdit = Visibility.Collapsed;
         private Visibility notMenuEdit = Visibility.Visible;
+        private string menuGeometry;  //菜单几何图标
+        private string geometryColor; //几何图标颜色
         private ObservableCollection<IconInfo> iconList = new ObservableCollection<IconInfo>();
 
+
+        public string MenuGeometry
+        {
+            get
+            {
+                return menuGeometry;
+            }
+            set
+            {
+                menuGeometry = value;
+                OnPropertyChanged("MenuGeometry");
+            }
+        }
+
+        public string GeometryColor
+        {
+            get
+            {
+                return geometryColor;
+            }
+            set
+            {
+                geometryColor = value;
+                OnPropertyChanged("GeometryColor");
+            }
+        }
+
         public string MenuName
         {
             get

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است