Files
FloatingStatusWindow/FloatingStatusWindowLibrary/FloatingStatusWindow.cs
2014-04-30 17:37:45 -04:00

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();
}
}
}