Browse Source

部分程序启动报错修复', '重置图标功能程序崩溃修复','添加自定义字体颜色功能','添加URL项目功能'

liufei 4 năm trước cách đây
mục cha
commit
2d67d32b29

+ 1 - 1
App.xaml.cs

@@ -28,7 +28,7 @@ namespace GeekDesk
             mutex = new System.Threading.Mutex(true, Constants.MY_NAME, out ret);
             if (!ret)
             {
-                //Environment.Exit(0);
+                Environment.Exit(0);
             }
         }
     }

+ 18 - 0
Constant/CommonEnum.cs

@@ -0,0 +1,18 @@
+/// <summary>
+/// 默认参数
+/// </summary>
+namespace GeekDesk.Constant
+{
+    public enum CommonEnum
+    {
+        WINDOW_WIDTH = 666, //默认窗体宽度
+        WINDOW_HEIGHT = 500, //默认窗体高度
+        MENU_CARD_WIDHT = 165, //默认菜单栏宽度
+        IMAGE_WIDTH = 45, //默认图标宽度
+        IMAGE_HEIGHT = 45, //默认图标高度
+        IMAGE_WIDTH_AM = 52, //动画变换宽度
+        IMAGE_HEIGHT_AM = 52, //动画变换高度
+        IMAGE_PANEL_WIDTH = 110, //图标容器宽度
+        IMAGE_PANEL_HEIGHT = 90, //图标容器高度
+    }
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
Constant/Constants.cs


+ 14 - 0
Constant/IconType.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace GeekDesk.Constant
+{
+    public enum IconType
+    {
+        OTHER = 1, //直接打开
+        URL = 2  //调用浏览器打开
+    }
+}

+ 0 - 16
Constant/MainWindowEnum.cs

@@ -1,16 +0,0 @@
-/// <summary>
-/// 默认参数
-/// </summary>
-namespace GeekDesk.Constant
-{
-    public enum MainWindowEnum
-    {
-        WINDOW_WIDTH = 666, //默认窗体宽度
-        WINDOW_HEIGHT = 500, //默认窗体高度
-        MENU_CARD_WIDHT = 165, //默认菜单栏宽度
-        IMAGE_WIDTH = 50, //默认图标宽度
-        IMAGE_HEIGHT = 50, //默认图标高度
-        IMAGE_WIDTH_AM = 60, //动画变换宽度
-        IMAGE_HEIGHT_AM = 60 //动画变换高度
-    }
-}

+ 4 - 4
Control/Other/IconInfoDialog.xaml

@@ -5,7 +5,7 @@
         CornerRadius="4"
         Width="300"
         Height="300"
-        Opacity="0.9">
+        >
     <Border.Resources>
         <Style x:Key="LeftTB" TargetType="TextBlock" BasedOn="{StaticResource TextBlockBaseStyle}">
             <Setter Property="Width" Value="40"/>
@@ -15,7 +15,7 @@
         </Style>
     </Border.Resources>
     <Border.Background>
-        <SolidColorBrush Color="AliceBlue" Opacity="0.9"/>
+        <SolidColorBrush Color="AliceBlue" Opacity="0.98"/>
     </Border.Background>
     <hc:SimplePanel Margin="10">
         <Grid Margin="8,20,8,20">
@@ -42,9 +42,9 @@
             </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"/>
+                <Button Content="保存" 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"/>
+        <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>

+ 3 - 1
Control/Other/IconInfoDialog.xaml.cs

@@ -14,6 +14,7 @@ namespace GeekDesk.Control.Other
     /// </summary>
     public partial class IconInfoDialog
     {
+        public HandyControl.Controls.Dialog dialog;
 
         public IconInfoDialog()
         {
@@ -38,6 +39,7 @@ namespace GeekDesk.Control.Other
             info.Name = IconName.Text;
             info.AdminStartUp = IconIsAdmin.IsChecked.Value;
             CommonCode.SaveAppData(MainWindow.appData);
+            dialog.Close();
         }
 
         /// <summary>
@@ -47,7 +49,7 @@ namespace GeekDesk.Control.Other
         /// <param name="e"></param>
         private void ReStoreImage(object sender, RoutedEventArgs e)
         {
-            IconInfo info = ((Button)sender).Tag as IconInfo;
+            IconInfo info = this.DataContext as IconInfo;
             info.BitmapImage = ImageUtil.ByteArrToImage(info.DefaultImage);
             CommonCode.SaveAppData(MainWindow.appData);
         }

+ 14 - 25
Control/Other/MenuGeometryDialog.xaml → Control/Other/IconInfoUrlDialog.xaml

@@ -1,12 +1,12 @@
-<Border x:Class="GeekDesk.Control.Other.MenuGeometryDialog"
+<Border x:Class="GeekDesk.Control.Other.IconInfoUrlDialog"
         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"
+        CornerRadius="4"
         Width="300"
         Height="300"
-        Opacity="0.9">
-    <!--<Border.Resources>
+        >
+    <Border.Resources>
         <Style x:Key="LeftTB" TargetType="TextBlock" BasedOn="{StaticResource TextBlockBaseStyle}">
             <Setter Property="Width" Value="40"/>
             <Setter Property="HorizontalAlignment" Value="Left"/>
@@ -15,42 +15,31 @@
         </Style>
     </Border.Resources>
     <Border.Background>
-        <SolidColorBrush Color="AliceBlue" Opacity="0.9"/>
+        <SolidColorBrush Color="AliceBlue" Opacity="0.98"/>
     </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">
+            <hc:UniformSpacingPanel Spacing="10" Margin="0,77,0,-27">
+                <TextBlock  Text="Url:"  Style="{StaticResource LeftTB}"/>
+                <TextBox x:Name="IconUrl" Text="{Binding Path, Mode=OneWay}"  Width="180" FontSize="14"/>
+            </hc:UniformSpacingPanel>
+            <hc:Divider LineStrokeDashArray="3,3" Margin="0,128,0,23" LineStroke="Black" Grid.ColumnSpan="4"/>
+            <hc:UniformSpacingPanel Spacing="10" Margin="0,133,0,27">
                 <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"/>
+                <Button Content="保存" 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>-->
+        <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>

+ 99 - 0
Control/Other/IconInfoUrlDialog.xaml.cs

@@ -0,0 +1,99 @@
+using GeekDesk.Constant;
+using GeekDesk.Util;
+using GeekDesk.ViewModel;
+using Microsoft.Win32;
+using System;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media.Imaging;
+
+
+namespace GeekDesk.Control.Other
+{
+    /// <summary>
+    /// TextDialog.xaml 的交互逻辑
+    /// </summary>
+    public partial class IconInfoUrlDialog
+    {
+        public HandyControl.Controls.Dialog dialog;
+
+        private bool newIconInfo;
+        public IconInfoUrlDialog()
+        {
+            newIconInfo = true;
+            IconInfo info = new IconInfo
+            {
+                BitmapImage = ImageUtil.Base64ToBitmapImage(Constants.URL_ICON_IMG_BASE64),
+            };
+            info.DefaultImage = info.ImageByteArr;
+            info.IconType = IconType.URL;
+            this.DataContext = info;
+            InitializeComponent();
+        }
+
+        public IconInfoUrlDialog(IconInfo info)
+        {
+            this.DataContext = info;
+            newIconInfo = false;
+            InitializeComponent();
+        }
+
+        /// <summary>
+        /// 保存修改属性
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void SaveProperty(object sender, RoutedEventArgs e)
+        {
+            IconInfo info = this.DataContext as IconInfo;
+            info.BitmapImage = IconImg.Source as BitmapImage;
+            info.Name = IconName.Text;
+            info.Path = IconUrl.Text;
+            if (newIconInfo)
+            {
+                MainWindow.appData.MenuList[MainWindow.appData.AppConfig.SelectedMenuIndex].IconList.Add(info);
+            }
+            CommonCode.SaveAppData(MainWindow.appData);
+            dialog.Close();
+        }
+
+        /// <summary>
+        /// 修改图标为默认
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ReStoreImage(object sender, RoutedEventArgs e)
+        {
+            IconInfo info = this.DataContext as IconInfo;
+            info.BitmapImage = ImageUtil.ByteArrToImage(info.DefaultImage);
+            CommonCode.SaveAppData(MainWindow.appData);
+        }
+
+        /// <summary>
+        /// 修改图标
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void EditImage(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                OpenFileDialog ofd = new OpenFileDialog
+                {
+                    Multiselect = false, //只允许选中单个文件
+                    Filter = "所有文件(*.*)|*.*"
+                };
+                if (ofd.ShowDialog() == true)
+                {
+                    IconInfo info = this.DataContext as IconInfo;
+                    info.BitmapImage = ImageUtil.GetBitmapIconByPath(ofd.FileName);
+                    CommonCode.SaveAppData(MainWindow.appData);
+                }
+            } catch (Exception)
+            {
+                HandyControl.Controls.Growl.WarningGlobal("修改图标失败,已重置为默认图标!");
+            }
+            
+        }
+    }
+}

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

@@ -1,28 +0,0 @@
-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();
-        }
-    }
-}

+ 47 - 44
Control/UserControls/Config/AboutControl.xaml

@@ -13,57 +13,58 @@
     <UserControl.Resources>
         <cvt:UpdateTypeConvert x:Key="UpdateTypeConvert"/>
     </UserControl.Resources>
-    <hc:SimplePanel Margin="20,50,20,20">
-        <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Top">
-            <Image Source="/Resource/Image/About.png" Width="400" Height="100"/>
-            <TextBlock x:Name="AppInfo"  TextAlignment="Center"  Text="Copyright ©  2021 GeekDesk "/>
-            <hc:UniformSpacingPanel Spacing="5" HorizontalAlignment="Center" Margin="10,10,0,0" VerticalAlignment="Center">
-                <hc:Shield Subject=".net" Status=">=4.72" Margin="0,0,10,0" Color="#1182c3"/>
+    <Grid MouseDown="DragMove" Background="AliceBlue">
+        <hc:SimplePanel Margin="20,50,20,20" >
+            <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Top">
+                <Image Source="/Resource/Image/About.png" Width="400" Height="100"/>
+                <TextBlock x:Name="AppInfo"  TextAlignment="Center"  Text="Copyright ©  2021 GeekDesk "/>
+                <hc:UniformSpacingPanel Spacing="5" HorizontalAlignment="Center" Margin="10,10,0,0" VerticalAlignment="Center">
+                    <hc:Shield Subject=".net" Status=">=4.72" Margin="0,0,10,0" Color="#1182c3"/>
                     <hc:Shield Subject="IDE" Status="VS2019" Margin="0,0,10,0" Color="#1182c3"/>
 
-                <hc:Shield Subject="GitHub" Visibility="Visible" Status="Demo-liu"
+                    <hc:Shield Subject="GitHub" Visibility="Visible" Status="Demo-liu"
                            Command="hc:ControlCommands.OpenLink" 
                            CommandParameter="https://github.com/Demo-Liu/GeekDesk"
                            Margin="0,0,10,0" Color="#24292F"/>
-                <hc:Shield Subject="Gitee" Visibility="Visible" Status="Demo-liu" 
+                    <hc:Shield Subject="Gitee" Visibility="Visible" Status="Demo-liu" 
                            Command="hc:ControlCommands.OpenLink" 
                            CommandParameter="" 
                            Margin="0,5,10,0" Color="#C71D23"/>
-                    
-                
-            </hc:UniformSpacingPanel>
-            <hc:UniformSpacingPanel Spacing="10" HorizontalAlignment="Center" Margin="0,5,0,0">
-                <hc:Shield Subject="公众号" Visibility="Visible" Status="抓几个娃" Margin="0,0,5,0"  Color="#04913B">
-                    <hc:Poptip.Instance>
-                        <hc:Poptip PlacementType="Top">
-                            <hc:Poptip.Content>
-                                <Image x:Name="PublicWeChat" Width="150" Height="150" />
-                            </hc:Poptip.Content>
-                        </hc:Poptip>
-                    </hc:Poptip.Instance>
-                </hc:Shield>
-                <hc:Shield Subject="赞赏" Status="支付宝" Margin="0,0,10,0" Color="#1577FE">
-                    <hc:Poptip.Instance>
-                        <hc:Poptip PlacementType="Top">
-                            <hc:Poptip.Content>
-                                <Image x:Name="ZFBCode" Width="150" Height="150" />
-                            </hc:Poptip.Content>
-                        </hc:Poptip>
-                    </hc:Poptip.Instance>
-                </hc:Shield>
-                <hc:Shield Subject="赞赏" Status="微信" Margin="0,0,10,0" Color="#04913B">
-                    <hc:Poptip.Instance>
-                        <hc:Poptip PlacementType="Top">
-                            <hc:Poptip.Content>
-                                <Image x:Name="WeChatCode" Width="150" Height="150" />
-                            </hc:Poptip.Content>
-                        </hc:Poptip>
-                    </hc:Poptip.Instance>
-                </hc:Shield>
-            </hc:UniformSpacingPanel>
-            <TextBlock Margin="0,20,0,0" FontSize="13" Width="200" TextAlignment="Center" Text="这是个人开发的程序,所有人可任意修改和免费使用(商用请联系作者)" TextWrapping="Wrap"/>
 
-            <!--<hc:UniformSpacingPanel Spacing="10" Visibility="Visible" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10,0,0">
+
+                </hc:UniformSpacingPanel>
+                <hc:UniformSpacingPanel Spacing="10" HorizontalAlignment="Center" Margin="0,5,0,0">
+                    <hc:Shield Subject="公众号" Visibility="Visible" Status="抓几个娃" Margin="0,0,5,0"  Color="#04913B">
+                        <hc:Poptip.Instance>
+                            <hc:Poptip PlacementType="Top">
+                                <hc:Poptip.Content>
+                                    <Image x:Name="PublicWeChat" Width="150" Height="150" />
+                                </hc:Poptip.Content>
+                            </hc:Poptip>
+                        </hc:Poptip.Instance>
+                    </hc:Shield>
+                    <hc:Shield Subject="赞赏" Status="支付宝" Margin="0,0,10,0" Color="#1577FE">
+                        <hc:Poptip.Instance>
+                            <hc:Poptip PlacementType="Top">
+                                <hc:Poptip.Content>
+                                    <Image x:Name="ZFBCode" Width="150" Height="150" />
+                                </hc:Poptip.Content>
+                            </hc:Poptip>
+                        </hc:Poptip.Instance>
+                    </hc:Shield>
+                    <hc:Shield Subject="赞赏" Status="微信" Margin="0,0,10,0" Color="#04913B">
+                        <hc:Poptip.Instance>
+                            <hc:Poptip PlacementType="Top">
+                                <hc:Poptip.Content>
+                                    <Image x:Name="WeChatCode" Width="150" Height="150" />
+                                </hc:Poptip.Content>
+                            </hc:Poptip>
+                        </hc:Poptip.Instance>
+                    </hc:Shield>
+                </hc:UniformSpacingPanel>
+                <TextBlock Margin="0,20,0,0" FontSize="13" Width="200" TextAlignment="Center" Text="这是个人开发的程序,所有人可任意修改和免费使用(商用请联系作者)" TextWrapping="Wrap"/>
+
+                <!--<hc:UniformSpacingPanel Spacing="10" Visibility="Visible" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10,0,0">
                 <TextBlock Text="更新源:" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                 <RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}" 
                          Style="{StaticResource RadioButtonIcon}" Content="Gitee"
