Files

151 lines
3.5 KiB
C#

using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Markup;
using AxCopilot.ViewModels;
namespace AxCopilot.Views;
public class StatisticsWindow : Window, IComponentConnector
{
private const int WM_NCLBUTTONDOWN = 161;
private const int HTBOTTOMRIGHT = 17;
private readonly StatisticsViewModel _vm;
internal RadioButton StatsTabMain;
internal RadioButton StatsTabCommander;
internal RadioButton StatsTabAgent;
internal ScrollViewer PanelMain;
internal ScrollViewer PanelCommander;
internal ScrollViewer PanelAgent;
private bool _contentLoaded;
[DllImport("user32.dll")]
private static extern void ReleaseCapture();
[DllImport("user32.dll")]
private static extern nint SendMessage(nint hWnd, int msg, nint wParam, nint lParam);
public StatisticsWindow()
{
InitializeComponent();
_vm = new StatisticsViewModel();
base.DataContext = _vm;
}
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left && e.LeftButton == MouseButtonState.Pressed)
{
try
{
DragMove();
}
catch
{
}
}
}
private void ResizeGrip_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.ButtonState == MouseButtonState.Pressed)
{
ReleaseCapture();
SendMessage(new WindowInteropHelper(this).Handle, 161, 17, IntPtr.Zero);
}
}
private void Close_Click(object sender, RoutedEventArgs e)
{
Close();
}
private void Refresh_Click(object sender, RoutedEventArgs e)
{
_vm.Refresh();
}
private void StatsTab_Click(object sender, RoutedEventArgs e)
{
if (PanelMain != null && PanelCommander != null && PanelAgent != null)
{
PanelMain.Visibility = ((StatsTabMain.IsChecked != true) ? Visibility.Collapsed : Visibility.Visible);
PanelCommander.Visibility = ((StatsTabCommander.IsChecked != true) ? Visibility.Collapsed : Visibility.Visible);
PanelAgent.Visibility = ((StatsTabAgent.IsChecked != true) ? Visibility.Collapsed : Visibility.Visible);
}
}
[DebuggerNonUserCode]
[GeneratedCode("PresentationBuildTasks", "10.0.5.0")]
public void InitializeComponent()
{
if (!_contentLoaded)
{
_contentLoaded = true;
Uri resourceLocator = new Uri("/AxCopilot;component/views/statisticswindow.xaml", UriKind.Relative);
Application.LoadComponent(this, resourceLocator);
}
}
[DebuggerNonUserCode]
[GeneratedCode("PresentationBuildTasks", "10.0.5.0")]
[EditorBrowsable(EditorBrowsableState.Never)]
void IComponentConnector.Connect(int connectionId, object target)
{
switch (connectionId)
{
case 1:
((StatisticsWindow)target).MouseDown += Window_MouseDown;
break;
case 2:
((Button)target).Click += Refresh_Click;
break;
case 3:
((Button)target).Click += Close_Click;
break;
case 4:
StatsTabMain = (RadioButton)target;
StatsTabMain.Click += StatsTab_Click;
break;
case 5:
StatsTabCommander = (RadioButton)target;
StatsTabCommander.Click += StatsTab_Click;
break;
case 6:
StatsTabAgent = (RadioButton)target;
StatsTabAgent.Click += StatsTab_Click;
break;
case 7:
PanelMain = (ScrollViewer)target;
break;
case 8:
PanelCommander = (ScrollViewer)target;
break;
case 9:
PanelAgent = (ScrollViewer)target;
break;
case 10:
((Border)target).MouseLeftButtonDown += ResizeGrip_MouseLeftButtonDown;
break;
default:
_contentLoaded = true;
break;
}
}
}