Compare commits
4 Commits
dev
...
0fc1874d81
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0fc1874d81 | ||
|
|
0c522defb3 | ||
|
|
8e4881bf15 | ||
|
|
ba2daf58a5 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,6 +1,8 @@
|
||||
/cmake-build-debug/
|
||||
/.idea/*
|
||||
/.idea/
|
||||
/.idea/
|
||||
/.svn/
|
||||
/build/
|
||||
/project/
|
||||
/src/styles/
|
||||
/cmake-build-release/
|
||||
|
||||
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
@@ -4,4 +4,7 @@
|
||||
<component name="JavaScriptSettings">
|
||||
<option name="languageLevel" value="ES6" />
|
||||
</component>
|
||||
<component name="ProjectPlainTextFileTypeManager">
|
||||
<file url="file://$PROJECT_DIR$/src/translations/zh_CN.ts" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -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()
|
||||
|
||||
@@ -1,400 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "ShimLib.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <Windows.h>
|
||||
#include <process.h>
|
||||
#else
|
||||
#include <pthread.h>
|
||||
#include <semaphore.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/time.h>
|
||||
#include <unistd.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <string.h>
|
||||
#endif
|
||||
#include <stdbool.h>
|
||||
#include <time.h>
|
||||
|
||||
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
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include <QTimer>
|
||||
#include <QApplication>
|
||||
|
||||
#include "Keyboard/KeyboardManager.h"
|
||||
#include "keyboard/KeyboardManager.h"
|
||||
#include "ULineEditMenu.h"
|
||||
|
||||
namespace
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -103,15 +102,6 @@ void DeviceManager::startScan(const char* json, bool empty) {
|
||||
static QString msg = "Start scan...";
|
||||
AppGlobalValues::setInProcessing(true);
|
||||
TRIGGER_EVENT(GUIEvents::InvokeOperationStart, nullptr, (QObject*)&msg);
|
||||
qDebug() << "SetScanInfo>>>>>>>>>>>>>>>>>>>>";
|
||||
AppGlobalValues::setEmptyScanFlag(empty);
|
||||
int ret = SetScanInfo(json, empty ? 1 : 0);
|
||||
if (ret) {
|
||||
qDebug() << ">>>>>>>>>>>>>>>>>>>>SetScanInfo failed";
|
||||
THROW_ERROR("Transfer patient information fail!")
|
||||
return;
|
||||
}
|
||||
qDebug() << ">>>>>>>>>>>>>>>>>>>>SetScanInfo success";
|
||||
postScanCommand();
|
||||
}
|
||||
|
||||
@@ -188,24 +178,6 @@ void DeviceManager::prepareFinishScan() {
|
||||
// stop normal scan with prompt
|
||||
TRIGGER_EVENT(InvokeOperationEnd, nullptr, (QObject *) &var);
|
||||
AppGlobalValues::setInProcessing(false);
|
||||
|
||||
// get output data path
|
||||
QString outputPath = GetDeviceInfo(DEV_OUTPATH);
|
||||
outputPath = outputPath.replace("\\", "/");
|
||||
// get scan ID from path
|
||||
if (outputPath.endsWith('/')) outputPath = outputPath.remove(outputPath.length() - 1, 1);
|
||||
QStringList list = outputPath.split('/');
|
||||
if (list.length()) {
|
||||
if (AppGlobalValues::EmptyScanFlag().toBool()) {
|
||||
ScanJson::Current()->setEmptyScanID(list.last().toStdString().c_str());
|
||||
} else {
|
||||
ScanJson::Current()->setScanID(list.last().toStdString().c_str());
|
||||
}
|
||||
// save json
|
||||
ScanJson::Current()->save();
|
||||
} else {
|
||||
THROW_ERROR("Scan Output Path error!")
|
||||
}
|
||||
}
|
||||
|
||||
void DeviceManager::stopScan() {
|
||||
@@ -220,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;
|
||||
}
|
||||
@@ -269,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) {
|
||||
@@ -281,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!";
|
||||
@@ -296,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();
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
|
||||
#include "appvals/AppGlobalValues.h"
|
||||
#include "json/jsonobject.h"
|
||||
#include "shimlib/ShimLib.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "TabFormWidget.h"
|
||||
#include "ui_tabformwidget.h"
|
||||
#include "ui_TabFormWidget.h"
|
||||
#include <QDateTime>
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1600)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
//
|
||||
|
||||
#include "ScanFormWidget.h"
|
||||
#include "ui_tabformwidget.h"
|
||||
#include "ui_TabFormWidget.h"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QToolButton>
|
||||
@@ -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);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// Created by Krad on 2021/10/8.
|
||||
//
|
||||
#include "ui_tabformwidget.h"
|
||||
#include "ui_TabFormWidget.h"
|
||||
#include "SelectFormWidget.h"
|
||||
|
||||
#include <QToolButton>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "generalform.h"
|
||||
#include "GeneralForm.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QPushButton>
|
||||
|
||||
@@ -861,23 +861,23 @@
|
||||
<customwidget>
|
||||
<class>InputTextWidget</class>
|
||||
<extends>QLineEdit</extends>
|
||||
<header>Keyboard/InputTextWidget.h</header>
|
||||
<header>keyboard/InputTextWidget.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>KeyButton</class>
|
||||
<extends>QPushButton</extends>
|
||||
<header>Keyboard/KeyButton.h</header>
|
||||
<header>keyboard/KeyButton.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>HandWriteWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>Keyboard/HandWriteWidget.h</header>
|
||||
<header>keyboard/HandWriteWidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>SwitchInputModeButton</class>
|
||||
<extends>QPushButton</extends>
|
||||
<header>Keyboard/SwitchInputModeButton.h</header>
|
||||
<header>keyboard/SwitchInputModeButton.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -555,7 +555,7 @@
|
||||
<customwidget>
|
||||
<class>ImageSwitch</class>
|
||||
<extends>QWidget</extends>
|
||||
<header location="global">components/imageswitch.h</header>
|
||||
<header location="global">components/ImageSwitch.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="zh_CN">
|
||||
<context>
|
||||
<name>AboutWidget</name>
|
||||
<name>AboutForm</name>
|
||||
<message>
|
||||
<source>HJ-USCT-01 V1.0</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -12,15 +12,15 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copyright © 2017-2020 Zhejiang Equilibrium Nine Medical Equipment Co., Ltd. All Rights Reversed</source>
|
||||
<source>Copyright © 2017-2022 Zhejiang Equilibrium Nine Medical Equipment Co., Ltd. All Rights Reversed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>GUI Software V1.3</source>
|
||||
<source>GUI Software V%1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Embedded Software V1.5</source>
|
||||
<source>Embedded Software %1, Data store Path:%2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -31,28 +31,28 @@
|
||||
<source>FEB Information</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copyright © 2017-2022 Zhejiang Equilibrium Nine Medical Equipment Co., Ltd. All Rights Reversed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Qt 5.12.0</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>cJSON</source>
|
||||
<source>Loading...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copyright (c) 1994-2021, OFFIS e.V.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>cJSON</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copyright (c) 2009-2017 Dave Gamble</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading...</source>
|
||||
<source>Copyright © 2017-2020 Zhejiang Equilibrium Nine Medical Equipment Co., Ltd. All Rights Reversed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@@ -178,25 +178,6 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AdminSettingForm</name>
|
||||
<message>
|
||||
<source>General</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Account</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>System</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AlertDialog</name>
|
||||
<message>
|
||||
@@ -244,9 +225,67 @@
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PatientDetailForm</name>
|
||||
<name>DateSelectDialog</name>
|
||||
<message>
|
||||
<source>Form</source>
|
||||
<source>Date exceeded!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DicomCfgDialog</name>
|
||||
<message>
|
||||
<source>Dialog</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DICOM Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IP</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>AE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Worklist</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PACS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>3D Recon</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Apply</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditPatientDialog</name>
|
||||
<message>
|
||||
<source>Edit Patient</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -257,14 +296,6 @@
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date Of Birth</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comment</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gender</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -278,19 +309,23 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel</source>
|
||||
<source>Other</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept</source>
|
||||
<source>Birth Date</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>...</source>
|
||||
<source>Comment</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> Hide Panel</source>
|
||||
<source>F</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>M</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@@ -312,7 +347,7 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>...</source>
|
||||
<source>OK</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@@ -393,14 +428,215 @@
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InputObject</name>
|
||||
<name>GetWorkListAction</name>
|
||||
<message>
|
||||
<source>Search Query Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DB Unknow Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>WorkList Search Failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Same Patient Existed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DB Error,Patient Write Failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GetWorkListDialog</name>
|
||||
<message>
|
||||
<source>Accession Nummber</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Patient ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accession Number and Patient Id is Empty.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknow Error. code:001001001</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InputModeMenu</name>
|
||||
<message>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginWindow</name>
|
||||
<name>Keyboard</name>
|
||||
<message>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>q</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>w</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>e</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>r</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>t</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>y</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>u</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>i</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>o</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Back</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>a</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>s</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>d</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>f</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>g</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>h</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>j</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>k</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>l</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>小写</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>z</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>c</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>v</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>b</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>n</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>m</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>↑</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>?123</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>En</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Space</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>←</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>↓</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> →</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginDialog</name>
|
||||
<message>
|
||||
<source>U S C T</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -433,11 +669,153 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Verify</source>
|
||||
<source>Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NetworkCfgDialog</name>
|
||||
<message>
|
||||
<source>Network Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings</source>
|
||||
<source>IP Address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DHCP</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Dev</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subnet Mask</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Additional Address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Default IPv4 Gateway</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Routing Table</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Routing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>AE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IP</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DICOM</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Result</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Netmask</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Destination</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gateway</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Apply</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PatientDetailForm</name>
|
||||
<message>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Date Of Birth</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comment</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gender</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Female</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Male</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> Hide Panel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Other</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@@ -540,6 +918,10 @@ parameters
|
||||
<source>RIGHT</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No refresh data exists, please do Refresh operation first.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SelectFormWidget</name>
|
||||
@@ -587,6 +969,96 @@ parameters
|
||||
<source>Comment</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't delete selected Patient !</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alert</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Patient "%1" ?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirm</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't delete selected Patient , db submit error!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingFormWidget</name>
|
||||
<message>
|
||||
<source>General</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Account</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>System</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SystemSettingForm</name>
|
||||
<message>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Protocal</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Verify</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IP</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Worklist Filter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DICOM</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disk Storage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>used: %1G</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Get disk used size fail!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>total: %1G</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Get disk total size fail!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TabFormWidget</name>
|
||||
@@ -613,205 +1085,4 @@ parameters
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>dicomCfgDialog</name>
|
||||
<message>
|
||||
<source>Dialog</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IP</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>AE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Worklist</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PACS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>3D Recon</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Apply</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DICOM Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>networkCfgDialog</name>
|
||||
<message>
|
||||
<source>Network Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IP Address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Dev</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subnet Mask</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Additional Address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Default IPv4 Gateway</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Routing Table</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Routing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Result</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Netmask</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Destination</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gateway</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Apply</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DHCP</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>AE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IP</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DICOM</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>systemSettingForm</name>
|
||||
<message>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Protocal</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Worklist Filter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Verify</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IP</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DICOM</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disk Storage</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>total: %1G</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Get disk total size fail!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>used: %1G</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Get disk used size fail!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -253,22 +253,22 @@
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AdminSettingForm</name>
|
||||
<name>SettingFormWidget</name>
|
||||
<message>
|
||||
<location filename="../AdminSettingForm.cpp" line="32"/>
|
||||
<location filename="../AdminSettingForm.cpp" line="82"/>
|
||||
<location filename="../SettingFormWidget.cpp" line="32"/>
|
||||
<location filename="../SettingFormWidget.cpp" line="82"/>
|
||||
<source>General</source>
|
||||
<translation>通用</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../AdminSettingForm.cpp" line="32"/>
|
||||
<location filename="../AdminSettingForm.cpp" line="82"/>
|
||||
<location filename="../SettingFormWidget.cpp" line="32"/>
|
||||
<location filename="../SettingFormWidget.cpp" line="82"/>
|
||||
<source>Account</source>
|
||||
<translation>用户</translation>
|
||||
<translation>账号</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../AdminSettingForm.cpp" line="32"/>
|
||||
<location filename="../AdminSettingForm.cpp" line="82"/>
|
||||
<location filename="../SettingFormWidget.cpp" line="32"/>
|
||||
<location filename="../SettingFormWidget.cpp" line="82"/>
|
||||
<source>System</source>
|
||||
<translation>系统</translation>
|
||||
</message>
|
||||
@@ -297,8 +297,8 @@
|
||||
<translation type="vanished">操作日志</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../AdminSettingForm.cpp" line="32"/>
|
||||
<location filename="../AdminSettingForm.cpp" line="82"/>
|
||||
<location filename="../SettingFormWidget.cpp" line="32"/>
|
||||
<location filename="../SettingFormWidget.cpp" line="82"/>
|
||||
<source>About</source>
|
||||
<translation>关于</translation>
|
||||
</message>
|
||||
@@ -426,6 +426,59 @@
|
||||
<translation>接受</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditPatientDialog</name>
|
||||
<message>
|
||||
<location filename="../dialogs/EditPatientDialog.cpp" line="35"/>
|
||||
<source>Edit Patient</source>
|
||||
<translation>修改患者信息</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/EditPatientDialog.cpp" line="41"/>
|
||||
<source>ID</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/EditPatientDialog.cpp" line="50"/>
|
||||
<source>Name</source>
|
||||
<translation>姓名</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/EditPatientDialog.cpp" line="87"/>
|
||||
<source>Birth Date</source>
|
||||
<translation>出生日期</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/EditPatientDialog.cpp" line="106"/>
|
||||
<source>Comment</source>
|
||||
<translation>备注</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/EditPatientDialog.cpp" line="59"/>
|
||||
<source>Gender</source>
|
||||
<translation>性别</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/EditPatientDialog.cpp" line="62"/>
|
||||
<source>Female</source>
|
||||
<translation>女</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/EditPatientDialog.cpp" line="69"/>
|
||||
<source>Male</source>
|
||||
<translation>男</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/EditPatientDialog.cpp" line="69"/>
|
||||
<source>Cancel</source>
|
||||
<translation>取消</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept</source>
|
||||
<translation>接受</translation>
|
||||
</message>
|
||||
</context>
|
||||
|
||||
<context>
|
||||
<name>GUIFormBaseDialog</name>
|
||||
<message>
|
||||
@@ -561,29 +614,29 @@
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginWindow</name>
|
||||
<name>LoginDialog</name>
|
||||
<message>
|
||||
<location filename="../loginwindow.cpp" line="54"/>
|
||||
<location filename="../LoginDialog.cpp" line="54"/>
|
||||
<source>U S C T</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../loginwindow.cpp" line="71"/>
|
||||
<location filename="../LoginDialog.cpp" line="71"/>
|
||||
<source>Username</source>
|
||||
<translation>用户名</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../loginwindow.cpp" line="78"/>
|
||||
<location filename="../LoginDialog.cpp" line="78"/>
|
||||
<source>Password</source>
|
||||
<translation>密码</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../loginwindow.cpp" line="82"/>
|
||||
<location filename="../LoginDialog.cpp" line="91"/>
|
||||
<source>Login</source>
|
||||
<translation>登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>login</source>
|
||||
<source>Login</source>
|
||||
<translation type="vanished">登录</translation>
|
||||
</message>
|
||||
</context>
|
||||
|
||||
@@ -107,16 +107,17 @@ void MainWindow::initializeTabWidget()
|
||||
mTabWidget->addTab(selectForm, tr("Select"));
|
||||
auto scanForm = new ScanFormWidget(this);
|
||||
mTabWidget->addTab(scanForm, tr("Scan"));
|
||||
auto verifyForm = new TabFormWidget(this);
|
||||
mTabWidget->addTab(verifyForm, tr("Verify"));
|
||||
// auto verifyForm = new TabFormWidget(this);
|
||||
// mTabWidget->addTab(verifyForm, tr("Verify"));
|
||||
|
||||
mTabWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
}
|
||||
|
||||
void MainWindow::reloadLanguage() {
|
||||
mTabWidget->setTabText(0, tr("Select"));
|
||||
mTabWidget->setTabText(1, tr("Scan"));
|
||||
mTabWidget->setTabText(2, tr("Verify"));
|
||||
mTabWidget->setTabText(3, tr("Settings"));
|
||||
// mTabWidget->setTabText(2, tr("Verify"));
|
||||
mTabWidget->setTabText(2, tr("Settings"));
|
||||
}
|
||||
|
||||
void MainWindow::switchToScanTab() { mTabWidget->setCurrentIndex(1); }
|
||||
|
||||
Reference in New Issue
Block a user