BASE changed interface
This commit is contained in:
commit
fd6bc3459f
33 files changed
+3047
No files matched your search
@@ -0,0 +1,75 @@
|
||||
using System.Drawing;
|
||||
using System.Windows;
|
||||
using Forms = System.Windows.Forms;
|
||||
|
||||
namespace FoxBrowser.UI;
|
||||
|
||||
public sealed class TrayIconManager : IDisposable
|
||||
{
|
||||
private readonly Forms.NotifyIcon _icon;
|
||||
private readonly Window _window;
|
||||
private readonly Action _exit;
|
||||
|
||||
public TrayIconManager(Window window, Action exit)
|
||||
{
|
||||
_window = window;
|
||||
_exit = exit;
|
||||
|
||||
Icon? icon = null;
|
||||
try
|
||||
{
|
||||
var icoPath = System.IO.Path.Combine(AppContext.BaseDirectory, "FoxBrowser.ico");
|
||||
if (System.IO.File.Exists(icoPath)) icon = new Icon(icoPath);
|
||||
}
|
||||
catch { }
|
||||
|
||||
_icon = new Forms.NotifyIcon
|
||||
{
|
||||
Icon = icon ?? SystemIcons.Application,
|
||||
Text = "FoxBrowser",
|
||||
Visible = true,
|
||||
ContextMenuStrip = BuildMenu()
|
||||
};
|
||||
_icon.MouseClick += OnMouseClick;
|
||||
}
|
||||
|
||||
public void MinimizeToTray()
|
||||
{
|
||||
_window.ShowInTaskbar = false;
|
||||
_window.Hide();
|
||||
}
|
||||
|
||||
public void ToggleWindow()
|
||||
{
|
||||
if (_window.IsVisible && _window.WindowState != WindowState.Minimized)
|
||||
{
|
||||
MinimizeToTray();
|
||||
return;
|
||||
}
|
||||
|
||||
_window.ShowInTaskbar = true;
|
||||
_window.Show();
|
||||
_window.WindowState = WindowState.Normal;
|
||||
_window.Activate();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_icon.MouseClick -= OnMouseClick;
|
||||
_icon.Visible = false;
|
||||
_icon.Dispose();
|
||||
}
|
||||
|
||||
private void OnMouseClick(object? sender, Forms.MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == Forms.MouseButtons.Left) ToggleWindow();
|
||||
}
|
||||
|
||||
private Forms.ContextMenuStrip BuildMenu()
|
||||
{
|
||||
var menu = new Forms.ContextMenuStrip();
|
||||
menu.Items.Add("Показати / сховати", null, (_, _) => ToggleWindow());
|
||||
menu.Items.Add("Вийти", null, (_, _) => _exit());
|
||||
return menu;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user