mirror of
https://github.com/ckaczor/FloatingStatusWindow.git
synced 2026-01-13 17:22:47 -05:00
Initial commit
This commit is contained in:
98
FloatingStatusWindowLibrary/FloatingStatusWindow.cs
Normal file
98
FloatingStatusWindowLibrary/FloatingStatusWindow.cs
Normal file
@@ -0,0 +1,98 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user