1.scantool定时器调整、增加按键通知支持

This commit is contained in:
luoliangyi 2024-04-28 10:06:10 +08:00
parent 7872497479
commit ab009f3e54
6 changed files with 50 additions and 24 deletions

View File

@ -15,9 +15,6 @@ Dialog_Add::Dialog_Add(SANE_Handle devHandle, class MainWindow *mainWnd, const s
ui->comboBoxButtonId->addItem("Manual");
// TODO 通过devHandle获取支持的按钮并添加到下拉列表
ui->comboBoxButtonId->addItem("Button 1");
ui->comboBoxButtonId->addItem("Button 2");
ui->comboBoxButtonId->addItem("Button 3");
m_scanParam.deviceType = deviceType;
m_scanParam.buttonId = ui->comboBoxButtonId->currentIndex();
@ -43,9 +40,6 @@ Dialog_Add::Dialog_Add(SANE_Handle devHandle, class MainWindow *mainWnd, const S
ui->comboBoxButtonId->addItem("Manual");
// TODO 通过devHandle获取支持的按钮并添加到下拉列表
ui->comboBoxButtonId->addItem("Button 1");
ui->comboBoxButtonId->addItem("Button 2");
ui->comboBoxButtonId->addItem("Button 3");
m_scanParam = scanParam;
ui->comboBoxButtonId->setCurrentIndex(m_scanParam.buttonId);

View File

@ -481,6 +481,11 @@ int Dialog_Scan::sane_ex_callback(SANE_Handle hdev, int code, void* data, unsign
//emit p->scanInfo((const char*)data, (0 != *len));
}
break;
case SANE_EVENT_DEV_KEY_PRESSED:
{
emit p->keyPress(*len);
}
break;
case SANE_EVENT_IMAGE_OK:
{
++p->m_aquireIntoPageIndex;

View File

@ -2,18 +2,16 @@
#include "ui_dialog_scaninfo.h"
#include "dialog_scan.h"
#include <QDesktopWidget>
#include <QTimer>
Dialog_ScanInfo::Dialog_ScanInfo(class Dialog_Scan *dlgScan)
: QDialog(nullptr)
, ui(new Ui::Dialog_ScanInfo)
, m_dlgScan(dlgScan)
, m_timer(nullptr)
, m_timerId(-1)
, m_error(false)
{
ui->setupUi(this);
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
m_timer = new QTimer(this);
QDesktopWidget *desktop = QApplication::desktop();
QRect workArea = desktop->availableGeometry();
@ -27,6 +25,12 @@ Dialog_ScanInfo::~Dialog_ScanInfo()
void Dialog_ScanInfo::Start()
{
if (-1 != m_timerId)
{
this->killTimer(m_timerId);
m_timerId = -1;
}
m_error = false;
ui->labelScanInfo->setText("");
ui->labelScanCount->setText(tr("Scan count: 0"));
@ -54,14 +58,34 @@ void Dialog_ScanInfo::Finish()
if (!m_error)
{
m_timer->start(1000);
connect(m_timer, &QTimer::timeout, this, &Dialog_ScanInfo::on_pushButtonOK_clicked);
if (-1 != m_timerId)
{
this->killTimer(m_timerId);
m_timerId = -1;
}
m_timerId = this->startTimer(1000);
}
}
void Dialog_ScanInfo::timerEvent(QTimerEvent* e)
{
if (e->timerId() == m_timerId)
{
this->killTimer(m_timerId);
m_timerId = -1;
hide();
}
}
void Dialog_ScanInfo::on_pushButtonOK_clicked()
{
disconnect(m_timer, &QTimer::timeout, this, &Dialog_ScanInfo::on_pushButtonOK_clicked);
if (-1 != m_timerId)
{
this->killTimer(m_timerId);
m_timerId = -1;
}
hide();
}

View File

@ -20,6 +20,9 @@ public:
void SetScanCount(unsigned int count);
void Finish();
protected:
virtual void timerEvent(QTimerEvent* e) override;
private slots:
void on_pushButtonOK_clicked();
@ -28,7 +31,7 @@ private slots:
private:
Ui::Dialog_ScanInfo *ui;
class Dialog_Scan *m_dlgScan;
QTimer *m_timer;
int m_timerId;
bool m_error;
};

View File

@ -64,11 +64,12 @@ std::vector<DeviceConfig> Form_DeviceConfig::GetDeviceConfigs()
const DeviceConfigEx &deviceConfig = m_baseDeviceConfigsGroups[i].deviceConfigs[j];
QWidget *ctrl = nullptr;
for (int k = 0; k < (int)m_ctrlList.size(); ++k)
QList<QWidget*> widgets = this->findChildren<QWidget*>();
foreach (QWidget* widget, widgets)
{
if (deviceConfig.name == m_ctrlList[k]->property("config_name").toString().toStdString())
if (deviceConfig.name == widget->property("config_name").toString().toStdString())
{
ctrl = m_ctrlList[k];
ctrl = widget;
break;
}
}
@ -484,7 +485,6 @@ void Form_DeviceConfig::Init(SANE_Handle devHandle)
if (nullptr != ctrl)
{
ctrl->setProperty("config_name", QString::fromStdString(deviceConfig.name));
m_ctrlList.push_back(ctrl);
}
if (nullptr != ctrlWidget)
@ -506,11 +506,12 @@ void Form_DeviceConfig::Update(std::vector<DeviceConfigsGroup> &deviceConfigsGro
const DeviceConfigEx &deviceConfig = deviceConfigsGroups[i].deviceConfigs[j];
QWidget *ctrl = nullptr;
for (int k = 0; k < (int)m_ctrlList.size(); ++k)
QList<QWidget*> widgets = this->findChildren<QWidget*>();
foreach (QWidget* widget, widgets)
{
if (deviceConfig.name == m_ctrlList[k]->property("config_name").toString().toStdString())
if (deviceConfig.name == widget->property("config_name").toString().toStdString())
{
ctrl = m_ctrlList[k];
ctrl = widget;
break;
}
}
@ -584,7 +585,7 @@ void Form_DeviceConfig::on_sliderClicked(int value)
QString sliderProverty = slider->property("config_name").toString();
QList<QAbstractSpinBox*> buttons = this->findChildren<QAbstractSpinBox*>();
foreach(QAbstractSpinBox* abstractSpinBox, buttons)
foreach (QAbstractSpinBox* abstractSpinBox, buttons)
{
QString spinBoxProverty = abstractSpinBox->property("config_name").toString();
if (spinBoxProverty == sliderProverty)
@ -611,7 +612,7 @@ void Form_DeviceConfig::on_spinBoxClicked(int value)
QString spinBoxProverty = spinBox->property("config_name").toString();
QList<QSlider*> buttons = this->findChildren<QSlider*>();
foreach(QSlider* slider, buttons)
foreach (QSlider* slider, buttons)
{
QString sliderProverty = slider->property("config_name").toString();
if (sliderProverty == spinBoxProverty)
@ -628,7 +629,7 @@ void Form_DeviceConfig::on_doubleSpinboxClicked(double value)
QString spinBoxProverty = spinBox->property("config_name").toString();
QList<QSlider*> buttons = this->findChildren<QSlider*>();
foreach(QSlider* slider, buttons)
foreach (QSlider* slider, buttons)
{
QString sliderProverty = slider->property("config_name").toString();
if (sliderProverty == spinBoxProverty)

View File

@ -95,7 +95,6 @@ private slots:
private:
std::vector<DeviceConfigsGroup> m_baseDeviceConfigsGroups;
std::vector<QWidget*> m_ctrlList;
};
#endif // FORM_DEVICECONFIG_H