简短文件名

This commit is contained in:
xu
2026-09-09 17:14:31 +08:00
parent 40473ad10b
commit bc17390d83
96 changed files with 79 additions and 79 deletions
+125
View File
@@ -0,0 +1,125 @@
#include "jobselect.h"
#include "titlebar.h"
#include "statusstrip.h"
#include "datacard.h"
#include "udpcommunication.h"
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGridLayout>
#include <QPushButton>
#include "global.h"
JobSelectPage::JobSelectPage(AppContext* ctx, QWidget* parent)
: BasePage(ctx, parent)
{
QVBoxLayout* root = new QVBoxLayout(this);
root->setContentsMargins(0, 0, 0, 0);
root->setSpacing(0);
m_titleBar = new TitleBar(ctx, this);
m_titleBar->setTitle("作业选择");
root->addWidget(m_titleBar);
QHBoxLayout* main = new QHBoxLayout();
main->setContentsMargins(36, 20, 36, 20);
main->setSpacing(32);
// 左侧菜单(垂直居中 + 平均分布)
QWidget* left = new QWidget(this);
QVBoxLayout* leftLay = new QVBoxLayout(left);
leftLay->setContentsMargins(0, 0, 0, 0);
leftLay->setSpacing(8);
auto addMenu = [&](const QString& t, PageId id) {
QPushButton* b = button(t, "", left);
b->setFixedHeight(130);
b->setStyleSheet(QString("font-size:24px;background-color:%1;color:%2;border:1px solid %3;border-radius:12px;")
.arg(C::PANEL_HI, C::TEXT, C::BORDER));
connect(b, &QPushButton::clicked, this, [this, id]() { emit navigate(id); });
leftLay->addStretch(1);
leftLay->addWidget(b);
};
addMenu("机器人底盘", PageChassis);
addMenu("机械臂", PageArm);
addMenu("气体检测仪", PageGas);
addMenu("调试维护", PageDebug);
addMenu("故障查询", PageFault);
leftLay->addStretch(1);
left->setFixedWidth(240);
main->addWidget(left);
// 中央卡片区(2×2)
QWidget* center = new QWidget(this);
QGridLayout* grid = new QGridLayout(center);
grid->setSpacing(16);
grid->setContentsMargins(0, 0, 0, 0);
m_chassisCard = new DataCard("底盘", center);
m_chassisCard->addField("电量", "85%");
m_chassisCard->addField("电压", "360V");
m_chassisCard->addField("故障", "无");
m_armCard = new DataCard("机械臂", center);
m_armCard->addField("末端位置", "XYZ");
m_armCard->addField("姿态", "RX/RY/RZ");
m_washCard = new DataCard("洗消", center);
m_washCard->addField("A液位", "100L");
m_washCard->addField("泡沫液位", "30L");
m_gasCard = new DataCard("气体检测仪", center);
m_gasCard->addField("主机状态", "待机");
m_gasCard->addField("浓度", "0 ppb");
grid->addWidget(m_chassisCard, 0, 0);
grid->addWidget(m_armCard, 0, 1);
grid->addWidget(m_washCard, 1, 0);
grid->addWidget(m_gasCard, 1, 1);
main->addWidget(center, 1);
// 右侧按钮列(垂直居中 + 平均分布)
QWidget* right = new QWidget(this);
QVBoxLayout* rightLay = new QVBoxLayout(right);
rightLay->setContentsMargins(0, 0, 0, 0);
rightLay->setSpacing(8);
QPushButton* clean = button("手动消除", "primary", right);
clean->setFixedHeight(170);
connect(clean, &QPushButton::clicked, this, [this]() { emit navigate(PageClean); });
QPushButton* disinfect = button("手动消毒", "primary", right);
disinfect->setFixedHeight(170);
connect(disinfect, &QPushButton::clicked, this, [this]() { emit navigate(PageDisinfect); });
rightLay->addStretch(1);
rightLay->addWidget(clean);
rightLay->addStretch(1);
rightLay->addWidget(disinfect);
rightLay->addStretch(1);
right->setFixedWidth(360);
main->addWidget(right);
root->addLayout(main, 1);
m_statusStrip = new StatusStrip(ctx, this);
m_statusStrip->setBackVisible(false);
root->addWidget(m_statusStrip);
connect(ctx->comm(), &UdpCommunication::telemetryUpdated, this, &JobSelectPage::refresh);
refresh();
}
void JobSelectPage::refresh()
{
const Telemetry& t = ctx()->telemetry;
m_chassisCard->setField(0, QString("%1%").arg(t.soc));
m_chassisCard->setField(1, QString("%1V").arg(t.volt, 0, 'f', 0));
m_chassisCard->setField(2, t.chassisFaults.isEmpty() ? "无" : t.chassisFaults.join(";"));
m_chassisCard->setAlarm(2, !t.chassisFaults.isEmpty());
m_armCard->setField(0, t.pos);
m_armCard->setField(1, t.pose);
m_washCard->setField(0, QString("%1L").arg(t.levelA, 0, 'f', 0));
m_washCard->setField(1, QString("%1L").arg(t.levelFoam, 0, 'f', 0));
m_gasCard->setField(0, t.gasHost == "detecting" ? "检测中" : (t.gasHost == "fault" ? "故障" : "待机"));
m_gasCard->setField(1, QString("%1 ppb").arg(t.gasConc, 0, 'f', 0));
m_gasCard->setAlarm(1, t.gasConc > 500.0);
}