diff --git a/app/HGProductionTool/form_maininterface.cpp b/app/HGProductionTool/form_maininterface.cpp index 6d583cb..1d9d519 100644 --- a/app/HGProductionTool/form_maininterface.cpp +++ b/app/HGProductionTool/form_maininterface.cpp @@ -81,8 +81,8 @@ Form_mainInterface::Form_mainInterface(class MainWindow *mainwnd, SANE_Handle ha connect(this, SIGNAL(testResult(QString)), this, SLOT(on_testResult(QString)), Qt::QueuedConnection); connect(this, SIGNAL(testResultImg(void*)), this, SLOT(on_testResultImg(void*)), Qt::QueuedConnection); + connect(this, SIGNAL(testDistortion(QString,void*)), this, SLOT(on_testDistortion(QString,void*)), Qt::QueuedConnection); connect(this, SIGNAL(testCorrectInfo(QString)), this, SLOT(on_testCorrectInfo(QString)), Qt::QueuedConnection); - connect(this, SIGNAL(testFinish()), this, SLOT(on_testFinish()), Qt::QueuedConnection); QString str; if (m_handle) @@ -160,7 +160,12 @@ void Form_mainInterface::paintEvent(QPaintEvent *event) void Form_mainInterface::on_testResult(QString text) { - QMessageBox::information(this, tr("tips"), text); + if (!text.isEmpty()) + QMessageBox::information(this, tr("tips"), text); + + updateUiEnabled(true); + m_isTesting = false; + m_mainwnd->releaseTesting(); } void Form_mainInterface::on_testResultImg(void *img) @@ -185,12 +190,12 @@ void Form_mainInterface::on_testDistortion(QString name, void *data) { func_test_go(HGPDTTOOLDB_NAME_SINGLE_PAGE_TEST_1, L"null", m_hg); } -} - -void Form_mainInterface::on_testFinish() -{ - updateUiEnabled(true); - m_isTesting = false; + else + { + updateUiEnabled(true); + m_isTesting = false; + m_mainwnd->releaseTesting(); + } } void Form_mainInterface::on_testCorrectInfo(QString info) @@ -541,17 +546,11 @@ void Form_mainInterface::on_pbtn_start_clicked() QTableWidgetItem *item = ui->tableWidget->item(row, 1); QString title = item->text(); QString name = m_map_title_name.value(title).name; - int ret = func_test_go(name.toStdWString().c_str(), L"null", m_hg); - if (SCANNER_ERR_OK == ret) - { - updateUiEnabled(false); - m_isTesting = true; - } - else - { - updateUiEnabled(true); - m_isTesting = false; - } + func_test_go(name.toStdWString().c_str(), L"null", m_hg); + + updateUiEnabled(false); + m_isTesting = true; + m_mainwnd->addTestingRef(); } void Form_mainInterface::on_pbtn_showImg_clicked() @@ -568,7 +567,7 @@ void Form_mainInterface::on_pbtn_showImg_clicked() ui->pbtn_leftRotate->setVisible(true); ui->pbtn_rightRotate->setVisible(true); ui->stackedWidget->setCurrentWidget(m_view); - HGImage img; + HGImage img = nullptr; HGImgFmt_LoadImage(fileName.toStdString().c_str(), 0, 0, 0, 0, &img); m_view->addImage(img); QFile file(fileName); diff --git a/app/HGProductionTool/form_maininterface.h b/app/HGProductionTool/form_maininterface.h index 90419d9..2d5e851 100644 --- a/app/HGProductionTool/form_maininterface.h +++ b/app/HGProductionTool/form_maininterface.h @@ -38,13 +38,11 @@ signals: void testResultImg(void* img); void testDistortion(QString title, void *data); void testCorrectInfo(QString info); - void testFinish(); private slots: void on_testResult(QString text); void on_testResultImg(void* img); void on_testDistortion(QString title, void *data); - void on_testFinish(); void on_testCorrectInfo(QString info); private slots: diff --git a/app/HGProductionTool/form_texttips.cpp b/app/HGProductionTool/form_texttips.cpp index 13ec633..9f49a48 100644 --- a/app/HGProductionTool/form_texttips.cpp +++ b/app/HGProductionTool/form_texttips.cpp @@ -25,6 +25,7 @@ void Form_textTips::setViewContent(QString content) void Form_textTips::addContent(QString content) { ui->textBrowser->insertPlainText(content); + ui->textBrowser->moveCursor(QTextCursor::End); } diff --git a/app/HGProductionTool/hgscanner.cpp b/app/HGProductionTool/hgscanner.cpp index d8de6d0..436e102 100644 --- a/app/HGProductionTool/hgscanner.cpp +++ b/app/HGProductionTool/hgscanner.cpp @@ -39,37 +39,36 @@ void hgscanner::test_callback(const wchar_t* name, test_event ev, void* data, si { QString info = QObject::tr("Not find test item"); emit m_interface->testResult(info); - emit m_interface->testFinish(); } else if (ev == TEST_EVENT_IO_FAIL) { + QString info; if (data != nullptr) { - QString info = QString::fromStdWString((const wchar_t*)data); - info = QObject::tr("failed: ") + info; - emit m_interface->testResult(info); + info = QObject::tr("failed: ") + QString::fromStdWString((const wchar_t*)data); } - emit m_interface->testFinish(); + emit m_interface->testResult(info); } else if (ev == TEST_EVENT_MANUAL_CONFIRMATION) { - QString info = QString::fromStdWString((const wchar_t*)data); + QString info; + if (data != nullptr) + { + info = QString::fromStdWString((const wchar_t*)data); + } emit m_interface->testResult(info); - emit m_interface->testFinish(); } else if (ev == TEST_EVENT_RESULT) { + QString info; if (data != nullptr) { - QString info = QString::fromStdWString((const wchar_t*)data); if (flag) - info = QObject::tr("success: ") + info; + info = QObject::tr("success: ") + QString::fromStdWString((const wchar_t*)data); else - info = QObject::tr("failed: ") + info; - - emit m_interface->testResult(info); + info = QObject::tr("failed: ") + QString::fromStdWString((const wchar_t*)data); } - emit m_interface->testFinish(); + emit m_interface->testResult(info); } else if (ev == TEST_EVENT_DISTORTION) { @@ -78,9 +77,10 @@ void hgscanner::test_callback(const wchar_t* name, test_event ev, void* data, si } else if (ev == TEST_EVENT_FALT_INFO) { + QString info; if (data != nullptr) { - QString info = QString::fromStdWString((const wchar_t*)data); + info = QString::fromStdWString((const wchar_t*)data); emit m_interface->testCorrectInfo(info); } } diff --git a/app/HGProductionTool/mainwindow.cpp b/app/HGProductionTool/mainwindow.cpp index e2d33a9..8c814ba 100644 --- a/app/HGProductionTool/mainwindow.cpp +++ b/app/HGProductionTool/mainwindow.cpp @@ -17,6 +17,7 @@ MainWindow::MainWindow(HGPdtToolDbUserMgr pdtToolDbuserMgr, const QString &ftpHo , m_ftpHost(ftpHost) , m_ftpPort(ftpPort) , m_lock(nullptr) + , m_testingRef(0) , m_top_splitter(nullptr) , m_bot_splitter(nullptr) , m_isLogOut(false) @@ -232,31 +233,36 @@ bool MainWindow::RemoveInterface(Form_mainInterface *interface) return true; } +void MainWindow::addTestingRef() +{ + ++m_testingRef; + + ui->act_close->setEnabled(false); + ui->act_manage->setEnabled(false); + ui->act_logOut->setEnabled(false); + ui->act_changePwd->setEnabled(false); + ui->act_export->setEnabled(false); + ui->act_upload->setEnabled(false); +} + +void MainWindow::releaseTesting() +{ + --m_testingRef; + + if (0 == m_testingRef) + { + ui->act_close->setEnabled(true); + ui->act_manage->setEnabled(true); + ui->act_logOut->setEnabled(true); + ui->act_changePwd->setEnabled(true); + ui->act_export->setEnabled(true); + ui->act_upload->setEnabled(true); + } +} + bool MainWindow::isTesting() { - bool isTesting = false; - for (int i = 0; i < m_top_splitter->count(); ++i) - { - Form_mainInterface *interface = (Form_mainInterface *)m_top_splitter->widget(i); - if (interface->isTesting()) - { - isTesting = true; - break; - } - } - if (!isTesting) - { - for (int i = 0; i < m_bot_splitter->count(); ++i) - { - Form_mainInterface *interface = (Form_mainInterface *)m_bot_splitter->widget(i); - if (interface->isTesting()) - { - isTesting = true; - break; - } - } - } - return isTesting; + return (m_testingRef != 0); } void MainWindow::closeEvent(QCloseEvent *event) diff --git a/app/HGProductionTool/mainwindow.h b/app/HGProductionTool/mainwindow.h index 31cd0dd..6dcba52 100644 --- a/app/HGProductionTool/mainwindow.h +++ b/app/HGProductionTool/mainwindow.h @@ -30,6 +30,8 @@ public: Form_mainInterface* FindInterface(SANE_Handle handle); bool AddInterface(Form_mainInterface *interface); bool RemoveInterface(Form_mainInterface *interface); + void addTestingRef(); + void releaseTesting(); bool isTesting(); protected: @@ -76,6 +78,7 @@ private: Ui::MainWindow *ui; HGPdtToolDbUserMgr m_pdtToolDbuserMgr; HGLock m_lock; + int m_testingRef; public: QString m_ftpHost; diff --git a/cfg-tools/solution/Release/config/stored.txt b/cfg-tools/solution/Release/config/stored.txt index c531df3..63451f2 100644 Binary files a/cfg-tools/solution/Release/config/stored.txt and b/cfg-tools/solution/Release/config/stored.txt differ