#include "form_saveparam.h" #include "ui_form_saveparam.h" #include #include "base/HGDef.h" #include "base/HGInc.h" #include "base/HGUtility.h" #include "base/HGIni.h" #include "HGUIGlobal.h" #include "HGString.h" #include "app_cfg.h" Form_SaveParam::Form_SaveParam(const SaveParam &saveParam, QWidget *parent) : QWidget(parent) , ui(new Ui::Form_SaveParam) { ui->setupUi(this); QRegExp rx("[^\\\\/:*?\"<>|]+$"); ui->lineEdit_fileName->setValidator(new QRegExpValidator(rx, this)); ui->lineEdit_directory->setText(saveParam.m_savePath); ui->cbtn_subFolder->setChecked(saveParam.m_isUseSubfolderByTime); ui->cbtn_subFolderByBlank->setChecked(saveParam.m_isUseSubfolderByBlankPages); ui->cbtn_subFolderByColor->setChecked(saveParam.m_isUseSubfolderByColor); ui->lineEdit_fileName->setText(saveParam.m_fileNamePrefix); ui->spin_index->setValue(saveParam.m_fileNameStartIndex); ui->cbox_digit->setCurrentIndex(saveParam.m_fileNameDigits - 1); ui->cbox_evenOdd->setCurrentIndex(saveParam.m_fileNameOddEventType); int format = getFormatIndex(saveParam.m_fileNameExt, saveParam.m_isOcr); ui->cbox_format->setCurrentIndex(format); ui->cbtn_multiFile->setChecked(saveParam.m_isSaveAsMultiPage); ui->radio_multiAll->setChecked(0 == saveParam.m_multiPagesType); ui->radio_multiCustom->setChecked(0 != saveParam.m_multiPagesType); ui->spinBox_multiPages->setValue(saveParam.m_customMultiPages); 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->btn_option->setEnabled(0 == ui->cbox_format->currentIndex() || 6 == ui->cbox_format->currentIndex() || 7 == ui->cbox_format->currentIndex() || 8 == ui->cbox_format->currentIndex()); ui->cbtn_multiFile->setEnabled(ui->cbox_format->currentIndex() > 5 && ui->cbox_format->currentIndex() < 12); 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->spin_index->setFixedWidth(160); ui->cbox_digit->setFixedWidth(80); #if defined (x86_64) || defined (loongarch64) ui->cbox_format->removeItem(11); ui->cbox_format->removeItem(10); #endif m_writeParam.m_jpegQuality = saveParam.m_jpegQuality; m_writeParam.m_tiffCompressionBW = saveParam.m_tiffCompressionBW; m_writeParam.m_tiffCompression = saveParam.m_tiffCompression; m_writeParam.m_tiffQuality = saveParam.m_tiffQuality; } Form_SaveParam::~Form_SaveParam() { delete ui; } SaveParam Form_SaveParam::GetSaveParam() { SaveParam saveParam; saveParam.m_savePath = ui->lineEdit_directory->text(); saveParam.m_isUseSubfolderByTime = ui->cbtn_subFolder->isChecked(); saveParam.m_isUseSubfolderByBlankPages = ui->cbtn_subFolderByBlank->isChecked(); saveParam.m_isUseSubfolderByColor = ui->cbtn_subFolderByColor->isChecked(); saveParam.m_jpegQuality = m_writeParam.m_jpegQuality; saveParam.m_tiffCompressionBW = m_writeParam.m_tiffCompressionBW; saveParam.m_tiffCompression = m_writeParam.m_tiffCompression; saveParam.m_tiffQuality = m_writeParam.m_tiffQuality; saveParam.m_fileNamePrefix = ui->lineEdit_fileName->text(); saveParam.m_fileNameStartIndex = ui->spin_index->value(); saveParam.m_fileNameDigits = ui->cbox_digit->currentIndex() + 1; saveParam.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 = "ppm"; break; case 4: format = "pgm"; break; case 5: format = "pbm"; break; case 6: format = "tif"; break; case 7: format = "pdf"; break; case 8: format = "ofd"; break; case 9: format = "gif"; break; case 10: format = "pdf"; break; case 11: format = "ofd"; break; default: break; } saveParam.m_fileNameExt = format; saveParam.m_isOcr = (ui->cbox_format->currentIndex() >= 10); saveParam.m_isSaveAsMultiPage = ui->cbtn_multiFile->isChecked(); saveParam.m_multiPagesType = (ui->radio_multiAll->isChecked()) ? 0 : 1; saveParam.m_customMultiPages = ui->spinBox_multiPages->value(); return saveParam; } SaveParam Form_SaveParam::GetDefSaveParam() { HGChar aquireIntoPath[512]; HGBase_GetDocumentsPath(aquireIntoPath, 512); HGChar procName[512]; HGBase_GetProcessName(procName, 512); strcat(aquireIntoPath, procName); strcat(aquireIntoPath, "/AquireInto/"); QString filePath = getStdFileName(StdStringToUtf8(aquireIntoPath).c_str()); SaveParam saveParam; saveParam.m_savePath = filePath; saveParam.m_isUseSubfolderByTime = false; saveParam.m_isUseSubfolderByBlankPages = false; saveParam.m_isUseSubfolderByColor = false; saveParam.m_jpegQuality = 80; saveParam.m_tiffCompressionBW = 1; saveParam.m_tiffCompression = 1; saveParam.m_tiffQuality = 80; #if defined(OEM_HANWANG) saveParam.m_fileNamePrefix = QString("HWScan"); #elif defined(OEM_LISICHENG) saveParam.m_fileNamePrefix = QString("LXScan"); #elif defined(OEM_CANGTIAN) saveParam.m_fileNamePrefix = QString("CTSScan"); #elif defined(OEM_ZHONGJING) saveParam.m_fileNamePrefix = QString("ZJScan"); #elif defined(OEM_ZIGUANG) saveParam.m_fileNamePrefix = QString("ZGScan"); #elif defined(OEM_NEUTRAL) saveParam.m_fileNamePrefix = QString("Scan"); #elif defined(OEM_DELI) saveParam.m_fileNamePrefix = QString("DLScan"); #else saveParam.m_fileNamePrefix = QString("HGScan"); #endif saveParam.m_fileNameStartIndex = 1; saveParam.m_fileNameDigits = 3; saveParam.m_fileNameOddEventType = 0; saveParam.m_fileNameExt = QString("jpg"); saveParam.m_isOcr = false; saveParam.m_isSaveAsMultiPage = false; saveParam.m_multiPagesType = 0; saveParam.m_customMultiPages = 1; return saveParam; } int Form_SaveParam::getFormatIndex(const QString &ext, bool ocr) { if (ext == "bmp") return 1; else if (ext == "png") return 2; else if (ext == "ppm") return 3; else if (ext == "pgm") return 4; else if (ext == "pbm") return 5; else if (ext == "tif") return 6; else if (ext == "pdf") return !ocr ? 7 : 10; else if (ext == "ofd") return !ocr ? 8 : 11; else if (ext == "gif") return 9; return 0; } void Form_SaveParam::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 Form_SaveParam::on_btn_option_clicked() { Dialog_WriteSettings dlg(ui->cbox_format->currentIndex(), m_writeParam, this); if (dlg.exec()) { m_writeParam = dlg.GetWriteParam(); } } void Form_SaveParam::on_cbox_format_currentIndexChanged(int index) { ui->cbtn_multiFile->setEnabled(index > 5 && index < 12); if (index < 6 || index >= 10 ) ui->cbtn_multiFile->setChecked(false); ui->btn_option->setEnabled(0 == index || 6 == index || 7 == index || 8 == index); } void Form_SaveParam::on_lineEdit_directory_textChanged(const QString& arg1) { } void Form_SaveParam::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 Form_SaveParam::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 Form_SaveParam::on_radio_multiCustom_toggled(bool checked) { ui->spinBox_multiPages->setEnabled(checked && ui->cbtn_multiFile->isEnabled()); } void Form_SaveParam::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 Form_SaveParam::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'))); }