#ifndef FORMHOME_H
#define FORMHOME_H

#include <QWidget>
#include <QStackedWidget>
#include <QMap>

#include "login/FormLogin.h"

namespace Ui {
/**
 * @brief FormHome 类用于表示和操作主窗体界面。
 *
 * 该类是应用程序的主窗体，负责展示和管理应用程序的核心界面元素和用户交互。
 * 主要功能包括初始化界面、处理用户输入、更新界面显示等。
 *
 * 使用示例：
 *
 * 构造函数参数：
 * 无特殊参数。
 *
 * 特殊使用限制或潜在的副作用：
 * 无特殊限制或副作用。
 */
class FormHome;
}

class FormHome : public QWidget
{
    Q_OBJECT

public:
    // 构造函数，初始化FormHome对象
    explicit FormHome(QWidget *parent = nullptr);
    // 析构函数，销毁FormHome对象
    ~FormHome();

    // 初始化函数，初始化FormHome对象
    void init();

private:
    // 初始化控件函数，初始化FormHome对象中的控件
    void initWidget();
    // 设置连接函数，设置FormHome对象中的信号和槽的连接
    void setupConnections();
    // 显示表单函数，显示指定类型的表单
    void showForm(int form);

    // 设置上一个表单函数，设置上一个表单
    void setPrevForm(int form);

private slots:

protected:
    // 重写showEvent函数，在显示FormHome对象时调用
    void showEvent(QShowEvent* event) override;

signals:
    // 显示登录信号，当需要显示登录表单时发出
    void showLogin();
    // 用户不活跃信号，当用户不活跃时发出
    void userInactive();

    void returnPrevForm();

private:
    // UI对象指针
    Ui::FormHome *ui;
    // 当前表单类型
    int                 m_currentForm;
    // 上一个表单类型
    int                 m_prevForm;

    // 表单映射，存储不同类型的表单
    QMap<int, QWidget*> m_formMap;

    // 登录页面
    FormLogin*                          m_login;
};

#endif // FORMHOME_H
