调整窗口显示逻辑
This commit is contained in:
parent
f9a72dee1d
commit
04673e47f2
|
@ -57,7 +57,7 @@ HGResult DeviceUser::ShowSettingDlg()
|
|||
|
||||
HGResult DeviceUser::StartScan()
|
||||
{
|
||||
return HGTwain_EnableDS(m_twainDS, HGFALSE, nullptr, DSCloseReqFunc, this, DSImageFunc, this);
|
||||
return HGTwain_EnableDS(m_twainDS, HGFALSE, (HWND)m_wnd->winId(), DSCloseReqFunc, this, DSImageFunc, this);
|
||||
}
|
||||
|
||||
HGResult DeviceUser::StartSingleScan()
|
||||
|
|
|
@ -9,11 +9,11 @@ Manager::Manager()
|
|||
HGBase_CreateEvent(HGFALSE, HGFALSE, &m_event);
|
||||
|
||||
connect(this, SIGNAL(init()), this, SLOT(on_init()));
|
||||
connect(this, SIGNAL(createDeviceSelect()), this, SLOT(on_createDeviceSelect()));
|
||||
connect(this, SIGNAL(createSettingUi()), this, SLOT(on_createSettingUi()));
|
||||
connect(this, SIGNAL(createProgressUi()), this, SLOT(on_createProgressUi()));
|
||||
connect(this, SIGNAL(createMessageBoxUi()), this, SLOT(on_createMessageBoxUi()));
|
||||
connect(this, SIGNAL(createTwainSrcUi()), this, SLOT(on_createTwainSrcUi()));
|
||||
connect(this, SIGNAL(createDeviceSelect(bool)), this, SLOT(on_createDeviceSelect(bool)));
|
||||
connect(this, SIGNAL(createSettingUi(bool)), this, SLOT(on_createSettingUi(bool)));
|
||||
connect(this, SIGNAL(createProgressUi(bool)), this, SLOT(on_createProgressUi(bool)));
|
||||
connect(this, SIGNAL(createMessageBoxUi(bool)), this, SLOT(on_createMessageBoxUi(bool)));
|
||||
connect(this, SIGNAL(createTwainSrcUi(bool)), this, SLOT(on_createTwainSrcUi(bool)));
|
||||
|
||||
emit init();
|
||||
}
|
||||
|
@ -27,23 +27,26 @@ Manager::~Manager()
|
|||
HGBase_DestroyEvent(m_event);
|
||||
}
|
||||
|
||||
int Manager::showDeviceSelect(const std::vector<DEVQUEUI>& devs)
|
||||
int Manager::showDeviceSelect(bool qt, const std::vector<DEVQUEUI>& devs)
|
||||
{
|
||||
m_DeviceSelectDevs = devs;
|
||||
m_DeviceSelectThreadId = GetCurrentThreadId();
|
||||
emit createDeviceSelect();
|
||||
emit createDeviceSelect(qt);
|
||||
|
||||
if (!qt)
|
||||
{
|
||||
MSG msg;
|
||||
while (GetMessage(&msg, NULL, 0, 0))
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
|
||||
return m_DeviceSelectResult;
|
||||
}
|
||||
|
||||
int Manager::showSettingUi(SANE_Handle device, HWND parent, LPSANEAPI api, const char *devName, bool with_scan, std::function<void (ui_result)> callback)
|
||||
int Manager::showSettingUi(bool qt, SANE_Handle device, HWND parent, LPSANEAPI api, const char *devName, bool with_scan, std::function<void (ui_result)> callback)
|
||||
{
|
||||
m_device = device;
|
||||
m_settingUiParent = parent;
|
||||
|
@ -54,19 +57,24 @@ int Manager::showSettingUi(SANE_Handle device, HWND parent, LPSANEAPI api, const
|
|||
|
||||
m_SettingUiThreadId = GetCurrentThreadId();
|
||||
|
||||
emit createSettingUi();
|
||||
emit createSettingUi(qt);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Manager::showProgressUi(HWND parent, std::function<void (ui_result)> callback, std::function<void (int, void *, int)> *notify)
|
||||
int Manager::showProgressUi(bool qt, HWND parent, std::function<void (ui_result)> callback, std::function<void (int, void *, int)> *notify)
|
||||
{
|
||||
m_progressUiparent = parent;
|
||||
hg_settingdialog *settingDlg = hg_settingdialog::GetSettingDialog();
|
||||
if (nullptr != settingDlg)
|
||||
m_progressUiparent = (HWND)settingDlg->winId();
|
||||
m_progressUiCallback = callback;
|
||||
m_notify = notify;
|
||||
|
||||
if (!qt)
|
||||
{
|
||||
m_ProgressUiThreadId = GetCurrentThreadId();
|
||||
emit createProgressUi();
|
||||
emit createProgressUi(qt);
|
||||
|
||||
MSG msg;
|
||||
while (GetMessage(&msg, NULL, 0, 0))
|
||||
|
@ -74,25 +82,30 @@ int Manager::showProgressUi(HWND parent, std::function<void (ui_result)> callbac
|
|||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
on_createProgressUi(qt);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Manager::showMessageBoxUi(HWND parent, int event, void *msg, int flag)
|
||||
int Manager::showMessageBoxUi(bool qt, HWND parent, int event, void *msg, int flag)
|
||||
{
|
||||
m_messageBoxUiParent = parent;
|
||||
m_messageBoxUiParent = nullptr;
|
||||
m_notifyEvent = event;
|
||||
m_message = (char*)msg;
|
||||
m_flag = flag;
|
||||
|
||||
m_MessageBoxUiThreadId = GetCurrentThreadId();
|
||||
|
||||
emit createMessageBoxUi();
|
||||
emit createMessageBoxUi(qt);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Manager::showTwainSrcUi(DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, HGWindow parent, TW_IDENTITY *ds)
|
||||
int Manager::showTwainSrcUi(bool qt, DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, HGWindow parent, TW_IDENTITY *ds)
|
||||
{
|
||||
m_twainSrcUiThreadId = GetCurrentThreadId();
|
||||
|
||||
|
@ -102,14 +115,17 @@ int Manager::showTwainSrcUi(DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, HGWi
|
|||
memset(ds, 0, sizeof(TW_IDENTITY));
|
||||
memset(&m_ds, 0, sizeof(TW_IDENTITY));
|
||||
|
||||
emit createTwainSrcUi();
|
||||
emit createTwainSrcUi(qt);
|
||||
|
||||
if (!qt)
|
||||
{
|
||||
MSG msg;
|
||||
while (GetMessage(&msg, NULL, 0, 0))
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
|
||||
memcpy(ds, &m_ds, sizeof(TW_IDENTITY));
|
||||
return 0;
|
||||
|
@ -133,15 +149,19 @@ void Manager::on_init()
|
|||
QCoreApplication::installTranslator(&m_translator_qt);
|
||||
}
|
||||
|
||||
void Manager::on_createDeviceSelect()
|
||||
void Manager::on_createDeviceSelect(bool qt)
|
||||
{
|
||||
Dialog_device_select dlg(m_DeviceSelectDevs);
|
||||
dlg.exec();
|
||||
m_DeviceSelectResult = dlg.getDevId();
|
||||
|
||||
if (!qt)
|
||||
{
|
||||
::PostThreadMessage(m_DeviceSelectThreadId, WM_QUIT, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void Manager::on_createSettingUi()
|
||||
void Manager::on_createSettingUi(bool qt)
|
||||
{
|
||||
QWidget *qParent = nullptr;
|
||||
#ifdef HG_CMP_MSC
|
||||
|
@ -160,7 +180,7 @@ void Manager::on_createSettingUi()
|
|||
dlg->show();
|
||||
}
|
||||
|
||||
void Manager::on_createProgressUi()
|
||||
void Manager::on_createProgressUi(bool qt)
|
||||
{
|
||||
QWidget *qParent = nullptr;
|
||||
#ifdef HG_CMP_MSC
|
||||
|
@ -170,6 +190,7 @@ void Manager::on_createProgressUi()
|
|||
win->showCentered();
|
||||
qParent = win;
|
||||
}
|
||||
|
||||
#else
|
||||
qParent = m_progressUiparent;
|
||||
#endif
|
||||
|
@ -177,10 +198,14 @@ void Manager::on_createProgressUi()
|
|||
Dialog_progress_ui *dlg = new Dialog_progress_ui(m_progressUiCallback, m_notify, qParent);
|
||||
dlg->setModal(true);
|
||||
dlg->show();
|
||||
|
||||
if (!qt)
|
||||
{
|
||||
::PostThreadMessage(m_ProgressUiThreadId, WM_QUIT, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void Manager::on_createMessageBoxUi()
|
||||
void Manager::on_createMessageBoxUi(bool qt)
|
||||
{
|
||||
QWidget *qParent = nullptr;
|
||||
#ifdef HG_CMP_MSC
|
||||
|
@ -195,11 +220,12 @@ void Manager::on_createMessageBoxUi()
|
|||
#endif
|
||||
|
||||
QMessageBox *msg = new QMessageBox(QMessageBox::Critical, tr("Prompt"), QString::fromStdString(m_message), QMessageBox::Ok, qParent);
|
||||
msg->setWindowFlags(Qt::SubWindow | Qt::Popup | Qt::WindowStaysOnTopHint);
|
||||
msg->setModal(true);
|
||||
msg->show();
|
||||
}
|
||||
|
||||
void Manager::on_createTwainSrcUi()
|
||||
void Manager::on_createTwainSrcUi(bool qt)
|
||||
{
|
||||
QWidget *qParent = nullptr;
|
||||
#ifdef HG_CMP_MSC
|
||||
|
@ -218,5 +244,9 @@ void Manager::on_createTwainSrcUi()
|
|||
{
|
||||
dlg.GetIdentify(&m_ds);
|
||||
}
|
||||
|
||||
if (!qt)
|
||||
{
|
||||
::PostThreadMessage(m_twainSrcUiThreadId, WM_QUIT, 0, 0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,27 +15,27 @@ public:
|
|||
Manager();
|
||||
~Manager();
|
||||
|
||||
int showDeviceSelect(const std::vector<DEVQUEUI>& devs);
|
||||
int showSettingUi(SANE_Handle device, HWND settingUiParent, LPSANEAPI api, const char *devName, bool with_scan, std::function<void(ui_result)> callback);
|
||||
int showProgressUi(HWND parent, std::function<void (ui_result)> callback, std::function<void (int, void *, int)> *notify);
|
||||
int showMessageBoxUi(HWND parent, int event, void *msg, int flag);
|
||||
int showTwainSrcUi(DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, HGWindow parent, TW_IDENTITY *ds);
|
||||
int showDeviceSelect(bool qt, const std::vector<DEVQUEUI>& devs);
|
||||
int showSettingUi(bool qt, SANE_Handle device, HWND settingUiParent, LPSANEAPI api, const char *devName, bool with_scan, std::function<void(ui_result)> callback);
|
||||
int showProgressUi(bool qt, HWND parent, std::function<void (ui_result)> callback, std::function<void (int, void *, int)> *notify);
|
||||
int showMessageBoxUi(bool qt, HWND parent, int event, void *msg, int flag);
|
||||
int showTwainSrcUi(bool qt, DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, HGWindow parent, TW_IDENTITY *ds);
|
||||
|
||||
signals:
|
||||
void init();
|
||||
void createDeviceSelect();
|
||||
void createSettingUi();
|
||||
void createProgressUi();
|
||||
void createMessageBoxUi();
|
||||
void createTwainSrcUi();
|
||||
void createDeviceSelect(bool qt);
|
||||
void createSettingUi(bool qt);
|
||||
void createProgressUi(bool qt);
|
||||
void createMessageBoxUi(bool qt);
|
||||
void createTwainSrcUi(bool qt);
|
||||
|
||||
private slots:
|
||||
void on_init();
|
||||
void on_createDeviceSelect();
|
||||
void on_createSettingUi();
|
||||
void on_createProgressUi();
|
||||
void on_createMessageBoxUi();
|
||||
void on_createTwainSrcUi();
|
||||
void on_createDeviceSelect(bool qt);
|
||||
void on_createSettingUi(bool qt);
|
||||
void on_createProgressUi(bool qt);
|
||||
void on_createMessageBoxUi(bool qt);
|
||||
void on_createTwainSrcUi(bool qt);
|
||||
|
||||
private:
|
||||
QTranslator m_translator;
|
||||
|
|
|
@ -8,6 +8,7 @@ Dialog_device_select::Dialog_device_select(const std::vector<DEVQUEUI>& devs, QW
|
|||
, m_devs(devs)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
setWindowFlags(Qt::SubWindow | Qt::Popup | Qt::WindowStaysOnTopHint);
|
||||
|
||||
for (int i = 0; i < m_devs.size(); ++i)
|
||||
{
|
||||
|
|
|
@ -16,7 +16,8 @@ Dialog_progress_ui::Dialog_progress_ui(std::function<void (ui_result)> callback,
|
|||
setAttribute(Qt::WA_DeleteOnClose, true);
|
||||
|
||||
ui->setupUi(this);
|
||||
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
|
||||
|
||||
setWindowFlags(Qt::SubWindow | Qt::Popup);
|
||||
|
||||
ui->pbtn_cancelScan->setVisible(false);
|
||||
ui->pbtn_close->setVisible(false);
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include <typeinfo>
|
||||
#include "device_menu.h"
|
||||
#include "dialog_device_scan.h"
|
||||
hg_settingdialog * hg_setting_ui_ =NULL;
|
||||
hg_settingdialog * hg_settingdialog::hg_setting_ui_ =NULL;
|
||||
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,
|
||||
|
@ -26,6 +26,7 @@ hg_settingdialog::hg_settingdialog(SANE_Handle handle, const SANEAPI* saneApi, b
|
|||
, m_devName(devName)
|
||||
, m_callback(callback)
|
||||
{
|
||||
hg_setting_ui_ = this;
|
||||
m_langCode = lang_get_cur_code_page();
|
||||
if (20127 == m_langCode)
|
||||
{
|
||||
|
@ -116,6 +117,11 @@ hg_settingdialog::~hg_settingdialog()
|
|||
m_callback(UI_RESULT_CLOSE_SETTING);
|
||||
}
|
||||
|
||||
hg_settingdialog *hg_settingdialog::GetSettingDialog()
|
||||
{
|
||||
return hg_setting_ui_;
|
||||
}
|
||||
|
||||
void hg_settingdialog::initUi()
|
||||
{
|
||||
updateOpt();
|
||||
|
|
|
@ -51,6 +51,7 @@ public:
|
|||
~hg_settingdialog();
|
||||
|
||||
public:
|
||||
static hg_settingdialog *GetSettingDialog();
|
||||
void initUi();
|
||||
void updateOpt();
|
||||
void createUI();
|
||||
|
@ -73,6 +74,7 @@ public:
|
|||
int m_closeButton;
|
||||
|
||||
private:
|
||||
static hg_settingdialog *hg_setting_ui_;
|
||||
SANEAPI m_saneAPI;
|
||||
SANE_Handle m_devHandle;
|
||||
bool m_showScan;
|
||||
|
|
|
@ -46,7 +46,7 @@ int choose_scanner(const std::vector<DEVQUEUI> &devs)
|
|||
g_manager = new Manager;
|
||||
}
|
||||
|
||||
return g_manager->showDeviceSelect(devs);
|
||||
return g_manager->showDeviceSelect(nullptr == g_hThread, devs);
|
||||
}
|
||||
|
||||
char *apply_current_config(const char *dev_name, SANE_Handle device, LPSANEAPI api)
|
||||
|
@ -114,7 +114,7 @@ int show_setting_ui(SANE_Handle device, HWND parent, LPSANEAPI api, const char *
|
|||
g_manager = new Manager;
|
||||
}
|
||||
|
||||
return g_manager->showSettingUi(device, parent, api, devName, with_scan, callback);
|
||||
return g_manager->showSettingUi(nullptr == g_hThread, device, parent, api, devName, with_scan, callback);
|
||||
}
|
||||
|
||||
int show_progress_ui(HWND parent, std::function<void (ui_result)> callback, std::function<void (int, void *, int)> *notify)
|
||||
|
@ -131,7 +131,7 @@ int show_progress_ui(HWND parent, std::function<void (ui_result)> callback, std:
|
|||
g_manager = new Manager;
|
||||
}
|
||||
|
||||
return g_manager->showProgressUi(parent, callback, notify);
|
||||
return g_manager->showProgressUi(nullptr == g_hThread, parent, callback, notify);
|
||||
}
|
||||
|
||||
int show_messagebox_ui(HWND parent, int event, void *msg, int flag)
|
||||
|
@ -148,7 +148,7 @@ int show_messagebox_ui(HWND parent, int event, void *msg, int flag)
|
|||
g_manager = new Manager;
|
||||
}
|
||||
|
||||
return g_manager->showMessageBoxUi(parent, event, msg, flag);
|
||||
return g_manager->showMessageBoxUi(nullptr == g_hThread, parent, event, msg, flag);
|
||||
}
|
||||
|
||||
int show_twain_srclist_ui(DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, HGWindow parent, TW_IDENTITY *ds)
|
||||
|
@ -165,5 +165,5 @@ int show_twain_srclist_ui(DSMENTRYPROC dsmProc, const TW_IDENTITY *appId, HGWind
|
|||
g_manager = new Manager;
|
||||
}
|
||||
|
||||
return g_manager->showTwainSrcUi(dsmProc, appId, parent, ds);
|
||||
return g_manager->showTwainSrcUi(nullptr == g_hThread, dsmProc, appId, parent, ds);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue