merge 1.14

This commit is contained in:
xueyan hu
2022-01-14 10:12:43 +08:00
12 changed files with 101 additions and 49 deletions

View File

@@ -161,11 +161,15 @@ SelectFormWidget::SelectFormWidget(QWidget* parent) :
}); });
connect(btnAdd, &QToolButton::clicked, [=]() { connect(btnAdd, &QToolButton::clicked, [=]() {
edit_patient->show();
btnShowEdit->hide();
edit_patient->clearPatientInformation(); edit_patient->clearPatientInformation();
edit_patient->setEditEnable(true); edit_patient->setEditEnable(true);
btnSelect->setEnabled(false); btnSelect->setEnabled(false);
}); });
connect(btnEdit, &QToolButton::clicked, [=]() { connect(btnEdit, &QToolButton::clicked, [=]() {
edit_patient->show();
btnShowEdit->hide();
table->clicked(table->currentIndex()); table->clicked(table->currentIndex());
edit_patient->setEditEnable(true); edit_patient->setEditEnable(true);
btnSelect->setEnabled(false); btnSelect->setEnabled(false);
@@ -238,6 +242,8 @@ SelectFormWidget::SelectFormWidget(QWidget* parent) :
} }
else { else {
currentRow = -1; currentRow = -1;
edit_patient->editCancel();
edit_patient->clearPatientInformation();
} }
} }
else { else {

View File

@@ -9,6 +9,7 @@
#include <QDateTime> #include <QDateTime>
#include "event/EventCenter.h" #include "event/EventCenter.h"
#include "errorhandle/GUIErrorLW.h" #include "errorhandle/GUIErrorLW.h"
#include "json/jsonobject.h"
TopBarWidget::TopBarWidget(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f) { TopBarWidget::TopBarWidget(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f) {
QHBoxLayout* layout = new QHBoxLayout(this); QHBoxLayout* layout = new QHBoxLayout(this);
@@ -32,13 +33,14 @@ TopBarWidget::TopBarWidget(QWidget *parent, Qt::WindowFlags f) : QWidget(parent,
layout->addWidget(lbl_msglogo); layout->addWidget(lbl_msglogo);
QWidget* widgetMsg = new QWidget(this); QWidget* widgetMsg = new QWidget(this);
layout->addWidget(widgetMsg); layout->addWidget(widgetMsg,1);
widgetMsg->setObjectName("need_border"); // widgetMsg->setObjectName("need_border");
widgetMsg->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred);
layout->addSpacerItem(new QSpacerItem(10, 10, QSizePolicy::Expanding));
QWidget* statusBarWidget = new QWidget(this); QWidget* statusBarWidget = new QWidget(this);
layout->addWidget(statusBarWidget); layout->addWidget(statusBarWidget);
QLabel* hosp = new QLabel(this); QLabel* hosp = new QLabel(this);
// hosp->setText(tr("浙江大学医学院附属第二医院")); hosp->setText(JsonObject::Instance()->institutionName());
QLabel* nowDate = new QLabel(this); QLabel* nowDate = new QLabel(this);
nowDate->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")); nowDate->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
QLabel* linkIcon = new QLabel(this); QLabel* linkIcon = new QLabel(this);
@@ -50,7 +52,7 @@ TopBarWidget::TopBarWidget(QWidget *parent, Qt::WindowFlags f) : QWidget(parent,
// lockIcon->setPixmap(QPixmap(":/icons/lock.png").scaledToHeight(22,Qt::SmoothTransformation)); // lockIcon->setPixmap(QPixmap(":/icons/lock.png").scaledToHeight(22,Qt::SmoothTransformation));
QHBoxLayout* status_layout = new QHBoxLayout(statusBarWidget); QHBoxLayout* status_layout = new QHBoxLayout(statusBarWidget);
status_layout->setMargin(0); status_layout->setMargin(0);
status_layout->addSpacerItem(new QSpacerItem(10, 10, QSizePolicy::Expanding));
status_layout->addWidget(hosp); status_layout->addWidget(hosp);
status_layout->addWidget(nowDate); status_layout->addWidget(nowDate);
QWidget* spacerLine = new QWidget(this); QWidget* spacerLine = new QWidget(this);

View File

@@ -6,27 +6,19 @@
#include <QLabel> #include <QLabel>
#include <QThread> #include <QThread>
#include <QDebug> #include <QDebug>
#include <QShowEvent>
const int ROLL_DISTANCE = 32; const int WAIT_TIMES = 60;
const int WAIT_TIMES = 30;
RollingMessageWidget::RollingMessageWidget(QWidget *parent) :QWidget(parent){ RollingMessageWidget::RollingMessageWidget(QWidget *parent) :QWidget(parent){
this->setFixedHeight(36); this->setFixedHeight(36);
this->setFixedWidth(500); // this->setMinimumWidth(1000);
this->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred);
label_current = new QLabel(this); label_current = new QLabel(this);
label_next = new QLabel(this); label_next = new QLabel(this);
QPoint p1 = this->mapToGlobal({5,2});
label_current->setFixedSize(400, 30);
label_current->show();
label_current->move(p1);
label_current->setText(tr("Message of warn!"));
QPoint p2 = this->mapToGlobal({5,-30});
label_next->setFixedSize(400, 30);
label_next->show();
label_next->move(p2);
label_next->setText(tr("Message2 of warn!"));
timerId = startTimer(100);
} }
void RollingMessageWidget::timerEvent(QTimerEvent *e) { void RollingMessageWidget::timerEvent(QTimerEvent *e) {
@@ -35,29 +27,34 @@ void RollingMessageWidget::timerEvent(QTimerEvent *e) {
if (rolling) { if (rolling) {
//end rolling, reset next //end rolling, reset next
if (rollStep == ROLL_DISTANCE){ if (rollStep == ROLL_DISTANCE){
std::swap(label_current,label_next); waitStep = 0;
rolling = false; rolling = false;
QPoint p3 = this->mapToGlobal({5,-30}); QPoint p3 = {ROLL_DISTANCE+5,2};
p3.setX(label_next->geometry().x()); // p3.setY(label_next->geometry().y());
label_next->move(p3); label_current->move(p3);
// printf("move last to 505,2\n");
std::swap(label_current,label_next);
return; return;
} }
//rolling //rolling
QPoint p1 = label_current->geometry().topLeft(); rollStep+=2;
p1.setY(p1.y()+1); QPoint p1 = {ROLL_DISTANCE+5 - rollStep,2};
label_current->move(p1); label_next->move(p1);
QPoint p2 = label_next->geometry().topLeft(); if (p1.x()-label_current->geometry().x()<=label_current->width()+20)
p2.setY(p2.y()+1); {
label_next->move(p2); QPoint p2 = {label_current->geometry().x()-2,2};
rollStep++; label_current->move(p2);
}
return ; return ;
} }
else{ else{
//有等待的高优先级消息时,不停顿 //有等待的高优先级消息时,不停顿
if (waitStep == WAIT_TIMES || waitPriorityCount > 0){ if (waitStep == WAIT_TIMES || (waitPriorityCount > 0 && waitStep == WAIT_TIMES/3)){
locker.lock(); locker.lock();
label_next->setText(getNextMessage()); label_next->setText(getNextMessage());
label_next->setFixedWidth(label_next->text().length()*16);
locker.unlock(); locker.unlock();
} else{ } else{
waitStep++; waitStep++;
@@ -144,3 +141,26 @@ QString RollingMessageWidget::getNextMessage() {
waitStep = 0; waitStep = 0;
return ret; return ret;
} }
void RollingMessageWidget::showEvent(QShowEvent *event) {
QWidget::showEvent(event);
if (!init)
{
ROLL_DISTANCE = this->width();
QPoint p1 = {5,2};
label_current->setFixedHeight(30);
label_current->show();
label_current->move(p1);
label_current->setText(tr("Message of warn!"));
label_current->setFixedWidth(label_current->text().length()*16);
QPoint p2 = {ROLL_DISTANCE+5,2};
label_next->setFixedHeight(30);
label_next->show();
label_next->move(p2);
label_next->setText(tr("Message2 of warn!"));
label_next->setFixedWidth(label_next->text().length()*16);
timerId = startTimer(40);
init = true;
}
}

View File

@@ -27,8 +27,10 @@ public:
explicit RollingMessageWidget(QWidget *parent = nullptr); explicit RollingMessageWidget(QWidget *parent = nullptr);
void setMessageList(const QStringList& message); void setMessageList(const QStringList& message);
void updateMessagePriority(int innerIndex, int priority); void updateMessagePriority(int innerIndex, int priority);
protected: protected:
void timerEvent(QTimerEvent* event) override ; void timerEvent(QTimerEvent* event) override ;
void showEvent(QShowEvent *event) override ;
QString getNextMessage(); QString getNextMessage();
private: private:
int timerId = -1; int timerId = -1;
@@ -41,6 +43,8 @@ private:
QLabel* label_next = nullptr; QLabel* label_next = nullptr;
QList<WarnMessage> messages; QList<WarnMessage> messages;
QMutex locker; QMutex locker;
bool init = false;
int ROLL_DISTANCE=2000;
}; };

View File

@@ -39,12 +39,15 @@ std::string getJsonFromPatInf(QObject* obj)
void ErrorCallback(const char* msg) void ErrorCallback(const char* msg)
{ {
DeviceManager::Default()->setErrorOccurred(true); DeviceManager::Default()->emitErrorCallback(msg);
printf("Error Callback , message:%s\r\n", msg);
QString m(msg);
THROW_ERROR(m);
} }
void DeviceManager::emitErrorCallback(const char *msg) {
this->setErrorOccurred(true);
printf("Error Callback , message:%s\r\n", msg);
QString m(msg);
emit raiseGlobalError( m);
}
void DeviceManager::initDevice() { void DeviceManager::initDevice() {

View File

@@ -11,17 +11,20 @@ class DeviceManager :public QObject {
Q_OBJECT Q_OBJECT
public: public:
static DeviceManager* Default() { static DeviceManager* Default(){
static DeviceManager manager; static DeviceManager manager;
return &manager; return &manager;
} }
void initDevice(); void initDevice();
void setErrorOccurred(bool v) { void setErrorOccurred(bool v){
errorOccurred = v; errorOccurred = v;
} }
bool getErrorOccurred() { bool getErrorOccurred(){
return errorOccurred; return errorOccurred;
} }
void emitErrorCallback(const char * msg);
signals:
void raiseGlobalError(QString msg);
protected: protected:
void timerEvent(QTimerEvent* event) override; void timerEvent(QTimerEvent* event) override;

View File

@@ -27,5 +27,7 @@ GUIErrorBase *GUIErrorFactory::getError(const QString &errorMsg) {
return error; return error;
} }
} }
return new GUIErrorLE; auto error = new GUIErrorLE;
error->parse(errorMsg);
return error;
} }

View File

@@ -21,5 +21,6 @@ void GUIErrorHandle::init() {
// error->setErrorHandleParent(qApp->activeWindow()); // error->setErrorHandleParent(qApp->activeWindow());
// } // }
error->handle(); error->handle();
delete error;
}); });
} }

View File

@@ -12,6 +12,8 @@ void GUIErrorLE::parse(const QString &errorMsg) {
if (errorMsg[0] == 'e' && errorMsg[1] == ' ') if (errorMsg[0] == 'e' && errorMsg[1] == ' ')
{ {
errorMessage = errorMsg.right(errorMsg.length()-2); errorMessage = errorMsg.right(errorMsg.length()-2);
} else{
errorMessage = errorMsg;
} }
} }

