diff --git a/modules/twainui/dialog_progress_ui.cpp b/modules/twainui/dialog_progress_ui.cpp index cbe278ad..692ce081 100644 --- a/modules/twainui/dialog_progress_ui.cpp +++ b/modules/twainui/dialog_progress_ui.cpp @@ -1,5 +1,7 @@ #include "dialog_progress_ui.h" #include "ui_dialog_progress_ui.h" +#include "lang/app_language.h" +#include Dialog_progress_ui *Dialog_progress_ui::m_param = nullptr; @@ -7,6 +9,15 @@ Dialog_progress_ui::Dialog_progress_ui(std::function callback, QDialog(parent), ui(new Ui::Dialog_progress_ui) { + int cp = lang_get_cur_code_page(); + if (20127 == cp) + m_translator.load(":translation/TwainUI_zh_EN.qm"); + else + m_translator.load(":translation/TwainUI_zh_CN.qm"); + QCoreApplication::installTranslator(&m_translator); + + setAttribute(Qt::WA_DeleteOnClose, true); + ui->setupUi(this); m_callback = callback; @@ -19,6 +30,8 @@ Dialog_progress_ui::Dialog_progress_ui(std::function callback, Dialog_progress_ui::~Dialog_progress_ui() { delete ui; + + QCoreApplication::removeTranslator(&m_translator); } void Dialog_progress_ui::on_pbtn_cancelScan_clicked() diff --git a/modules/twainui/dialog_progress_ui.h b/modules/twainui/dialog_progress_ui.h index 06918463..2768cb2f 100644 --- a/modules/twainui/dialog_progress_ui.h +++ b/modules/twainui/dialog_progress_ui.h @@ -2,6 +2,7 @@ #define DIALOG_PROGRESS_UI_H #include +#include #include "twainui.h" namespace Ui { @@ -30,6 +31,7 @@ private: static void FuncNotify(int event, void *msg, int flag); private: + QTranslator m_translator; Ui::Dialog_progress_ui *ui; std::function m_callback; diff --git a/modules/twainui/twainui.cpp b/modules/twainui/twainui.cpp index d35d06aa..b2be7be6 100644 --- a/modules/twainui/twainui.cpp +++ b/modules/twainui/twainui.cpp @@ -11,9 +11,13 @@ extern bool g_ownApplication; int choose_scanner(const std::vector &devs) { + QWidget* qParent = nullptr; #ifdef HG_CMP_MSC if (!g_ownApplication) g_ownApplication = QMfcApp::pluginInstance(g_hInst); + QWinWidget win(nullptr); +#else + qParent = parent; #endif QTranslator translator; @@ -25,16 +29,10 @@ int choose_scanner(const std::vector &devs) QCoreApplication::installTranslator(&translator); Dialog_device_select dlg(devs); - if (dlg.exec()) - { - return dlg.getDevId(); - QCoreApplication::removeTranslator(&translator); - } - else - { - return -1; - QCoreApplication::removeTranslator(&translator); - } + dlg.exec(); + QCoreApplication::removeTranslator(&translator); + + return dlg.getDevId(); } char *apply_current_config(const char *dev_name, SANE_Handle device, LPSANEAPI api) @@ -97,27 +95,18 @@ int show_progress_ui(HWND parent, std::function callback, std: #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; - 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"); - QCoreApplication::installTranslator(&translator); - - Dialog_progress_ui dlg(callback, notify, qParent); - dlg.show(); - QCoreApplication::removeTranslator(&translator); + Dialog_progress_ui *dlg = new Dialog_progress_ui(callback, notify, qParent); + dlg->show(); return 0; }