diff --git a/CMakeLists.txt b/CMakeLists.txt index 8991d1a..9758d83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,7 +86,7 @@ endif() if(UNIX AND USE_SHIMLIB) link_directories(/usr/local/lib64) - target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Widgets Qt5::Gui Qt5::OpenGL Qt5::Sql Qt5::VirtualKeyboard Qt5::Network Qt5::Multimedia Qt5::MultimediaWidgets pthread usct_shim dmapi log4c cunit ctomat hdf5 matio m) + target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Widgets Qt5::Gui Qt5::OpenGL Qt5::Sql Qt5::VirtualKeyboard Qt5::Network Qt5::Multimedia Qt5::MultimediaWidgets pthread xshim dmapi log4c cunit ctomat hdf5 matio m) elseif(UNIX) target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Widgets Qt5::Gui Qt5::OpenGL Qt5::Sql Qt5::VirtualKeyboard Qt5::Network Qt5::Multimedia Qt5::MultimediaWidgets pthread) else() diff --git a/src/ShimLib/ShimLib.c b/src/ShimLib/ShimLib.c deleted file mode 100644 index 1b895bc..0000000 --- a/src/ShimLib/ShimLib.c +++ /dev/null @@ -1,400 +0,0 @@ -#include -#include -#include "ShimLib.h" - -#ifdef _WIN32 -#include -#include -#else -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif -#include -#include - -typedef void(*error_cb)(const char* msg); -// level:0 infomation,1 warning,2 error,3 sucessed -typedef void(*message_callback)(const char* aMessage,const unsigned int aInfoType); - -int statusCountFlag = 0; -error_cb innerCallback = NULL; -message_callback msgCallback = NULL; -bool isAutoScan = false; - -#ifdef _WIN32 -void ThreadFunc(void*); -HANDLE th; -HANDLE e1,e2; -#else -void* ThreadFunc(void*); -void InitSever(); -pthread_t th; -pthread_t severThread; -sem_t e1; -sem_t e2; -#endif - -int InitLib(error_cb cb) -{ - innerCallback = cb; - innerCallback("11111"); -#ifdef _WIN32 - e1 = CreateEvent(NULL, FALSE, FALSE, "e1"); - e2 = CreateEvent(NULL, FALSE, FALSE, "e2"); - th = _beginthread(ThreadFunc, 0, NULL); -#else - sem_init(&e1, 0, 0); - sem_init(&e2, 0, 0); - th = pthread_create(&th, NULL, ThreadFunc, (void*)""); - severThread = pthread_create(&severThread, NULL, InitSever, (void*)""); -#endif - return 0; -} - -void SetMessageCallback(message_callback cb) -{ - msgCallback = cb; - msgCallback("info message", 0); - msgCallback("warning message", 1); - msgCallback("error message", 2); - msgCallback("sucess message", 3); -} - -volatile int running = 1; -volatile int progress = 0; -volatile int status = READY; -volatile int stop_flag = 0; -volatile int empty = 0; -char output_path[256] = {0}; - -#ifdef _WIN32 -void ThreadFunc(void* args) -{ -#else -void* ThreadFunc(__attribute__((unused))void* args) -{ -#endif - while (running) - { - stop_flag = 0; - progress = 0; -#ifdef _WIN32 - WaitForSingleObject(e1, INFINITE); -#else - sem_wait(&e1); -#endif - status = SCANNING; -#ifdef _WIN32 - Sleep(300); -#else - usleep(300000); -#endif - if (empty) - { - GetPreviewData(); - } - if (isAutoScan) - { - for (int i = 0; i <= 50; ++i) - { - if (stop_flag > 0 || status != SCANNING) - { - stop_flag = 0; - break; - } - if (i == 20) - { - progress = 139; -#ifdef _WIN32 - WaitForSingleObject(e2, INFINITE); -#else - sem_wait(&e2); -#endif - } - else if (i > 20 && i < 35) - { - progress = i * 2 + 100; - } - else if (i >= 35) - { - progress = i * 2 + 200; - } - else - { - progress = i * 2; - } - if (stop_flag > 0 || status != SCANNING) - { - stop_flag = 0; - break; - } -#ifdef _WIN32 - Sleep(300); -#else - usleep(300000); -#endif - } - } - else - { - while (progress < 100) - { - - } - } - status = READY; - } -} - -#ifdef _WIN32 -#else -void InitSever() -{ - int severFd = socket(AF_INET,SOCK_STREAM,0); - if (-1 == severFd) - { - printf("socket failed"); - return; - } - struct sockaddr_in severAddr; - severAddr.sin_family = AF_INET; - severAddr.sin_addr.s_addr = htonl(INADDR_ANY); - severAddr.sin_port = htons(8888); - if(0> bind(severFd,(struct sockaddr*)&severAddr,sizeof(severAddr))) - { - printf("bind failed"); - return; - } - - if(0> listen(severFd,2)) - { - printf("listen failed"); - return; - } - while (1) - { - int clientFd; - struct sockaddr_in clientAddr; - socklen_t clientAddrLen = sizeof(clientAddr); - clientFd = accept(severFd, (struct sockaddr*)&clientAddr, &clientAddrLen); - if (0 > clientFd) - { - printf("accept failed\n"); - return; - } - printf("accept sucess\n"); - while (1) - { - isAutoScan = false; - char receiveBuffer[64] = { 0 }; - int ref = recv(clientFd, receiveBuffer, 64, 0); - if (ref > 0) - { - printf("received %s\n", receiveBuffer); - char* data = strtok(receiveBuffer,","); - if (!data || strlen(data) != 1) - { - send(clientFd,"unknow command",sizeof("unknow command"),0); - continue; - } - if (data[0] == '0') - { - char* arg1 = strtok(NULL,","); - char* arg2 = strtok(NULL,","); - if (!arg1 || !arg2) - { - send(clientFd,"unknow command",sizeof("unknow command"),0); - continue; - } - msgCallback(arg1, atoi(arg2)); - send(clientFd,"msgCallback sucess",sizeof("msgCallback sucess"),0); - } - else if (data[0] == '1') - { - char* arg1 = strtok(NULL,","); - if (!arg1) - { - send(clientFd,"unknow command",sizeof("unknow command"),0); - continue; - } - innerCallback(arg1); - send(clientFd,"innerCallback sucess",sizeof("innerCallback sucess"),0); - } - else if (data[0] == 'p') - { - char* arg1 = strtok(NULL, ","); - if (!arg1) - { - send(clientFd,"unknow command",sizeof("unknow command"),0); - continue; - } - if (status == SCANNING) - { - progress = atoi(arg1); - send(clientFd, "set scan progress sucess", sizeof("set scan progress sucess"), 0); - } - else - { - send(clientFd, "status is not scaning", sizeof("status is not scaning"), 0); - } - } - else if (data[0] == 'e') - { - printf("client closed\n"); - close(clientFd); - break; - } - } - else - { - printf("client closed\n"); - close(clientFd); - break; - } - } - isAutoScan = true; - close(clientFd); - } - close(severFd); -} -#endif - - -int ScanControl(ScanAction actionType) { - - switch (actionType) { - case SCAN: - printf("Do Scan!\r\n"); - statusCountFlag = 2; -#ifdef _WIN32 - SYSTEMTIME st = {0}; - GetLocalTime(&st); -#else - time_t now; - struct tm* st; - time(&now); - st = localtime(&now); -#endif - sprintf(output_path, "%d%02d%02dT%02d%02d%02d", -#ifdef _WIN32 - st.wYear, - st.wMonth, - st.wDay, - st.wHour, - st.wMinute, - st.wSecond); - SetEvent(e1); -#else - st->tm_year+1900, - st->tm_mon+1, - st->tm_mday, - st->tm_hour, - st->tm_min, - st->tm_sec); - sem_post(&e1); -#endif - break; - case PREVIEW_SCAN: - statusCountFlag = 1; - status = SCANNING; - printf("Do preview!\r\n"); - break; - case STOP: - statusCountFlag = 0; - stop_flag = 1; - progress = 0; - status = READY; -#ifdef _WIN32 - SetEvent(e2); -#else - sem_post(&e2); -#endif - printf("Stop everything!\r\n"); - break; - case SCAN_CONTINUE: -#ifdef _WIN32 - SetEvent(e2); -#else - sem_post(&e2); -#endif - break; - } - return 0; -} - - - -StatusInfo GetStatus() { - StatusInfo inf; - inf.status = status; - inf.progress = progress; - return inf; -} - -//result, 0 success, other false -#ifdef _WIN32 -int SetScanInfo(const char* jsonString, int e) { -#else -int SetScanInfo(const __attribute__((unused))char* jsonString, __attribute__((unused))int e){ -#endif - empty = e; - return 0; -} - -int preivew_change_flag = 0; - -const size_t Row = 140; -const size_t Col = 140; - -#define BUFFER_SIZE Row * Col - -const char* FRAME_FILE_PATH_1 = "./img1_v2.bin"; -const char* FRAME_FILE_PATH_2 = "./pre_image.bin"; - -int previewCount = 0; -const char* GetPreviewData() { - previewCount++; - if (previewCount>3){ - status = READY; - innerCallback("Preview Device Error"); - return NULL; - } - FILE* file; - preivew_change_flag++; - preivew_change_flag = preivew_change_flag % 2; - // _sleep(2000); - if (file = fopen(preivew_change_flag ? FRAME_FILE_PATH_1 : FRAME_FILE_PATH_2, "rb")) { - unsigned char* buffer = malloc(sizeof(unsigned char) * BUFFER_SIZE); - fread(buffer, sizeof(unsigned char), BUFFER_SIZE, file); - fclose(file); - return buffer; - } - - return NULL; -} - -const char* GetDeviceInfo(DeviceInfo infoType) { - switch (infoType) { - case MEAN_TEMPERATURE: - return "28"; - case VERSION: - return "6.6.06"; - case DEV_OUTPATH: - return output_path; - } - return ""; -} - -#ifdef _WIN32 -void StopDevice(){ - CloseHandle(e1); - CloseHandle(e2); -} -#endif diff --git a/src/ShimLib/ShimLib.h b/src/ShimLib/ShimLib.h index 24b177f..4dca316 100644 --- a/src/ShimLib/ShimLib.h +++ b/src/ShimLib/ShimLib.h @@ -37,7 +37,6 @@ typedef enum { extern int InitLib(void(*)(const char *msg)); -extern void SetMessageCallback(void(*)(const char* aMessage,const unsigned int aInfoType)); extern int ScanControl(ScanAction actionType); diff --git a/src/components/ULineEdit.cpp b/src/components/ULineEdit.cpp index f86be0b..179aae9 100644 --- a/src/components/ULineEdit.cpp +++ b/src/components/ULineEdit.cpp @@ -3,7 +3,7 @@ #include #include -#include "Keyboard/KeyboardManager.h" +#include "keyboard/KeyboardManager.h" #include "ULineEditMenu.h" namespace diff --git a/src/device/DeviceManager.cpp b/src/device/DeviceManager.cpp index 66bba1b..a835e06 100644 --- a/src/device/DeviceManager.cpp +++ b/src/device/DeviceManager.cpp @@ -51,9 +51,9 @@ void errorCallback(const char* msg) DeviceManager::Default()->emitErrorCallback(msg); } -void infoCallback(const char* msg,const unsigned int aInfoType) +void infoCallback(const char* msg) { - DeviceManager::Default()->emitInfoCallback(msg,aInfoType); + DeviceManager::Default()->emitInfoCallback(msg,0); } const char * getPhaseName(int phase){ @@ -62,7 +62,6 @@ const char * getPhaseName(int phase){ void DeviceManager::initDevice() { InitLib(errorCallback); - SetMessageCallback(infoCallback); mDeviceInfTimerID = startTimer(10000); @@ -193,6 +192,8 @@ void DeviceManager::stopScan() { QThread::msleep(100); inf = GetStatus(); if (inf.status != SCANNING) { + mPreviewing = false; + AppGlobalValues::setInProcessing(false); TRIGGER_EVENT(ResponseStop, nullptr, nullptr); return; } @@ -242,6 +243,22 @@ void DeviceManager::close() { delete mPreviewDataCaller; } +const size_t Row = 140; +const size_t Col = 140; + +#define BUFFER_SIZE Row * Col + +unsigned char* buffer = nullptr; +void GetPreviewDataLocal(){ + + FILE* file; + if (file = fopen("img.bin", "rb")) { + buffer = (unsigned char*)malloc(sizeof(unsigned char) * BUFFER_SIZE); + fread(buffer, sizeof(unsigned char), BUFFER_SIZE, file); + fclose(file); + } +} + void DeviceManager::initPreviewThread() { mPreviewDataCaller = QThread::create([=]() { while (!mEndLoop) { @@ -254,14 +271,15 @@ void DeviceManager::initPreviewThread() { StatusInfo inf = GetStatus(); qDebug() << "GetPreviewData request status, status:" << getStatusString(inf.status); // device is preview scanning, try get preview data - if (inf.status == SCANNING) { + if (1) { qDebug() << "Preview data reader read start!"; - const char *data = GetPreviewData(); - if (!data) { + GetPreviewDataLocal(); + if (!buffer) { continue; } qDebug() << "Preview data reader read end!"; - QByteArray bytes = QByteArray::fromRawData(data, PREVIEW_IMAGE_WH * PREVIEW_IMAGE_WH); + qDebug()<<(int)buffer[5104]; + qDebug()<<(int)buffer[5105]; //double check if (!mPreviewing) { qDebug() << "Preview data reader long sleep!"; @@ -269,14 +287,14 @@ void DeviceManager::initPreviewThread() { continue; } qDebug() << "Preview data response event start!"; - TRIGGER_EVENT(ResponsePreviewData, nullptr, (QObject *) (&bytes)); + TRIGGER_EVENT(ResponsePreviewData, nullptr, (QObject *) (buffer)); qDebug() << "Preview data response event end!"; } else { mPreviewing = false; AppGlobalValues::setInProcessing(false); QThread::sleep(3); } - QThread::msleep(100); + QThread::sleep(1); } }); mPreviewDataCaller->start(); diff --git a/src/dialogs/DialogManager.cpp b/src/dialogs/DialogManager.cpp index fa56eae..3b4baa5 100644 --- a/src/dialogs/DialogManager.cpp +++ b/src/dialogs/DialogManager.cpp @@ -29,7 +29,6 @@ #include "appvals/AppGlobalValues.h" #include "json/jsonobject.h" -#include "shimlib/ShimLib.h" namespace { diff --git a/src/forms/TabFormWidget.cpp b/src/forms/TabFormWidget.cpp index f7ded9c..e877d89 100644 --- a/src/forms/TabFormWidget.cpp +++ b/src/forms/TabFormWidget.cpp @@ -1,5 +1,5 @@ #include "TabFormWidget.h" -#include "ui_tabformwidget.h" +#include "ui_TabFormWidget.h" #include #if defined(_MSC_VER) && (_MSC_VER >= 1600) diff --git a/src/forms/scan/ScanFormWidget.cpp b/src/forms/scan/ScanFormWidget.cpp index 90cd207..4164960 100644 --- a/src/forms/scan/ScanFormWidget.cpp +++ b/src/forms/scan/ScanFormWidget.cpp @@ -3,7 +3,7 @@ // #include "ScanFormWidget.h" -#include "ui_tabformwidget.h" +#include "ui_TabFormWidget.h" #include #include @@ -203,14 +203,20 @@ void ScanFormWidget::renderLoading() { } void ScanFormWidget::renderPreviewData(const QObject *data) { - if (!data)return; - auto array = (QByteArray*)data; - auto raw_dataptr = (uchar*)array->data(); + FILE* file; + uchar* raw_dataptr=nullptr; + if (file = fopen("img2_v2.bin", "rb")) { + raw_dataptr = (unsigned char*)malloc(sizeof(unsigned char) * 140*140); + fread(raw_dataptr, sizeof(unsigned char), 140*140, file); + fclose(file); + } uchar c_data[PREVIEW_ROW][PREVIEW_COL]; for (auto data_ptr : c_data) { memcpy(data_ptr, raw_dataptr, PREVIEW_COL); raw_dataptr += PREVIEW_COL; } + raw_dataptr-=PREVIEW_ROW*PREVIEW_COL; + free(raw_dataptr); QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8); mViewer->setFixedSize(800, 800); QPixmap pic = QPixmap::fromImage(img).scaledToHeight(800, Qt::SmoothTransformation); diff --git a/src/forms/select/SelectFormWidget.cpp b/src/forms/select/SelectFormWidget.cpp index b4aae6d..881138a 100644 --- a/src/forms/select/SelectFormWidget.cpp +++ b/src/forms/select/SelectFormWidget.cpp @@ -1,7 +1,7 @@ // // Created by Krad on 2021/10/8. // -#include "ui_tabformwidget.h" +#include "ui_TabFormWidget.h" #include "SelectFormWidget.h" #include diff --git a/src/forms/settings/GeneralForm.cpp b/src/forms/settings/GeneralForm.cpp index 9d85fa2..7597dad 100644 --- a/src/forms/settings/GeneralForm.cpp +++ b/src/forms/settings/GeneralForm.cpp @@ -1,4 +1,4 @@ -#include "generalform.h" +#include "GeneralForm.h" #include #include diff --git a/src/keyboard/Keyboard.ui b/src/keyboard/Keyboard.ui index d373e2b..1349175 100644 --- a/src/keyboard/Keyboard.ui +++ b/src/keyboard/Keyboard.ui @@ -861,23 +861,23 @@ InputTextWidget QLineEdit -
Keyboard/InputTextWidget.h
+
keyboard/InputTextWidget.h
KeyButton QPushButton -
Keyboard/KeyButton.h
+
keyboard/KeyButton.h
HandWriteWidget QWidget -
Keyboard/HandWriteWidget.h
+
keyboard/HandWriteWidget.h
1
SwitchInputModeButton QPushButton -
Keyboard/SwitchInputModeButton.h
+
keyboard/SwitchInputModeButton.h
diff --git a/src/main.cpp b/src/main.cpp index ab3b9f2..a84f98d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,7 +18,7 @@ #include "src/utilities/Locker.h" #include "src/utilities/LanguageSwitcher.h" #include "utilities/TouchScreenSignalSender.h" -#include "Keyboard/KeyboardManager.h" +#include "keyboard/KeyboardManager.h" QString loadFontFromFile(QString path) { diff --git a/src/network/NetworkCfgDialog.ui b/src/network/NetworkCfgDialog.ui index ec3e418..c6e4166 100644 --- a/src/network/NetworkCfgDialog.ui +++ b/src/network/NetworkCfgDialog.ui @@ -555,7 +555,7 @@ ImageSwitch QWidget -
components/imageswitch.h
+
components/ImageSwitch.h
1
diff --git a/src/translations/en_US.ts b/src/translations/en_US.ts index 4d2f7dd..e9ba7d5 100644 --- a/src/translations/en_US.ts +++ b/src/translations/en_US.ts @@ -2,7 +2,7 @@ - AboutWidget + AboutForm HJ-USCT-01 V1.0 @@ -12,15 +12,15 @@ - Copyright © 2017-2020 Zhejiang Equilibrium Nine Medical Equipment Co., Ltd. All Rights Reversed + Copyright © 2017-2022 Zhejiang Equilibrium Nine Medical Equipment Co., Ltd. All Rights Reversed - GUI Software V1.3 + GUI Software V%1 - Embedded Software V1.5 + Embedded Software %1, Data store Path:%2 @@ -31,28 +31,28 @@ FEB Information - - Copyright © 2017-2022 Zhejiang Equilibrium Nine Medical Equipment Co., Ltd. All Rights Reversed - - Qt 5.12.0 - cJSON + Loading... Copyright (c) 1994-2021, OFFIS e.V. + + cJSON + + Copyright (c) 2009-2017 Dave Gamble - Loading... + Copyright © 2017-2020 Zhejiang Equilibrium Nine Medical Equipment Co., Ltd. All Rights Reversed @@ -178,25 +178,6 @@ - - AdminSettingForm - - General - - - - About - - - - Account - - - - System - - - AlertDialog @@ -244,9 +225,67 @@ - PatientDetailForm + DateSelectDialog - Form + Date exceeded! + + + + + DicomCfgDialog + + Dialog + + + + DICOM Settings + + + + IP + + + + AE + + + + Port + + + + Name + + + + ... + + + + Worklist + + + + PACS + + + + 3D Recon + + + + Apply + + + + Cancel + + + + + EditPatientDialog + + Edit Patient @@ -257,14 +296,6 @@ Name - - Date Of Birth - - - - Comment - - Gender @@ -278,19 +309,23 @@ - Cancel + Other - Accept + Birth Date - ... + Comment - Hide Panel + F + + + + M @@ -312,7 +347,7 @@ - ... + OK @@ -393,14 +428,215 @@ - InputObject + GetWorkListAction + + Search Query Error + + + + DB Unknow Error + + + + WorkList Search Failed + + + + Same Patient Existed + + + + DB Error,Patient Write Failed + + + + + GetWorkListDialog + + Accession Nummber + + + + Patient ID + + + + Accession Number and Patient Id is Empty. + + + + Unknow Error. code:001001001 + + + + + InputModeMenu Form - LoginWindow + Keyboard + + Form + + + + q + + + + w + + + + e + + + + r + + + + t + + + + y + + + + u + + + + i + + + + o + + + + p + + + + Back + + + + a + + + + s + + + + d + + + + f + + + + g + + + + h + + + + j + + + + k + + + + l + + + + Enter + + + + 小写 + + + + z + + + + x + + + + c + + + + v + + + + b + + + + n + + + + m + + + + ↑ + + + + ?123 + + + + En + + + + Space + + + + Hide + + + + ← + + + + ↓ + + + + → + + + + Clear + + + + + LoginDialog U S C T @@ -433,11 +669,153 @@ - Verify + Settings + + + + + NetworkCfgDialog + + Network Settings - Settings + IP Address + + + + DHCP + + + + Dev + + + + Subnet Mask + + + + Additional Address + + + + Add + + + + Edit + + + + Delete + + + + Address + + + + Default IPv4 Gateway + + + + Routing Table + + + + Routing + + + + Name + + + + Port + + + + AE + + + + IP + + + + DICOM + + + + Result + + + + Netmask + + + + Destination + + + + Gateway + + + + Apply + + + + Cancel + + + + + PatientDetailForm + + Form + + + + ID + + + + Name + + + + Date Of Birth + + + + Comment + + + + Gender + + + + Female + + + + Male + + + + ... + + + + Hide Panel + + + + Other @@ -540,6 +918,10 @@ parameters RIGHT + + No refresh data exists, please do Refresh operation first. + + SelectFormWidget @@ -587,6 +969,96 @@ parameters Comment + + Can't delete selected Patient ! + + + + Alert + + + + Delete Patient "%1" ? + + + + Confirm + + + + Can't delete selected Patient , db submit error! + + + + + SettingFormWidget + + General + + + + Account + + + + System + + + + About + + + + + SystemSettingForm + + Form + + + + Protocal + + + + Auto Verify + + + + IP + + + + Worklist Filter + + + + DICOM + + + + Disk Storage + + + + Loading... + + + + used: %1G + + + + Get disk used size fail! + + + + total: %1G + + + + Get disk total size fail! + + TabFormWidget @@ -613,205 +1085,4 @@ parameters - - dicomCfgDialog - - Dialog - - - - Name - - - - IP - - - - Port - - - - AE - - - - Worklist - - - - PACS - - - - 3D Recon - - - - Apply - - - - Cancel - - - - DICOM Settings - - - - ... - - - - - networkCfgDialog - - Network Settings - - - - IP Address - - - - Dev - - - - Subnet Mask - - - - Additional Address - - - - Add - - - - Edit - - - - Delete - - - - Address - - - - Default IPv4 Gateway - - - - Routing Table - - - - Routing - - - - Result - - - - Netmask - - - - Destination - - - - Gateway - - - - Apply - - - - Cancel - - - - DHCP - - - - Name - - - - Port - - - - AE - - - - IP - - - - DICOM - - - - - systemSettingForm - - Form - - - - Protocal - - - - Worklist Filter - - - - Auto Verify - - - - IP - - - - DICOM - - - - Disk Storage - - - - Loading... - - - - total: %1G - - - - Get disk total size fail! - - - - used: %1G - - - - Get disk used size fail! - - - diff --git a/src/translations/zh_CN.qm b/src/translations/zh_CN.qm index d189d52..17bf68b 100644 Binary files a/src/translations/zh_CN.qm and b/src/translations/zh_CN.qm differ diff --git a/src/translations/zh_CN.ts b/src/translations/zh_CN.ts index c90d368..179bf34 100644 --- a/src/translations/zh_CN.ts +++ b/src/translations/zh_CN.ts @@ -2,119 +2,126 @@ - AboutWidget + AboutForm - - + + HJ-USCT-01 V1.0 - - + + ? - - cJSON - - - - - Copyright © 2017-2020 Zhejiang Equilibrium Nine Medical Equipment Co., Ltd. All Rights Reversed - - - - - - GUI Software V1.3 - - - - + Copyright © 2017-2022 Zhejiang Equilibrium Nine Medical Equipment Co., Ltd. All Rights Reversed - - - Embedded Software V1.5 + + + GUI Software V%1 - - + + + Embedded Software %1, Data store Path:%2 + + + + + Reconstruction Software V1.2 - - + + FEB Information - + Qt 5.12.0 - - + + Loading... - 正在加载 + - + Copyright (c) 1994-2021, OFFIS e.V. - + + cJSON + + + + Copyright (c) 2009-2017 Dave Gamble + + + Copyright © 2017-2020 Zhejiang Equilibrium Nine Medical Equipment Co., Ltd. All Rights Reversed + + + + + AboutWidget + + Loading... + 正在加载 + AccountFormDialog - + Account 账户 - + User ID 用户ID - + Input User ID 输入用户ID - + Name 姓名 - + Input User name 输入用户名 - + Password 密码 - + Change Password 修改密码 - + Input password 输入密码 @@ -127,12 +134,12 @@ 重置密码 - + Reset Password 密码重置 - + Logout 登出 @@ -145,55 +152,55 @@ 医生 - + Reset password to "123456" ? 密码重置为"123456"? - + Inner error, can't find reference user! 内部错误! - - + + Submit change to database fail! 修改提交至数据库失败! - + Comment 备注 - - - + + + User Name can't be empty! 用户名不能为空! - + User ID can't be empty! 用户ID不能为空! - + Password can't be empty! 密码不能为空! - + Inner error ,unset data model! 内部错误! - + User Id exists! 用户ID已存在! - + Submit to data base fail! 提交至数据库失败! @@ -201,74 +208,1166 @@ AccountTableForm - + ID - - + + Name 姓名 - - + + Role 角色 - - + + Comment 备注 - - + + Add 新增 - - + + Edit 编辑 - - + + Delete 删除 - + Can't delete current log in account! 当前用户无法删除日志! - + Delete account with ID:"%1"! 删除账户ID:"%1"! + + AlertDialog + + + Warning + + + + + ChangePasswordFormDialog + + + Change Password + 修改密码 + + + + Current Password + 当前密码 + + + + New Password + 新密码 + + + + Confirm Password + 确认密码 + + + + Please enter your old password! + 请输入旧密码! + + + + New password should at least 6 characters! + 新密码至少6位字符! + + + + Wrong password! + 密码错误! + + + + Your new password does not match! + 新密码不匹配! + + + + Database update error! + 数据库更新错误! + + + + DateSelectDialog + + + Date exceeded! + + + + + DicomCfgDialog + + + Dialog + + + + + DICOM Settings + DICOM 配置 + + + + + + IP + + + + + + + AE + + + + + + + Port + + + + + + + Name + 姓名 + + + + + + ... + DICOM + + + + Worklist + + + + + PACS + + + + + 3D Recon + + + + + Apply + 应用 + + + + Cancel + 取消 + + + + EditPatientDialog + + + Edit Patient + 修改患者信息 + + + + ID + + + + + Name + 姓名 + + + + + Other + + + + + Birth Date + 出生日期 + + + + Comment + 备注 + + + + F + + + + + M + + + + + Gender + 性别 + + + + + + + Female + + + + + + + Male + + + + Cancel + 取消 + + + Accept + 接受 + + + + GUIFormBaseDialog + + + OK + 确认 + + + + Cancel + 取消 + + + + GUIMessageDialog + + + Dialog + + + + + OK + 确认 + + + + GeneralForm + + + + Language + 语言 + + + + Institution Name + 机构名称 + + + + + + Institution Addr + 机构地址 + + + + + Lock Screen + 锁屏时间 + + + Lock Screen Timeout + 锁屏时间 + + + + s + + + + + GetAdminPsw + + + Admin Password + 管理员密码 + + + + GetIPDialog + + + IP Address + IP地址 + + + + Netmask + 子网掩码 + + + + Wrong IP! + IP错误! + + + + Wrong Netmask! + 子网掩码错误! + + + + GetRouteDialog + + + Destination + 目标地址 + + + + Netmask + 子网掩码 + + + + Gateway + 网关 + + + + Wrong Destination! + 目标地址错误! + + + + Wrong Netmask! + 子网掩码错误! + + + + Wrong Gateway! + 网关错误! + + + + GetWorkListAction + + + Search Query Error + + + + + DB Unknow Error + + + + + WorkList Search Failed + + + + + Same Patient Existed + + + + + DB Error,Patient Write Failed + + + + + GetWorkListDialog + + + Accession Nummber + + + + + Patient ID + + + + + Accession Number and Patient Id is Empty. + + + + + Unknow Error. code:001001001 + + + + + InputModeMenu + + + Form + + + + + Keyboard + + + Form + + + + + q + + + + + w + + + + + e + + + + + r + + + + + t + + + + + y + + + + + u + + + + + i + + + + + o + + + + + p + + + + + + Back + + + + + a + + + + + s + + + + + d + + + + + f + + + + + g + + + + + h + + + + + j + + + + + k + + + + + l + + + + + Enter + + + + + 小写 + + + + + z + + + + + x + + + + + c + + + + + v + + + + + b + + + + + n + + + + + m + + + + + ↑ + + + + + ?123 + + + + + + En + + + + + Space + + + + + + Hide + + + + + ← + + + + + ↓ + + + + + → + + + + + Clear + + + + + LoginDialog + + + U S C T + + + + + Username + 用户名 + + + + Password + 密码 + + + + Login + 登录 + + + + MainWindow + + + MainWindow + + + + + + Select + 选择 + + + + + Scan + 扫描 + + + Verify + 确认 + + + Admin + 管理 + + + + + Settings + 设置 + + + + NetworkCfgDialog + + + + Network Settings + 网络配置 + + + + + IP Address + IP地址 + + + + DHCP + + + + + Dev + 设备 + + + + Subnet Mask + 子网掩码 + + + + Additional Address + 额外地址 + + + + + Add + 新增 + + + + + Edit + 编辑 + + + + + Delete + 删除 + + + + Address + IP配置 + + + + Default IPv4 Gateway + 默认网关 + + + + Routing Table + 路由表 + + + + Routing + 路由配置 + + + + Name + 姓名 + + + + Port + + + + + AE + + + + + IP + + + + + DICOM + + + + + Result + 结果 + + + + + Netmask + 子网掩码 + + + + Destination + 目标地址 + + + + Gateway + 网关 + + + + Apply + 应用 + + + + Cancel + 取消 + + + + PatientDetailForm + + + Form + + + + + ... + DICOM + + + + ID + + + + + Name + 姓名 + + + + Date Of Birth + 出生日期 + + + + Comment + 备注 + + + + Gender + 性别 + + + + + Female + + + + + + Male + + + + + + Other + + + + + Hide Panel + + + + Cancel + 取消 + + + Accept + 接受 + + + + PatientInformationForm + + + Form + + + + + Patient Information + 患者信息 + + + + <html><head/><body><p>PatientID:</p></body></html> + <html><head/><body><p>患者ID:</p></body></html> + + + + Someone Somebody + XXX + + + + 2021/11/11 + + + + + Female + + + + + Acc# 27812398 + + + + + Current Protocol + 当前协议 + + + + + LEFT ONLY + 左侧 + + + Name + 姓名 + + + Gender + 性别 + + + + RIGHT ONLY + 右侧 + + + + RollingMessageWidget + + + Message of warn! + + + + + Message2 of warn! + + + + + ScanFormWidget + + + + Protocol + 扫描协议 + + + + + LEFT + 左侧 + + + + + RIGHT + 右侧 + + + + + Refresh + 空扫 + + + + + Preview + 预扫 + + + + + Stop + 停止 + + + + + Scan + 扫描 + + + + No refresh data exists, please do Refresh operation first. + + + + + + Preview Parameters + 预览参数 + + + + + + + some settings + +parameters + + XXX + + + + + Scan Parameters + 扫描参数 + + + + SelectFormWidget + + + + Account + 账户 + + + + Worklist + + + + + + Add + 新增 + + + + + Edit + 编辑 + + + + + Delete + 删除 + + + + + Select + 选择 + + + + Can't delete selected Patient ! + + + + + + Alert + + + + + Delete Patient "%1" ? + + + + + Confirm + + + + + Can't delete selected Patient , db submit error! + + + + + + Name + 姓名 + + + + + Birth Date + 出生日期 + + + + + Gender + 性别 + + + + + Add Date + 添加日期 + + + + + Comment + 备注 + + SettingFormWidget - - + + General 通用 - - + + Account 账号 - - + + System 系统 @@ -297,600 +1396,80 @@ 操作日志 - - + + About 关于 - AlertDialog + SystemSettingForm - - Warning - - - - - ChangePasswordFormDialog - - - Change Password - 修改密码 - - - - Current Password - 当前密码 - - - - New Password - 新密码 - - - - Confirm Password - 确认密码 - - - - Please enter your old password! - 请输入旧密码! - - - - New password should at least 6 characters! - 新密码至少6位字符! - - - - Wrong password! - 密码错误! - - - - Your new password does not match! - 新密码不匹配! - - - - Database update error! - 数据库更新错误! - - - - PatientDetailForm - - + Form - - - - - ... - DICOM - - - - ID - - - - - Name - 姓名 - - - - Date Of Birth - 出生日期 - - - - Comment - 备注 - - - - Gender - 性别 - - - - - Female - - - - - - Male - - - - - Hide Panel - - - Cancel - 取消 + + Protocal + 默认扫描协议 - - - Accept - 接受 + + Auto Verify + 自动验证 - - - EditPatientDialog - - Edit Patient - 修改患者信息 + + IP + - - ID - + + Worklist Filter + Worklist过滤器 - - Name - 姓名 + + DICOM + - - - Birth Date - 出生日期 - - - Comment - 备注 + + Disk Storage + 磁盘存储 - - Gender - 性别 + + + Loading... + - - Female - + + used: %1G + - - Male - + + Get disk used size fail! + 磁盘使用空间获取失败! - - Cancel - 取消 + + total: %1G + - Accept - 接受 - - - - - GUIFormBaseDialog - - - OK - 确认 - - - - Cancel - 取消 - - - - GUIMessageDialog - - - Dialog - - - - - ... - - - - - GeneralForm - - - - Language - 语言 - - - - Institution Name - 机构名称 - - - - - - Institution Addr - 机构地址 - - - - - Lock Screen - 锁屏时间 - - - Lock Screen Timeout - 锁屏时间 - - - - s - - - - - GetAdminPsw - - - Admin Password - 管理员密码 - - - - GetIPDialog - - - IP Address - IP地址 - - - - Netmask - 子网掩码 - - - - Wrong IP! - IP错误! - - - - Wrong Netmask! - 子网掩码错误! - - - - GetRouteDialog - - - Destination - 目标地址 - - - - Netmask - 子网掩码 - - - - Gateway - 网关 - - - - Wrong Destination! - 目标地址错误! - - - - Wrong Netmask! - 子网掩码错误! - - - - Wrong Gateway! - 网关错误! - - - - InputObject - - - Form - - - - - LoginDialog - - - U S C T - - - - - Username - 用户名 - - - - Password - 密码 - - - - Login - 登录 - - - Login - 登录 - - - - MainWindow - - - MainWindow - - - - - - Select - 选择 - - - - - Scan - 扫描 - - - - - Verify - 确认 - - - Admin - 管理 - - - - - Settings - 设置 - - - - PatientInformationForm - - - Form - - - - - Patient Information - 患者信息 - - - - <html><head/><body><p>PatientID:</p></body></html> - <html><head/><body><p>患者ID:</p></body></html> - - - - Someone Somebody - XXX - - - - 2021/11/11 - - - - - Female - - - - - Acc# 27812398 - - - - - Current Protocol - 当前协议 - - - - - LEFT ONLY - 左侧 - - - Name - 姓名 - - - Gender - 性别 - - - - RIGHT ONLY - 右侧 - - - - RollingMessageWidget - - - Message of warn! - - - - - Message2 of warn! - - - - - ScanFormWidget - - - - Protocol - 扫描协议 - - - - - LEFT - 左侧 - - - - - RIGHT - 右侧 - - - - - Refresh - 空扫 - - - - - Preview - 预扫 - - - - - Stop - 停止 - - - - - Scan - 扫描 - - - - - Preview Parameters - 预览参数 - - - - - - - some settings - -parameters - - XXX - - - - - Scan Parameters - 扫描参数 - - - - SelectFormWidget - - - - Account - 账户 - - - - Worklist - - - - - - Add - 新增 - - - - - Edit - 编辑 - - - - - Delete - 删除 - - - - - Select - 选择 - - - - - Name - 姓名 - - - - - Birth Date - 出生日期 - - - - - Gender - 性别 - - - - - Add Date - 添加日期 - - - - - Comment - 备注 + + Get disk total size fail! + 磁盘总空间获取失败! TabFormWidget - + Form @@ -898,12 +1477,12 @@ parameters TopBarWidget - + 浙江衡玖医疗科技 - + °C @@ -946,99 +1525,40 @@ parameters dicomCfgDialog - - - Dialog - - DICOM Setting DICOM 设置 - DICOM Settings - DICOM 配置 + DICOM 配置 - - - - Name - - - - - - - IP - - - - - - - Port - - - - - - - AE - - - - - Worklist - - - - - - ... - DICOM + DICOM - - PACS - - - - - 3D Recon - - - - Apply - 应用 + 应用 - Cancel - 取消 + 取消 networkCfgDialog - - Network Settings - 网络配置 + 网络配置 - Address - IP配置 + IP配置 - - IP Address - IP地址 + IP地址 Network Setting @@ -1049,159 +1569,96 @@ parameters 动态地址 - Dev - 设备 + 设备 - Subnet Mask - 子网掩码 + 子网掩码 - Additional Address - 额外地址 + 额外地址 - - Add - 新增 + 新增 - - Edit - 编辑 + 编辑 - - Delete - 删除 + 删除 - Routing - 路由配置 + 路由配置 - Default IPv4 Gateway - 默认网关 + 默认网关 - - DHCP - - - - Routing Table - 路由表 + 路由表 - - Name - - - - - Port - - - - - AE - - - - - IP - - - - - DICOM - - - - Result - 结果 + 结果 - - Netmask - 子网掩码 + 子网掩码 - Destination - 目标地址 + 目标地址 - Gateway - 网关 + 网关 - Apply - 应用 + 应用 - Cancel - 取消 + 取消 systemSettingForm - - - Form - - Network Setting 网络配置 - Protocal - 默认扫描协议 + 默认扫描协议 - Worklist Filter - Worklist过滤器 + Worklist过滤器 - Disk Storage - 磁盘存储 + 磁盘存储 ... DICOM - Auto Verify - 自动验证 + 自动验证 Configure 配置 - - - IP - - Name 姓名 @@ -1215,35 +1672,24 @@ parameters 接受 - - DICOM - - - - - Loading... - 正在加载... + 正在加载... - total: %1G - 总量:%1G + 总量:%1G - Get disk total size fail! - 磁盘总空间获取失败! + 磁盘总空间获取失败! - used: %1G - 使用:%1G + 使用:%1G - Get disk used size fail! - 磁盘使用空间获取失败! + 磁盘使用空间获取失败!