Browse Source

优化贴边隐藏动画

liufei 3 years ago
parent
commit
1b9e4fc79d
1 changed files with 77 additions and 66 deletions
  1. 77 66
      MainWindow.xaml.cs

+ 77 - 66
MainWindow.xaml.cs

@@ -38,7 +38,6 @@ namespace GeekDesk
         public static int hotKeyId = -1;
         public static int hotKeyId = -1;
         public static int toDoHotKeyId = -1;
         public static int toDoHotKeyId = -1;
         public static MainWindow mainWindow;
         public static MainWindow mainWindow;
-        public static MarginHide hide;
         public MainWindow()
         public MainWindow()
         {
         {
             LoadData();
             LoadData();
@@ -50,10 +49,10 @@ namespace GeekDesk
             ToDoTask.BackLogCheck();
             ToDoTask.BackLogCheck();
 
 
             ////实例化隐藏 Hide类,进行时间timer设置
             ////实例化隐藏 Hide类,进行时间timer设置
-            hide = new MarginHide(this);
+            MarginHide.ReadyHide(this);
             if (appData.AppConfig.MarginHide)
             if (appData.AppConfig.MarginHide)
             {
             {
-                hide.TimerSet();
+                MarginHide.StartHide();
             }
             }
         }
         }
 
 
@@ -65,11 +64,11 @@ namespace GeekDesk
             this.DataContext = appData;
             this.DataContext = appData;
             if (appData.MenuList.Count == 0)
             if (appData.MenuList.Count == 0)
             {
             {
-                appData.MenuList.Add(new MenuInfo() { MenuName = "NewMenu", MenuId = System.Guid.NewGuid().ToString(), MenuEdit = Visibility.Collapsed});
+                appData.MenuList.Add(new MenuInfo() { MenuName = "NewMenu", MenuId = System.Guid.NewGuid().ToString(), MenuEdit = Visibility.Collapsed });
             }
             }
 
 
             this.Width = appData.AppConfig.WindowWidth;
             this.Width = appData.AppConfig.WindowWidth;
-            this.Height = appData.AppConfig.WindowHeight;            
+            this.Height = appData.AppConfig.WindowHeight;
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -84,11 +83,13 @@ namespace GeekDesk
                 if (appData.AppConfig.AppAnimation)
                 if (appData.AppConfig.AppAnimation)
                 {
                 {
                     this.Opacity = 0;
                     this.Opacity = 0;
-                } else
+                }
+                else
                 {
                 {
                     this.Visibility = Visibility.Collapsed;
                     this.Visibility = Visibility.Collapsed;
                 }
                 }
-            } else
+            }
+            else
             {
             {
                 ShowApp();
                 ShowApp();
             }
             }
@@ -130,7 +131,7 @@ namespace GeekDesk
                     {
                     {
                         if (MotionControl.hotkeyFinished)
                         if (MotionControl.hotkeyFinished)
                         {
                         {
-                            if (mainWindow.Visibility == Visibility.Collapsed || mainWindow.Opacity == 0)
+                            if (mainWindow.Visibility == Visibility.Collapsed || mainWindow.Opacity == 0 || MarginHide.IS_HIDE)
                             {
                             {
                                 ShowApp();
                                 ShowApp();
                             }
                             }
@@ -160,44 +161,7 @@ namespace GeekDesk
             }
             }
         }
         }
 
 
-        /// <summary>
-        /// 淡入淡出效果
-        /// </summary>
-        /// <param name="opacity"></param>
-        /// <param name="milliseconds"></param>
-        /// <param name="visibility"></param>
-        public static void FadeStoryBoard(int opacity, int milliseconds, Visibility visibility)
-        {
-            if (appData.AppConfig.AppAnimation)
-            {
-                DoubleAnimation opacityAnimation = new DoubleAnimation
-                {
-                    From = mainWindow.Opacity,
-                    To = opacity,
-                    Duration = new Duration(TimeSpan.FromMilliseconds(milliseconds))
-                };
-                opacityAnimation.Completed += (s, e) =>
-                {
-                    mainWindow.BeginAnimation(OpacityProperty, null);
-                    if (visibility == Visibility.Visible)
-                    {
-                        mainWindow.Opacity = 1;
-                    } else
-                    {
-                        mainWindow.Opacity = 0;
-                    }
-                };
-                Timeline.SetDesiredFrameRate(opacityAnimation, 30);
-                mainWindow.BeginAnimation(OpacityProperty, opacityAnimation);
-            } else
-            {
-                //防止关闭动画后 窗体仍是0透明度
-                mainWindow.Opacity = 1;
-                mainWindow.Visibility = visibility;
-            }
-            
 
 
-        }
 
 
         /// <summary>
         /// <summary>
         /// 注册新建待办的热键
         /// 注册新建待办的热键
