This commit is contained in:
13038267101 2022-12-27 16:26:48 +08:00
commit ef876fd539
14 changed files with 408 additions and 26 deletions

View File

@ -62,6 +62,7 @@ SOURCES += \
dialog_login.cpp \ dialog_login.cpp \
dialog_rootfuntion.cpp \ dialog_rootfuntion.cpp \
dialog_uploadcfgfile.cpp \ dialog_uploadcfgfile.cpp \
dialog_userinput.cpp \
form_maininterface.cpp \ form_maininterface.cpp \
form_texttips.cpp \ form_texttips.cpp \
hgscanner.cpp \ hgscanner.cpp \
@ -80,6 +81,7 @@ HEADERS += \
dialog_login.h \ dialog_login.h \
dialog_rootfuntion.h \ dialog_rootfuntion.h \
dialog_uploadcfgfile.h \ dialog_uploadcfgfile.h \
dialog_userinput.h \
form_maininterface.h \ form_maininterface.h \
form_texttips.h \ form_texttips.h \
hgscanner.h \ hgscanner.h \
@ -93,6 +95,7 @@ FORMS += \
dialog_login.ui \ dialog_login.ui \
dialog_rootfuntion.ui \ dialog_rootfuntion.ui \
dialog_uploadcfgfile.ui \ dialog_uploadcfgfile.ui \
dialog_userinput.ui \
form_maininterface.ui \ form_maininterface.ui \
form_texttips.ui \ form_texttips.ui \
mainwindow.ui mainwindow.ui

View File