@@ -72,7 +73,9 @@
                          Style="{StaticResource RadioButtonIcon}" Content="GitHub" 
                          IsChecked="{Binding UpdateType, Mode=TwoWay, Converter={StaticResource UpdateTypeConvert}, ConverterParameter=2}"/>
             </hc:UniformSpacingPanel>-->
-        </StackPanel>
-    </hc:SimplePanel>
+            </StackPanel>
+        </hc:SimplePanel>
+    </Grid>
+    
     
 </UserControl>

+ 13 - 0
Control/UserControls/Config/AboutControl.xaml.cs

@@ -31,5 +31,18 @@ namespace GeekDesk.Control.UserControls.Config
             WeChatCode.Source = ImageUtil.Base64ToBitmapImage(Constants.WE_CHAT_CODE_IMG_BASE64);
             ZFBCode.Source = ImageUtil.Base64ToBitmapImage(Constants.ZFB_CODE_IMG_BASE64);
         }
+
+        /// <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)
+            {
+                Window.GetWindow(this).DragMove();
+            }
+        }
     }
 }

+ 14 - 11
Control/UserControls/Config/MotionControl.xaml

@@ -12,7 +12,8 @@
     <UserControl.Resources>
         <cvt:HideTypeConvert x:Key="HideTypeConvert"/>
     </UserControl.Resources>
-        <hc:SimplePanel Margin="20">
+    <Grid Background="AliceBlue" MouseDown="DragMove">
+        <hc:SimplePanel Margin="20" >
             <hc:UniformSpacingPanel Spacing="10" Margin="0,0,0,10" Grid.ColumnSpan="4">
                 <TextBlock Text="面板动作设置" VerticalAlignment="Center"/>
             </hc:UniformSpacingPanel>
@@ -50,12 +51,12 @@
                          IsChecked="{Binding AppHideType, Mode=TwoWay, Converter={StaticResource HideTypeConvert}, ConverterParameter=3}"/>
             </hc:UniformSpacingPanel>
 
-        <hc:UniformSpacingPanel Spacing="10" Margin="30,164.49,-30,-154.49" Grid.ColumnSpan="4">
-            <TextBlock Text="热键设置" VerticalAlignment="Center" Margin="-26,0,26,0"/>
-        </hc:UniformSpacingPanel>
-        <hc:UniformSpacingPanel Spacing="10" Margin="30,193,0,-180.337" Grid.ColumnSpan="4">
-            <TextBlock Text="主面板:" Width="55"/>
-            <hc:TextBox HorizontalAlignment="Left" 
+            <hc:UniformSpacingPanel Spacing="10" Margin="30,164.49,-30,-154.49" Grid.ColumnSpan="4">
+                <TextBlock Text="热键设置" VerticalAlignment="Center" Margin="-26,0,26,0"/>
+            </hc:UniformSpacingPanel>
+            <hc:UniformSpacingPanel Spacing="10" Margin="30,193,0,-180.337" Grid.ColumnSpan="4">
+                <TextBlock Text="主面板:" Width="55"/>
+                <hc:TextBox HorizontalAlignment="Left" 
                         Tag="Main"
                         VerticalAlignment="Top" 
                         IsReadOnly="True" 
@@ -65,8 +66,8 @@
                         KeyDown="HotKeyDown"
                         KeyUp="HotKeyUp"
                         Margin="12.967,-7.38,-12.967,0"/>
-        </hc:UniformSpacingPanel>
-        <!--<hc:UniformSpacingPanel Spacing="10" Margin="30,229,0,-216.337" Grid.ColumnSpan="4">
+            </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"
@@ -79,7 +80,9 @@
                         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>
+            <StackPanel hc:Growl.GrowlParent="True" hc:Growl.Token="HotKeyGrowl" VerticalAlignment="Top"/>
+        </hc:SimplePanel>
+    </Grid>
+   
    
 </UserControl>

+ 13 - 0
Control/UserControls/Config/MotionControl.xaml.cs

@@ -229,6 +229,19 @@ namespace GeekDesk.Control.UserControls.Config
             }
         }
 
+        /// <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)
+            {
+                Window.GetWindow(this).DragMove();
+            }
+        }
+
         //private void ShowApp(MainWindow mainWindow)
         //{
         //    if (appConfig.FollowMouse)

+ 31 - 28
Control/UserControls/Config/OtherControl.xaml

@@ -14,45 +14,48 @@
     <UserControl.Resources>
         <cvt:UpdateTypeConvert x:Key="UpdateTypeConvert"/>
     </UserControl.Resources>
-    <hc:SimplePanel Margin="20">
-        <StackPanel >
-            <TextBlock Text="程序设置" />
-            <hc:UniformSpacingPanel Spacing="10" Margin="20,8,0,0">
-                <CheckBox x:Name="SelfStartUpBox" Content="开机自启动" IsChecked="{Binding SelfStartUp}" Click="SelfStartUpBox_Click">
-                    <CheckBox.Background>
-                        <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
-                            <GradientStop Color="#FF9EA3A6"/>
-                        </LinearGradientBrush>
-                    </CheckBox.Background>
-                </CheckBox>
-            </hc:UniformSpacingPanel>
-            <hc:UniformSpacingPanel Spacing="10" Margin="20,6,0,0">
-                <CheckBox  Content="性能模式" IsChecked="{Binding PMModel}" 
+    <Grid MouseDown="DragMove" Background="AliceBlue">
+        <hc:SimplePanel Margin="20" >
+            <StackPanel >
+                <TextBlock Text="程序设置" />
+                <hc:UniformSpacingPanel Spacing="10" Margin="20,8,0,0">
+                    <CheckBox x:Name="SelfStartUpBox" Content="开机自启动" IsChecked="{Binding SelfStartUp}" Click="SelfStartUpBox_Click">
+                        <CheckBox.Background>
+                            <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
+                                <GradientStop Color="#FF9EA3A6"/>
+                            </LinearGradientBrush>
+                        </CheckBox.Background>
+                    </CheckBox>
+                </hc:UniformSpacingPanel>
+                <hc:UniformSpacingPanel Spacing="10" Margin="20,6,0,0">
+                    <CheckBox  Content="性能模式" IsChecked="{Binding PMModel}" 
                            hc:Poptip.HitMode="None" 
                            hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}"
                            hc:Poptip.Content="开启性能模式将取消图标动画效果" 
                            hc:Poptip.Placement="TopLeft">
