#include "MaterialBox.h"

// 构造函数
MaterialBox::MaterialBox(int flag, QWidget *parent) : QWidget(parent) {
    // 初始化料盒数据
    boxes = {
        Material_box("Box 1", Idle),
        Material_box("Box 2", Occupied),
        Material_box("Box 3", Warning),
        Material_box("Box 4", Idle),
        Material_box("Box 5", Occupied),
        Material_box("Box 6", Warning)
    };

    // 根据不同窗口设置不同大小 0：小 1：中 2：大
    // if (flag == 0) {
    //     boxWidth = 30;  // 每个料盒的宽度
    //     boxHeight = 18;  // 每个料盒的高度
    //     gap = 10;        // 料盒之间的间距
    // } else if (flag == 1) {
    //     boxWidth = 50;  // 每个料盒的宽度
    //     boxHeight = 18;  // 每个料盒的高度
    //     gap = 10;
    // } else if (flag == 2) {
    //     boxWidth = 30;  // 每个料盒的宽度
    //     boxHeight = 18;  // 每个料盒的高度
    //     gap = 10;
    // }

}

// 绘制事件
void MaterialBox::paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);

    // 设置背景颜色
    painter.fillRect(this->rect(), Qt::white);

    // 网格参数
    int boxWidth = 30;  // 每个料盒的宽度
    int boxHeight = 18;  // 每个料盒的高度
    int gap = 10;        // 料盒之间的间距
    int cols = 3;        // 每行的列数

    // 计算料盒的总宽度和总高度
    int totalWidth = cols * boxWidth + (cols - 1) * gap;
    int rows = (boxes.size() + cols - 1) / cols;  // 计算总行数
    int totalHeight = rows * boxHeight + (rows - 1) * gap;

    // 计算料盒的起始位置（居中显示）
    int startX = (width() - totalWidth) / 2;
    int startY = (height() - totalHeight) / 2;

    // 绘制所有料盒
    for (size_t i = 0; i < boxes.size(); ++i) {
        int row = i / cols; // 当前料盒所在的行
        int col = i % cols; // 当前料盒所在的列
        int x = startX + col * (boxWidth + gap);
        int y = startY + row * (boxHeight + gap);

        // 绘制料盒外框
        QRect boxRect(x, y, boxWidth, boxHeight);
        painter.setPen(Qt::black);
        painter.drawRect(boxRect);

        // 根据状态设置填充颜色
        switch (boxes[i].status) {
        case Idle:
            painter.setBrush(Qt::green); // 空闲状态：绿色
            break;
        case Occupied:
            painter.setBrush(Qt::blue);  // 已占用状态：蓝色
            break;
        case Warning:
            painter.setBrush(Qt::red);   // 警告状态：红色
            break;
        }
        painter.fillRect(boxRect, painter.brush());

        // 在料盒中绘制名称
        painter.setPen(Qt::white); // 设置文字颜色为白色
        painter.drawText(boxRect, Qt::AlignCenter, boxes[i].name);
    }
}

// 鼠标点击事件
// void MaterialBox::mousePressEvent(QMouseEvent *event) {
//     int boxWidth = 30;  // 每个料盒的宽度
//     int boxHeight = 18;  // 每个料盒的高度
//     int gap = 10;        // 料盒之间的间距
//     int cols = 3;        // 每行的列数

//     // 计算料盒的起始位置（居中显示）
//     int totalWidth = cols * boxWidth + (cols - 1) * gap;
//     int startX = (width() - totalWidth) / 2;
//     int startY = 50;

//     // 遍历所有料盒，检查是否被点击
//     for (size_t i = 0; i < boxes.size(); ++i) {
//         int row = i / cols;
//         int col = i % cols;
//         int x = startX + col * (boxWidth + gap);
//         int y = startY + row * (boxHeight + gap);

//         QRect boxRect(x, y, boxWidth, boxHeight);
//         if (boxRect.contains(event->pos())) {
//             // 打印被点击料盒的信息
//             qDebug() << "Clicked on:" << boxes[i].name;
//             return;
//         }
//     }
// }