@ -29,7 +29,7 @@ Dialog_logIn::Dialog_logIn(QWidget *parent) :
ui->lineEdit_dbHost->setText("192.168.1.70"); ui->lineEdit_dbHost->setText("192.168.1.70");
ui->lineEdit_dbPort->setText("3306"); ui->lineEdit_dbPort->setText("3306");
ui->lineEdit_ftpHost->setText("192.168.1.70"); ui->lineEdit_ftpHost->setText("192.168.1.70");
ui->lineEdit_ftpPort->setText("3306"); ui->lineEdit_ftpPort->setText("21");
ui->label_dbHost->setVisible(false); ui->label_dbHost->setVisible(false);
ui->label_dbPort->setVisible(false); ui->label_dbPort->setVisible(false);
@ -52,6 +52,16 @@ HGPdtToolDbUserMgr Dialog_logIn::GetUserMgr()
return m_pdtToolDbuserMgr; return m_pdtToolDbuserMgr;
} }
QString Dialog_logIn::GetFtpHost()
{
return ui->lineEdit_ftpHost->text();
}
unsigned short Dialog_logIn::GetFtpPort()
{
return ui->lineEdit_ftpPort->text().toUShort();
}
void Dialog_logIn::mousePressEvent(QMouseEvent *event) void Dialog_logIn::mousePressEvent(QMouseEvent *event)
{ {
if(event->button()==Qt::LeftButton) if(event->button()==Qt::LeftButton)

View File

@ -17,6 +17,8 @@ public:
~Dialog_logIn(); ~Dialog_logIn();
HGPdtToolDbUserMgr GetUserMgr(); HGPdtToolDbUserMgr GetUserMgr();
QString GetFtpHost();
unsigned short GetFtpPort();
void mousePressEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event);

View File

@ -169,6 +169,9 @@ QPushButton#pbtn_close::hover
<property name="text"> <property name="text">
<string>LOG IN</string> <string>LOG IN</string>
</property> </property>
<property name="autoDefault">
<bool>true</bool>
</property>
<property name="default"> <property name="default">
<bool>true</bool> <bool>true</bool>
</property> </property>

View File

@ -0,0 +1,107 @@
#include "dialog_userinput.h"
#include "ui_dialog_userinput.h"
Dialog_UserInput::Dialog_UserInput(ui_helper::value_type type, const QString &title, const QString &desc, QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog_UserInput),
m_type(type),
m_title(title),
m_desc(desc)
{
ui->setupUi(this);
if (type == ui_helper::VAL_TYPE_BOOL)
{
ui->radioButton_yes->setVisible(true);
ui->radioButton_no->setVisible(true);
ui->lineEdit->setVisible(false);
}
else if (type == ui_helper::VAL_TYPE_INT || type == ui_helper::VAL_TYPE_FLOAT || type == ui_helper::VAL_TYPE_STRING)
{
ui->radioButton_yes->setVisible(false);
ui->radioButton_no->setVisible(false);
ui->lineEdit->setVisible(true);
}
setWindowTitle(m_title);
ui->label->setText(m_desc);
}
Dialog_UserInput::~Dialog_UserInput()
{
delete ui;
}
parameter *Dialog_UserInput::getParam()
{
UserInputParams *param = new UserInputParams(m_type);
if (m_type == ui_helper::VAL_TYPE_BOOL)
{
if (ui->radioButton_yes->isChecked())
param->m_bData = true;
else if (ui->radioButton_no->isChecked())
param->m_bData = false;
}
else if (m_type == ui_helper::VAL_TYPE_INT)
{
param->m_iData = ui->lineEdit->text().toInt();
}
else if (m_type == ui_helper::VAL_TYPE_FLOAT)
{
param->m_fData = ui->lineEdit->text().toDouble();
}
else if (m_type == ui_helper::VAL_TYPE_STRING)
{
param->m_sData = ui->lineEdit->text().toStdWString();
}
return param;
}
void Dialog_UserInput::on_pbtn_yes_clicked()
{
getParam();
accept();
}
void Dialog_UserInput::on_pbtn_no_clicked()
{
reject();
}
UserInputParams::UserInputParams(ui_helper::value_type type)
{
m_type = type;
}
UserInputParams::~UserInputParams()
{
}
size_t UserInputParams::get_size()
{
if (m_type == ui_helper::VAL_TYPE_BOOL)
return sizeof(bool);
if (m_type == ui_helper::VAL_TYPE_INT)
return sizeof(int);
if (m_type == ui_helper::VAL_TYPE_FLOAT)
return sizeof(double);
if (m_type == ui_helper::VAL_TYPE_STRING)
return m_sData.size() + 1;
return 0;
}
void *UserInputParams::get_data()
{
if (m_type == ui_helper::VAL_TYPE_BOOL)
return &m_bData;
if (m_type == ui_helper::VAL_TYPE_INT)
return &m_iData;
if (m_type == ui_helper::VAL_TYPE_FLOAT)
return &m_fData;
if (m_type == ui_helper::VAL_TYPE_STRING)
return (void*)m_sData.c_str();
return nullptr;
}

View File

@ -0,0 +1,51 @@
#ifndef DIALOG_USERINPUT_H
#define DIALOG_USERINPUT_H
#include <QDialog>
#include "ui_helper.h"
#include <string>
namespace Ui {
class Dialog_UserInput;
}
class UserInputParams : public parameter
{
public:
UserInputParams(ui_helper::value_type type);
~UserInputParams();
size_t get_size();
void* get_data();
ui_helper::value_type m_type;
bool m_bData;
int m_iData;
double m_fData;
std::wstring m_sData;
};
class Dialog_UserInput : public QDialog
{
Q_OBJECT
public:
explicit Dialog_UserInput(ui_helper::value_type type, const QString &title, const QString &desc, QWidget *parent = nullptr);
~Dialog_UserInput();
parameter *getParam();
private slots:
void on_pbtn_yes_clicked();
void on_pbtn_no_clicked();
private:
Ui::Dialog_UserInput *ui;
ui_helper::value_type m_type;
QString m_title;
QString m_desc;
};
#endif // DIALOG_USERINPUT_H

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog_UserInput</class>
<widget class="QDialog" name="Dialog_UserInput">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>408</width>
<height>164</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QRadioButton" name="radioButton_yes">
<property name="text">
<string>YES</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_no">
<property name="text">
<string>NO</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pbtn_yes">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pbtn_no">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -6,6 +6,7 @@
#include "base/HGBase.h" #include "base/HGBase.h"
#include "imgfmt/HGImgFmt.h" #include "imgfmt/HGImgFmt.h"
#include "HGUIGlobal.h" #include "HGUIGlobal.h"
#include "HGString.h"
#include "form_texttips.h" #include "form_texttips.h"
#include "test_base.h" #include "test_base.h"
#include "hgscanner.h" #include "hgscanner.h"
@ -71,6 +72,9 @@ Form_mainInterface::Form_mainInterface(class MainWindow *mainwnd, SANE_Handle ha
{ {
ui->setupUi(this); ui->setupUi(this);
connect(this, SIGNAL(testResult(QString)), this, SLOT(on_testResult(QString)), Qt::QueuedConnection);
connect(this, SIGNAL(testResultImg(void*)), this, SLOT(on_testResultImg(void*)), Qt::QueuedConnection);
QString str; QString str;
if (m_handle) if (m_handle)
str = tr("Device has connected"); str = tr("Device has connected");
@ -136,6 +140,36 @@ void Form_mainInterface::paintEvent(QPaintEvent *event)
p.drawRect(0, 0, width() -1, height() -1); p.drawRect(0, 0, width() -1, height() -1);
} }
void Form_mainInterface::on_testResult(QString text)
{
QMessageBox::information(this, tr("tips"), text);
}
void Form_mainInterface::on_testResultImg(void *img)
{
HGImage image = (HGImage)img;
ui->stackedWidget->setCurrentWidget(m_view);
m_view->addImage(image);
QString fileName = getCacheFileName();
HGResult ret = HGImgFmt_SaveImage(image, 0, 0, getStdString(fileName).c_str());
if(ret == HGBASE_ERR_OK)
{
int row = ui->tableWidget->currentRow();
QTableWidgetItem *item = ui->tableWidget->item(row, 1);
QString title = item->text();
HGUInt entryName = getTestItem(title);
ret = HGPdtToolDb_UploadDeviceEntryImage(m_pdtToolDbDevice, entryName, m_mainwnd->m_ftpHost.toStdString().c_str(),
m_mainwnd->m_ftpPort, fileName.toStdString().c_str());
qDebug() << ret << m_mainwnd->m_ftpHost << m_mainwnd->m_ftpPort << fileName;
QFile file(fileName);
file.remove();
}
HGBase_DestroyImage(image);
}
void Form_mainInterface::on_pbtn_preStep_clicked() void Form_mainInterface::on_pbtn_preStep_clicked()
{ {
int row = ui->tableWidget->currentRow(); int row = ui->tableWidget->currentRow();
@ -342,6 +376,27 @@ QString Form_mainInterface::getItemStatusStr(HGUInt status)
return statusStr[status]; return statusStr[status];
} }
QString Form_mainInterface::getCachePath()
{
HGChar cachePath[512];
HGBase_GetTmpPath(cachePath, 512);
strcat(cachePath, "/Cache/");
return getStdFileName(StdStringToUtf8(cachePath).c_str());
}
QString Form_mainInterface::getCacheFileName()
{
QString cachePath = getCachePath();
HGBase_CreateDir(getStdString(cachePath).c_str());
char uuid[256] = {0};
HGBase_GetUuid(uuid, 256);
QString suffix = ".jpg";
QString fileName = getStdFileName(cachePath + uuid + suffix);
return fileName;
}
void Form_mainInterface::on_tableWidget_currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous) void Form_mainInterface::on_tableWidget_currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)
{ {
(void)previous; (void)previous;
@ -356,19 +411,8 @@ void Form_mainInterface::on_tableWidget_currentItemChanged(QTableWidgetItem *cur
bool man = m_map_title_name.value(title).is_man; bool man = m_map_title_name.value(title).is_man;
ui->pbtn_start->setEnabled(!man); ui->pbtn_start->setEnabled(!man);
QString testName; m_textTips->setViewContent(m_map_title_name.value(title).desc);
if (title == HGPDTTOOLDB_TITLE_DIAL_SWITCH) ui->stackedWidget->setCurrentWidget(m_textTips);
{
m_textTips->setViewContent(m_map_title_name.value(title).desc);
testName = m_map_title_name.value(title).name;
ui->stackedWidget->setCurrentWidget(m_textTips);
}
else if (title == HGPDTTOOLDB_TITLE_SINGLE_PAGE_TEST_1)
{
//addImg
testName = m_map_title_name.value(title).name;
ui->stackedWidget->setCurrentWidget(m_view);
}
} }
void Form_mainInterface::on_pbtn_start_clicked() void Form_mainInterface::on_pbtn_start_clicked()
@ -376,5 +420,6 @@ void Form_mainInterface::on_pbtn_start_clicked()
int row = ui->tableWidget->currentRow(); int row = ui->tableWidget->currentRow();
QTableWidgetItem *item = ui->tableWidget->item(row, 1); QTableWidgetItem *item = ui->tableWidget->item(row, 1);
QString title = item->text(); QString title = item->text();
func_test_go(title.toStdWString().c_str(), L"null", m_hg); QString name = m_map_title_name.value(title).name;
int ret = func_test_go(name.toStdWString().c_str(), L"null", m_hg);
} }