-                    <CheckBox.Background>
-                        <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
-                            <GradientStop Color="#FF9EA3A6"/>
-                        </LinearGradientBrush>
-                    </CheckBox.Background>
-                </CheckBox>
-            </hc:UniformSpacingPanel>
-            <TextBlock Text="更新源"  Margin="0,25,0,0"/>
-            <hc:UniformSpacingPanel Spacing="10" Margin="20,8,0,0">
-                <RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}" 
+                        <CheckBox.Background>
+                            <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
+                                <GradientStop Color="#FF9EA3A6"/>
+                            </LinearGradientBrush>
+                        </CheckBox.Background>
+                    </CheckBox>
+                </hc:UniformSpacingPanel>
+                <TextBlock Text="更新源"  Margin="0,25,0,0"/>
+                <hc:UniformSpacingPanel Spacing="10" Margin="20,8,0,0">
+                    <RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}" 
                              Style="{StaticResource RadioButtonIcon}" Content="Gitee"
                              hc:IconElement.Geometry="{StaticResource Gitee}"
                              Foreground="#B32225"
                              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}"
                              hc:IconElement.Geometry="{StaticResource GitHub}"
                              Style="{StaticResource RadioButtonIcon}" Content="GitHub" 
                              Foreground="Black"
                              IsChecked="{Binding UpdateType, Mode=TwoWay, Converter={StaticResource UpdateTypeConvert}, ConverterParameter=2}"/>
-            </hc:UniformSpacingPanel>
-        </StackPanel>
-    </hc:SimplePanel>
+                </hc:UniformSpacingPanel>
+            </StackPanel>
+        </hc:SimplePanel>
+    </Grid>
+   
 
 </UserControl>

+ 13 - 0
Control/UserControls/Config/OtherControl.xaml.cs

@@ -33,5 +33,18 @@ namespace GeekDesk.Control.UserControls.Config
             AppConfig appConfig = MainWindow.appData.AppConfig;
             RegisterUtil.SetSelfStarting(appConfig.SelfStartUp, Constants.MY_NAME);
         }
+
+        /// <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)
+            {
+                Window.GetWindow(this).DragMove();
+            }
+        }
     }
 }

+ 101 - 82
Control/UserControls/Config/ThemeControl.xaml

@@ -8,97 +8,116 @@
              mc:Ignorable="d" 
              Background="AliceBlue"
              d:DesignHeight="500" d:DesignWidth="450">
-    <hc:SimplePanel Margin="20">
 
-        <hc:UniformSpacingPanel Spacing="10" Margin="0,0,-40,-12" Grid.ColumnSpan="4">
-            <TextBlock Text="背景图片" VerticalAlignment="Center"/>
-        </hc:UniformSpacingPanel>
-        <hc:UniformSpacingPanel Spacing="10" Margin="19,20,-59,-31.5" Grid.ColumnSpan="4">
-            <TextBlock Text="图片路径:" VerticalAlignment="Center"/>
-            <TextBlock Text="{Binding BacImgName}" Width="200" 
-                       VerticalAlignment="Center"
-                       hc:Poptip.HitMode="None" 
-                       hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}"
-                       hc:Poptip.Content="{Binding BacImgName}" 
-                       hc:Poptip.Placement="TopLeft"
-                       />
-            <Button Content="修改" Click="BGButton_Click"/>
-        </hc:UniformSpacingPanel>
 
-        <hc:UniformSpacingPanel Spacing="10" Margin="19,60,11,-36.433" Grid.ColumnSpan="4">
-            <CheckBox x:Name="IconIsAdmin" Content="毛玻璃效果" IsChecked="{Binding BlurEffect}">
-                <CheckBox.Background>
-                    <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
-                        <GradientStop Color="#FF9EA3A6"/>
-                    </LinearGradientBrush>
-                </CheckBox.Background>
-            </CheckBox>
-        </hc:UniformSpacingPanel>
+    <Grid>
+        <Grid  MouseDown="DragMove" Background="AliceBlue">
+            <hc:SimplePanel Margin="20" >
+                <hc:UniformSpacingPanel Spacing="10" Margin="0,0,-40,-12" Grid.ColumnSpan="4">
+                    <TextBlock Text="背景图片" VerticalAlignment="Center"/>
+                </hc:UniformSpacingPanel>
+                <hc:UniformSpacingPanel Spacing="10" Margin="19,20,-59,-31.5" Grid.ColumnSpan="4">
+                    <TextBlock Text="图片路径:" VerticalAlignment="Center"/>
+                    <TextBlock Text="{Binding BacImgName}" Width="200" 
+                           VerticalAlignment="Center"
+                           hc:Poptip.HitMode="None" 
+                           hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}"
+                           hc:Poptip.Content="{Binding BacImgName}" 
+                           hc:Poptip.Placement="TopLeft"
+                           />
+                    <Button Content="修改" Click="BGButton_Click"/>
+                </hc:UniformSpacingPanel>
 
-        <hc:Divider LineStrokeDashArray="3,3" Margin="0,91.5,0,34.5" LineStroke="Black" Grid.ColumnSpan="4"/>
+                <hc:UniformSpacingPanel Spacing="10" Margin="19,60,11,-36.433" Grid.ColumnSpan="4">
+                    <CheckBox x:Name="IconIsAdmin" Content="毛玻璃效果" IsChecked="{Binding BlurEffect}">
+                        <CheckBox.Background>
+                            <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
+                                <GradientStop Color="#FF9EA3A6"/>
+                            </LinearGradientBrush>
+                        </CheckBox.Background>
+                    </CheckBox>
+                </hc:UniformSpacingPanel>
 
-        <StackPanel Margin="0,30,0,0">
-            <hc:UniformSpacingPanel Spacing="10" Margin="0,80,-40,-89.5" Grid.ColumnSpan="4">
-                <TextBlock Text="托盘不透明度" VerticalAlignment="Center"/>
-            </hc:UniformSpacingPanel>
-            <hc:UniformSpacingPanel Spacing="10" Margin="0,110,-40,-122" Grid.ColumnSpan="4">
-                <hc:PreviewSlider Value="{Binding CardOpacity}"
-                              Maximum="100"
-                              Margin="0,-12,-313.5,19.5"
-                              >
-                    <hc:PreviewSlider.PreviewContent>
-                        <Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
-                    </hc:PreviewSlider.PreviewContent>
-                </hc:PreviewSlider>
-            </hc:UniformSpacingPanel>
+                <hc:Divider LineStrokeDashArray="3,3" Margin="0,91.5,0,34.5" LineStroke="Black" Grid.ColumnSpan="4"/>
 
+                <StackPanel Margin="0,30,0,0">
+                    <hc:UniformSpacingPanel Spacing="10" Margin="0,80,-40,-89.5" Grid.ColumnSpan="4">
+                        <TextBlock Text="托盘不透明度" VerticalAlignment="Center"/>
+                    </hc:UniformSpacingPanel>
+                    <hc:UniformSpacingPanel Spacing="10" Margin="0,110,-40,-122" Grid.ColumnSpan="4">
+                        <hc:PreviewSlider Value="{Binding CardOpacity}"
+                                  Maximum="100"
+                                  Margin="0,-12,-313.5,19.5"
+                                  >
+                            <hc:PreviewSlider.PreviewContent>
+                                <Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
+                            </hc:PreviewSlider.PreviewContent>
+                        </hc:PreviewSlider>
+                    </hc:UniformSpacingPanel>
 
-            <hc:UniformSpacingPanel Spacing="10" Margin="0,135,-40,-161.626" Grid.ColumnSpan="4">
-                <TextBlock Text="背景图片不透明度" VerticalAlignment="Center"/>
-            </hc:UniformSpacingPanel>
-            <hc:UniformSpacingPanel Spacing="10" Margin="0,155,-40,-183" Grid.ColumnSpan="4">
-                <hc:PreviewSlider Value="{Binding BgOpacity}"
-                              Maximum="100"
-                              Margin="0,0,-313.5,7.5"
-                              >
-                    <hc:PreviewSlider.PreviewContent>
-                        <Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
-                    </hc:PreviewSlider.PreviewContent>
-                </hc:PreviewSlider>
-            </hc:UniformSpacingPanel>
 