@@ -207,7 +171,7 @@ namespace GeekDesk
             try
             try
             {
             {
 
 
-                if (appData.AppConfig.ToDoHotkeyModifiers!=0)
+                if (appData.AppConfig.ToDoHotkeyModifiers != 0)
                 {
                 {
                     //加载完毕注册热键
                     //加载完毕注册热键
                     toDoHotKeyId = GlobalHotKey.RegisterHotKey(appData.AppConfig.ToDoHotkeyModifiers, appData.AppConfig.ToDoHotkey, () =>
                     toDoHotKeyId = GlobalHotKey.RegisterHotKey(appData.AppConfig.ToDoHotkeyModifiers, appData.AppConfig.ToDoHotkey, () =>
@@ -253,7 +217,7 @@ namespace GeekDesk
         }
         }
 
 
 
 
-       
+
         /// <summary>
         /// <summary>
         /// 程序窗体拖动
         /// 程序窗体拖动
         /// </summary>
         /// </summary>
@@ -299,13 +263,14 @@ namespace GeekDesk
             if (appData.AppConfig.AppAnimation)
             if (appData.AppConfig.AppAnimation)
             {
             {
                 FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
                 FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
-            } else
+            }
+            else
             {
             {
                 this.Visibility = Visibility.Collapsed;
                 this.Visibility = Visibility.Collapsed;
             }
             }
         }
         }
 
 
-       
+
 
 
         ///// <summary>
         ///// <summary>
         ///// 左侧栏宽度改变 持久化
         ///// 左侧栏宽度改变 持久化
@@ -317,7 +282,7 @@ namespace GeekDesk
         //    appData.AppConfig.MenuCardWidth = LeftColumn.Width.Value;
         //    appData.AppConfig.MenuCardWidth = LeftColumn.Width.Value;
         //}
         //}
 
 
-       
+
 
 
         /// <summary>
         /// <summary>
         /// 右键任务栏图标 显示主面板
         /// 右键任务栏图标 显示主面板
@@ -335,6 +300,8 @@ namespace GeekDesk
             //{
             //{
             //    return;
             //    return;
             //}
             //}
+            //修改贴边隐藏状态为未隐藏
+            MarginHide.IS_HIDE = false;
             if (appData.AppConfig.FollowMouse)
             if (appData.AppConfig.FollowMouse)
             {
             {
                 ShowWindowFollowMouse.Show(mainWindow, MousePosition.CENTER, 0, 0, false);
                 ShowWindowFollowMouse.Show(mainWindow, MousePosition.CENTER, 0, 0, false);
@@ -348,6 +315,45 @@ namespace GeekDesk
             FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
             FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
         }
         }
 
 
+        /// <summary>
+        /// 淡入淡出效果
+        /// </summary>
+        /// <param name="opacity"></param>
+        /// <param name="milliseconds"></param>
+        /// <param name="visibility"></param>
+        public static void FadeStoryBoard(int opacity, int milliseconds, Visibility visibility)
+        {
+            if (appData.AppConfig.AppAnimation)
+            {
+                DoubleAnimation opacityAnimation = new DoubleAnimation
+                {
+                    From = mainWindow.Opacity,
+                    To = opacity,
+                    Duration = new Duration(TimeSpan.FromMilliseconds(milliseconds))
+                };
+                opacityAnimation.Completed += (s, e) =>
+                {
+                    mainWindow.BeginAnimation(OpacityProperty, null);
+                    if (visibility == Visibility.Visible)
+                    {
+                        mainWindow.Opacity = 1;
+                    }
+                    else
+                    {
+                        mainWindow.Opacity = 0;
+                    }
+                };
+                Timeline.SetDesiredFrameRate(opacityAnimation, 60);
+                mainWindow.BeginAnimation(OpacityProperty, opacityAnimation);
+            }
+            else
+            {
+                //防止关闭动画后 窗体仍是0透明度
+                mainWindow.Opacity = 1;
+                mainWindow.Visibility = visibility;
+            }
+        }
+
 
 
 
 
 
 
@@ -392,19 +398,6 @@ namespace GeekDesk
             p.Start();
             p.Start();
         }
         }
 
 
-        /// <summary>
-        /// 右键任务栏图标退出
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void ExitApp(object sender, RoutedEventArgs e)
-        {
-            if (appData.AppConfig.MouseMiddleShow)
-            {
-                MouseHookThread.Dispose();
-            }
-            Application.Current.Shutdown();
-        }
 
 
 
 
 
 
@@ -451,7 +444,7 @@ namespace GeekDesk
             if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS)
             if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS)
             {
             {
                 //如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
                 //如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
-                if (appData.AppConfig.MarginHide && !hide.IsMargin())
+                if (appData.AppConfig.MarginHide && !MarginHide.IS_HIDE)
                 {
                 {
                     this.Visibility = Visibility.Collapsed;
                     this.Visibility = Visibility.Collapsed;
                 }
                 }
@@ -476,6 +469,21 @@ namespace GeekDesk
             }
             }
         }
         }
 
 
+
+
+        /// <summary>
+        /// 右键任务栏图标退出
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void ExitApp(object sender, RoutedEventArgs e)
+        {
+            if (appData.AppConfig.MouseMiddleShow)
+            {
+                MouseHookThread.Dispose();
+            }
+            Application.Current.Shutdown();
+        }
         /// <summary>
         /// <summary>
         /// 重启
         /// 重启
         /// </summary>
         /// </summary>
@@ -483,10 +491,13 @@ namespace GeekDesk
         /// <param name="e"></param>
         /// <param name="e"></param>
         private void ReStartApp(object sender, RoutedEventArgs e)
         private void ReStartApp(object sender, RoutedEventArgs e)
         {
         {
-            MouseHookThread.Dispose();
+            if (appData.AppConfig.MouseMiddleShow)
+            {
+                MouseHookThread.Dispose();
+            }
 
 
             Process p = new Process();
             Process p = new Process();
-            p.StartInfo.FileName = Constants.APP_DIR + Constants.MY_NAME + ".exe";
+            p.StartInfo.FileName = Constants.APP_DIR + "GeekDesk.exe";
             p.StartInfo.WorkingDirectory = Constants.APP_DIR;
             p.StartInfo.WorkingDirectory = Constants.APP_DIR;
             p.Start();
             p.Start();