View File

@ -32,6 +32,14 @@ public:
protected: protected:
void paintEvent(QPaintEvent *event) override; void paintEvent(QPaintEvent *event) override;
signals:
void testResult(QString text);
void testResultImg(void* img);
private slots:
void on_testResult(QString text);
void on_testResultImg(void* img);
private slots: private slots:
void on_pbtn_preStep_clicked(); void on_pbtn_preStep_clicked();
@ -53,6 +61,8 @@ private:
HGUInt getTestItemStatus(const QString &title); HGUInt getTestItemStatus(const QString &title);
bool setTestItemStatus(const QString &title, HGUInt status); bool setTestItemStatus(const QString &title, HGUInt status);
QString getItemStatusStr(HGUInt status); QString getItemStatusStr(HGUInt status);
QString getCachePath();
QString getCacheFileName();
private: private:
Ui::Form_mainInterface *ui; Ui::Form_mainInterface *ui;

View File

@ -1,6 +1,7 @@
#include "hgscanner.h" #include "hgscanner.h"
#include <QMessageBox> #include <QMessageBox>
#include "form_maininterface.h" #include "form_maininterface.h"
#include "dialog_userinput.h"
hgscanner::hgscanner(Form_mainInterface *form, SANE_Handle h) hgscanner::hgscanner(Form_mainInterface *form, SANE_Handle h)
: m_interface(form) : m_interface(form)
@ -14,22 +15,68 @@ hgscanner::~hgscanner()
parameter* hgscanner::get_user_input(data_from from, value_type type, const wchar_t* title, const wchar_t* desc) parameter* hgscanner::get_user_input(data_from from, value_type type, const wchar_t* title, const wchar_t* desc)
{ {
if (from == DATA_FROM_USER)
{
Dialog_UserInput dlg(type, QString::fromStdWString(title), QString::fromStdWString(desc), m_interface);
if (dlg.exec())
{
return dlg.getParam();
}
}
return nullptr; return nullptr;
} }
void hgscanner::test_callback(const wchar_t* name, test_event ev, void* data, size_t flag) void hgscanner::test_callback(const wchar_t* name, test_event ev, void* data, size_t flag)
{ {
QString testName = QString::fromStdWString(name); if (ev == TEST_EVENT_TIPS)
QString info = QString::fromStdWString((const wchar_t*)data); {
if (ev == ui_helper::TEST_EVENT_TIPS)
{
} }
else if(ev == ui_helper::TEST_EVENT_RESULT) else if (ev == TEST_EVENT_RESULT)
{ {
QString ret;
QString info = QString::fromStdWString((const wchar_t*)data);
if (flag)
ret = QObject::tr("success");
else
ret = QObject::tr("failed: ") + info;
} emit m_interface->testResult(ret);
}
else if (ev == TEST_EVENT_NOT_FIND_TEST)
{
QString info = QObject::tr("Not find test item");
emit m_interface->testResult(info);
}
else if (ev == TEST_EVENT_HAVE_IMAGE)
{
SANE_Image *sane_img = (SANE_Image *)data;
HGUInt imgType = 0;
if (sane_img->header.format == SANE_FRAME_GRAY)
{
if (1 == sane_img->header.depth)
imgType = HGBASE_IMGTYPE_BINARY;
else if (8 == sane_img->header.depth)
imgType = HGBASE_IMGTYPE_GRAY;
}
else if (sane_img->header.format == SANE_FRAME_RGB)
{
imgType = HGBASE_IMGTYPE_RGB;
}
HGByte *imgData = sane_img->data;
HGImageInfo imgInfo = {(HGUInt)sane_img->header.pixels_per_line, (HGUInt)sane_img->header.lines,
imgType, (HGUInt)sane_img->header.bytes_per_line, HGBASE_IMGORIGIN_TOP};
HGImage img = nullptr;
HGBase_CreateImageFromData(imgData, &imgInfo, nullptr, imgType, HGBASE_IMGORIGIN_TOP, &img);
if (nullptr != img)
{
emit m_interface->testResultImg(img);
}
}
} }
int hgscanner::register_sane_callback(sane_callback cb, void* param) int hgscanner::register_sane_callback(sane_callback cb, void* param)

