107 lines
3.7 KiB
C#
107 lines
3.7 KiB
C#
using System;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
|
|
namespace SHH.CameraDashboard
|
|
{
|
|
public partial class MainWindow : Window
|
|
{
|
|
private bool _isDarkTheme = true;
|
|
|
|
public MainWindow()
|
|
{
|
|
InitializeComponent();
|
|
|
|
// 1. 【日志联动】HttpService -> 底部报警栏 (精准匹配你提供的逻辑)
|
|
// 确保你的 ApiLogEntry 字段已根据我之前的建议对齐
|
|
HttpService.OnApiLog += (log) =>
|
|
{
|
|
Application.Current.Dispatcher.Invoke(() =>
|
|
{
|
|
BottomDock.PushLog(log);
|
|
});
|
|
};
|
|
|
|
// 2. 【设备联动】侧边栏选中 -> 设备首页详情
|
|
Sidebar.OnDeviceSelected += (device) =>
|
|
{
|
|
// 更新右侧 主视图
|
|
DeviceHome.UpdateDevice(device);
|
|
|
|
// 联动:向诊断日志推送一条“选中设备”的虚拟日志(可选)
|
|
BottomDock.LatestLogText.Text = $"当前选中设备: {device.DisplayName} ({device.IpAddress})";
|
|
|
|
// 如果右侧配置面板开着,最好关掉它
|
|
RightConfigPanel.Visibility = Visibility.Collapsed;
|
|
};
|
|
}
|
|
|
|
// ============================
|
|
// 1. 窗口基础操作 (拖拽/最小化/关闭)
|
|
// ============================
|
|
private void OnTitleBarMouseDown(object sender, MouseButtonEventArgs e)
|
|
{
|
|
if (e.ChangedButton == MouseButton.Left)
|
|
this.DragMove();
|
|
}
|
|
|
|
private void OnMinimize(object sender, RoutedEventArgs e) => this.WindowState = WindowState.Minimized;
|
|
private void OnClose(object sender, RoutedEventArgs e) => this.Close();
|
|
|
|
// ============================
|
|
// 2. 界面交互逻辑
|
|
// ============================
|
|
|
|
// 切换侧边栏展开/收起
|
|
private void ToggleSidebar(object sender, RoutedEventArgs e)
|
|
{
|
|
if (Sidebar.Width > 0)
|
|
Sidebar.Width = 0;
|
|
else
|
|
Sidebar.Width = 250;
|
|
}
|
|
|
|
// 切换主题 (使用你定义的 ThemeManager)
|
|
private void ToggleTheme(object sender, RoutedEventArgs e)
|
|
{
|
|
_isDarkTheme = !_isDarkTheme;
|
|
// 确保 ThemeManager.ChangeTheme 逻辑未变动
|
|
ThemeManager.ChangeTheme(_isDarkTheme ? ThemeType.Dark : ThemeType.Light);
|
|
}
|
|
|
|
// 打开/关闭右侧配置面板
|
|
private void OpenRightPanel(object sender, RoutedEventArgs e) => RightConfigPanel.Visibility = Visibility.Visible;
|
|
private void CloseRightPanel(object sender, RoutedEventArgs e) => RightConfigPanel.Visibility = Visibility.Collapsed;
|
|
|
|
// ============================
|
|
// 3. 向导模态框逻辑 (完整保留)
|
|
// ============================
|
|
private void OpenWizard(object sender, RoutedEventArgs e)
|
|
{
|
|
var wizard = new WizardControl();
|
|
|
|
// 当向导请求关闭时
|
|
wizard.RequestClose += (s, args) =>
|
|
{
|
|
CloseModal();
|
|
// 关键:向导可能修改了全局服务器列表,通知侧边栏刷新
|
|
Sidebar.ReloadServers();
|
|
};
|
|
|
|
ModalContainer.Content = wizard;
|
|
ModalLayer.Visibility = Visibility.Visible;
|
|
}
|
|
|
|
private void CloseModal_Click(object sender, MouseButtonEventArgs e)
|
|
{
|
|
// 点击遮罩层背景关闭
|
|
CloseModal();
|
|
}
|
|
|
|
private void CloseModal()
|
|
{
|
|
ModalLayer.Visibility = Visibility.Collapsed;
|
|
ModalContainer.Content = null;
|
|
}
|
|
}
|
|
} |