0.9.0
This commit is contained in:
+90
@@ -0,0 +1,90 @@
|
||||
using H.NotifyIcon;
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Microsoft.UI.Xaml.Media.Imaging;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
namespace HearingProtector;
|
||||
|
||||
public partial class App : Application
|
||||
{
|
||||
// ← ДОБАВИТЬ: ссылка на единственный экземпляр App
|
||||
public static App? CurrentApp { get; private set; }
|
||||
|
||||
public Window? MainWindow { get; private set; }
|
||||
|
||||
private TaskbarIcon? _trayIcon;
|
||||
|
||||
public App()
|
||||
{
|
||||
CurrentApp = this; // ← ДОБАВИТЬ до InitializeComponent()
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public static string Version { get; private set; } = "?";
|
||||
|
||||
protected override void OnLaunched(LaunchActivatedEventArgs args)
|
||||
{
|
||||
Version = typeof(App).Assembly
|
||||
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?
|
||||
.InformationalVersion ?? "?";
|
||||
|
||||
MainWindow = new MainWindow();
|
||||
|
||||
var openItem = new MenuFlyoutItem
|
||||
{
|
||||
Text = "Открыть",
|
||||
Command = new RelayCommand(OpenFromTray)
|
||||
};
|
||||
|
||||
var exitItem = new MenuFlyoutItem
|
||||
{
|
||||
Text = "Выход",
|
||||
Command = new RelayCommand(ExitApp)
|
||||
};
|
||||
|
||||
var menu = new MenuFlyout();
|
||||
menu.Items.Add(openItem);
|
||||
menu.Items.Add(new MenuFlyoutSeparator());
|
||||
menu.Items.Add(exitItem);
|
||||
|
||||
_trayIcon = new TaskbarIcon
|
||||
{
|
||||
ToolTipText = $"Hearing Protector v{Version}",
|
||||
IconSource = new BitmapImage(new Uri(
|
||||
Path.Combine(AppContext.BaseDirectory, "Assets", "app.ico"))),
|
||||
ContextFlyout = menu,
|
||||
MenuActivation = H.NotifyIcon.Core.PopupActivationMode.RightClick,
|
||||
NoLeftClickDelay = true,
|
||||
DoubleClickCommand = new RelayCommand(OpenFromTray)
|
||||
};
|
||||
|
||||
_trayIcon.ForceCreate();
|
||||
|
||||
MainWindow.Activate();
|
||||
}
|
||||
|
||||
private void OpenFromTray()
|
||||
{
|
||||
MainWindow?.DispatcherQueue.TryEnqueue(() =>
|
||||
{
|
||||
(MainWindow as MainWindow)?.RestoreFromTray();
|
||||
});
|
||||
}
|
||||
|
||||
private void ExitApp()
|
||||
{
|
||||
MainWindow?.DispatcherQueue.TryEnqueue(() =>
|
||||
{
|
||||
if (MainWindow is MainWindow mw)
|
||||
mw.ReadyToClose = true;
|
||||
|
||||
_trayIcon?.Dispose();
|
||||
_trayIcon = null;
|
||||
|
||||
Exit();
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user