#include "TopBarWidget.h" #include #include #include #include #include "components/RollingMessageWidget.h" #include "event/EventCenter.h" #include "errorhandle/GUIErrorLW.h" #include "json/jsonobject.h" #include "models/User.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 spacerLine1 = new QWidget(this); spacerLine1->setFixedWidth(2); spacerLine1->setObjectName("verSpaceLine"); auto userlogo = new QLabel(this); userlogo->setObjectName("userlogo"); layout->addWidget(userlogo); auto username = new QLabel(this); username->setObjectName("username"); layout->addWidget(username); layout->addWidget(spacerLine1); 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 QToolButton(this); readyIcon->setIcon(QIcon(":/icons/dicom/echo_suc.png")); readyIcon->setObjectName("ready"); connect(readyIcon, &QToolButton::clicked,[=](){ emit warnBtnClicked(); }); connect(EventCenter::Default(), &EventCenter::UsctStateUpdated,[readyIcon](QObject*, QObject* msg) { bool state = *(bool*)msg; QIcon icon(state ? ":/icons/dicom/echo_suc.png" :":/icons/dicom/echo_fail.png" ); readyIcon->setIcon(icon); }); 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 spacerLine2 = new QWidget(this); spacerLine2->setFixedWidth(2); spacerLine2->setObjectName("verSpaceLine"); layout->addWidget(spacerLine2); layout->addWidget(lockIcon); layout->addWidget(linkIcon); layout->addWidget(readyIcon); 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) { if (!msg) return; QString* s = (QString*)msg; lockIcon->setText(QString("%1%2").arg(*s).arg(tr("°C"))); }); connect(EventCenter::Default(), &EventCenter::LoginSuccess, [=](QObject*, QObject* msg) { username->setText(User::Current()->getUserName()); }); connect(EventCenter::Default(), &EventCenter::CurrentUserNameChanged, [=](QObject*, QObject* msg) { username->setText(User::Current()->getUserName()); }); connect(w,&RollingMessageWidget::RollingTimerTriggr,[=](){ auto anony = JsonObject::Instance()->getAnonymousMode(); nowDate->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")+(anony?" Anonymized":"")); }); }