100 lines
3.5 KiB
C++
100 lines
3.5 KiB
C++
//
|
|
// Created by Krad on 2021/12/16.
|
|
//
|
|
|
|
#include "TopBarWidget.h"
|
|
|
|
#include <QLabel>
|
|
#include <QHBoxLayout>
|
|
#include <QDateTime>
|
|
|
|
#include "components/RollingMessageWidget.h"
|
|
#include "event/EventCenter.h"
|
|
#include "errorhandle/GUIErrorLW.h"
|
|
#include "json/jsonobject.h"
|
|
|
|
TopBarWidget::TopBarWidget(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f) {
|
|
auto layout = new QHBoxLayout(this);
|
|
layout->setMargin(0);
|
|
auto logo = new QLabel(this);
|
|
logo->setObjectName("logo");
|
|
layout->addWidget(logo);
|
|
auto company = new QLabel(this);
|
|
company->setObjectName("company");
|
|
layout->addWidget(company);
|
|
company->setText(tr("浙江衡玖医疗科技"));
|
|
auto spacerLine0 = new QWidget(this);
|
|
spacerLine0->setFixedWidth(2);
|
|
spacerLine0->setObjectName("verSpaceLine");
|
|
layout->addWidget(spacerLine0);
|
|
auto lbl_msglogo = new QLabel(this);
|
|
lbl_msglogo->setObjectName("msglogo");
|
|
layout->addWidget(lbl_msglogo);
|
|
|
|
auto widgetMsg = new QWidget(this);
|
|
layout->addWidget(widgetMsg,1);
|
|
widgetMsg->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred);
|
|
layout->addSpacerItem(new QSpacerItem(10, 10, QSizePolicy::Expanding));
|
|
auto statusBarWidget = new QWidget(this);
|
|
layout->addWidget(statusBarWidget);
|
|
auto hosp = new QLabel(this);
|
|
hosp->setText(JsonObject::Instance()->institutionName());
|
|
auto nowDate = new QLabel(this);
|
|
nowDate->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
|
|
auto linkIcon = new QLabel(this);
|
|
linkIcon->setObjectName("link");
|
|
QPixmap pixmap(":/icons/link_r.png");
|
|
linkIcon->setPixmap(pixmap);
|
|
connect(EventCenter::Default(), &EventCenter::ReconConnectionUpdated,[linkIcon](QObject*, QObject* msg)
|
|
{
|
|
bool* isConnected = (bool*)msg;
|
|
QPixmap pixmap(*isConnected ? ":/icons/link_g.png" : ":/icons/link_r.png");
|
|
linkIcon->setPixmap(QPixmap(pixmap));
|
|
});
|
|
auto readyIcon = new QLabel(this);
|
|
readyIcon->setObjectName("ready");
|
|
auto lockIcon = new QLabel(this);
|
|
lockIcon->setText("");
|
|
auto status_layout = new QHBoxLayout(statusBarWidget);
|
|
status_layout->setMargin(0);
|
|
|
|
status_layout->addWidget(hosp);
|
|
status_layout->addWidget(nowDate);
|
|
auto spacerLine = new QWidget(this);
|
|
spacerLine->setFixedWidth(2);
|
|
spacerLine->setObjectName("verSpaceLine");
|
|
|
|
layout->addWidget(spacerLine);
|
|
layout->addWidget(linkIcon);
|
|
layout->addWidget(readyIcon);
|
|
layout->addWidget(lockIcon);
|
|
|
|
auto l = new QVBoxLayout(widgetMsg);
|
|
l->setMargin(0);
|
|
auto w = new RollingMessageWidget(this);
|
|
|
|
// w->setMessageList(GUIErrorLW::getWARNMessages());
|
|
w->setObjectName("borderWidget");
|
|
l->addWidget(w);
|
|
connect(EventCenter::Default(), &EventCenter::ResponseDeviceTemperature, [=](QObject*, QObject* msg) {
|
|
nowDate->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
|
|
if (!msg) return;
|
|
QString* s = (QString*)msg;
|
|
lockIcon->setText(QString("%1%2").arg(*s).arg(tr("°C")));
|
|
});
|
|
// connect(EventCenter::Default(), &EventCenter::WarnStateFlagChange, [=](QObject*, QObject* msg) {
|
|
// QVariant* var = (QVariant*)msg;
|
|
// int v = var->toInt();
|
|
// int f = 0x00000001;
|
|
// for (int i = 0; i < 32; ++i) {
|
|
// int d = (f<<i);
|
|
// if (d & v){
|
|
// printf("warn %d, val:%d\r\n", i, v);
|
|
// if (w)w->updateMessagePriority(i,1);
|
|
// } else{
|
|
// if (w)w->updateMessagePriority(i,-1);
|
|
// }
|
|
// }
|
|
// });
|
|
}
|