twainui设置界面改为非模态
This commit is contained in:
parent
09ba3c6f47
commit
a7d96e1929
|
@ -40,7 +40,6 @@ win32 {
|
|||
HEADERS += ../../../modules/twainui/qmfcapp.hpp
|
||||
HEADERS += ../../../modules/twainui/qwinhost.hpp
|
||||
HEADERS += ../../../modules/twainui/qwinwidget.hpp
|
||||
HEADERS += ../../../modules/twainui/twainui.h
|
||||
HEADERS += ../../../modules/twainui/hg_settingdialog.h
|
||||
|
||||
MY_OS = windows
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define DIALOG_DEVICE_SELECT_H
|
||||
|
||||
#include <QDialog>
|
||||
#include "twainui.h"
|
||||
#include "twain_user/twainui.h"
|
||||
|
||||
namespace Ui {
|
||||
class Dialog_device_select;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include <QDialog>
|
||||
#include <qtranslator.h>
|
||||
#include "twainui.h"
|
||||
#include "twain_user/twainui.h"
|
||||
|
||||
namespace Ui {
|
||||
class Dialog_progress_ui;
|
||||
|
|
|
@ -16,14 +16,33 @@
|
|||
|
||||
std::string hg_settingdialog::property_combox_data_type_ = "combox_value_type";
|
||||
|
||||
hg_settingdialog::hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, bool showScan, const char* devName, QWidget *parent)
|
||||
hg_settingdialog::hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, bool showScan, const char* devName,
|
||||
std::function<void(ui_result)> callback, QWidget *parent)
|
||||
: QDialog(parent)
|
||||
, save_(false)
|
||||
, btn_cut_area_(nullptr), btn_gamma_(nullptr), clicked_gamma_(false)
|
||||
, custom_area_lable_(nullptr), comb_(nullptr)
|
||||
, m_devHandle(handle)
|
||||
, m_showScan(showScan)
|
||||
, m_callback(callback)
|
||||
{
|
||||
m_langCode = lang_get_cur_code_page();
|
||||
if (20127 == m_langCode)
|
||||
{
|
||||
m_translator.load(":translation/TwainUI_zh_EN.qm");
|
||||
}
|
||||
else
|
||||
{
|
||||
m_translator.load(":translation/TwainUI_zh_CN.qm");
|
||||
m_translator_qt.load(":translation/qt_zh_CN.qm");
|
||||
}
|
||||
|
||||
QCoreApplication::installTranslator(&m_translator);
|
||||
if (20127 != m_langCode)
|
||||
QCoreApplication::installTranslator(&m_translator_qt);
|
||||
|
||||
setAttribute(Qt::WA_DeleteOnClose, true);
|
||||
|
||||
HGChar cfgpath[512] = {0};
|
||||
QString old;
|
||||
HGBase_GetConfigPath(cfgpath, _countof(cfgpath) - 1);
|
||||
|
@ -83,6 +102,10 @@ hg_settingdialog::hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, b
|
|||
|
||||
hg_settingdialog::~hg_settingdialog()
|
||||
{
|
||||
QCoreApplication::removeTranslator(&m_translator);
|
||||
if (20127 != m_langCode)
|
||||
QCoreApplication::removeTranslator(&m_translator_qt);
|
||||
|
||||
cur_scheme_->release();
|
||||
cur_cfg_->release();
|
||||
}
|
||||
|
@ -1432,19 +1455,21 @@ void hg_settingdialog::slot_buttonScanClicked()
|
|||
{
|
||||
save_scheme();
|
||||
m_closeButton = closeButtonScan;
|
||||
close();
|
||||
m_callback(UI_RESULT_START_SCAN);
|
||||
}
|
||||
|
||||
void hg_settingdialog::slot_buttonOkClicked()
|
||||
{
|
||||
save_ = true;
|
||||
m_closeButton = closeButtonOk;
|
||||
m_callback(UI_RESULT_CLOSE_NORMAL);
|
||||
close();
|
||||
}
|
||||
|
||||
void hg_settingdialog::slot_buttonCancelClicked()
|
||||
{
|
||||
m_closeButton = closeButtonCancel;
|
||||
m_callback(UI_RESULT_CLOSE_CANCEL);
|
||||
close();
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "HGSaneUI.h"
|
||||
#include "cfg/gb_json.h"
|
||||
#include "device_menu.h"
|
||||
#include "twain_user/twainui.h"
|
||||
|
||||
class hg_settingdialog : public QDialog
|
||||
{
|
||||
|
@ -46,7 +47,8 @@ class hg_settingdialog : public QDialog
|
|||
};
|
||||
|
||||
public:
|
||||
explicit hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, bool showScan, const char* devName, QWidget *parent = nullptr);
|
||||
explicit hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, bool showScan, const char* devName,
|
||||
std::function<void(ui_result)> callback, QWidget *parent = nullptr);
|
||||
~hg_settingdialog();
|
||||
|
||||
public:
|
||||
|
@ -74,6 +76,9 @@ private:
|
|||
SANEAPI m_saneAPI;
|
||||
SANE_Handle m_devHandle;
|
||||
bool m_showScan;
|
||||
QTranslator m_translator;
|
||||
QTranslator m_translator_qt;
|
||||
int m_langCode;
|
||||
|
||||
private:
|
||||
QString m_qstrFileName;
|
||||
|
@ -139,6 +144,7 @@ private:
|
|||
QString m_colorModeValue;
|
||||
SANE_Gamma m_gammaData;
|
||||
QComboBox *comb_;
|
||||
std::function<void(ui_result)> m_callback;
|
||||
};
|
||||
|
||||
#endif // HG_SETTING_DIALOG_H
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include "twainui.h"
|
||||
#include "twain_user/twainui.h"
|
||||
#include <QMessageBox>
|
||||
#include "dialog_device_select.h"
|
||||
#include "dialog_progress_ui.h"
|
||||
|
@ -84,7 +84,7 @@ void twain_ui_free(void *buf)
|
|||
}
|
||||
}
|
||||
|
||||
int show_setting_ui(SANE_Handle device, HWND parent, LPSANEAPI api, const char *devName, bool with_scan)
|
||||
int show_setting_ui(SANE_Handle device, HWND parent, LPSANEAPI api, const char *devName, bool with_scan, std::function<void(ui_result)> callback)
|
||||
{
|
||||
if (nullptr == api || nullptr == device)
|
||||
return -1;
|
||||
|
@ -93,47 +93,20 @@ int show_setting_ui(SANE_Handle device, HWND parent, LPSANEAPI api, const char *
|
|||
#ifdef HG_CMP_MSC
|
||||
if (!g_ownApplication)
|
||||
g_ownApplication = QMfcApp::pluginInstance(g_hInst);
|
||||
QWinWidget win(parent);
|
||||
QWinWidget *win = new QWinWidget(parent);
|
||||
if (nullptr != parent)
|
||||
{
|
||||
win.showCentered();
|
||||
qParent = &win;
|
||||
win->showCentered();
|
||||
qParent = win;
|
||||
}
|
||||
#else
|
||||
qParent = parent;
|
||||
#endif
|
||||
|
||||
QTranslator translator;
|
||||
QTranslator translator2;
|
||||
int cp = lang_get_cur_code_page();
|
||||
if (20127 == cp)
|
||||
{
|
||||
translator.load(":translation/TwainUI_zh_EN.qm");
|
||||
}
|
||||
else
|
||||
{
|
||||
translator.load(":translation/TwainUI_zh_CN.qm");
|
||||
translator2.load(":translation/qt_zh_CN.qm");
|
||||
}
|
||||
hg_settingdialog *dlg = new hg_settingdialog(device, api, with_scan, devName, callback, qParent);
|
||||
dlg->show();
|
||||
|
||||
QCoreApplication::installTranslator(&translator);
|
||||
if (20127 != cp)
|
||||
QCoreApplication::installTranslator(&translator2);
|
||||
|
||||
hg_settingdialog dlg(device, api, with_scan, devName, qParent);
|
||||
dlg.exec();
|
||||
|
||||
QCoreApplication::removeTranslator(&translator);
|
||||
if (20127 != cp)
|
||||
QCoreApplication::removeTranslator(&translator2);
|
||||
|
||||
int ret = dlg.getCloseButtonCliked();
|
||||
if (ret == dlg.closeButtonScan)
|
||||
return UI_RESULT_START_SCAN;
|
||||
else if (ret == dlg.closeButtonCancel)
|
||||
return UI_RESULT_CLOSE_CANCEL;
|
||||
else
|
||||
return UI_RESULT_CLOSE_NORMAL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int show_progress_ui(HWND parent, std::function<void (ui_result)> callback, std::function<void (int, void *, int)> *notify)
|
||||
|
|
|
@ -1,93 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <functional>
|
||||
#include "sane/sane_ex.h"
|
||||
#include "base/HGDef.h"
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
typedef struct _dev_que_ui
|
||||
{
|
||||
int id; // ID,用户选中后返回该值
|
||||
std::string name; // 设备名称
|
||||
std::string sn; // 设备序列号
|
||||
}DEVQUEUI;
|
||||
|
||||
// 功能: 选择多个同型设备中的一个,模态
|
||||
//
|
||||
// 参数: devs - 设备队列列表
|
||||
//
|
||||
// 返回: 用户选择的设备所对应的,DEVQUE::id;或者-1代表用户放弃选择设备
|
||||
int choose_scanner(const std::vector<DEVQUEUI>& devs); // blocked. return selected DEVQUE::id or -1 if user cancelled
|
||||
|
||||
|
||||
// 功能: 应用当前设备对应的用户配置,同步
|
||||
//
|
||||
// 参数: dev_name - 设备名称
|
||||
//
|
||||
// device - 设备打开的句柄
|
||||
//
|
||||
// api - sane_xxx API函数指针
|
||||
//
|
||||
// 返回: 当前设备配置方案的名称。返回指针通过调用函数twain_ui_free来释放
|
||||
char* apply_current_config(const char* dev_name, SANE_Handle device, LPSANEAPI api);
|
||||
|
||||
// 功能: 释放由界面模块返回的动态分配的内存,同步
|
||||
//
|
||||
// 参数: buf - 内存地址
|
||||
//
|
||||
// 返回: 无
|
||||
void twain_ui_free(void* buf);
|
||||
|
||||
enum ui_result
|
||||
{
|
||||
UI_RESULT_FAILED = -1, // 一般用于界面初始化失败
|
||||
UI_RESULT_OK, // 界面正常显示
|
||||
UI_RESULT_CLOSE_NORMAL, // 界面正常关闭
|
||||
UI_RESULT_CLOSE_CANCEL, // 用户取消操作,如取消扫描……
|
||||
UI_RESULT_START_SCAN, // 用户点击了开始扫描
|
||||
};
|
||||
// 功能: 释放由界面模块返回的动态分配的内存,模态
|
||||
//
|
||||
// 参数: device - 当前打开的设备句柄
|
||||
//
|
||||
// parent - 父窗口句柄
|
||||
//
|
||||
// api - sane_xxx API函数指针
|
||||
//
|
||||
// devName - 设备名称
|
||||
//
|
||||
// with_scan - 是否显示“扫描”按钮
|
||||
//
|
||||
// 返回: ui_result 类型, UI_RESULT_CLOSE_NORMAL or UI_RESULT_START_SCAN
|
||||
int show_setting_ui(SANE_Handle device, HWND parent, LPSANEAPI api, const char *devName, bool with_scan/*是否显示“扫描”按钮*/);
|
||||
|
||||
// 功能: 显示扫描进度界面,非模态
|
||||
//
|
||||
// 参数: parent - 父窗口句柄
|
||||
//
|
||||
// callback - 用户界面操作事件回调(主要为取消扫描事件)
|
||||
//
|
||||
// notify - ui接收进度通知函数,外部通过该返回的函数来通知当前扫描进度或事件
|
||||
// notify events: SANE_EVENT_WORKING - void*: unused, be NULL, flag - unused, be 0
|
||||
// SANE_EVENT_SCAN_FINISHED - void*: (utf8*)message, flag - error code (0 is success)
|
||||
// SANE_EVENT_USB_DATA_RECEIVED- void* unused, be NULL, flag - unused, be 0
|
||||
// SANE_EVENT_IMAGE_OK - void* unused, be NULL, flag - unused, be 0
|
||||
//
|
||||
// 返回: ui_result 类型, UI_RESULT_FAILED or UI_RESULT_OK
|
||||
int show_progress_ui(HWND parent, std::function<void(ui_result)> callback, std::function<void(int/*event*/, void*/*msg*/, int/*flag*/)>* notify);
|
||||
// 功能: 不显示扫描进度界面,设备返回错误信息指示框,非模态
|
||||
//
|
||||
// 参数: parent - 父窗口句柄
|
||||
//
|
||||
// events - SANE_EVENT_SCAN_FINISHED
|
||||
//
|
||||
// void* - (utf8*)message,
|
||||
//
|
||||
// flag - error code (0 is success)
|
||||
//
|
||||
// 返回: ui_result 类型, UI_RESULT_FAILED or UI_RESULT_OK
|
||||
int show_messagebox_ui(HWND parent,int event, void* msg, int flag);
|
Loading…
Reference in New Issue