+                    <hc:UniformSpacingPanel Spacing="10" Margin="0,135,-40,-161.626" Grid.ColumnSpan="4">
+                        <TextBlock Text="背景图片不透明度" VerticalAlignment="Center"/>
+                    </hc:UniformSpacingPanel>
+                    <hc:UniformSpacingPanel Spacing="10" Margin="0,155,-40,-183" Grid.ColumnSpan="4">
+                        <hc:PreviewSlider Value="{Binding BgOpacity}"
+                                  Maximum="100"
+                                  Margin="0,0,-313.5,7.5"
+                                  >
+                            <hc:PreviewSlider.PreviewContent>
+                                <Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
+                            </hc:PreviewSlider.PreviewContent>
+                        </hc:PreviewSlider>
+                    </hc:UniformSpacingPanel>
 
-            <hc:UniformSpacingPanel Spacing="10" Margin="0,195,-40,-208.813" Grid.ColumnSpan="4">
-                <TextBlock Text="主面板不透明度" VerticalAlignment="Center"/>
-            </hc:UniformSpacingPanel>
-            <hc:UniformSpacingPanel Spacing="10" Margin="0,215,-40,-241" Grid.ColumnSpan="4">
-                <hc:PreviewSlider Value="{Binding PannelOpacity}"
-                              Minimum="50"
-                              Maximum="100"
-                              Margin="0,0,-313.5,7.5"
-                              >
-                    <hc:PreviewSlider.PreviewContent>
-                        <Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
-                    </hc:PreviewSlider.PreviewContent>
-                </hc:PreviewSlider>
-            </hc:UniformSpacingPanel>
 
-            <hc:UniformSpacingPanel Spacing="10" Margin="0,245,-40,-279.313" Grid.ColumnSpan="4">
-                <TextBlock Text="主面板圆角大小" VerticalAlignment="Center"/>
-            </hc:UniformSpacingPanel>
-            <hc:UniformSpacingPanel Spacing="10" Margin="0,265,-40,-321" Grid.ColumnSpan="4">
-                <hc:PreviewSlider Value="{Binding PannelCornerRadius}"
-                              Maximum="25"
-                              Margin="0,0,-313.5,7.5"
-                              >
-                    <hc:PreviewSlider.PreviewContent>
-                        <Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
-                    </hc:PreviewSlider.PreviewContent>
-                </hc:PreviewSlider>
-            </hc:UniformSpacingPanel>
+                    <hc:UniformSpacingPanel Spacing="10" Margin="0,195,-40,-208.813" Grid.ColumnSpan="4">
+                        <TextBlock Text="主面板不透明度" VerticalAlignment="Center"/>
+                    </hc:UniformSpacingPanel>
+                    <hc:UniformSpacingPanel Spacing="10" Margin="0,215,-40,-241" Grid.ColumnSpan="4">
+                        <hc:PreviewSlider Value="{Binding PannelOpacity}"
+                                  Minimum="50"
+                                  Maximum="100"
+                                  Margin="0,0,-313.5,7.5"
+                                  >
+                            <hc:PreviewSlider.PreviewContent>
+                                <Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
+                            </hc:PreviewSlider.PreviewContent>
+                        </hc:PreviewSlider>
+                    </hc:UniformSpacingPanel>
+
+                    <hc:UniformSpacingPanel Spacing="10" Margin="0,245,-40,-279.313" Grid.ColumnSpan="4">
+                        <TextBlock Text="主面板圆角大小" VerticalAlignment="Center"/>
+                    </hc:UniformSpacingPanel>
+                    <hc:UniformSpacingPanel Spacing="10" Margin="0,265,-40,-321" Grid.ColumnSpan="4">
+                        <hc:PreviewSlider Value="{Binding PannelCornerRadius}"
+                                  Maximum="25"
+                                  Margin="0,0,-313.5,7.5"
+                                  >
+                            <hc:PreviewSlider.PreviewContent>
+                                <Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
+                            </hc:PreviewSlider.PreviewContent>
+                        </hc:PreviewSlider>
+                    </hc:UniformSpacingPanel>
+                </StackPanel>
+                <hc:Divider LineStrokeDashArray="3,3" Margin="0,341.5,0,-215.5" LineStroke="Black" Grid.ColumnSpan="4"/>
+                <hc:UniformSpacingPanel Spacing="10" Margin="0,354,-40,-388.313" Grid.ColumnSpan="4">
+                    <TextBlock VerticalAlignment="Center" Text="图标字体颜色:" />
+                    <TextBlock VerticalAlignment="Center" Text="{Binding TextColor}" Width="100"/>
+                    <Button Content="选择"  Click="ColorButton_Click"/>
+                </hc:UniformSpacingPanel>
+            </hc:SimplePanel>
+        </Grid>
+            
+        <StackPanel x:Name="ColorPanel" Visibility="Collapsed" VerticalAlignment="Center">
+            <StackPanel.Background>
+                <SolidColorBrush Color="AliceBlue" Opacity="0"/>
+            </StackPanel.Background>
+            <hc:ColorPicker
+                            Name="ColorPicker" 
+                            Canceled="ColorPicker_Canceled" 
+                            SelectedColorChanged="ColorPicker_SelectedColorChanged"/>
         </StackPanel>
-        <hc:Divider LineStrokeDashArray="3,3" Margin="0,341.5,0,-215.5" LineStroke="Black" Grid.ColumnSpan="4"/>
-        <TextBlock Text="图标字体颜色:" Margin="0,358,0,-358" />
+    </Grid>
         
-    </hc:SimplePanel>
 </UserControl>

+ 33 - 2
Control/UserControls/Config/ThemeControl.xaml.cs

@@ -23,6 +23,8 @@ namespace GeekDesk.Control.UserControls.Config
     /// </summary>
     public partial class ThemeControl : System.Windows.Controls.UserControl
     {
+
+        private static AppConfig appConfig = MainWindow.appData.AppConfig;
         public ThemeControl()
         {
             InitializeComponent();
@@ -35,8 +37,7 @@ namespace GeekDesk.Control.UserControls.Config
         /// <param name="e"></param>
         private void BGButton_Click(object sender, RoutedEventArgs e)
         {
-            AppConfig appConfig = MainWindow.appData.AppConfig;
-
+           
             try
             {
                 OpenFileDialog ofd = new OpenFileDialog
@@ -56,5 +57,35 @@ namespace GeekDesk.Control.UserControls.Config
             }
 
         }
+
+        private void ColorButton_Click(object sender, RoutedEventArgs e)
+        {
+            ColorPanel.Visibility = Visibility.Visible;
+        }
+
+        private void ColorPicker_Canceled(object sender, EventArgs e)
+        {
+            ColorPanel.Visibility = Visibility.Collapsed;
+        }
+
+        private void ColorPicker_SelectedColorChanged(object sender, HandyControl.Data.FunctionEventArgs<Color> e)
+        {
+            SolidColorBrush scb =  ColorPicker.SelectedBrush;
+            appConfig.TextColor = scb.ToString();
+            ColorPanel.Visibility = Visibility.Collapsed;
+        }
+
+        /// <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)
+            {
+                Window.GetWindow(this).DragMove();
+            }
+        }
     }
 }

+ 18 - 15
Control/UserControls/PannelCard/LeftCardControl.xaml

@@ -13,7 +13,7 @@
 
         <!--左侧栏样式动画-->
         <Style x:Key="MenuStyle" TargetType="ListBoxItem" BasedOn="{StaticResource ListBoxItemBaseStyle}">
