Files
GUI/src/forms/TopBarWidget.cpp

119 lines
4.4 KiB
C++

#include "TopBarWidget.h"
#include <QLabel>
#include <QHBoxLayout>
#include <QDateTime>
#include <QToolButton>
#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?"<strong style=\"color:darkgoldenrod\"> Anonymized</strong>":""));
});
}