From a70931d5c10fa81887b38b19657be42099d34091 Mon Sep 17 00:00:00 2001 From: yangjiaxuan <171295266@qq.com> Date: Mon, 20 May 2024 15:48:49 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=AE=BE=E5=A4=87=E6=96=AD?= =?UTF-8?q?=E5=BC=80=E6=97=B6=EF=BC=8C=E9=83=A8=E5=88=86=E6=A8=A1=E6=80=81?= =?UTF-8?q?=E5=AD=90=E7=AA=97=E5=8F=A3=E6=B2=A1=E6=9C=89=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scantool/dialog_add.cpp | 2 + app/scantool/form_deviceconfig.cpp | 60 +++++++++++++++++++++++++----- app/scantool/form_deviceconfig.h | 3 ++ app/scantool/form_saveparam.cpp | 49 ++++++++++++++++++------ app/scantool/form_saveparam.h | 5 +++ 5 files changed, 98 insertions(+), 21 deletions(-) diff --git a/app/scantool/dialog_add.cpp b/app/scantool/dialog_add.cpp index 1218c0d7..54d87567 100644 --- a/app/scantool/dialog_add.cpp +++ b/app/scantool/dialog_add.cpp @@ -30,6 +30,7 @@ Dialog_Add::Dialog_Add(SANE_Handle devHandle, class MainWindow *mainWnd, const s m_formDeviceConfig = new Form_DeviceConfig(devHandle, m_scanParam.deviceConfigs, this); connect(this, SIGNAL(closeDevice()), m_formDeviceConfig, SLOT(on_closeDevice())); m_formSaveParam = new Form_SaveParam(m_scanParam.saveParam, this); + connect(this, SIGNAL(closeDevice()), m_formSaveParam, SLOT(on_closeDevice())); ui->stackedWidget->addWidget(m_formDeviceConfig); ui->stackedWidget->addWidget(m_formSaveParam); ui->stackedWidget->setCurrentIndex(0); @@ -58,6 +59,7 @@ Dialog_Add::Dialog_Add(SANE_Handle devHandle, class MainWindow *mainWnd, const S m_formDeviceConfig = new Form_DeviceConfig(devHandle, m_scanParam.deviceConfigs, this); connect(this, SIGNAL(closeDevice()), m_formDeviceConfig, SLOT(on_closeDevice())); m_formSaveParam = new Form_SaveParam(m_scanParam.saveParam, this); + connect(this, SIGNAL(closeDevice()), m_formSaveParam, SLOT(on_closeDevice())); ui->stackedWidget->addWidget(m_formDeviceConfig); ui->stackedWidget->addWidget(m_formSaveParam); ui->stackedWidget->setCurrentIndex(0); diff --git a/app/scantool/form_deviceconfig.cpp b/app/scantool/form_deviceconfig.cpp index 6e34888e..12a2ac6b 100644 --- a/app/scantool/form_deviceconfig.cpp +++ b/app/scantool/form_deviceconfig.cpp @@ -12,12 +12,12 @@ #include #include #include -#include #include "lang/app_language.h" Form_DeviceConfig::Form_DeviceConfig(SANE_Handle devHandle, const std::vector& deviceConfigs, QWidget *parent) : QWidget(parent) , m_clrToolDlg(nullptr) + , m_qMessageBoxDlg(nullptr) , m_devHandle(devHandle) , m_defButtonId(-1) { @@ -27,6 +27,7 @@ Form_DeviceConfig::Form_DeviceConfig(SANE_Handle devHandle, const std::vector Form_DeviceConfig::GetDeviceConfigs() @@ -810,6 +811,16 @@ void Form_DeviceConfig::Update(int ignoreId) } } +void Form_DeviceConfig::PopupMsgBox(QString content) +{ + assert(nullptr == m_qMessageBoxDlg); + m_qMessageBoxDlg = new QMessageBox(QMessageBox::Information, tr("Prompt"), content, QMessageBox::Ok, this); + m_qMessageBoxDlg->exec(); + + delete m_qMessageBoxDlg; + m_qMessageBoxDlg = nullptr; +} + bool Form_DeviceConfig::eventFilter(QObject *target, QEvent *event) { if (typeid(*target) == typeid(QSlider) || typeid(*target) == typeid(QComboBox) || typeid(*target) == typeid(QSpinBox) || @@ -828,6 +839,8 @@ void Form_DeviceConfig::on_closeDevice() { if (nullptr != m_clrToolDlg) m_clrToolDlg->reject(); + if (nullptr != m_qMessageBoxDlg) + m_qMessageBoxDlg->reject(); } void Form_DeviceConfig::on_defaultBtn_clicked() @@ -856,7 +869,10 @@ void Form_DeviceConfig::on_string_list_comboBoxClicked() disconnect(comboBox, SIGNAL(currentTextChanged(const QString)), this, SLOT(on_string_list_comboBoxClicked())); comboBox->setCurrentText(QString::fromUtf8(v)); connect(comboBox, SIGNAL(currentTextChanged(const QString)), this, SLOT(on_string_list_comboBoxClicked())); - QMessageBox::information(this, tr("Prompt"), tr("The funtion is unsupported")); + + QString content("The funtion is unsupported"); + PopupMsgBox(content); + return; } @@ -883,7 +899,10 @@ void Form_DeviceConfig::on_int_list_comboBoxClicked() disconnect(comboBox, SIGNAL(currentTextChanged(const QString)), this, SLOT(on_int_list_comboBoxClicked())); comboBox->setCurrentText(QString::number(v)); connect(comboBox, SIGNAL(currentTextChanged(const QString)), this, SLOT(on_int_list_comboBoxClicked())); - QMessageBox::information(this, tr("Prompt"), tr("The funtion is unsupported")); + + QString content("The funtion is unsupported"); + PopupMsgBox(content); + return; } @@ -910,7 +929,10 @@ void Form_DeviceConfig::on_double_list_comboBoxClicked() disconnect(comboBox, SIGNAL(currentTextChanged(const QString)), this, SLOT(on_double_list_comboBoxClicked())); comboBox->setCurrentText(QString::number(SANE_UNFIX(v))); connect(comboBox, SIGNAL(currentTextChanged(const QString)), this, SLOT(on_double_list_comboBoxClicked())); - QMessageBox::information(this, tr("Prompt"), tr("The funtion is unsupported")); + + QString content("The funtion is unsupported"); + PopupMsgBox(content); + return; } @@ -945,7 +967,10 @@ void Form_DeviceConfig::on_int_sliderClicked(int value) spinBox->setValue(v); connect(slider, SIGNAL(valueChanged(int)), this, SLOT(on_int_sliderClicked(int))); connect(spinBox, SIGNAL(valueChanged(int)), this, SLOT(on_relate_spinBoxClicked(int))); - QMessageBox::information(this, tr("Prompt"), tr("The funtion is unsupported")); + + QString content("The funtion is unsupported"); + PopupMsgBox(content); + return; } @@ -980,7 +1005,10 @@ void Form_DeviceConfig::on_double_sliderClicked(int value) doubleSpinBox->setValue(SANE_UNFIX(v)); connect(slider, SIGNAL(valueChanged(int)), this, SLOT(on_double_sliderClicked(int))); connect(doubleSpinBox, SIGNAL(valueChanged(double)), this, SLOT(on_relate_doubleSpinboxClicked(double))); - QMessageBox::information(this, tr("Prompt"), tr("The funtion is unsupported")); + + QString content("The funtion is unsupported"); + PopupMsgBox(content); + return; } @@ -1021,7 +1049,10 @@ void Form_DeviceConfig::on_string_comboBoxClicked() disconnect(comboBox, SIGNAL(currentTextChanged(const QString)), this, SLOT(on_string_comboBoxClicked())); comboBox->setCurrentText(QString::fromUtf8(v)); connect(comboBox, SIGNAL(currentTextChanged(const QString)), this, SLOT(on_string_comboBoxClicked())); - QMessageBox::information(this, tr("Prompt"), tr("The funtion is unsupported")); + + QString content("The funtion is unsupported"); + PopupMsgBox(content); + return; } @@ -1048,7 +1079,10 @@ void Form_DeviceConfig::on_spinBoxClicked(int value) disconnect(spinBox, SIGNAL(valueChanged(int)), this, SLOT(on_spinBoxClicked(int))); spinBox->setValue(v); connect(spinBox, SIGNAL(valueChanged(int)), this, SLOT(on_spinBoxClicked(int))); - QMessageBox::information(this, tr("Prompt"), tr("The funtion is unsupported")); + + QString content("The funtion is unsupported"); + PopupMsgBox(content); + return; } @@ -1083,7 +1117,10 @@ void Form_DeviceConfig::on_customGamma_checkedClicked() button->setEnabled((bool)value); connect(checkBox, SIGNAL(stateChanged(int)), this, SLOT(on_checkedClicked())); connect(button, &QPushButton::clicked, this, &Form_DeviceConfig::on_customGammaBtn_clicked); - QMessageBox::information(this, tr("Prompt"), tr("The funtion is unsupported")); + + QString content("The funtion is unsupported"); + PopupMsgBox(content); + return; } @@ -1324,7 +1361,10 @@ void Form_DeviceConfig::on_checkedClicked() disconnect(checkBox, SIGNAL(stateChanged(int)), this, SLOT(on_checkedClicked())); checkBox->setCheckState(value ? Qt::Checked : Qt::Unchecked); connect(checkBox, SIGNAL(stateChanged(int)), this, SLOT(on_checkedClicked())); - QMessageBox::information(this, tr("Prompt"), tr("The funtion is unsupported")); + + QString content("The funtion is unsupported"); + PopupMsgBox(content); + return; } diff --git a/app/scantool/form_deviceconfig.h b/app/scantool/form_deviceconfig.h index bc65cf6d..6e7c9ae4 100644 --- a/app/scantool/form_deviceconfig.h +++ b/app/scantool/form_deviceconfig.h @@ -4,6 +4,7 @@ #include #include #include +#include #include "base/HGDef.h" #include "sane/sane_ex.h" #include "sane/sane_option_definitions.h" @@ -122,6 +123,7 @@ public: private: void Init(const std::vector& deviceConfigs); void Update(int ignoreId); + void PopupMsgBox(QString content); protected: virtual bool eventFilter(QObject *target, QEvent *event) override; @@ -144,6 +146,7 @@ private slots: private: setPicClrTool *m_clrToolDlg; + QMessageBox *m_qMessageBoxDlg; SANE_Handle m_devHandle; int m_defButtonId; std::vector m_deviceConfigsGroups; // 当前配置信息 diff --git a/app/scantool/form_saveparam.cpp b/app/scantool/form_saveparam.cpp index bd307b4d..4bc99fe9 100644 --- a/app/scantool/form_saveparam.cpp +++ b/app/scantool/form_saveparam.cpp @@ -1,6 +1,5 @@ #include "form_saveparam.h" #include "ui_form_saveparam.h" -#include #include "base/HGDef.h" #include "base/HGInc.h" #include "base/HGUtility.h" @@ -9,6 +8,8 @@ Form_SaveParam::Form_SaveParam(const SaveParam &saveParam, QWidget *parent) : QWidget(parent) , ui(new Ui::Form_SaveParam) + , m_writeSettingsDlg(nullptr) + , m_qFileDialog(nullptr) { ui->setupUi(this); @@ -56,6 +57,8 @@ Form_SaveParam::Form_SaveParam(const SaveParam &saveParam, QWidget *parent) Form_SaveParam::~Form_SaveParam() { + assert(nullptr == m_writeSettingsDlg); + assert(nullptr == m_qFileDialog); delete ui; } @@ -200,27 +203,51 @@ int Form_SaveParam::getFormatIndex(const std::string &ext, bool ocr) return 0; } +void Form_SaveParam::on_closeDevice() +{ + if (nullptr != m_writeSettingsDlg) + m_writeSettingsDlg->reject(); + if (nullptr != m_qFileDialog) + m_qFileDialog->reject(); +} + void Form_SaveParam::on_btn_directory_clicked() { - QString save_dir = QFileDialog::getExistingDirectory(this, tr("Browse directory"), ui->lineEdit_directory->text()); - if (!save_dir.isEmpty()) + assert(nullptr == m_qFileDialog); + m_qFileDialog = new QFileDialog(this); + m_qFileDialog->setFileMode(QFileDialog::Directory); + m_qFileDialog->setViewMode(QFileDialog::Detail); + m_qFileDialog->setWindowTitle("Browse directory"); + m_qFileDialog->setDirectory(ui->lineEdit_directory->text()); + if (m_qFileDialog->exec()) { - if (save_dir[save_dir.size() - 1] != '/') - save_dir += "/"; + QString save_dir = m_qFileDialog->directory().absolutePath(); + if (!save_dir.isEmpty()) + { + if (save_dir[save_dir.size() - 1] != '/') + save_dir += "/"; - char result[512] = {0}; - HGBase_StandardiseFileName(save_dir.toStdString().c_str(), result, 512); - ui->lineEdit_directory->setText(QString::fromStdString(result)); + char result[512] = {0}; + HGBase_StandardiseFileName(save_dir.toStdString().c_str(), result, 512); + ui->lineEdit_directory->setText(QString::fromStdString(result)); + } } + + delete m_qFileDialog; + m_qFileDialog = nullptr; } void Form_SaveParam::on_btn_option_clicked() { - Dialog_WriteSettings dlg(ui->cbox_format->currentIndex(), m_writeParam, this); - if (dlg.exec()) + assert(nullptr == m_writeSettingsDlg); + m_writeSettingsDlg = new Dialog_WriteSettings(ui->cbox_format->currentIndex(), m_writeParam, this); + if (m_writeSettingsDlg->exec()) { - m_writeParam = dlg.GetWriteParam(); + m_writeParam = m_writeSettingsDlg->GetWriteParam(); } + + delete m_writeSettingsDlg; + m_writeSettingsDlg = nullptr; } void Form_SaveParam::on_cbox_format_currentIndexChanged(int index) diff --git a/app/scantool/form_saveparam.h b/app/scantool/form_saveparam.h index 7248c9d6..7dddcce8 100644 --- a/app/scantool/form_saveparam.h +++ b/app/scantool/form_saveparam.h @@ -3,6 +3,7 @@ #include #include +#include #include "dialog_writesettings.h" namespace Ui { @@ -45,6 +46,8 @@ private: int getFormatIndex(const std::string &ext, bool ocr); private slots: + void on_closeDevice(); + void on_btn_directory_clicked(); void on_btn_option_clicked(); @@ -66,6 +69,8 @@ private slots: private: Ui::Form_SaveParam *ui; WriteParam m_writeParam; + Dialog_WriteSettings *m_writeSettingsDlg; + QFileDialog *m_qFileDialog; }; #endif // FORM_SAVEPARAM_H