View File

@ -18,7 +18,7 @@ int main(int argc, char *argv[])
Dialog_logIn login; Dialog_logIn login;
if (login.exec()) if (login.exec())
{ {
MainWindow w(login.GetUserMgr()); MainWindow w(login.GetUserMgr(), login.GetFtpHost(), login.GetFtpPort());
a.exec(); a.exec();
if (w.isExitApp()) if (w.isExitApp())
{ {

View File

@ -10,10 +10,12 @@
#include "dialog_uploadcfgfile.h" #include "dialog_uploadcfgfile.h"
#include "dialog_inputserialnum.h" #include "dialog_inputserialnum.h"
MainWindow::MainWindow(HGPdtToolDbUserMgr pdtToolDbuserMgr, QWidget *parent) MainWindow::MainWindow(HGPdtToolDbUserMgr pdtToolDbuserMgr, const QString &ftpHost, unsigned short ftpPort, QWidget *parent)
: QMainWindow(parent) : QMainWindow(parent)
, ui(new Ui::MainWindow) , ui(new Ui::MainWindow)
, m_pdtToolDbuserMgr(pdtToolDbuserMgr) , m_pdtToolDbuserMgr(pdtToolDbuserMgr)
, m_ftpHost(ftpHost)
, m_ftpPort(ftpPort)
, m_lock(nullptr) , m_lock(nullptr)
, m_top_splitter(nullptr) , m_top_splitter(nullptr)
, m_bot_splitter(nullptr) , m_bot_splitter(nullptr)

View File

@ -19,7 +19,7 @@ class MainWindow : public QMainWindow
Q_OBJECT Q_OBJECT
public: public:
MainWindow(HGPdtToolDbUserMgr pdtToolDbuserMgr, QWidget *parent = nullptr); MainWindow(HGPdtToolDbUserMgr pdtToolDbuserMgr, const QString &ftpHost, unsigned short ftpPort, QWidget *parent = nullptr);
~MainWindow(); ~MainWindow();
static QString getLogInfo(HGResult ret); static QString getLogInfo(HGResult ret);
bool isExitApp(); bool isExitApp();
@ -73,5 +73,9 @@ private:
Ui::MainWindow *ui; Ui::MainWindow *ui;
HGPdtToolDbUserMgr m_pdtToolDbuserMgr; HGPdtToolDbUserMgr m_pdtToolDbuserMgr;
HGLock m_lock; HGLock m_lock;
public:
QString m_ftpHost;
unsigned short m_ftpPort;
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

View File

@ -86,6 +86,7 @@ public:
TEST_EVENT_IO_FAIL, // IO. err flag is SCANNER_ERR_DEVICE_NOT_SUPPORT or io err,data is null TEST_EVENT_IO_FAIL, // IO. err flag is SCANNER_ERR_DEVICE_NOT_SUPPORT or io err,data is null
TEST_EVENT_MANUAL_CONFIRMATION, // After send cmd need manual confirmation. TEST_EVENT_MANUAL_CONFIRMATION, // After send cmd need manual confirmation.
TEST_EVENT_RESULT, // test result, data is (wchar_t*)description, flag is (bool)result, true - test pass TEST_EVENT_RESULT, // test result, data is (wchar_t*)description, flag is (bool)result, true - test pass
TEST_EVENT_HAVE_IMAGE // have image.
}; };
virtual void test_callback(const wchar_t* name/*test name*/, test_event ev, void* data, size_t flag)=0 ; virtual void test_callback(const wchar_t* name/*test name*/, test_event ev, void* data, size_t flag)=0 ;