View File

@@ -161,6 +161,7 @@ MainWindow::MainWindow(QWidget* parent) :
} }
qApp->processEvents(); qApp->processEvents();
}); });
connect(DeviceManager::Default(),&DeviceManager::raiseGlobalError,this,&MainWindow::triggerError,Qt::ConnectionType::QueuedConnection);
GUIErrorHandle::Default()->init(); GUIErrorHandle::Default()->init();
l = new LoginWindow(this); l = new LoginWindow(this);
QThread* t = QThread::create([]() { QThread* t = QThread::create([]() {
@@ -262,3 +263,9 @@ void MainWindow::debugConsoleOn() {
//clear buffer before redirect; //clear buffer before redirect;
this->console = text_edit; this->console = text_edit;
} }
void MainWindow::triggerError(const QString & msg) {
QString s(msg);
qDebug()<<"invoke trigger error slot msg:"<<msg;
EventCenter::Default()->triggerEvent(GUIErrorRaise, nullptr,(QObject*)&s);
}

View File

@@ -28,10 +28,12 @@ public:
void requestLogin(); void requestLogin();
QTextEdit* getEdit(); QTextEdit* getEdit();
void debugConsoleOn(); void debugConsoleOn();
public slots:
void triggerError(const QString&);
protected: protected:
void changeEvent(QEvent* event); void changeEvent(QEvent* event);
private: private:
void loadStyleSheet(const QString& sheetName); void loadStyleSheet(const QString& sheetName);
cJSON* json_root = nullptr; cJSON* json_root = nullptr;

File diff suppressed because one or more lines are too long