mirror of
https://github.com/ckaczor/FloatingStatusWindow.git
synced 2026-01-14 09:59:12 -05:00
99 lines
2.8 KiB
C#
99 lines
2.8 KiB
C#
using Hardcodet.Wpf.TaskbarNotification;
|
|
using System;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
|
|
namespace FloatingStatusWindowLibrary
|
|
{
|
|
public class FloatingStatusWindow : IDisposable
|
|
{
|
|
private readonly MainWindow _mainWindow;
|
|
private readonly TaskbarIcon _taskbarIcon;
|
|
private readonly MenuItem _lockMenuItem;
|
|
|
|
private readonly IWindowSource _windowSource;
|
|
|
|
public FloatingStatusWindow(IWindowSource windowSource)
|
|
{
|
|
_windowSource = windowSource;
|
|
|
|
var contextMenu = new ContextMenu();
|
|
contextMenu.Opened += HandleContextMenuOpened;
|
|
|
|
_lockMenuItem = new MenuItem
|
|
{
|
|
Name = "contextMenuItemLocked",
|
|
IsChecked = false,
|
|
Header = Properties.Resources.ContextMenuLocked
|
|
};
|
|
_lockMenuItem.Click += HandleLockedMenuItemClicked;
|
|
contextMenu.Items.Add(_lockMenuItem);
|
|
|
|
contextMenu.Items.Add(new Separator());
|
|
|
|
var menuItem = new MenuItem
|
|
{
|
|
Name = "contextMenuItemExit",
|
|
Header = Properties.Resources.ContextMenuExit
|
|
};
|
|
menuItem.Click += HandleExitMenuItemClick;
|
|
contextMenu.Items.Add(menuItem);
|
|
|
|
_taskbarIcon = new TaskbarIcon
|
|
{
|
|
ToolTipText = _windowSource.Name,
|
|
Icon = _windowSource.Icon,
|
|
ContextMenu = contextMenu
|
|
};
|
|
|
|
_mainWindow = new MainWindow(windowSource);
|
|
_mainWindow.Closed += HandleMainWindowClosed;
|
|
|
|
_mainWindow.Show();
|
|
}
|
|
|
|
private void HandleMainWindowClosed(object sender, EventArgs e)
|
|
{
|
|
_taskbarIcon.Dispose();
|
|
}
|
|
|
|
public ContextMenu ContextMenu
|
|
{
|
|
get { return _taskbarIcon.ContextMenu; }
|
|
}
|
|
|
|
private void HandleContextMenuOpened(object sender, RoutedEventArgs e)
|
|
{
|
|
_lockMenuItem.IsChecked = _mainWindow.WindowSettings.Locked;
|
|
}
|
|
|
|
public void SetText(string text)
|
|
{
|
|
_mainWindow.HtmlLabel.Text = text;
|
|
}
|
|
|
|
private void HandleLockedMenuItemClicked(object sender, RoutedEventArgs e)
|
|
{
|
|
_mainWindow.WindowSettings.Locked = !_mainWindow.WindowSettings.Locked;
|
|
_mainWindow.WindowSettings.Apply();
|
|
}
|
|
|
|
private void HandleExitMenuItemClick(object sender, RoutedEventArgs e)
|
|
{
|
|
_mainWindow.Close();
|
|
}
|
|
|
|
public void Save()
|
|
{
|
|
_windowSource.WindowSettings = _mainWindow.WindowSettings.Save();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_taskbarIcon.Dispose();
|
|
|
|
_mainWindow.Close();
|
|
}
|
|
}
|
|
}
|