Files
GUI/src/forms/TopBarWidget.cpp
2023-09-08 11:42:42 +08:00

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);
// }
// }
// });
}