2025-07-28 14:40:44 +08:00
|
|
|
|
using System;
|
2025-05-25 09:29:48 +08:00
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
|
using System.Windows;
|
|
|
|
|
|
using System.Windows.Controls;
|
2025-07-28 14:40:44 +08:00
|
|
|
|
using System.Windows.Forms;
|
2025-05-25 09:29:48 +08:00
|
|
|
|
using System.Windows.Interop;
|
|
|
|
|
|
using Hardcodet.Wpf.TaskbarNotification;
|
2025-07-28 14:40:44 +08:00
|
|
|
|
using Ink_Canvas.Helpers;
|
|
|
|
|
|
using iNKORE.UI.WPF.Modern.Controls;
|
|
|
|
|
|
using Application = System.Windows.Application;
|
|
|
|
|
|
using ContextMenu = System.Windows.Controls.ContextMenu;
|
|
|
|
|
|
using MenuItem = System.Windows.Controls.MenuItem;
|
2025-05-25 09:29:48 +08:00
|
|
|
|
|
|
|
|
|
|
namespace Ink_Canvas
|
|
|
|
|
|
{
|
|
|
|
|
|
public partial class App : Application {
|
|
|
|
|
|
|
|
|
|
|
|
private void SysTrayMenu_Opened(object sender, RoutedEventArgs e) {
|
|
|
|
|
|
var s = (ContextMenu)sender;
|
|
|
|
|
|
var FoldFloatingBarTrayIconMenuItemIconEyeOff =
|
|
|
|
|
|
(Image)((Grid)((MenuItem)s.Items[s.Items.Count-5]).Icon).Children[0];
|
|
|
|
|
|
var FoldFloatingBarTrayIconMenuItemIconEyeOn =
|
|
|
|
|
|
(Image)((Grid)((MenuItem)s.Items[s.Items.Count - 5]).Icon).Children[1];
|
|
|
|
|
|
var FoldFloatingBarTrayIconMenuItemHeaderText =
|
|
|
|
|
|
(TextBlock)((SimpleStackPanel)((MenuItem)s.Items[s.Items.Count - 5]).Header).Children[0];
|
|
|
|
|
|
var ResetFloatingBarPositionTrayIconMenuItem = (MenuItem)s.Items[s.Items.Count - 4];
|
|
|
|
|
|
var HideICCMainWindowTrayIconMenuItem = (MenuItem)s.Items[s.Items.Count - 9];
|
2025-07-28 14:40:44 +08:00
|
|
|
|
var mainWin = (MainWindow)Current.MainWindow;
|
2025-05-25 09:29:48 +08:00
|
|
|
|
if (mainWin.IsLoaded) {
|
|
|
|
|
|
// 判斷是否在收納模式中
|
|
|
|
|
|
if (mainWin.isFloatingBarFolded) {
|
|
|
|
|
|
FoldFloatingBarTrayIconMenuItemIconEyeOff.Visibility = Visibility.Hidden;
|
|
|
|
|
|
FoldFloatingBarTrayIconMenuItemIconEyeOn.Visibility = Visibility.Visible;
|
|
|
|
|
|
FoldFloatingBarTrayIconMenuItemHeaderText.Text = "退出收纳模式";
|
|
|
|
|
|
if (!HideICCMainWindowTrayIconMenuItem.IsChecked) {
|
|
|
|
|
|
ResetFloatingBarPositionTrayIconMenuItem.IsEnabled = false;
|
|
|
|
|
|
ResetFloatingBarPositionTrayIconMenuItem.Opacity = 0.5;
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
FoldFloatingBarTrayIconMenuItemIconEyeOff.Visibility = Visibility.Visible;
|
|
|
|
|
|
FoldFloatingBarTrayIconMenuItemIconEyeOn.Visibility = Visibility.Hidden;
|
|
|
|
|
|
FoldFloatingBarTrayIconMenuItemHeaderText.Text = "切换为收纳模式";
|
|
|
|
|
|
if (!HideICCMainWindowTrayIconMenuItem.IsChecked) {
|
|
|
|
|
|
ResetFloatingBarPositionTrayIconMenuItem.IsEnabled = true;
|
|
|
|
|
|
ResetFloatingBarPositionTrayIconMenuItem.Opacity = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void CloseAppTrayIconMenuItem_Clicked(object sender, RoutedEventArgs e) {
|
2025-07-28 14:40:44 +08:00
|
|
|
|
var mainWin = (MainWindow)Current.MainWindow;
|
2025-06-12 10:34:29 +08:00
|
|
|
|
if (mainWin.IsLoaded) {
|
2025-07-28 14:40:44 +08:00
|
|
|
|
IsAppExitByUser = true;
|
|
|
|
|
|
Current.Shutdown();
|
2025-06-12 10:34:29 +08:00
|
|
|
|
// mainWin.BtnExit_Click(null,null);
|
|
|
|
|
|
}
|
2025-05-25 09:29:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void RestartAppTrayIconMenuItem_Clicked(object sender, RoutedEventArgs e) {
|
2025-07-28 14:40:44 +08:00
|
|
|
|
var mainWin = (MainWindow)Current.MainWindow;
|
2025-06-13 09:19:44 +08:00
|
|
|
|
if (mainWin.IsLoaded) {
|
2025-07-28 14:40:44 +08:00
|
|
|
|
IsAppExitByUser = true;
|
2025-07-28 17:44:15 +08:00
|
|
|
|
|
2025-06-18 18:16:48 +08:00
|
|
|
|
try {
|
2025-07-28 17:44:15 +08:00
|
|
|
|
// 启动新实例,添加 -m 参数允许多实例启动
|
2025-06-18 18:16:48 +08:00
|
|
|
|
string exePath = Process.GetCurrentProcess().MainModule.FileName;
|
|
|
|
|
|
ProcessStartInfo startInfo = new ProcessStartInfo();
|
|
|
|
|
|
startInfo.FileName = exePath;
|
2025-07-28 17:44:15 +08:00
|
|
|
|
startInfo.Arguments = "-m";
|
2025-06-18 18:16:48 +08:00
|
|
|
|
startInfo.UseShellExecute = true;
|
2025-07-28 17:44:15 +08:00
|
|
|
|
|
2025-06-18 18:16:48 +08:00
|
|
|
|
// 启动进程但不等待
|
|
|
|
|
|
Process.Start(startInfo);
|
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
|
LogHelper.NewLog($"重启程序时出错: {ex.Message}");
|
|
|
|
|
|
}
|
2025-07-28 17:44:15 +08:00
|
|
|
|
|
2025-06-18 18:16:48 +08:00
|
|
|
|
// 退出当前实例
|
2025-07-28 14:40:44 +08:00
|
|
|
|
Current.Shutdown();
|
2025-06-13 09:19:44 +08:00
|
|
|
|
}
|
2025-05-25 09:29:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void ForceFullScreenTrayIconMenuItem_Clicked(object sender, RoutedEventArgs e) {
|
2025-07-28 14:40:44 +08:00
|
|
|
|
var mainWin = (MainWindow)Current.MainWindow;
|
2025-05-25 09:29:48 +08:00
|
|
|
|
if (mainWin.IsLoaded) {
|
|
|
|
|
|
Ink_Canvas.MainWindow.MoveWindow(new WindowInteropHelper(mainWin).Handle, 0, 0,
|
2025-07-28 14:40:44 +08:00
|
|
|
|
Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, true);
|
|
|
|
|
|
Ink_Canvas.MainWindow.ShowNewMessage($"已强制全屏化:{Screen.PrimaryScreen.Bounds.Width}x{Screen.PrimaryScreen.Bounds.Height}(缩放比例为{Screen.PrimaryScreen.Bounds.Width / SystemParameters.PrimaryScreenWidth}x{Screen.PrimaryScreen.Bounds.Height / SystemParameters.PrimaryScreenHeight})");
|
2025-05-25 09:29:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void FoldFloatingBarTrayIconMenuItem_Clicked(object sender, RoutedEventArgs e)
|
|
|
|
|
|
{
|
2025-07-28 14:40:44 +08:00
|
|
|
|
var mainWin = (MainWindow)Current.MainWindow;
|
2025-05-25 09:29:48 +08:00
|
|
|
|
if (mainWin.IsLoaded)
|
|
|
|
|
|
if (mainWin.isFloatingBarFolded) mainWin.UnFoldFloatingBar_MouseUp(new object(),null);
|
|
|
|
|
|
else mainWin.FoldFloatingBar_MouseUp(new object(),null);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void ResetFloatingBarPositionTrayIconMenuItem_Clicked(object sender, RoutedEventArgs e)
|
|
|
|
|
|
{
|
2025-07-28 14:40:44 +08:00
|
|
|
|
var mainWin = (MainWindow)Current.MainWindow;
|
2025-05-25 09:29:48 +08:00
|
|
|
|
if (mainWin.IsLoaded) {
|
|
|
|
|
|
var isInPPTPresentationMode = false;
|
|
|
|
|
|
Dispatcher.Invoke(() => {
|
|
|
|
|
|
isInPPTPresentationMode = mainWin.BtnPPTSlideShowEnd.Visibility == Visibility.Visible;
|
|
|
|
|
|
});
|
|
|
|
|
|
if (!mainWin.isFloatingBarFolded) {
|
|
|
|
|
|
if (!isInPPTPresentationMode) mainWin.PureViewboxFloatingBarMarginAnimationInDesktopMode();
|
|
|
|
|
|
else mainWin.PureViewboxFloatingBarMarginAnimationInPPTMode();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void HideICCMainWindowTrayIconMenuItem_Checked(object sender, RoutedEventArgs e) {
|
|
|
|
|
|
var mi = (MenuItem)sender;
|
2025-07-28 14:40:44 +08:00
|
|
|
|
var mainWin = (MainWindow)Current.MainWindow;
|
2025-05-25 09:29:48 +08:00
|
|
|
|
if (mainWin.IsLoaded) {
|
|
|
|
|
|
mainWin.Hide();
|
2025-07-28 14:40:44 +08:00
|
|
|
|
var s = ((TaskbarIcon)Current.Resources["TaskbarTrayIcon"]).ContextMenu;
|
2025-05-25 09:29:48 +08:00
|
|
|
|
var ResetFloatingBarPositionTrayIconMenuItem = (MenuItem)s.Items[s.Items.Count - 4];
|
|
|
|
|
|
var FoldFloatingBarTrayIconMenuItem = (MenuItem)s.Items[s.Items.Count - 5];
|
|
|
|
|
|
var ForceFullScreenTrayIconMenuItem = (MenuItem)s.Items[s.Items.Count - 6];
|
|
|
|
|
|
ResetFloatingBarPositionTrayIconMenuItem.IsEnabled = false;
|
|
|
|
|
|
FoldFloatingBarTrayIconMenuItem.IsEnabled = false;
|
|
|
|
|
|
ForceFullScreenTrayIconMenuItem.IsEnabled = false;
|
|
|
|
|
|
ResetFloatingBarPositionTrayIconMenuItem.Opacity = 0.5;
|
|
|
|
|
|
FoldFloatingBarTrayIconMenuItem.Opacity = 0.5;
|
|
|
|
|
|
ForceFullScreenTrayIconMenuItem.Opacity = 0.5;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
mi.IsChecked = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void HideICCMainWindowTrayIconMenuItem_UnChecked(object sender, RoutedEventArgs e) {
|
|
|
|
|
|
var mi = (MenuItem)sender;
|
2025-07-28 14:40:44 +08:00
|
|
|
|
var mainWin = (MainWindow)Current.MainWindow;
|
2025-05-25 09:29:48 +08:00
|
|
|
|
if (mainWin.IsLoaded) {
|
|
|
|
|
|
mainWin.Show();
|
2025-07-28 14:40:44 +08:00
|
|
|
|
var s = ((TaskbarIcon)Current.Resources["TaskbarTrayIcon"]).ContextMenu;
|
2025-05-25 09:29:48 +08:00
|
|
|
|
var ResetFloatingBarPositionTrayIconMenuItem = (MenuItem)s.Items[s.Items.Count - 4];
|
|
|
|
|
|
var FoldFloatingBarTrayIconMenuItem = (MenuItem)s.Items[s.Items.Count - 5];
|
|
|
|
|
|
var ForceFullScreenTrayIconMenuItem = (MenuItem)s.Items[s.Items.Count - 6];
|
|
|
|
|
|
ResetFloatingBarPositionTrayIconMenuItem.IsEnabled = true;
|
|
|
|
|
|
FoldFloatingBarTrayIconMenuItem.IsEnabled = true;
|
|
|
|
|
|
ForceFullScreenTrayIconMenuItem.IsEnabled = true;
|
|
|
|
|
|
ResetFloatingBarPositionTrayIconMenuItem.Opacity = 1;
|
|
|
|
|
|
FoldFloatingBarTrayIconMenuItem.Opacity = 1;
|
|
|
|
|
|
ForceFullScreenTrayIconMenuItem.Opacity = 1;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
mi.IsChecked = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|