2026-05-07 11:09:56 -04:00
|
|
|
using System.Windows;
|
2026-05-08 00:55:57 -04:00
|
|
|
using System.Windows.Shapes;
|
2026-05-07 11:40:49 -04:00
|
|
|
using TeamsISO.App.ViewModels;
|
2026-05-07 11:09:56 -04:00
|
|
|
|
|
|
|
|
namespace TeamsISO.App;
|
|
|
|
|
|
|
|
|
|
public partial class MainWindow : Window
|
|
|
|
|
{
|
|
|
|
|
public MainWindow()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
2026-05-08 00:55:57 -04:00
|
|
|
StateChanged += OnWindowStateChanged;
|
2026-05-07 11:09:56 -04:00
|
|
|
}
|
2026-05-07 11:40:49 -04:00
|
|
|
|
|
|
|
|
public MainWindow(MainViewModel viewModel) : this()
|
|
|
|
|
{
|
|
|
|
|
DataContext = viewModel;
|
|
|
|
|
}
|
2026-05-08 00:55:57 -04:00
|
|
|
|
|
|
|
|
/// <summary>Custom min button — chrome'd window has no system caption buttons.</summary>
|
|
|
|
|
private void OnMinimize(object sender, RoutedEventArgs e) =>
|
|
|
|
|
WindowState = WindowState.Minimized;
|
|
|
|
|
|
|
|
|
|
/// <summary>Toggles maximize/restore. Bound to the maximize button + double-click on the drag region.</summary>
|
|
|
|
|
private void OnMaximizeRestore(object sender, RoutedEventArgs e) =>
|
|
|
|
|
WindowState = WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized;
|
|
|
|
|
|
|
|
|
|
/// <summary>Custom close button.</summary>
|
|
|
|
|
private void OnClose(object sender, RoutedEventArgs e) => Close();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Swap the maximize-button glyph between the "single rectangle" (when normal) and the
|
|
|
|
|
/// "two-overlapping-rectangles" (when maximized) variants, matching the Windows 11
|
|
|
|
|
/// caption-button conventions.
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void OnWindowStateChanged(object? sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (FindName("MaximizeIcon") is not Path icon) return;
|
|
|
|
|
icon.Data = WindowState == WindowState.Maximized
|
|
|
|
|
// Two-rectangle "restore" glyph
|
|
|
|
|
? System.Windows.Media.Geometry.Parse("M 2,0 L 10,0 L 10,8 M 0,2 L 8,2 L 8,10 L 0,10 Z")
|
|
|
|
|
// Single-rectangle "maximize" glyph
|
|
|
|
|
: System.Windows.Media.Geometry.Parse("M 0,0 L 10,0 L 10,10 L 0,10 Z");
|
|
|
|
|
}
|
2026-05-07 11:09:56 -04:00
|
|
|
}
|