From 1adf9d2a9027b54f92b8a36cda7e5b0ac3136da9 Mon Sep 17 00:00:00 2001 From: yangjiaxuan <171295266@qq.com> Date: Thu, 15 Dec 2022 17:27:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=A8=E6=88=B7=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/HGProductionTool/dialog_login.cpp | 17 ++-- app/HGProductionTool/dialog_login.h | 6 +- app/HGProductionTool/form_maininterface.cpp | 2 +- app/HGProductionTool/main.cpp | 11 ++- app/HGProductionTool/mainwindow.cpp | 97 ++++++++++++++++----- app/HGProductionTool/mainwindow.h | 11 ++- 6 files changed, 96 insertions(+), 48 deletions(-) diff --git a/app/HGProductionTool/dialog_login.cpp b/app/HGProductionTool/dialog_login.cpp index af9f1f0..f4b807a 100644 --- a/app/HGProductionTool/dialog_login.cpp +++ b/app/HGProductionTool/dialog_login.cpp @@ -3,10 +3,10 @@ #include #include "mainwindow.h" -Dialog_logIn::Dialog_logIn(QWidget *parent) : - QDialog(parent), - m_pdtToolDbuserMgr(nullptr), +Dialog_logIn::Dialog_logIn(class MainWindow *mainwindow) : + QDialog(nullptr), ui(new Ui::Dialog_logIn) + , m_mainwindow(mainwindow) { ui->setupUi(this); @@ -36,11 +36,6 @@ Dialog_logIn::~Dialog_logIn() delete ui; } -HGPdtToolDbUserMgr Dialog_logIn::GetUserMgr() -{ - return m_pdtToolDbuserMgr; -} - void Dialog_logIn::mousePressEvent(QMouseEvent *event) { if(event->button()==Qt::LeftButton) @@ -74,9 +69,9 @@ void Dialog_logIn::on_pbtn_login_clicked() QString host = ui->lineEdit_host->text(); QString port = ui->lineEdit_port->text(); - HGResult ret = HGPdtToolDb_CreateUserMgr(host.toStdString().c_str(), port.toInt(), - account.toStdString().c_str(), password.toStdString().c_str(), &m_pdtToolDbuserMgr); - if (NULL != m_pdtToolDbuserMgr) + HGResult ret = HGPdtToolDb_CreateUserMgr(host.toStdString().c_str(), port.toInt(), account.toStdString().c_str(), password.toStdString().c_str(), + MainWindow::PdtToolDbUserEventFunc, m_mainwindow, &m_mainwindow->m_pdtToolDbuserMgr); + if (NULL != m_mainwindow->m_pdtToolDbuserMgr) { accept(); } diff --git a/app/HGProductionTool/dialog_login.h b/app/HGProductionTool/dialog_login.h index 84cddb2..923d8f1 100644 --- a/app/HGProductionTool/dialog_login.h +++ b/app/HGProductionTool/dialog_login.h @@ -13,11 +13,9 @@ class Dialog_logIn : public QDialog Q_OBJECT public: - explicit Dialog_logIn(QWidget *parent = nullptr); + explicit Dialog_logIn(class MainWindow *mainwindow); ~Dialog_logIn(); - HGPdtToolDbUserMgr GetUserMgr(); - void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); @@ -35,8 +33,8 @@ private slots: private: Ui::Dialog_logIn *ui; + class MainWindow *m_mainwindow; - HGPdtToolDbUserMgr m_pdtToolDbuserMgr; QPoint m_startPos; QPoint m_endPos; bool m_leftMousePressed; diff --git a/app/HGProductionTool/form_maininterface.cpp b/app/HGProductionTool/form_maininterface.cpp index 1982029..368cc7c 100644 --- a/app/HGProductionTool/form_maininterface.cpp +++ b/app/HGProductionTool/form_maininterface.cpp @@ -17,7 +17,7 @@ Form_mainInterface::Form_mainInterface(QWidget *parent) ui->stackedWidget->addWidget(m_textTips); ui->stackedWidget->addWidget(m_view); - QString path("../../doc/newconfig.json"); + QString path("../../doc/config.json"); AnalysisJson analysisJson(path); std::vector list_jsonNode = analysisJson.GetNode(); diff --git a/app/HGProductionTool/main.cpp b/app/HGProductionTool/main.cpp index b0a200e..f97d1a2 100644 --- a/app/HGProductionTool/main.cpp +++ b/app/HGProductionTool/main.cpp @@ -15,16 +15,15 @@ int main(int argc, char *argv[]) while (1) { - Dialog_logIn login; + MainWindow w; + + Dialog_logIn login(&w); if (login.exec()) { - HGPdtToolDbUserMgr userMgr = login.GetUserMgr(); - assert(nullptr != userMgr); - - MainWindow w(userMgr); + w.Init(); w.showMaximized(); a.exec(); - + w.Deinit(); if (w.isExitApp()) { break; diff --git a/app/HGProductionTool/mainwindow.cpp b/app/HGProductionTool/mainwindow.cpp index d20e837..a32329b 100644 --- a/app/HGProductionTool/mainwindow.cpp +++ b/app/HGProductionTool/mainwindow.cpp @@ -9,10 +9,10 @@ #include "dialog_uploadcfgfile.h" #include "hgscanner.h" -MainWindow::MainWindow(HGPdtToolDbUserMgr userMgr, QWidget *parent) +MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) - , m_pdtToolDbuserMgr(userMgr) + , m_pdtToolDbuserMgr(nullptr) , m_form_mainInterface(nullptr) , m_top_splitter(nullptr) , m_bot_splitter(nullptr) @@ -25,18 +25,7 @@ MainWindow::MainWindow(HGPdtToolDbUserMgr userMgr, QWidget *parent) connect(this, SIGNAL(sane_dev_arrive(QString)), this, SLOT(on_sane_dev_arrive(QString)), Qt::QueuedConnection); connect(this, SIGNAL(sane_dev_remove(QString)), this, SLOT(on_sane_dev_remove(QString)), Qt::QueuedConnection); - - SANE_Int v = 0; - sane_init_ex(&v, sane_ex_callback, this); - - HGUInt userType = 0; - HGPdtToolDb_GetUserType(m_pdtToolDbuserMgr, &userType); - if (userType == HGPDTTOOLDB_USERTYPE_NORMAL) - ui->act_manage->setVisible(false); - - HGChar userName[128]; - HGPdtToolDb_GetUserName(m_pdtToolDbuserMgr, userName, 128); - setWindowTitle(userName); + connect(this, SIGNAL(user_event(int)), this, SLOT(on_user_event(int)), Qt::QueuedConnection); m_top_splitter = new QSplitter(Qt::Horizontal); m_bot_splitter = new QSplitter(Qt::Horizontal); @@ -53,10 +42,37 @@ MainWindow::MainWindow(HGPdtToolDbUserMgr userMgr, QWidget *parent) MainWindow::~MainWindow() { + delete ui; +} + +void MainWindow::Init() +{ + assert(nullptr != m_pdtToolDbuserMgr); + + HGUInt userType = 0; + HGPdtToolDb_GetUserType(m_pdtToolDbuserMgr, &userType); + if (userType == HGPDTTOOLDB_USERTYPE_NORMAL) + ui->act_manage->setVisible(false); + + HGChar userName[128]; + HGPdtToolDb_GetUserName(m_pdtToolDbuserMgr, userName, 128); + setWindowTitle(userName); + + SANE_Int v = 0; + sane_init_ex(&v, sane_ex_callback, this); +} + +void MainWindow::Deinit() +{ +// if (nullptr != m_handle) +// { +// sane_close(m_handle); +// m_handle = nullptr; +// } +// sane_exit(); + HGPdtToolDb_DestroyUserMgr(m_pdtToolDbuserMgr); m_pdtToolDbuserMgr = NULL; - - delete ui; } bool MainWindow::isExitApp() @@ -64,6 +80,16 @@ bool MainWindow::isExitApp() return !m_isLogOut; } +void HGAPI MainWindow::PdtToolDbUserEventFunc(HGPdtToolDbUserMgr userMgr, HGUInt event, HGPointer param) +{ + MainWindow *p = (MainWindow *)param; + + if (0 != event) + { + emit p->user_event(event); + } +} + int MainWindow::sane_ex_callback(SANE_Handle hdev, int code, void *data, unsigned int *len, void *param) { (void)hdev; @@ -109,12 +135,12 @@ std::vector MainWindow::getDevices() void MainWindow::on_sane_dev_arrive(QString devName) { - SANE_Status ret = sane_open(devName.toStdString().c_str(), &m_handle); +// SANE_Status ret = sane_open(devName.toStdString().c_str(), &m_handle); - ui_helper* helper; - hgscanner* hg = new hgscanner(m_handle); - helper = dynamic_cast(hg); - func_test_go(L"test-31", L"null", helper); +// ui_helper* helper; +// hgscanner* hg = new hgscanner(m_handle); +// helper = dynamic_cast(hg); +// func_test_go(L"test-31", L"null", helper); } void MainWindow::on_sane_dev_remove(QString devName) @@ -122,6 +148,30 @@ void MainWindow::on_sane_dev_remove(QString devName) } +void MainWindow::on_user_event(int event) +{ + QString tips; + switch (event) + { + case 1: + tips = tr("Account login elsewhere"); + break; + case 2: + tips = tr("Network connection lost"); + break; + case 3: + tips = tr("You have been forced offline by the administrator account"); + break; + default: + break; + } + + QMessageBox::information(this, (tr("tips")), tips); + + m_isLogOut = true; + close(); +} + void MainWindow::on_act_newDevice_triggered() { m_splitterCount++; @@ -182,7 +232,6 @@ void MainWindow::on_act_export_triggered() void MainWindow::on_act_logOut_triggered() { - HGPdtToolDb_DestroyUserMgr(m_pdtToolDbuserMgr); m_isLogOut = true; close(); } @@ -222,6 +271,6 @@ QString MainWindow::getLogInfo(HGResult ret) void MainWindow::on_act_upload_triggered() { - // Dialog_uploadCfgFile dlg(m_pdtToolDbuserMgr, this); - //dlg.exec(); + Dialog_uploadCfgFile dlg(m_pdtToolDbuserMgr, this); + dlg.exec(); } diff --git a/app/HGProductionTool/mainwindow.h b/app/HGProductionTool/mainwindow.h index f41c7bf..d944e19 100644 --- a/app/HGProductionTool/mainwindow.h +++ b/app/HGProductionTool/mainwindow.h @@ -12,18 +12,23 @@ namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow -{ +{ + friend class Dialog_logIn; + Q_OBJECT public: - MainWindow(HGPdtToolDbUserMgr userMgr, QWidget *parent = nullptr); + MainWindow(QWidget *parent = nullptr); ~MainWindow(); + void Init(); + void Deinit(); static QString getLogInfo(HGResult ret); bool isExitApp(); private: + static void HGAPI PdtToolDbUserEventFunc(HGPdtToolDbUserMgr userMgr, HGUInt event, HGPointer param); static int sane_ex_callback(SANE_Handle hdev, int code, void* data, unsigned int* len, void* param); std::vector getDevices(); @@ -31,10 +36,12 @@ private: signals: void sane_dev_arrive(QString devName); void sane_dev_remove(QString devName); + void user_event(int event); private slots: void on_sane_dev_arrive(QString devName); void on_sane_dev_remove(QString devName); + void on_user_event(int event); private slots: void on_act_newDevice_triggered();