#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" 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(QString::fromLocal8Bit(saveParam.savePath.c_str())); ui->cbtn_subFolder->setChecked(saveParam.isUseSubfolderByTime); ui->cbtn_subFolderByBlank->setChecked(saveParam.isUseSubfolderByBlankPages); ui->cbtn_subFolderByColor->setChecked(saveParam.isUseSubfolderByColor); ui->lineEdit_fileName->setText(QString::fromLocal8Bit(saveParam.fileNamePrefix.c_str())); ui->spin_index->setValue(saveParam.fileNameStartIndex); ui->cbox_digit->setCurrentIndex(saveParam.fileNameDigits - 1); ui->cbox_evenOdd->setCurrentIndex(saveParam.fileNameOddEvenType); int format = getFormatIndex(saveParam.fileNameExt, saveParam.isOcr); ui->cbox_format->setCurrentIndex(format); ui->cbtn_multiFile->setChecked(saveParam.isSaveAsMultiPage); ui->radio_multiAll->setChecked(0 == saveParam.multiPagesType); ui->radio_multiCustom->setChecked(0 != saveParam.multiPagesType); ui->spinBox_multiPages->setValue(saveParam.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.jpegQuality = saveParam.jpegQuality; m_writeParam.tiffCompressionBW = saveParam.tiffCompressionBW; m_writeParam.tiffCompression = saveParam.tiffCompression; m_writeParam.tiffQuality = saveParam.tiffQuality; } Form_SaveParam::~Form_SaveParam() { delete ui; } SaveParam Form_SaveParam::GetSaveParam() { SaveParam saveParam; saveParam.savePath = ui->lineEdit_directory->text().toLocal8Bit().toStdString(); saveParam.isUseSubfolderByTime = ui->cbtn_subFolder->isChecked(); saveParam.isUseSubfolderByBlankPages = ui->cbtn_subFolderByBlank->isChecked(); saveParam.isUseSubfolderByColor = ui->cbtn_subFolderByColor->isChecked(); saveParam.jpegQuality = m_writeParam.jpegQuality; saveParam.tiffCompressionBW = m_writeParam.tiffCompressionBW; saveParam.tiffCompression = m_writeParam.tiffCompression; saveParam.tiffQuality = m_writeParam.tiffQuality; saveParam.fileNamePrefix = ui->lineEdit_fileName->text().toLocal8Bit().toStdString(); saveParam.fileNameStartIndex = ui->spin_index->value(); saveParam.fileNameDigits = ui->cbox_digit->currentIndex() + 1; saveParam.fileNameOddEvenType = ui->cbox_evenOdd->currentIndex(); std::string 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.fileNameExt = format; saveParam.isOcr = (ui->cbox_format->currentIndex() >= 10); saveParam.isSaveAsMultiPage = ui->cbtn_multiFile->isChecked(); saveParam.multiPagesType = (ui->radio_multiAll->isChecked()) ? 0 : 1; saveParam.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); #if defined(HG_CMP_MSC) strcat(aquireIntoPath, "\\AquireInto\\"); #else strcat(aquireIntoPath, "/AquireInto/"); #endif SaveParam saveParam; saveParam.savePath = aquireIntoPath; saveParam.isUseSubfolderByTime = false; saveParam.isUseSubfolderByBlankPages = false; saveParam.isUseSubfolderByColor = false; saveParam.jpegQuality = 80; saveParam.tiffCompressionBW = 1; saveParam.tiffCompression = 1; saveParam.tiffQuality = 80; #if defined(OEM_HANWANG) saveParam.fileNamePrefix = "HWScan"; #elif defined(OEM_LISICHENG) saveParam.fileNamePrefix = "LXScan"; #elif defined(OEM_CANGTIAN) saveParam.fileNamePrefix = "CTSScan"; #elif defined(OEM_ZHONGJING) saveParam.fileNamePrefix = "ZJScan"; #elif defined(OEM_ZIGUANG) saveParam.fileNamePrefix = "ZGScan"; #elif defined(OEM_NEUTRAL) saveParam.fileNamePrefix = "Scan"; #elif defined(OEM_DELI) saveParam.fileNamePrefix = "DLScan"; #else saveParam.fileNamePrefix = "HGScan"; #endif saveParam.fileNameStartIndex = 1; saveParam.fileNameDigits = 3; saveParam.fileNameOddEvenType = 0; saveParam.fileNameExt = "jpg"; saveParam.isOcr = false; saveParam.isSaveAsMultiPage = false; saveParam.multiPagesType = 0; saveParam.customMultiPages = 1; return saveParam; } int Form_SaveParam::getFormatIndex(const std::string &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 += "/"; char result[512] = {0}; HGBase_StandardiseFileName(save_dir.toStdString().c_str(), result, 512); ui->lineEdit_directory->setText(QString::fromStdString(result)); } } 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'))); }