-            <Setter Property="FontSize" Value="15"/>
+            <Setter Property="FontSize" Value="16"/>
             <Setter Property="Margin" Value="0,0,0,1"/>
             <Setter Property="Background">
                 <Setter.Value>
@@ -30,8 +30,8 @@
                     </MultiTrigger.Conditions>
                     <MultiTrigger.EnterActions>
                         <BeginStoryboard>
-                            <Storyboard>
-                                <DoubleAnimation To="15" Duration="0:0:0.5" Storyboard.TargetProperty="FontSize"/>
+                            <Storyboard Timeline.DesiredFrameRate="60">
+                                <DoubleAnimation To="16" Duration="0:0:0.2" Storyboard.TargetProperty="FontSize"/>
                             </Storyboard>
                         </BeginStoryboard>
                     </MultiTrigger.EnterActions>
@@ -103,24 +103,27 @@
 
                     <ListBox.ItemsPanel>
                         <ItemsPanelTemplate>
-                        <DraggAnimatedPanel:DraggAnimatedPanel ItemsHeight="30" ItemsWidth="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBox},AncestorLevel=1},Path=Tag, Mode=TwoWay, Converter={StaticResource MenuWidthConvert}}"   HorizontalAlignment="Center" VerticalAlignment="Top" SwapCommand="{Binding SwapCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
+                        <DraggAnimatedPanel:DraggAnimatedPanel ItemsHeight="33" ItemsWidth="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBox},AncestorLevel=1},Path=Tag, Mode=TwoWay, Converter={StaticResource MenuWidthConvert}, ConverterParameter=10}"   HorizontalAlignment="Center" VerticalAlignment="Top" SwapCommand="{Binding SwapCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
                         </ItemsPanelTemplate>
                     </ListBox.ItemsPanel>
 
                     <ListBox.ItemTemplate>
                         <DataTemplate>
                         <StackPanel MouseLeftButtonDown="MenuClick" MouseRightButtonDown="MenuClick" Tag="{Binding}">
-                                <hc:TextBox Text="{Binding Path=MenuName, Mode=TwoWay}"
-                                     HorizontalAlignment="Left"
-                                     Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBox},AncestorLevel=1},Path=Tag, Mode=TwoWay, Converter={StaticResource MenuWidthConvert}}"
-                                     FontSize="15"
-                                     TextAlignment="Left"
-                                     LostFocus="LostFocusOrEnterDown"
-                                     KeyDown="LostFocusOrEnterDown"
-                                     Tag="{Binding}"
-                                     IsVisibleChanged="MenuEditWhenVisibilityChanged"
-                                     Visibility="{Binding MenuEdit}"/>
-                                <StackPanel Orientation="Horizontal">
+                            <hc:TextBox Text="{Binding Path=MenuName, Mode=TwoWay}"
+                                        HorizontalAlignment="Left"
+                                        Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBox},AncestorLevel=1},Path=Tag, Mode=TwoWay, Converter={StaticResource MenuWidthConvert}, ConverterParameter=35}"
+                                        FontSize="16"
+                                        Height="25"
+                                        VerticalAlignment="Center"
+                                        TextAlignment="Left"
+                                        LostFocus="LostFocusOrEnterDown"
+                                        KeyDown="LostFocusOrEnterDown"
+                                        Tag="{Binding}"
+                                        Margin="2"
+                                        IsVisibleChanged="MenuEditWhenVisibilityChanged"
+                                        Visibility="{Binding MenuEdit}"/>
+                            <StackPanel Orientation="Horizontal">
                                     <Button Background="Transparent" 
                                             BorderThickness="0"
                                             hc:IconElement.Geometry="{Binding MenuGeometry}"

+ 15 - 6
Control/UserControls/PannelCard/RightCardControl.xaml

@@ -15,6 +15,9 @@
             <Setter Property="Width"   Value="{Binding ImageWidth}"/>
             <Setter Property="Height"  Value="{Binding ImageHeight}"/>
             <Setter Property="Source"  Value="{Binding BitmapImage}"/>
+            <Setter Property="RenderOptions.BitmapScalingMode" Value="LowQuality" />
+            <Setter Property="RenderOptions.CachingHint" Value="Cache" />
+            
         </Style>
         <Style x:Key="MyListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
             <Setter Property="Template">
@@ -28,7 +31,6 @@
             </Setter>
         </Style>
 
-        <cvt:MenuWidthConvert x:Key="MenuWidthConvert"/>
         <cvt:OpcityConvert x:Key="OpcityConvert"/>
     </UserControl.Resources>
 
@@ -44,6 +46,11 @@
         <hc:Card.BorderBrush>
             <SolidColorBrush Color="#FFFFFFFF" Opacity="0"/>
         </hc:Card.BorderBrush>
+        <hc:Card.ContextMenu>
+            <ContextMenu Width="200">
+                <MenuItem Header="添加URL项目" Click="AddUrlIcon"/>
+            </ContextMenu>
+        </hc:Card.ContextMenu>
         <WrapPanel Orientation="Horizontal">
             <ListBox x:Name="IconListBox" ItemsSource="{Binding AppConfig.SelectedMenuIcons, Mode=TwoWay}" 
                                  BorderThickness="0"
@@ -53,8 +60,8 @@
                 </ListBox.Background>
                 <ListBox.ItemsPanel>
                     <ItemsPanelTemplate>
-                        <DraggAnimatedPanel:DraggAnimatedPanel ItemsHeight="110" 
-                                                               ItemsWidth="110"
+                        <DraggAnimatedPanel:DraggAnimatedPanel ItemsHeight="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelHeight}" 
+                                                               ItemsWidth="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelWidth}"
                                                                Background="#00FFFFFF"
                                                                HorizontalAlignment="Center" 
                                                                SwapCommand="{Binding SwapCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
@@ -65,6 +72,7 @@
                     <ContextMenu x:Key="IconDialog" Width="200">
                         <MenuItem Header="管理员方式运行" Click="IconAdminStart" Tag="{Binding}"/>
                         <MenuItem Header="打开文件所在位置" Click="ShowInExplore" Tag="{Binding}"/>
+                        <MenuItem Header="添加URL项目" Click="AddUrlIcon"/>
                         <MenuItem Header="资源管理器菜单" Click="SystemContextMenu" Tag="{Binding}"/>
                         <MenuItem Header="属性" Click="PropertyConfig" Tag="{Binding}"/>
                         <MenuItem Header="从列表移除" Click="RemoveIcon" Tag="{Binding}"/>
@@ -80,8 +88,8 @@
                 <ListBox.ItemTemplate>
                     <DataTemplate>
                         <StackPanel Tag="{Binding}"
-                                        Height="110"
-                                        Width="110"
+                                        Height="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelHeight}"
+                                        Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelWidth}"
                                         HorizontalAlignment="Center"
                                         hc:Poptip.HitMode="None" 
                                         hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}"
@@ -92,7 +100,7 @@
                                         MouseEnter="StackPanel_MouseEnter"
                                         MouseLeave="StackPanel_MouseLeave"
                                         >
-                            <Image Style="{StaticResource ImageStyle}"/>
+                            <Image CacheMode="{Binding BitmapCache}" Style="{StaticResource ImageStyle}"/>
                             <TextBlock MaxWidth="80"
                                        Margin="0,5,0,0"
                                        MaxHeight="40"
@@ -101,6 +109,7 @@
                                        TextTrimming="WordEllipsis"
                                        TextAlignment="Center" 
                                        VerticalAlignment="Center" 
