267 lines
6.3 KiB
C++
267 lines
6.3 KiB
C++
#include "HealthUI.h"
|
|
#include "ui_HealthUI.h"
|
|
|
|
HealthUI::HealthUI(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::HealthUI)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
//load qss
|
|
QFile file(":/qss/HealthUI.qss");
|
|
file.open(QFile::ReadOnly);
|
|
QTextStream filetext(&file);
|
|
QString stylesheet = filetext.readAll();
|
|
this->setStyleSheet(stylesheet);
|
|
file.close();
|
|
|
|
quint16 index = 1;
|
|
|
|
|
|
Install("EADC",index++,state::inital);
|
|
Install("SBG",index++,state::inital);
|
|
Install("ECU",index++,state::inital);
|
|
Install("INE",index++,state::inital);
|
|
Install("SSPC",index++,state::inital);
|
|
|
|
Install("REC",index++,state::inital);//14
|
|
Install("ECU射检",index++,state::inital);
|
|
Install("REC记录",index++,state::inital);//1,绿,2,黄
|
|
Install("Gear",index++,state::inital);//3
|
|
Install("Act",index++,state::inital);//3
|
|
|
|
|
|
|
|
Install("Act1",index++,state::inital);//12
|
|
Install("Act2",index++,state::inital);//11
|
|
Install("Act自检",index++,state::inital);
|
|
Install("Act1自检",index++,state::inital);
|
|
Install("Act2自检",index++,state::inital);
|
|
|
|
Install("EADC加温",index++,state::inital);//
|
|
Install("EADC故障",index++,state::inital);//EADC失效
|
|
Install("INE进入导航",index++,state::inital);
|
|
Install("INE卫星导航",index++,state::inital);//INE差分导航
|
|
Install("INE定向",index++,state::inital);
|
|
|
|
Install("燃油泵/流量计",index++,state::inital);
|
|
Install("副翼/前起舵机",index++,state::inital);
|
|
Install("56V加温1",index++,state::inital);
|
|
Install("28V加温",index++,state::inital);
|
|
Install("智能计算机",index++,state::inital);
|
|
|
|
Install("发动机控制器",index++,state::inital);
|
|
Install("空速管加温",index++,state::inital);
|
|
Install("温度变送器",index++,state::inital);
|
|
Install("燃油切断阀",index++,state::inital);
|
|
Install("56V加温2",index++,state::inital);
|
|
|
|
Install("垂直舵机",index++,state::inital);
|
|
Install("56V并网",index++,state::inital);
|
|
Install("直流输出",index++,state::inital);
|
|
Install("滑油变送",index++,state::inital);
|
|
Install("备用",index++,state::inital);
|
|
|
|
//======================================
|
|
Install("前起承载",index++,state::inital);
|
|
Install("前起放下",index++,state::inital);
|
|
Install("前起收起",index++,state::inital);
|
|
Install("前起锁定",index++,state::inital);
|
|
Install("左前舱门",index++,state::inital);
|
|
|
|
Install("左主起承载",index++,state::inital);
|
|
Install("左主起放下",index++,state::inital);
|
|
Install("左主起收起",index++,state::inital);
|
|
Install("左主起锁定",index++,state::inital);
|
|
Install("左主起舱门",index++,state::inital);
|
|
|
|
Install("右主起承载",index++,state::inital);
|
|
Install("右主起放下",index++,state::inital);
|
|
Install("右主起收起",index++,state::inital);
|
|
Install("右主起锁定",index++,state::inital);
|
|
Install("右主起舱门",index++,state::inital);
|
|
|
|
Install("右前舱门",index++,state::inital);
|
|
|
|
//通过json安装
|
|
|
|
|
|
|
|
}
|
|
|
|
HealthUI::~HealthUI()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
|
|
|
|
void HealthUI::setState(QWidget *w,state s)
|
|
{
|
|
w->setProperty("state",s);
|
|
w->style()->unpolish(w);
|
|
w->style()->polish(w);
|
|
}
|
|
|
|
void HealthUI::setString(QLabel *w,QString s)
|
|
{
|
|
w->setText(s);
|
|
}
|
|
|
|
void HealthUI::setColor(uint32_t pos,state sta)
|
|
{
|
|
if(LabelMap.keys().contains(pos))
|
|
{
|
|
QLabel *label = LabelMap.value(pos);
|
|
if(label)
|
|
{
|
|
setState(label,sta);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//找不到就不设置
|
|
}
|
|
|
|
}
|
|
|
|
void HealthUI::setValue(uint32_t pos,QVariant sta)
|
|
{
|
|
if(LabelMap.contains(pos))
|
|
{
|
|
QLabel *label = LabelMap.value(pos);
|
|
if(label)
|
|
{
|
|
setString(label,sta.toString());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//找不到就不设置
|
|
}
|
|
}
|
|
|
|
|
|
void HealthUI::Install(QVariant name,int key,state s)
|
|
{
|
|
//查找没有被占用的位置
|
|
if(!LabelMap.contains(key))//如果没有就新建
|
|
{
|
|
QLabel *l = new QLabel(name.toString());
|
|
l->setObjectName("label_" + key);
|
|
l->setFixedHeight(20);
|
|
l->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
|
|
|
|
LabelMap.insert(key,l);
|
|
|
|
int row,column;
|
|
|
|
row = (key - 1)/5;
|
|
column = (key - 1)%5;
|
|
|
|
ui->gridLayout->addWidget(l,row,column);
|
|
|
|
setState(l,s);
|
|
|
|
}
|
|
else //如果已经有了,那么就修改名字、状态
|
|
{
|
|
QLabel *label = LabelMap.value(key);
|
|
setState(label,s);
|
|
setString(label,name.toString());
|
|
}
|
|
|
|
|
|
int row = 0;
|
|
if(LabelMap.size() > 0)
|
|
{
|
|
foreach (int key, LabelMap.keys()) {
|
|
|
|
int n = (key - 1)/5 + 1;
|
|
if(n >= row)
|
|
{
|
|
row = n;
|
|
}
|
|
}
|
|
this->resize(400,26 * row + 36);
|
|
}
|
|
else
|
|
{
|
|
this->resize(400,0);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
QLabel *HealthUI::findLabel(int key)
|
|
{
|
|
if(LabelMap.contains(key))
|
|
{
|
|
return LabelMap.value(key);
|
|
}
|
|
|
|
return nullptr;
|
|
}
|
|
|
|
|
|
|
|
void HealthUI::AllLabel(void)
|
|
{
|
|
|
|
QObjectList objlist = ui->groupBox->children();
|
|
foreach (QObject *obj, objlist)
|
|
{
|
|
QLabel *label = qobject_cast<QLabel *>(obj);
|
|
if(label)
|
|
{
|
|
QStringList namelist = label->objectName().split(QLatin1Char('_'));
|
|
|
|
QString num = namelist.at(namelist.size() - 1);
|
|
bool ret;
|
|
int number = num.toInt(&ret);
|
|
|
|
if(ret == true)
|
|
{
|
|
LabelMap.insert(number,label);
|
|
}
|
|
else
|
|
{
|
|
LabelMap.insert(1,label);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void HealthUI::setInital(void)
|
|
{
|
|
foreach (QLabel *l, LabelMap) {
|
|
setState(l,state::inital);
|
|
}
|
|
}
|
|
|
|
void HealthUI::setFailure(void)
|
|
{
|
|
foreach (QLabel *l, LabelMap) {
|
|
setState(l,state::failure);
|
|
}
|
|
}
|
|
|
|
void HealthUI::setSuccess(void)
|
|
{
|
|
foreach (QLabel *l, LabelMap) {
|
|
setState(l,state::success);
|
|
}
|
|
}
|
|
|
|
void HealthUI::setWarning(void)
|
|
{
|
|
foreach (QLabel *l, LabelMap) {
|
|
setState(l,state::warning);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|