Files
FloatingStatusWindow/TestWindow/WindowSource4.cs
Chris Kaczor e2236ddc16 Improvements
- Update to .NET 10
- Set actual window title to window name
- Add new way to identify other windows
2026-02-24 17:11:21 -05:00

76 lines
1.9 KiB
C#

using ChrisKaczor.Wpf.Windows.FloatingStatusWindow;
using System;
using System.Globalization;
using System.Reflection;
using System.Timers;
using System.Windows.Threading;
namespace TestWindow;
internal class WindowSource4 : IWindowSource, IDisposable
{
private readonly FloatingStatusWindow _floatingStatusWindow;
private readonly Timer _timer;
private readonly Dispatcher _dispatcher;
internal WindowSource4()
{
_floatingStatusWindow = new FloatingStatusWindow(this);
_floatingStatusWindow.SetText("Loading...");
_dispatcher = Dispatcher.CurrentDispatcher;
_timer = new Timer(1000);
_timer.Elapsed += HandleTimerElapsed;
_timer.Enabled = true;
}
private void HandleTimerElapsed(object sender, ElapsedEventArgs e)
{
_dispatcher.InvokeAsync(() => _floatingStatusWindow.SetText(DateTime.Now.ToString(CultureInfo.InvariantCulture)));
}
public void Dispose()
{
_timer.Enabled = false;
_timer.Dispose();
_floatingStatusWindow.Save();
_floatingStatusWindow.Dispose();
}
public Guid Id => Guid.Parse("0DD89F7E-3AD4-4226-8CBD-B75C8EBEEF32");
public string Name => "Test Window 4";
public System.Drawing.Icon Icon => Properties.Resources.ApplicationIcon;
public bool HasSettingsMenu => true;
public bool HasAboutMenu => true;
public void ShowAbout()
{
_floatingStatusWindow.SetText(Assembly.GetEntryAssembly()?.GetName().Version?.ToString());
}
public void ShowSettings()
{
}
public bool HasRefreshMenu => true;
public void Refresh()
{
}
public string WindowSettings
{
get => Properties.Settings.Default.WindowSettings4;
set
{
Properties.Settings.Default.WindowSettings4 = value;
Properties.Settings.Default.Save();
}
}
}