using FloatingStatusWindowLibrary; using System; using System.Globalization; using System.Timers; using System.Windows.Threading; namespace TestWindow { internal class WindowSource1 : IWindowSource, IDisposable { private readonly FloatingStatusWindow _floatingStatusWindow; private readonly Timer _timer; private readonly Dispatcher _dispatcher; internal WindowSource1() { _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 string Name { get { return "Test Window 1"; } } public System.Drawing.Icon Icon { get { return Properties.Resources.ApplicationIcon; } } public bool HasSettingsMenu { get { return true; } } public void ShowSettings() { } public bool HasRefreshMenu { get { return true; } } public void Refresh() { } public string WindowSettings { get { return Properties.Settings.Default.WindowSettings1; } set { Properties.Settings.Default.WindowSettings1 = value; Properties.Settings.Default.Save(); } } } }