From 437423dd00c846b15d95224ad9192fde400898c4 Mon Sep 17 00:00:00 2001 From: xueyan hu <576627988@qq.com> Date: Tue, 18 Jan 2022 16:40:18 +0800 Subject: [PATCH] add swipe gesture --- src/json/jsonobject.cpp | 13 ++++- src/main.cpp | 12 ++-- src/mainwindow.cpp | 66 ++++++++++++++++++--- src/mainwindow.h | 12 +++- src/translations/en_US.ts | 8 +++ src/translations/en_US.ts.bak | 8 +++ src/translations/zh_CN.qm | Bin 10595 -> 10652 bytes src/translations/zh_CN.ts | 106 +++++++++++++++++++--------------- src/translations/zh_CN.ts.bak | 106 +++++++++++++++++++--------------- 9 files changed, 215 insertions(+), 116 deletions(-) diff --git a/src/json/jsonobject.cpp b/src/json/jsonobject.cpp index 9eff13a..ee905e2 100644 --- a/src/json/jsonobject.cpp +++ b/src/json/jsonobject.cpp @@ -46,6 +46,7 @@ char* JsonObject::getJsonString(const char* catergory, const char* stringName) if (!first) return nullptr; cJSON* second = cJSON_GetObjectItem(first, stringName); + if (!second) return nullptr; return second->valuestring; } @@ -61,8 +62,10 @@ char* JsonObject::getArrayNode(const char* catergory, const char* stringName, in if (!second) return nullptr; cJSON* third = cJSON_GetArrayItem(second, index); - + if (!third) return nullptr; cJSON* fourth = cJSON_GetObjectItem(third, id); + + if (!fourth) return nullptr; return fourth->valuestring; } @@ -78,7 +81,7 @@ void JsonObject::setArrayNode(const char* catergory, const char* stringName, int if (!second) return; cJSON* third = cJSON_GetArrayItem(second, index); - + if (!third) return; cJSON* Item = cJSON_CreateString(stringValue); cJSON_ReplaceItemInObject(third, id, Item); } @@ -93,7 +96,7 @@ int JsonObject::getArraySize(const char* catergory, const char* stringName) if (!first) return 0; cJSON* second = cJSON_GetObjectItem(first, stringName); - + if (!second) return 0; return cJSON_GetArraySize(second); } @@ -153,6 +156,8 @@ QStringList JsonObject::worklistFilters() if (!first) return QStringList(); cJSON* second = cJSON_GetObjectItem(first, "lists"); + + std::string lans = second->valuestring; QString str = QString::fromLocal8Bit(QByteArray::fromRawData(lans.c_str(), lans.size())); return str.split(";"); @@ -170,6 +175,8 @@ QStringList JsonObject::language() if (!first) return QStringList(); cJSON* second = cJSON_GetObjectItem(first, "language"); + if (!second) return QStringList(); + std::string lans = second->valuestring; QString str = QString::fromLocal8Bit(QByteArray::fromRawData(lans.c_str(), lans.size())); return str.split(";"); diff --git a/src/main.cpp b/src/main.cpp index 33c17d3..ec8c898 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -70,14 +70,14 @@ int main(int argc, char* argv[]) //暂时为了调试关闭锁屏 //Locker::Instance()->start(); //QObject::connect(obj, SIGNAL(touchScreen()), Locker::Instance(), SLOT(refreshTimer())); - - - - + QList gestures; + gestures << Qt::SwipeGesture; + w.grabGestures(gestures); QStringList app_args = a.arguments(); int ret = 0; if (app_args.contains("-d")) + //if (true) { w.debugConsoleOn(); qInstallMessageHandler(MainWindow::QMessageOutput); @@ -91,7 +91,7 @@ int main(int argc, char* argv[]) Timer.start(1000); thread.start(); w.showFullScreen(); - DeviceManager::Default()->initDevice(); + DeviceManager::Default()->initDevice(); w.requestLogin(); ret = a.exec(); @@ -100,7 +100,7 @@ int main(int argc, char* argv[]) } else { w.showFullScreen(); - DeviceManager::Default()->initDevice(); + DeviceManager::Default()->initDevice(); w.requestLogin(); ret = a.exec(); } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index ecabe57..4df3683 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -20,7 +20,7 @@ #include #include #include "TopBarWidget.h" - +#include void MainWindow::QMessageOutput(QtMsgType type, const QMessageLogContext& context, const QString& msg) @@ -79,7 +79,7 @@ MainWindow::MainWindow(QWidget* parent) : ui->centralWidget->setLayout(layout); this->setWindowFlags(Qt::Window); connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg) { - if (!this->ui->centralWidget->isVisible()) return; + if (!this->ui->centralWidget->isVisible()) return; //默认旧模式 if (!msgDialog) { msgDialog = new GUIMessageDialog(this); @@ -182,7 +182,7 @@ MainWindow::MainWindow(QWidget* parent) : } }); t->start(); - l->showFullScreen(); + l->showFullScreen(); centerWidgetHide(); connect(EventCenter::Default(), &EventCenter::ReloadLanguage, [=]() { @@ -242,7 +242,7 @@ QTextEdit* MainWindow::getEdit() } void MainWindow::requestLogin() { - l->setParent(this); + l->clearInputData(); l->setWindowModality(Qt::WindowModal); l->showFullScreen(); @@ -257,6 +257,7 @@ void MainWindow::requestLogin() { void MainWindow::debugConsoleOn() { QTextEdit* text_edit = new QTextEdit(this); + text_edit->setFocusPolicy(Qt::NoFocus); ui->centralWidget->layout()->addWidget(text_edit); const QString edit_style = "QScrollBar:vertical{border: 0px solid grey; background:#2d2d2d; width: 15px; margin: 0px 0 0px 0; }" @@ -267,8 +268,57 @@ void MainWindow::debugConsoleOn() { this->console = text_edit; } -void MainWindow::triggerError(const QString & msg) { - QString s(msg); - qDebug()<<"invoke trigger error slot msg:"<triggerEvent(GUIErrorRaise, nullptr,(QObject*)&s); +void MainWindow::triggerError(const QString& msg) { + QString s(msg); + qDebug() << "invoke trigger error slot msg:" << msg; + EventCenter::Default()->triggerEvent(GUIErrorRaise, nullptr, (QObject*)&s); } + +void MainWindow::grabGestures(const QList& gestures) +{ + //! [enable gestures] + foreach(Qt::GestureType gesture, gestures) + grabGesture(gesture); + //! [enable gestures] +} + +//! [event handler] +bool MainWindow::event(QEvent* event) +{ + if (event->type() == QEvent::Gesture) + return gestureEvent(static_cast(event)); + return QWidget::event(event); +} + +bool MainWindow::gestureEvent(QGestureEvent* event) +{ + //qCDebug(lcExample) << "gestureEvent():" << event; + if (QGesture* swipe = event->gesture(Qt::SwipeGesture)) + swipeTriggered(static_cast(swipe)); + else if (QGesture* pan = event->gesture(Qt::PanGesture)) + //panTriggered(static_cast(pan)); + if (QGesture* pinch = event->gesture(Qt::PinchGesture)) + //pinchTriggered(static_cast(pinch)); + return true; +} +void MainWindow::swipeTriggered(QSwipeGesture* gesture) +{ + if (gesture->state() == Qt::GestureFinished) { + if (gesture->horizontalDirection() == QSwipeGesture::Right) { + int index = tab->currentIndex(); + index--; + if (index >= 0) { + tab->setCurrentIndex(index); + } + + } + if (gesture->horizontalDirection() == QSwipeGesture::Left) { + int index = tab->currentIndex(); + index++; + if (index < tab->count()) { + tab->setCurrentIndex(index); + } + } + //update(); + } +} \ No newline at end of file diff --git a/src/mainwindow.h b/src/mainwindow.h index dd8032c..e056bda 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -13,6 +13,8 @@ namespace Ui { } class GUIMessageDialog; class QTabWidget; +class QGestureEvent; +class QSwipeGesture; class MainWindow : public QMainWindow @@ -28,13 +30,17 @@ public: void requestLogin(); QTextEdit* getEdit(); void debugConsoleOn(); - public slots: - void triggerError(const QString&); + + void grabGestures(const QList& gestures); +public slots: + void triggerError(const QString&); protected: void changeEvent(QEvent* event); - + bool event(QEvent* event) override; private: + bool gestureEvent(QGestureEvent* event); + void swipeTriggered(QSwipeGesture*); void loadStyleSheet(const QString& sheetName); cJSON* json_root = nullptr; diff --git a/src/translations/en_US.ts b/src/translations/en_US.ts index d7ffef0..e3d904f 100644 --- a/src/translations/en_US.ts +++ b/src/translations/en_US.ts @@ -289,6 +289,14 @@ Accept + + ... + + + + Hide Panel + + GUIFormBaseDialog diff --git a/src/translations/en_US.ts.bak b/src/translations/en_US.ts.bak index d7ffef0..e3d904f 100644 --- a/src/translations/en_US.ts.bak +++ b/src/translations/en_US.ts.bak @@ -289,6 +289,14 @@ Accept + + ... + + + + Hide Panel + + GUIFormBaseDialog diff --git a/src/translations/zh_CN.qm b/src/translations/zh_CN.qm index 84b94e5ba6f42261f76c885a42aa28f4cc50dacd..6cb83949b107a7a4d76655ea787ef49d2af915c1 100644 GIT binary patch delta 1257 zcmXApeNa?o6vm(3eedqxd-v{FyX-D3T$aAn45ATYClhrgfx%)jN*!p*fIcA8L27K2 z4c&5Zmht0;1+z}pNHfWf)DqSV(p1Y349jQ@CWg&qfTp9BV@m#!b>#i)ckX@P^PcxS z&$)N{so2_muJAelO@K8Huqq(K!Rh~+I02Y!oR$RfS6aWtsn&7ki~z!;fbtxWZv|wE z?@-ypnSLBteT4RW$mz}G^v?q2!$3Ie955aN(pBi|{{U>KIkS#{Mc)Q8&w~vx!1x=d z&&8>l!G3B7EY+Nj1)Q!LPTwugz#Ihe3&2e*x|jA(LMYh<_)8#^79b3L$9w=&A*Z6} z^lj$!XK|`Y2yeVciH)4uH4qNcfu*&rW!wggG zgEA^CcX2AYoEaNAGZU;UpaXIOEWWs#jN8EJo#o7GX1%+fr3p!JW}ISUMPp?ABb@di zr+S5@<_&v@)3u15EB_8MERp#Dz7^V4y~np+h{l&tpYIB>2WZfok8}DCX_*Gk`fWmL z?^$}=C8SQh0O)TBCo8s)S`EUP45F=*(|*ZVX8)X?>y7IMa!HK~#sdYb0AGsJubHY! z7^(J=DSGmK@*+oTH+aHVO+C?Ra<0U+Wxjcb~a@=3A0ttNDq<4bpmz z`RMcv-6F~9Xf_W<=>tl;B9@>1nW}CV8>%gomn$~Z&}5{wi;bUosJDJ`G(`E15izxV z6Ls^Ccw1ctNUkAiLp_=94rvcE&%zO@cBu>S_Di+#)5J3Aa1l+Ow?)<+rwJv`=9%-C z_8RkqkIHpTZGbB(zcutd75!6gt)L>h%W}uc5H;nHk0tVG5O!FKTc?0Pz!F;(p+VYh z8PL%m!}+>pZ07{+@3G7-Cn=>)B_K@FK=vwmq4P8_E0v`!byW1QvT^gLbVo^PtE6Vk zYm`0XqqN^H^FS@o6hU3~vh}|7cc{#uwc3A;j(yrX^B++vwn_az(zyI$liR9DL$~b* uGijYxX}f78ZQX;f0QW5FdsQfwwd<;1i#VKppV)VM*^}Ys1zP^XhyMr5(l#Lg delta 1259 zcmXBUe@t6d6bJBc%e#Gjef>q((w3IK6@Sj5gk>PeHgqi+;5Km$>V9C{ghd=#h8WFM zsC5{F>9R>>xUFV0VH!u{a7;q%m{BH!0GTsPWHWINqH$52(YfporU%bopT7Ivz4zR6 zPH!?Yvthq8S`DBXu)YdNH9+Yamr`y62FW&_QT;;#cay^zupV7SV9X4t?Kr0*y= z^HSD+lXd2?-Vru94583wF0%M8`u-z`@;!jx2~kl9=sW*63b}{}%okX18SDF<)jA+v zdY2}avWxQ|4$y+~vk(Vcfy_BJ>sN@LX8`wlSW7bLp-hSe@1&DPQ1Sgra+(cpMWpsNE$qV+mnVU&eThL`enCW6;`)oGJ*`W!(_V0PT-Nj^4fG>x^r^Q1I4d#@~87mDeHN(?r2J zI;5iEIw0c_X?OBPnpK*p)w`n&(tDM(wt1fQ6|gxm=}=Gy1g}e}ykk_8O|0h>8wg7$ z_B=_&kFmZZ(pd2r)zrY+jjWcI#usX#{>v`9CH+wK73~*cqh7lx{F!p3uNTFR4*=7T zqAfg18{aG9spXW*8j)PuP2sy(Z=?9Ilb($OqWAb984#o2?xf>Zi1B^X^j(7(|7I(# zcSD?C+eFEFNKE-i+jFdaz))%bl%5L>Po*C~6xp8{Its&p_b}_reSmqZ7a~RzAbJPs=^=8LFWspV&!SCs}Q?Ja4@T-0_C7YW7PYH)LFY@&>*48;{S- zQeZ=DX4p6wABj@2(@NF!B`VaT%8o5&nlP{IsLiACElOjrn=;U*jD~1|%r0g8VLGYf zoN`-R1vnF?P1~srTn EditPatientForm - + Form - + + ... + DICOM + + + ID - + Name 姓名 - + Date Of Birth 出生日期 - + Comment 备注 - + Gender 性别 - - + + Female - - + + Male - - + + Hide Panel + + + + + Cancel 取消 - - + + Accept 接受 @@ -555,22 +565,22 @@ LoginWindow - + U S C T - + Username 用户名 - + Password 密码 - + Login 登录 @@ -609,7 +619,7 @@ 管理 - + Settings 设置 @@ -680,12 +690,12 @@ RollingMessageWidget - + Message of warn! - + Message2 of warn! @@ -761,67 +771,67 @@ parameters SelectFormWidget - - + + Account 账户 - + Worklist - - + + Add 新增 - - + + Edit 编辑 - - + + Delete 删除 - - + + Select 选择 - - + + Name 姓名 - - + + Birth Date 出生日期 - - + + Gender 性别 - - + + Add Date 添加日期 - - + + Comment 备注 @@ -837,12 +847,12 @@ parameters TopBarWidget - + 浙江衡玖医疗科技 - + °C @@ -1165,22 +1175,22 @@ parameters 正在加载... - + total: %1G 总量:%1G - + Get disk total size fail! 磁盘总空间获取失败! - + used: %1G 使用:%1G - + Get disk used size fail! 磁盘使用空间获取失败! diff --git a/src/translations/zh_CN.ts.bak b/src/translations/zh_CN.ts.bak index f151828..05661f0 100644 --- a/src/translations/zh_CN.ts.bak +++ b/src/translations/zh_CN.ts.bak @@ -364,56 +364,66 @@ EditPatientForm - + Form - + + ... + DICOM + + + ID - + Name 姓名 - + Date Of Birth 出生日期 - + Comment 备注 - + Gender 性别 - - + + Female - - + + Male - - + + Hide Panel + + + + + Cancel 取消 - - + + Accept 接受 @@ -555,22 +565,22 @@ LoginWindow - + U S C T - + Username 用户名 - + Password 密码 - + Login 登录 @@ -609,7 +619,7 @@ 管理 - + Settings 设置 @@ -680,12 +690,12 @@ RollingMessageWidget - + Message of warn! - + Message2 of warn! @@ -761,67 +771,67 @@ parameters SelectFormWidget - - + + Account 账户 - + Worklist - - + + Add 新增 - - + + Edit 编辑 - - + + Delete 删除 - - + + Select 选择 - - + + Name 姓名 - - + + Birth Date 出生日期 - - + + Gender 性别 - - + + Add Date 添加日期 - - + + Comment 备注 @@ -837,12 +847,12 @@ parameters TopBarWidget - + 浙江衡玖医疗科技 - + °C @@ -1165,22 +1175,22 @@ parameters 正在加载... - + total: %1G 总量:%1G - + Get disk total size fail! 磁盘总空间获取失败! - + used: %1G 使用:%1G - + Get disk used size fail! 磁盘使用空间获取失败!