Files
gcs-nf/App/StatusUI/StatusUI.cpp
T

251 lines
6.0 KiB
C++

#include "StatusUI.h"
#include "ui_StatusUI.h"
StatusUI::StatusUI(QWidget *parent) :
QWidget(parent),
ui(new Ui::StatusUI)
{
ui->setupUi(this);
//load qss
QFile file(":/qss/StatusUI.qss");
file.open(QFile::ReadOnly);
QTextStream filetext(&file);
QString stylesheet = filetext.readAll();
this->setStyleSheet(stylesheet);
file.close();
int id_count = 0;
StateGroup *mode = new StateGroup(id_count++,this);
StateGroup *base = new StateGroup(id_count++,this);
StateGroup *actuator = new StateGroup(id_count++,this);
StateGroup *e_fly = new StateGroup(id_count++,this);
StateGroup *state = new StateGroup(id_count++,this);
StateGroup *battery = new StateGroup(id_count++,this);
StateGroup *communication = new StateGroup(id_count++,this);
install(mode,0,"飞行模式",0);
install(base,0,"攻角[°]",0);
install(base,0,"侧滑角[°]",0);
install(base,0,"滚转角[°]",0);
install(base,0,"俯仰角[°]",0);
install(base,0,"航迹角[°]",0);
install(base,0,"海拔[m]",0);
install(base,0,"表速[m/s]",0);
install(base,0,"真空速[m/s]",0);
install(base,0,"地速[m/s]",0);
install(base,0,"马赫数[Ma]",0);
install(base,0,"爬升率[m/s]",0);
install(actuator,0,"左缝翼[°]",0);
install(actuator,0,"右缝翼[°]",0);
install(actuator,0,"左翼尖[°]",0);
install(actuator,0,"右翼尖[°]",0);
install(actuator,0,"左副翼[°]",0);
install(actuator,0,"右副翼[°]",0);
install(actuator,0,"左襟翼[°]",0);
install(actuator,0,"右襟翼[°]",0);
install(e_fly,0,"位置状态",0);
//install(e_fly,0,"高度状态",0);
//install(e_fly,0,"加速度状态",0);
install(e_fly,0,"姿态状态",0);
//install(e_fly,0,"角速度状态",0);
//install(e_fly,0,"时间状态",0);
//install(e_fly,0,"航迹角",0);
//install(e_fly,0,"天向加速度",0);
//install(e_fly,0,"偏航加速度",0);
install(e_fly,0,"工作状态",0);
install(e_fly,0,"导航模式",0);
//install(e_fly,0,"主惯导",0);
//install(e_fly,0,"IMU状态",0);
//install(e_fly,0,"DGPS状态",0);
install(state,0,"投放状态",0);
//install(state,0,"脱离状态2",0);
install(state,0,"点火保险",0);
install(state,0,"加速度采集",0);
//install(state,0,"开伞状态",0);
install(battery,0,"飞控电压[V]",0);
install(battery,0,"舵机电压[V]",0);
install(communication,0,"信号[%]",0);
install(communication,0,"接收[B/s]",0);
install(communication,0,"发送[B/s]",0);
GroupList.insert(mode->ID(),mode);
GroupList.insert(base->ID(),base);
GroupList.insert(actuator->ID(),actuator);
GroupList.insert(e_fly->ID(),e_fly);
GroupList.insert(state->ID(),state);
GroupList.insert(battery->ID(),battery);
GroupList.insert(communication->ID(),communication);
if(GroupList.size() > 0)
{
for( QMap<int,StateGroup *>::iterator i = GroupList.begin();i != GroupList.end();i++)
{
StateGroup *g = i.value();
ui->gridLayout->addWidget(g,g->ID(),0,1,1);
}
QVBoxLayout * vb = new QVBoxLayout;
vb->addStretch();
ui->gridLayout->addLayout(vb,GroupList.size(),0,1,1);
}
else
{
this->setFixedWidth(0);
}
basewidth = this->width();
}
StatusUI::~StatusUI()
{
delete ui;
}
void StatusUI::resizeEvent(QResizeEvent *event)
{
//qDebug() << event;
//计算一个使用多少长度
/*
if(GroupList.size() > 0)
{
int row = 0;
int column = 0;
int current_height = 0;
this->resize(basewidth,this->height());
for( QMap<int,StateGroup *>::iterator i = GroupList.begin();i != GroupList.end();i++)
{
StateGroup *g = i.value();
//
qDebug() << g->size() << g->lenght();
if((current_height + g->lenght()) < this->height())
{
ui->gridLayout->addWidget(g,row,column,1,1);
row++;
current_height += g->lenght();
}
else
{
current_height = 0;
column ++;
row = 0;
this->resize(this->width() * (column+1),this->height());
}
}
}
*/
}
void StatusUI::setColor(int group,int index,StateWidget::state s)
{
if(GroupList.contains(group))
{
StateGroup *g = GroupList.value(group);
if(g)
{
g->setColor(index,s);
}
}
}
void StatusUI::setValue(int group, int index, QString s)
{
if(GroupList.contains(group))
{
StateGroup *g = GroupList.value(group);
if(g)
{
g->setValue(index,s);
}
}
}
bool StatusUI::addGroup(int index)//??
{
bool flag = false;
StateGroup *group = GroupList.value(index);
if(GroupList.contains(index))
{
group = GroupList.value(index);
}
else
{
group = new StateGroup(GroupList.size(),this);
GroupList.insert(index,group);
flag = true;
}
return flag;
}
void StatusUI::install(StateGroup *group,int flag, QString name, QVariant value)
{
StateWidget *w = new StateWidget(flag,name,value,StateWidget::state::gray,group->count());
group->addItem(w);
}
void StatusUI::install(int index,int flag, QString name, QVariant value)
{
StateGroup *group = GroupList.value(index);
if(GroupList.contains(index))
{
group = GroupList.value(index);
}
else
{
group = new StateGroup(GroupList.size(),this);
GroupList.insert(GroupList.size(),group);
}
StateWidget *w = new StateWidget(flag,name,value,StateWidget::state::gray,group->count());
group->addItem(w);
}