code_app/modules/twainui/dialog_progress_ui.cpp

87 lines
2.2 KiB
C++

#include "dialog_progress_ui.h"
#include "ui_dialog_progress_ui.h"
#include "lang/app_language.h"
#include <QCloseEvent>
Dialog_progress_ui *Dialog_progress_ui::m_param = nullptr;
Dialog_progress_ui::Dialog_progress_ui(std::function<void (ui_result)> callback, std::function<void (int, void *, int)> *notify, QWidget *parent) :
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);
ui->pbtn_cancelScan->setVisible(false);
ui->pbtn_close->setVisible(false);
m_callback = callback;
*notify = FuncNotify;
m_param = this;
connect(this, SIGNAL(scan_finish(QString)), this, SLOT(on_scan_finish(QString)), Qt::QueuedConnection);
connect(this, SIGNAL(refreshPushbutton(bool)), this, SLOT(on_refreshPushbutton(bool)), Qt::QueuedConnection);
}
Dialog_progress_ui::~Dialog_progress_ui()
{
delete ui;
QCoreApplication::removeTranslator(&m_translator);
}
void Dialog_progress_ui::on_pbtn_cancelScan_clicked()
{
m_callback(UI_RESULT_CLOSE_CANCEL);
close();
}
void Dialog_progress_ui::on_pbtn_close_clicked()
{
m_callback(UI_RESULT_CLOSE_NORMAL);
close();
}
void Dialog_progress_ui::on_scan_finish(QString finishInfo)
{
ui->label->setText(finishInfo);
}
void Dialog_progress_ui::on_refreshPushbutton(bool isScanning)
{
ui->pbtn_cancelScan->setVisible(isScanning);
ui->pbtn_close->setVisible(!isScanning);
}
void Dialog_progress_ui::FuncNotify(int event, void *msg, int flag)
{
Dialog_progress_ui *p = (Dialog_progress_ui *)m_param;
switch (event)
{
case SANE_EVENT_WORKING:
{
emit p->refreshPushbutton(true);
QString finishInfo((char*)msg);
emit p->scan_finish(finishInfo);
}
break;
case SANE_EVENT_SCAN_FINISHED:
{
emit p->refreshPushbutton(false);
QString finishInfo((char*)msg);
emit p->scan_finish(finishInfo);
}
break;
}
}