#include "dialog_aquireinto.h" #include "ui_dialog_aquireinto.h" #include "dialog_savequality.h" #include #include #include #include #include "base/HGDef.h" #include "base/HGInc.h" #include "base/HGUtility.h" #include "HGUIGlobal.h" #include "../../utility/HGString.h" #include "app_cfg.h" Dialog_AquireInto::Dialog_AquireInto(QWidget* parent) : QDialog(parent), ui(new Ui::Dialog_AquireInto) { ui->setupUi(this); QRegExp rx("[^\\\\/:*?\"<>|]+$"); ui->lineEdit_fileName->setValidator(new QRegExpValidator(rx, this)); HGChar aquireIntoPath[512]; HGBase_GetDocumentsPath(aquireIntoPath, 512); strcat(aquireIntoPath, "Huago/ScannerApp/AquireInto/"); QString filePath = getStdFileName(StdStringToUtf8(aquireIntoPath).c_str()); m_saveQuality = getCfgValue("aquire", "quality", 0); ui->lineEdit_directory->setText(getCfgValue("aquire", "aquireIntoPath", filePath)); ui->cbtn_subFolder->setChecked(getCfgValue("aquire", "subFolderByTime", false)); ui->cbtn_subFolderByBlank->setChecked(false); ui->cbtn_subFolderByColor->setChecked(false); ui->lineEdit_fileName->setText(getCfgValue("aquire", "namePrefix", QString("HGScan"))); ui->spin_index->setValue(getCfgValue("aquire", "startIndex", 1)); ui->cbox_digit->setCurrentIndex(getCfgValue("aquire", "digit", 2)); ui->cbox_evenOdd->setCurrentIndex(0); ui->cbox_format->setCurrentIndex(getCfgValue("aquire", "format", 0)); ui->cbtn_multiFile->setChecked(getCfgValue("aquire", "multiFile", false)); ui->radio_multiAll->setChecked(true); ui->spinBox_multiPages->setValue(1); ui->lab_digitExp->setText(QString(tr("e.g. '%1%2'")).arg(ui->lineEdit_fileName->text()) .arg(ui->spin_index->value(), ui->cbox_digit->currentIndex() + 1, 10, QLatin1Char('0'))); ui->cbtn_multiFile->setEnabled(ui->cbox_format->currentIndex() > 2); ui->radio_multiAll->setEnabled(ui->cbtn_multiFile->isChecked()); ui->radio_multiCustom->setEnabled(ui->cbtn_multiFile->isChecked()); ui->spinBox_multiPages->setEnabled(ui->cbtn_multiFile->isChecked() ? ui->radio_multiCustom->isChecked() : false); ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!ui->lineEdit_directory->text().isEmpty()); ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("ok")); ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("cancel")); this->setFixedHeight(380); ui->spin_index->setFixedWidth(160); ui->cbox_digit->setFixedWidth(80); //Temporarily hide some functions ui->cbtn_subFolderByBlank->setVisible(false); ui->cbtn_subFolderByColor->setVisible(false); ui->cbox_evenOdd->setVisible(false); ui->radio_multiAll->setVisible(false); ui->radio_multiCustom->setVisible(false); ui->spinBox_multiPages->setVisible(false); } Dialog_AquireInto::~Dialog_AquireInto() { delete ui; } AquireIntoSaveParam Dialog_AquireInto::getSaveParam() { AquireIntoSaveParam param; param.m_savePath = ui->lineEdit_directory->text(); param.m_isUseSubfolderByTime = ui->cbtn_subFolder->isChecked(); param.m_isUseSubfolderByBlankPages = ui->cbtn_subFolderByBlank->isChecked(); param.m_isUseSubfolderByColor = ui->cbtn_subFolderByColor->isChecked(); param.m_saveQuality = m_saveQuality; param.m_fileNamePrefix = ui->lineEdit_fileName->text(); param.m_fileNameStartIndex = ui->spin_index->value(); param.m_fileNameDigits = ui->cbox_digit->currentIndex() + 1; param.m_fileNameOddEventType = ui->cbox_evenOdd->currentIndex(); QString format = "jpg"; switch (ui->cbox_format->currentIndex()) { case 1: format = "bmp"; break; case 2: format = "png"; break; case 3: format = "tif"; break; case 4: format = "pdf"; break; case 5: format = "ofd"; break; default: break; } param.m_fileNameExt = format; param.m_isSaveAsMultiPage = ui->cbtn_multiFile->isChecked(); param.m_multiPagesType = (ui->radio_multiAll->isChecked()) ? 0 : 1; param.m_customMultiPages = ui->spinBox_multiPages->value(); return param; } void Dialog_AquireInto::on_btn_directory_clicked() { QString save_dir = QFileDialog::getExistingDirectory(this, tr("Browse directory"), ""); if (!save_dir.isEmpty()) { if (save_dir[save_dir.size() - 1] != '/') save_dir += "/"; ui->lineEdit_directory->setText(getStdFileName(save_dir)); } } void Dialog_AquireInto::on_btn_option_clicked() { Dialog_SaveQuality dlg(m_saveQuality, this); if (dlg.exec()) { m_saveQuality = dlg.getSaveQuality(); } } void Dialog_AquireInto::on_cbox_format_currentIndexChanged(int index) { ui->cbtn_multiFile->setEnabled(index > 2); if (index < 3) ui->cbtn_multiFile->setChecked(false); } void Dialog_AquireInto::on_lineEdit_directory_textChanged(const QString& arg1) { ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!arg1.isEmpty()); } void Dialog_AquireInto::on_buttonBox_accepted() { saveCfgValue("aquire", "quality", m_saveQuality); saveCfgValue("aquire", "aquireIntoPath", ui->lineEdit_directory->text()); saveCfgValue("aquire", "namePrefix", ui->lineEdit_fileName->text()); saveCfgValue("aquire", "subFolderByTime", ui->cbtn_subFolder->isChecked()); saveCfgValue("aquire", "startIndex", ui->spin_index->value()); saveCfgValue("aquire", "digit", ui->cbox_digit->currentIndex()); saveCfgValue("aquire", "format", ui->cbox_format->currentIndex()); saveCfgValue("aquire", "multiFile", ui->cbtn_multiFile->isChecked()); } void Dialog_AquireInto::on_cbox_digit_currentIndexChanged(int index) { (void)index; ui->lab_digitExp->setText(QString(tr("e.g. '%1%2'")).arg(ui->lineEdit_fileName->text()). arg(ui->spin_index->value(), ui->cbox_digit->currentIndex() + 1, 10, QLatin1Char('0'))); } void Dialog_AquireInto::on_cbtn_multiFile_toggled(bool checked) { if (checked) { ui->spinBox_multiPages->setEnabled(ui->radio_multiCustom->isChecked()); } else { ui->spinBox_multiPages->setEnabled(false); } ui->radio_multiAll->setEnabled(checked); ui->radio_multiCustom->setEnabled(checked); } void Dialog_AquireInto::on_radio_multiCustom_toggled(bool checked) { ui->spinBox_multiPages->setEnabled(checked && ui->cbtn_multiFile->isEnabled()); } void Dialog_AquireInto::on_lineEdit_fileName_textChanged(const QString &arg1) { (void)arg1; ui->lab_digitExp->setText(QString(tr("e.g. '%1%2'")).arg(ui->lineEdit_fileName->text()). arg(ui->spin_index->value(), ui->cbox_digit->currentIndex() + 1, 10, QLatin1Char('0'))); } void Dialog_AquireInto::on_spin_index_valueChanged(int arg1) { (void)arg1; ui->lab_digitExp->setText(QString(tr("e.g. '%1%2'")).arg(ui->lineEdit_fileName->text()). arg(ui->spin_index->value(), ui->cbox_digit->currentIndex() + 1, 10, QLatin1Char('0'))); }