/**
 * @file MainWindow.h
 * @brief 战场探索系统主控制界面定义
 * @author CasualtySightPlus Team
 * @date 2024-01-01
 * @version 2.0
 * 
 * 主控制界面类，提供战场探索系统的核心功能，包括：
 * - 统一设备管理（无人机+地面机器人）
 * - 地图显示控制
 * - 探索任务管理
 * - 实时状态监控
 * - 智能导航系统
 * 
 * @note 依赖Qt GUI模块和快速控件模块
 * @since 2.0
 */

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

// Qt核心头文件
#include <QMainWindow>
#include <QDialog>
#include <QStackedWidget>
#include <QFormLayout>

// Qt控件头文件
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QTableWidget>
#include <QQuickItem>

// Qt其他模块
#include <QProcess>
#include <QVector>
#include <QPair>

// 自定义模块头文件
// #include "AudioModule/IntelligenceUI.h"  // 暂时注释掉，待实现

// 标准库头文件
#include <string>
#include <cstring>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

/**
 * @class MainWindow
 * @brief 战场探索系统主控制界面
 * 
 * 战场探索系统的主界面类，继承自QMainWindow。
 * 提供完整的战场探索和管理功能，包括：
 * 
 * 主要功能：
 * - UAV（无人机）设备管理和控制
 * - 地面机器人设备管理和控制
 * - 实时地图显示和位置标记
 * - 人脸识别和自动跟踪
 * - 智能导航和路径规划
 * - 设备状态监控和管理
 * 
 * 界面特点：
 * - 军用风格的现代化界面设计
 * - 支持多设备同时管理
 * - 实时数据显示和更新
 * - 直观的操作控制面板
 * 
 * @note 这是应用程序的主要用户界面
 * @warning 使用前需要确保数据库连接正常
 * @see UAVDatabase, DogDatabase
 * @since 2.0
 */
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    /**
     * @brief 构造函数
     * @param parent 父窗口指针，默认为nullptr
     */
    explicit MainWindow(QWidget *parent = nullptr);
    
    /**
     * @brief 析构函数
     */
    ~MainWindow();
    
    /**
     * @brief 地图显示控制
     * @param button 控制按钮指针
     * @param widget 显示控件指针
     * @param layout 布局指针
     */
    void mapDisplayControl(QPushButton *button, QWidget *widget, QGridLayout *layout);
    
    /**
     * @brief 添加机器人按钮控制
     * @param button 控制按钮指针
     */
    void addRobotControl(QPushButton *button);
    
    /**
     * @brief 显示已配置机器人列表按钮控制
     * @param button 控制按钮指针
     */
    void robotsInfosControl(QPushButton *button);

public slots:
    /**
     * @brief 添加机器人按钮点击槽函数
     */
    void onAddRobotClicked();
    
    /**
     * @brief 机器人列表显示按钮点击槽函数
     */
    void onRobotTabClicked();
    
    /**
     * @brief 切换到指定机器人页面槽函数
     */
    void onSpecifiedRobotTabClicked();

private slots:
    /**
     * @brief 添加无人机按钮点击槽函数
     */
    void onAddUAVClicked();
    
    /**
     * @brief 无人机标签页点击槽函数
     */
    void onUAVTabClicked();
    
    /**
     * @brief 机器人位置按钮点击槽函数
     */
    void onRobotLocationClicked();
    
    /**
     * @brief 无人机视图按钮点击槽函数
     */
    void onUAVViewClicked();
    
    /**
     * @brief 机器人视图按钮点击槽函数
     */
    void onRobotViewClicked();
    
    /**
     * @brief 机器人地图绘制按钮点击槽函数
     */
    void onRobotMappingClicked();
    
    /**
     * @brief 智能导航按钮点击槽函数
     */
    void onSmartNavigationClicked();
    
    /**
     * @brief 情报传达按钮点击槽函数
     */
    void onIntelligenceClicked();

private:
    /**
     * @brief 初始化UI界面
     */
    void setupUI();
    
    /**
     * @brief 连接信号和槽
     */
    void connectSignals();
    
    /**
     * @brief 设置窗口样式
     */
    void setupStyle();

private:
    Ui::MainWindow *m_ui;                                         ///< UI界面指针
    // IntelligenceUI *m_intelligenceUI;                          ///< 情报传达界面指针（暂时注释掉）
    QVector<QPair<QString, QString>> m_robotList;                 ///< 机器人列表（名称-IP地址对）
    QVector<QPair<QString, QString>> m_uavList;                   ///< 无人机列表（名称-IP地址对）
    // 人脸识别相关成员变量已移除（功能暂未实现）
};
#endif // MAINWINDOW_H