+                                       Foreground="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.TextColor}"
                                        Text="{Binding Name}"/>
                         </StackPanel>
                     </DataTemplate>

+ 56 - 36
Control/UserControls/PannelCard/RightCardControl.xaml.cs

@@ -31,6 +31,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
     public partial class RightCardControl : UserControl
     {
         private AppData appData = MainWindow.appData;
+
         public RightCardControl()
         {
             InitializeComponent();
@@ -109,41 +110,42 @@ namespace GeekDesk.Control.UserControls.PannelCard
         {
             try
             {
-
-                if (!File.Exists(icon.Path) && !Directory.Exists(icon.Path))
-                {
-                    HandyControl.Controls.Growl.WarningGlobal("程序启动失败(文件路径不存在或已删除)!");
-                    return;
-                } 
-
                 Process p = new Process();
                 p.StartInfo.FileName = icon.Path;
-                p.StartInfo.WorkingDirectory = icon.Path.Substring(0, icon.Path.LastIndexOf("\\"));
-                switch (type)
+                if (icon.IconType == IconType.OTHER)
                 {
-                    case IconStartType.ADMIN_STARTUP:
-                        p.StartInfo.Arguments = "1";//启动参数
-                        p.StartInfo.Verb = "runas";
-                        p.StartInfo.CreateNoWindow = false; //设置显示窗口
-                        p.StartInfo.UseShellExecute = false;//不使用操作系统外壳程序启动进程
-                        p.StartInfo.ErrorDialog = false;
-                        if (appData.AppConfig.AppHideType == AppHideType.START_EXE)
-                        {
-                            Window parentWin = Window.GetWindow(this);
-                            parentWin.Visibility = Visibility.Collapsed;
-                        }
-                        break;// c#好像不能case穿透
-                    case IconStartType.DEFAULT_STARTUP:
-                        if (appData.AppConfig.AppHideType == AppHideType.START_EXE)
-                        {
-                            Window parentWin = Window.GetWindow(this);
-                            parentWin.Visibility = Visibility.Collapsed;
-                        }
-                        break;
-                    case IconStartType.SHOW_IN_EXPLORE:
-                        p.StartInfo.FileName = "Explorer.exe";
-                        p.StartInfo.Arguments = "/e,/select," + icon.Path;
-                        break;
+                    if (!File.Exists(icon.Path) && !Directory.Exists(icon.Path))
+                    {
+                        HandyControl.Controls.Growl.WarningGlobal("程序启动失败(文件路径不存在或已删除)!");
+                        return;
+                    }
+                    p.StartInfo.WorkingDirectory = icon.Path.Substring(0, icon.Path.LastIndexOf("\\"));
+                    switch (type)
+                    {
+                        case IconStartType.ADMIN_STARTUP:
+                            p.StartInfo.Arguments = "1";//启动参数
+                            p.StartInfo.Verb = "runas";
+                            p.StartInfo.CreateNoWindow = false; //设置显示窗口
+                            p.StartInfo.UseShellExecute = false;//不使用操作系统外壳程序启动进程
+                            p.StartInfo.ErrorDialog = false;
+                            if (appData.AppConfig.AppHideType == AppHideType.START_EXE)
+                            {
+                                Window parentWin = Window.GetWindow(this);
+                                parentWin.Visibility = Visibility.Collapsed;
+                            }
+                            break;// c#好像不能case穿透
+                        case IconStartType.DEFAULT_STARTUP:
+                            if (appData.AppConfig.AppHideType == AppHideType.START_EXE)
+                            {
+                                Window parentWin = Window.GetWindow(this);
+                                parentWin.Visibility = Visibility.Collapsed;
+                            }
+                            break;
+                        case IconStartType.SHOW_IN_EXPLORE:
+                            p.StartInfo.FileName = "Explorer.exe";
+                            p.StartInfo.Arguments = "/e,/select," + icon.Path;
+                            break;
+                    }
                 }
                 p.Start();
                 icon.Count++;
@@ -165,7 +167,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
             {
                 string path = (string)obj;
 
-                //string base64 = ImageUtil.FileImageToBase64(path, ImageFormat.Jpeg);
+                //string base64 = ImageUtil.FileImageToBase64(path, ImageFormat.Png);
 
                 string ext = System.IO.Path.GetExtension(path).ToLower();
 
@@ -224,17 +226,29 @@ namespace GeekDesk.Control.UserControls.PannelCard
         /// <param name="e"></param>
         private void PropertyConfig(object sender, RoutedEventArgs e)
         {
-            HandyControl.Controls.Dialog.Show(new IconInfoDialog((IconInfo)((MenuItem)sender).Tag));
+            IconInfo info = (IconInfo)((MenuItem)sender).Tag;
+            switch (info.IconType)
+            {
+                case IconType.URL:
+                    IconInfoUrlDialog urlDialog = new IconInfoUrlDialog(info);
+                    urlDialog.dialog = HandyControl.Controls.Dialog.Show(urlDialog);
+                    break;
+                default:
+                    IconInfoDialog dialog = new IconInfoDialog(info);
+                    dialog.dialog = HandyControl.Controls.Dialog.Show(dialog);
+                    break;
+            }
+            
         }
 
         private void StackPanel_MouseEnter(object sender, MouseEventArgs e)
         {
-            ImgStroyBoard(sender, (int)MainWindowEnum.IMAGE_HEIGHT_AM, (int)MainWindowEnum.IMAGE_WIDTH_AM, 1);
+            ImgStroyBoard(sender, (int)CommonEnum.IMAGE_HEIGHT_AM, (int)CommonEnum.IMAGE_WIDTH_AM, 1);
         }
 
         private void StackPanel_MouseLeave(object sender, MouseEventArgs e)
         {
-            ImgStroyBoard(sender, (int)MainWindowEnum.IMAGE_HEIGHT, (int)MainWindowEnum.IMAGE_WIDTH, 250);
+            ImgStroyBoard(sender, (int)CommonEnum.IMAGE_HEIGHT, (int)CommonEnum.IMAGE_WIDTH, 500);
         }
 
 
@@ -267,5 +281,11 @@ namespace GeekDesk.Control.UserControls.PannelCard
             img.BeginAnimation(HeightProperty, heightAnimation);
             img.BeginAnimation(WidthProperty, widthAnimation);
         }
+
+        private void AddUrlIcon(object sender, RoutedEventArgs e)
+        {
+            IconInfoUrlDialog urlDialog = new IconInfoUrlDialog();
+            urlDialog.dialog = HandyControl.Controls.Dialog.Show(urlDialog);
+        }
     }
 }

+ 1 - 1
Control/Windows/ConfigWindow.xaml

@@ -121,7 +121,7 @@
                 </hc:SideMenu>
             </hc:Card>
             <hc:ScrollViewer  Grid.Row="0" Grid.Column="1">
-                <hc:Card x:Name="RightCard" Height="448"  MouseDown="DragMove">
+                <hc:Card x:Name="RightCard" Height="448">
                 </hc:Card>
             </hc:ScrollViewer>
 

+ 1 - 12
Control/Windows/ConfigWindow.xaml.cs

@@ -31,18 +31,7 @@ namespace GeekDesk.Control.Windows
         }
 
          
-        /// <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>
         /// 点击关闭按钮

+ 3 - 1
Converts/MenuWidthConvert.cs

@@ -10,7 +10,9 @@ namespace GeekDesk.Converts
         {
             if (value != null && value.ToString().Length > 0)
             {
-                return System.Convert.ToDouble(value.ToString()) - 10d;
+                if (parameter == null) parameter = 0.00;
+                double p = System.Convert.ToDouble(parameter.ToString());
+                return System.Convert.ToDouble(value.ToString()) - p;
             }
             else
             {

+ 9 - 8
GeekDesk.csproj

@@ -94,7 +94,8 @@
     <Compile Include="Command\DelegateCommandBase.cs" />
     <Compile Include="Constant\AppHideType.cs" />
     <Compile Include="Constant\Constants.cs" />
-    <Compile Include="Constant\MainWindowEnum.cs" />
+    <Compile Include="Constant\IconType.cs" />
+    <Compile Include="Constant\CommonEnum.cs" />
     <Compile Include="Constant\IconStartType.cs" />
     <Compile Include="Constant\SortType.cs" />
     <Compile Include="Constant\UpdateType.cs" />
@@ -104,6 +105,9 @@
     <Compile Include="Control\Other\CustomIconUrlDialog.xaml.cs">
       <DependentUpon>CustomIconUrlDialog.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Control\Other\IconInfoUrlDialog.xaml.cs">
+      <DependentUpon>IconInfoUrlDialog.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Control\UserControls\Config\OtherControl.xaml.cs">
       <DependentUpon>OtherControl.xaml</DependentUpon>
     </Compile>
@@ -125,9 +129,6 @@
     <Compile Include="Control\Other\IconInfoDialog.xaml.cs">
       <DependentUpon>IconInfoDialog.xaml</DependentUpon>
     </Compile>
-    <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>
@@ -190,6 +191,10 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
+    <Page Include="Control\Other\IconInfoUrlDialog.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
     <Page Include="Control\UserControls\Config\OtherControl.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
@@ -218,10 +223,6 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
-    <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>

+ 5 - 5
Update.json

@@ -1,9 +1,9 @@
 {
 	"title" : "版本更新",
-	"subTitle" : "V2.0 正式版",
+	"subTitle" : "V2.1 正式版",
 	"msgTitle" : "本次更新内容如下",
-	"msg" : "['断网时检测更新不再弹框提示了','修复历史待办任务保存时程序崩溃bug','修复某些图标获取过小的bug','添加待办任务设置成功提醒功能','添加性能模式','添加调用系统菜单']",
-	"githubUrl" : "https://github.com/Demo-Liu/GeekDesk/releases/tag/2.0",
-	"giteeUrl" : "https://gitee.com/demo_liu/GeekDesk/releases/2.0",
-	"version": "2.0"
+	"msg" : "['部分程序启动报错修复', '重置图标功能程序崩溃修复','添加自定义字体颜色功能','添加URL项目功能']",
+	"githubUrl" : "https://github.com/Demo-Liu/GeekDesk/releases/tag/2.1",
+	"giteeUrl" : "https://gitee.com/demo_liu/GeekDesk/releases/2.1",
+	"version": "2.1"
 }

+ 2 - 1
Util/HttpUtil.cs

@@ -19,8 +19,9 @@ namespace GeekDesk.Util
             HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
             //通过Web访问对象获取响应内容
             HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
+
             //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
-            StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.GetEncoding("gbk"));
+            StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
             string returnStr = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
             reader.Close();
             myResponse.Close();

+ 49 - 4
ViewModel/AppConfig.cs

@@ -19,9 +19,9 @@ namespace GeekDesk.ViewModel
     {
         private SortType menuSortType = SortType.CUSTOM; //菜单排序类型
         private SortType iconSortType = SortType.CUSTOM; //图表排序类型
-        private double windowWidth = (double)MainWindowEnum.WINDOW_WIDTH;  //窗口宽度
-        private double windowHeight = (double)MainWindowEnum.WINDOW_HEIGHT; //窗口高度
-        private double menuCardWidth = (double)MainWindowEnum.MENU_CARD_WIDHT;//菜单栏宽度
+        private double windowWidth = (double)CommonEnum.WINDOW_WIDTH;  //窗口宽度
+        private double windowHeight = (double)CommonEnum.WINDOW_HEIGHT; //窗口高度
+        private double menuCardWidth = (double)CommonEnum.MENU_CARD_WIDHT;//菜单栏宽度
         private int selectedMenuIndex = 0;  //上次选中菜单索引
         private bool followMouse = true;  //面板跟随鼠标 默认是
         private Visibility configIconVisible = Visibility.Visible; // 设置按钮是否显示
@@ -56,11 +56,56 @@ namespace GeekDesk.ViewModel
 
         private bool selfStartUp = true; //开机自启动设置
         private bool selfStartUped = false;  //是否已设置
-
         private bool pmModel = false; //性能模式
+        private string textColor = "#000000"; //字体颜色
+        private double imgPanelWidth = (double)CommonEnum.IMAGE_PANEL_WIDTH;
+        private double imgPanelHeight = (double)CommonEnum.IMAGE_PANEL_HEIGHT;
+
 
         #region GetSet
 
+        public double ImgPanelWidth
+        {
+            get
+            {
+                if (imgPanelWidth == 0d) return (double)CommonEnum.IMAGE_PANEL_WIDTH;
+                return imgPanelWidth;
+            }
+            set
+            {
+                imgPanelWidth = value;
+                OnPropertyChanged("ImgPanelWidth");
+            }
+        }
+
+        public double ImgPanelHeight
+        {
+            get
+            {
+                if (imgPanelHeight == 0d) return (double)CommonEnum.IMAGE_PANEL_HEIGHT;
+                return imgPanelHeight;
+            }
+            set
+            {
+                imgPanelHeight = value;
+                OnPropertyChanged("ImgPanelHeight");
+            }
+        }
+
+        public string TextColor
+        {
+            get
+            {
+                if (textColor == null) return "#000000";
+                return textColor;
+            }
+            set
+            {
+                textColor = value;
+                OnPropertyChanged("TextColor");
+            }
+        }
+
         public bool PMModel
         {
             get

+ 19 - 4
ViewModel/IconInfo.cs

@@ -20,13 +20,28 @@ namespace GeekDesk.ViewModel
         private BitmapImage bitmapImage; //位图
         private byte[] imageByteArr; //图片 byte数组
         private string content; //显示信息
-        private int imageWidth = (int)MainWindowEnum.IMAGE_WIDTH; //图片宽度
-        private int imageHeight = (int)MainWindowEnum.IMAGE_HEIGHT; //图片高度
+        private int imageWidth = (int)CommonEnum.IMAGE_WIDTH; //图片宽度
+        private int imageHeight = (int)CommonEnum.IMAGE_HEIGHT; //图片高度
         private bool adminStartUp = false; //始终管理员方式启动  默认否
         private byte[] defaultImage; //默认图标
 
+        private IconType iconType = IconType.OTHER;
 
 
+        public IconType IconType
+        {
+            get
+            {
+                if (iconType == 0) return IconType.OTHER;
+                return iconType;
+            }
+            set
+            {
+                iconType = value;
+                OnPropertyChanged("IconType");
+            }
+        }
+
         public byte[] DefaultImage
         {
             get
@@ -142,7 +157,7 @@ namespace GeekDesk.ViewModel
             get
             {
                 // 为了兼容旧版 暂时使用默认
-                return (int)MainWindowEnum.IMAGE_WIDTH;
+                return (int)CommonEnum.IMAGE_WIDTH;
             }
             set
             {
@@ -156,7 +171,7 @@ namespace GeekDesk.ViewModel
             get
             {
                 // 为了兼容旧版 暂时使用默认
-                return (int)MainWindowEnum.IMAGE_HEIGHT;
+                return (int)CommonEnum.IMAGE_HEIGHT;
             }
             set
             {

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác