From 44a16deae01c2a731de74c9a9ec7ef6ea8a4bcde Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@@qq.com> Date: Mon, 3 Apr 2023 17:38:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3HGSaneUser=E5=BA=93=E5=9C=A8l?= =?UTF-8?q?inux=E4=B8=8A=E7=9A=84=E7=BC=96=E8=AF=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/demo/device_user.cpp | 36 ++++++++++++++++---------------- app/demo/device_user.h | 3 ++- modules/sane_user/HGSaneImpl.cpp | 5 +++-- modules/saneui/HGSaneUI.cpp | 3 ++- modules/saneui/HGSaneUI.h | 3 ++- 5 files changed, 27 insertions(+), 23 deletions(-) diff --git a/app/demo/device_user.cpp b/app/demo/device_user.cpp index 78916c89..22a0a838 100644 --- a/app/demo/device_user.cpp +++ b/app/demo/device_user.cpp @@ -71,7 +71,7 @@ DeviceUserMgr::DeviceUserMgr(QWidget *wnd) { m_wnd = wnd; m_saneMgr = nullptr; - HGSane_CreateManager("sane.dll", &m_saneMgr); + HGSane_CreateManager(&m_saneMgr); } DeviceUserMgr::~DeviceUserMgr() @@ -82,20 +82,26 @@ DeviceUserMgr::~DeviceUserMgr() class DeviceUser* DeviceUserMgr::OpenDeviceUser() { - HGSaneDevice dev = nullptr; -#ifdef HG_CMP_MSC - HGSane_OpenSelectedDevice(m_saneMgr, (HWND)m_wnd->winId(), &dev); -#else - HGSane_OpenSelectedDevice(m_saneMgr, m_wnd, &dev); -#endif - if (nullptr == dev) + HGSaneSource source = nullptr; + HGSane_OpenSelectedSource(m_saneMgr, m_wnd, &source); + if (nullptr == source) return nullptr; - return new DeviceUser(m_wnd, dev); + + HGSaneDevice dev = nullptr; + HGSane_OpenSelectedDevice(source, m_wnd, &dev); + if (nullptr == dev) + { + HGSane_CloseSource(source); + return nullptr; + } + + return new DeviceUser(m_wnd, source, dev); } -DeviceUser::DeviceUser(QWidget *wnd, HGSaneDevice dev) +DeviceUser::DeviceUser(QWidget *wnd, HGSaneSource source, HGSaneDevice dev) { m_wnd = wnd; + m_source = source; m_saneDev = dev; } @@ -103,6 +109,8 @@ DeviceUser::~DeviceUser() { HGSane_CloseDevice(m_saneDev); m_saneDev = nullptr; + HGSane_CloseSource(m_source); + m_source = nullptr; } QString DeviceUser::GetName() @@ -114,20 +122,12 @@ QString DeviceUser::GetName() HGResult DeviceUser::ShowSettingDlg() { -#ifdef HG_CMP_MSC - return HGSane_ShowDeviceSettingDlg(m_saneDev, (HWND)m_wnd->winId()); -#else return HGSane_ShowDeviceSettingDlg(m_saneDev, m_wnd); -#endif } HGResult DeviceUser::StartScan() { -#ifdef HG_CMP_MSC - return HGSane_StartDeviceWithUI(m_saneDev, (HWND)m_wnd->winId(), DeviceImageFunc, this); -#else return HGSane_StartDeviceWithUI(m_saneDev, m_wnd, DeviceImageFunc, this); -#endif } void HGAPI DeviceUser::DeviceImageFunc(HGSaneDevice dev, HGImage image, HGPointer param) diff --git a/app/demo/device_user.h b/app/demo/device_user.h index 89701733..4aa9009c 100644 --- a/app/demo/device_user.h +++ b/app/demo/device_user.h @@ -75,7 +75,7 @@ class DeviceUser : public QObject Q_OBJECT friend class DeviceUserMgr; - DeviceUser(QWidget *wnd, HGSaneDevice dev); + DeviceUser(QWidget *wnd, HGSaneSource source, HGSaneDevice dev); public: ~DeviceUser(); @@ -94,6 +94,7 @@ signals: private: QWidget *m_wnd; + HGSaneSource m_source; HGSaneDevice m_saneDev; }; diff --git a/modules/sane_user/HGSaneImpl.cpp b/modules/sane_user/HGSaneImpl.cpp index 59714be3..385d341e 100644 --- a/modules/sane_user/HGSaneImpl.cpp +++ b/modules/sane_user/HGSaneImpl.cpp @@ -81,7 +81,8 @@ HGResult HGSaneManagerImpl::OpenSelectedSource(HGWindow parent, class HGSaneSour f_sane_init fInit = NULL; f_sane_exit fExit = NULL; SANEAPI saneAPI; - if (-2 == show_srclist_ui(parent, &dll, &fInit, &fExit, &saneAPI)) + char manuName[256]; + if (-2 == show_srclist_ui(parent, &dll, &fInit, &fExit, &saneAPI, manuName, 256)) { return HGBASE_ERR_NOTSUPPORT; } @@ -92,7 +93,7 @@ HGResult HGSaneManagerImpl::OpenSelectedSource(HGWindow parent, class HGSaneSour } HGSaneSourceImpl* newSourceImpl = new HGSaneSourceImpl(this); - HGResult ret = newSourceImpl->Init(dll, fInit, fExit, &saneAPI); + HGResult ret = newSourceImpl->Init(manuName, dll, fInit, fExit, &saneAPI); if (HGBASE_ERR_OK != ret) { delete newSourceImpl; diff --git a/modules/saneui/HGSaneUI.cpp b/modules/saneui/HGSaneUI.cpp index 4110d05f..e491c839 100644 --- a/modules/saneui/HGSaneUI.cpp +++ b/modules/saneui/HGSaneUI.cpp @@ -13,7 +13,8 @@ extern HINSTANCE g_hInst; extern bool g_ownApplication; #endif -int show_srclist_ui(HGWindow parent, HGDll *dll, f_sane_init *fInit, f_sane_exit *fExit, SANEAPI* saneApi) +int show_srclist_ui(HGWindow parent, HGDll *dll, f_sane_init *fInit, f_sane_exit *fExit, + SANEAPI* saneApi, char *manuName, unsigned int maxLen) { return 0; } diff --git a/modules/saneui/HGSaneUI.h b/modules/saneui/HGSaneUI.h index 103dde22..5eef66bd 100644 --- a/modules/saneui/HGSaneUI.h +++ b/modules/saneui/HGSaneUI.h @@ -9,7 +9,8 @@ typedef SANE_Status (*f_sane_init)(SANE_Int* version_code, SANE_Auth_Callback au typedef void (*f_sane_exit)(void); typedef void (*show_scan_ui_image_callback)(const SANE_Parameters *imageFormat, const SANE_Byte *imageData, void * callbackParam); -HGEXPORT int show_srclist_ui(HGWindow parent, HGDll *dll, f_sane_init *fInit, f_sane_exit *fExit, SANEAPI* saneApi); +HGEXPORT int show_srclist_ui(HGWindow parent, HGDll *dll, f_sane_init *fInit, f_sane_exit *fExit, + SANEAPI* saneApi, char *manuName, unsigned int maxLen); HGEXPORT int show_devlist_ui(const SANEAPI* saneApi, HGWindow parent, SANE_Handle *handle, char *devName, unsigned int maxLen); HGEXPORT int show_setting_ui(const SANEAPI* saneApi, SANE_Handle handle, const char *devName, HGWindow parent); HGEXPORT int show_scan_ui(const SANEAPI* saneApi, SANE_Handle handle, const char *devName, HGWindow parent,