#include "dialog_aquireinto.h" #include "ui_dialog_aquireinto.h" #include "dialog_writesettings.h" #include #include #include #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" #include "dialog_input.h" #include #include Dialog_AquireInto::Dialog_AquireInto(QWidget* parent) : QDialog(parent), ui(new Ui::Dialog_AquireInto) { ui->setupUi(this); setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); QRegExp rx("[^\\\\/:*?\"<>|]+$"); ui->lineEdit_fileName->setValidator(new QRegExpValidator(rx, this)); ui->comboBox_cfgScheme->addItem(tr("default scheme")); QString allCfgName = getCfgValue("aquire", "cfgNameList", QString("")); QStringList allCfgNameList = allCfgName.split(","); if (!allCfgNameList.contains(QString(""))) { ui->comboBox_cfgScheme->addItems(allCfgNameList); ui->comboBox_cfgScheme->setCurrentText(getCurrentCfgName()); } else { allCfgNameList.removeOne(QString("")); ui->comboBox_cfgScheme->setCurrentIndex(0); } setCfgBaseOnSection(getCurrentCfgName()); 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()); ui->cbtn_multiFile->setEnabled(ui->cbox_format->currentIndex() > 5 && ui->cbox_format->currentIndex() < 10); //Ocr does not export multiple pages 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")); ui->spin_index->setFixedWidth(160); ui->cbox_digit->setFixedWidth(80); } 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_jpegQuality = getCfgValue("saveParam", "jpegQuality", 80); param.m_tiffCompressionBW = getCfgValue("saveParam", "tiffCompBW", 1); param.m_tiffCompression = getCfgValue("saveParam", "tiffCompClr", 1); param.m_tiffQuality = getCfgValue("saveParam", "tiffQuality", 80); 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 = "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; } param.m_fileNameExt = format; param.m_isOcr = (ui->cbox_format->currentIndex() >= 10); 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::setConfig(QString schemeName) { for (int i = 0; i < ui->comboBox_cfgScheme->count(); ++i) { if (ui->comboBox_cfgScheme->itemText(i) == schemeName) { setCfgBaseOnSection(schemeName); saveCfgValue("aquire", "currentKeyName", schemeName); saveCfgBaseOnSection(schemeName); break; } } } QString Dialog_AquireInto::getCurrentCfgName() { return getCfgValue("aquire", "currentKeyName", QString("aquire")); } void Dialog_AquireInto::replaceCfgName(QString originName, QString newName) { HGChar cfgPath[512]; HGBase_GetConfigPath(cfgPath, 512); strcat(cfgPath, "config.ini"); QString currentKeyName = getCurrentCfgName(); if (currentKeyName == originName) { saveCfgValue("aquire", "currentKeyName", newName); } QString allCfgName = getCfgValue("aquire", "cfgNameList", QString("")); QStringList allCfgNameList = allCfgName.split(","); for (int i = 0; i < allCfgNameList.size(); ++i) { if (allCfgNameList[i] == originName) { allCfgNameList.replace(i, newName); HGBase_RenameProfileSection(cfgPath, originName.toLocal8Bit().toStdString().c_str(), newName.toLocal8Bit().toStdString().c_str()); break; } } QString cfgNameList; saveCfgValue("aquire", "cfgNameList", QString("")); for (int j = 0; j < allCfgNameList.size(); ++j) { if (getCfgValue("aquire", "cfgNameList", QString("")).isEmpty()) { saveCfgValue("aquire", "cfgNameList", allCfgNameList[j]); } else { cfgNameList = getCfgValue("aquire", "cfgNameList", QString("")); cfgNameList.append(",").append(allCfgNameList[j]); saveCfgValue("aquire", "cfgNameList", cfgNameList); } } } void Dialog_AquireInto::saveCfgBaseOnSection(QString section) { std::string section2 = section.toLocal8Bit().toStdString(); saveCfgValue(section2.c_str(), "aquireIntoPath", ui->lineEdit_directory->text()); saveCfgValue(section2.c_str(), "namePrefix", ui->lineEdit_fileName->text()); saveCfgValue(section2.c_str(), "subFolderByTime", ui->cbtn_subFolder->isChecked()); saveCfgValue(section2.c_str(), "subFolderByBlank", ui->cbtn_subFolderByBlank->isChecked()); saveCfgValue(section2.c_str(), "subFolderByColor", ui->cbtn_subFolderByColor->isChecked()); saveCfgValue(section2.c_str(), "startIndex", ui->spin_index->value()); saveCfgValue(section2.c_str(), "digit", ui->cbox_digit->currentIndex()); saveCfgValue(section2.c_str(), "evenOdd", ui->cbox_evenOdd->currentIndex()); saveCfgValue(section2.c_str(), "format", ui->cbox_format->currentIndex()); saveCfgValue(section2.c_str(), "multiFile", ui->cbtn_multiFile->isChecked()); saveCfgValue(section2.c_str(), "multiAll", ui->radio_multiAll->isChecked()); saveCfgValue(section2.c_str(), "multiPages", ui->spinBox_multiPages->value()); saveCfgValue(section2.c_str(), "multiCustom", ui->radio_multiCustom->isChecked()); } void Dialog_AquireInto::setCfgBaseOnSection(QString section) { 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()); std::string section2 = section.toLocal8Bit().toStdString(); ui->lineEdit_directory->setText(getCfgValue(section2.c_str(), "aquireIntoPath", filePath)); ui->cbtn_subFolder->setChecked(getCfgValue(section2.c_str(), "subFolderByTime", false)); ui->cbtn_subFolderByBlank->setChecked(getCfgValue(section2.c_str(), "subFolderByBlank", false)); ui->cbtn_subFolderByColor->setChecked(getCfgValue(section2.c_str(), "subFolderByColor", false)); #if defined(OEM_HANWANG) ui->lineEdit_fileName->setText(getCfgValue(section2.c_str(), "namePrefix", QString("HWScan"))); #elif defined(OEM_LISICHENG) ui->lineEdit_fileName->setText(getCfgValue(section2.c_str(), "namePrefix", QString("LXScan"))); #elif defined(OEM_CANGTIAN) ui->lineEdit_fileName->setText(getCfgValue(section2.c_str(), "namePrefix", QString("CTSScan"))); #elif defined(OEM_ZHONGJING) ui->lineEdit_fileName->setText(getCfgValue(section2.c_str(), "namePrefix", QString("ZJScan"))); #elif defined(OEM_ZIGUANG) ui->lineEdit_fileName->setText(getCfgValue(section2.c_str(), "namePrefix", QString("ZGScan"))); #elif defined(OEM_NEUTRAL) ui->lineEdit_fileName->setText(getCfgValue(section2.c_str(), "namePrefix", QString("Scan"))); #elif defined(OEM_DELI) ui->lineEdit_fileName->setText(getCfgValue(section2.c_str(), "namePrefix", QString("DLScan"))); #else ui->lineEdit_fileName->setText(getCfgValue(section2.c_str(), "namePrefix", QString("HGScan"))); #endif ui->spin_index->setValue(getCfgValue(section2.c_str(), "startIndex", 1)); ui->cbox_digit->setCurrentIndex(getCfgValue(section2.c_str(), "digit", 2)); ui->cbox_evenOdd->setCurrentIndex(getCfgValue(section2.c_str(), "evenOdd", 0)); int format = getCfgValue(section2.c_str(), "format", 0); if (format > 9) format = 0; ui->cbox_format->setCurrentIndex(format); ui->cbtn_multiFile->setChecked(format > 5 ? getCfgValue(section2.c_str(), "multiFile", false) : false); ui->radio_multiAll->setChecked(getCfgValue(section2.c_str(), "multiAll", true)); ui->radio_multiCustom->setChecked(getCfgValue(section2.c_str(), "multiCustom", false)); ui->spinBox_multiPages->setValue(getCfgValue(section2.c_str(), "multiPages", 1)); } 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_WriteSettings dlg(ui->cbox_format->currentIndex(), this); dlg.exec(); } void Dialog_AquireInto::on_cbox_format_currentIndexChanged(int index) { ui->cbtn_multiFile->setEnabled(index > 5 && index < 10); if (index < 6 || index >= 10 ) ui->cbtn_multiFile->setChecked(false); ui->btn_option->setEnabled(0 == index || 6 == index || 7 == index || 8 == index); } void Dialog_AquireInto::on_lineEdit_directory_textChanged(const QString& arg1) { ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!arg1.isEmpty()); } void Dialog_AquireInto::on_buttonBox_accepted() { QString currentCfgName = ui->comboBox_cfgScheme->currentText(); if (ui->comboBox_cfgScheme->currentIndex() != 0) { if (getCfgValue("aquire", "cfgNameList", QString("")).isEmpty()) { saveCfgValue("aquire", "cfgNameList", currentCfgName); } else { QString allCfgName = getCfgValue("aquire", "cfgNameList", QString("")); QStringList allCfgNameList = allCfgName.split(","); if (!allCfgNameList.contains(currentCfgName)) { allCfgName.append(",").append(currentCfgName); saveCfgValue("aquire", "cfgNameList", allCfgName); } } } saveCfgBaseOnSection(currentCfgName); saveCfgValue("aquire", "currentKeyName", currentCfgName); emit reloadAcquireIntoCfg(); } 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'))); } void Dialog_AquireInto::on_pbtn_changeName_clicked() { QString curCfgName = ui->comboBox_cfgScheme->currentText(); Dialog_Input dlg; dlg.setEditText(curCfgName); if (dlg.exec()) { QString newCfgName = dlg.getText(); for (int i = 0; i < ui->comboBox_cfgScheme->count(); ++i) { if (newCfgName == ui->comboBox_cfgScheme->itemText(i)) { QMessageBox::information(this, tr("tips"), tr("The configuration scheme already exists")); return; } } int count = ui->comboBox_cfgScheme->count(); for (int i = 0; i < count; ++i) { if (ui->comboBox_cfgScheme->itemText(i) == curCfgName) { ui->comboBox_cfgScheme->removeItem(i); ui->comboBox_cfgScheme->insertItem(i, newCfgName); ui->comboBox_cfgScheme->setCurrentText(newCfgName); replaceCfgName(curCfgName, newCfgName); setCfgBaseOnSection(newCfgName); emit reloadAcquireIntoCfg(); break; } } } } void Dialog_AquireInto::on_pbtn_delete_clicked() { HGChar cfgPath[512]; HGBase_GetConfigPath(cfgPath, 512); strcat(cfgPath, "config.ini"); QString selectedCfgName = ui->comboBox_cfgScheme->currentText(); int count = ui->comboBox_cfgScheme->count(); for (int i = 0; i < count; ++i) { if (ui->comboBox_cfgScheme->itemText(i) == selectedCfgName) { ui->comboBox_cfgScheme->removeItem(i); QString allCfgName = getCfgValue("aquire", "cfgNameList", QString("")); QStringList allCfgNameList = allCfgName.split(","); allCfgNameList.removeOne(selectedCfgName); QString cfgNameList; saveCfgValue("aquire", "cfgNameList", QString("")); for (int j = 0; j < allCfgNameList.size(); ++j) { if (getCfgValue("aquire", "cfgNameList", QString("")).isEmpty()) { saveCfgValue("aquire", "cfgNameList", allCfgNameList[j]); } else { cfgNameList = getCfgValue("aquire", "cfgNameList", QString("")); cfgNameList.append(",").append(allCfgNameList[j]); saveCfgValue("aquire", "cfgNameList", cfgNameList); } } HGBase_RemoveProfileSection(cfgPath, selectedCfgName.toLocal8Bit().toStdString().c_str()); ui->comboBox_cfgScheme->setCurrentIndex(0); QString defaultScheme = ui->comboBox_cfgScheme->itemText(0); saveCfgValue("aquire", "currentKeyName", defaultScheme); setCfgBaseOnSection(defaultScheme); emit reloadAcquireIntoCfg(); break; } } } void Dialog_AquireInto::on_pbtn_deleteAll_clicked() { HGChar cfgPath[512]; HGBase_GetConfigPath(cfgPath, 512); strcat(cfgPath, "config.ini"); ui->comboBox_cfgScheme->clear(); ui->comboBox_cfgScheme->addItem(tr("default scheme")); QString allCfgName = getCfgValue("aquire", "cfgNameList", QString("")); QStringList allCfgNameList = allCfgName.split(","); for (int i = 0; i < allCfgNameList.size(); ++i) { std::string section = allCfgNameList[i].toLocal8Bit().toStdString(); HGBase_RemoveProfileSection(cfgPath, section.c_str()); } saveCfgValue("aquire", "cfgNameList", QString("")); ui->comboBox_cfgScheme->setCurrentIndex(0); QString defaultScheme = ui->comboBox_cfgScheme->itemText(0); saveCfgValue("aquire", "currentKeyName", defaultScheme); setCfgBaseOnSection(defaultScheme); emit reloadAcquireIntoCfg(); } void Dialog_AquireInto::on_comboBox_cfgScheme_currentTextChanged(const QString &arg1) { ui->pbtn_changeName->setEnabled(true); ui->pbtn_delete->setEnabled(true); if (ui->comboBox_cfgScheme->currentIndex() == 0) { ui->pbtn_changeName->setEnabled(false); ui->pbtn_delete->setEnabled(false); } setCfgBaseOnSection(arg1); } void Dialog_AquireInto::on_pbtn_foundScheme_clicked() { QString cfgName = getCurrentCfgName(); if(cfgName.isEmpty()) { cfgName = ui->comboBox_cfgScheme->currentText(); } Dialog_Input dlg; dlg.setEditText(cfgName); if (dlg.exec()) { cfgName = dlg.getText(); for (int i = 0; i < ui->comboBox_cfgScheme->count(); ++i) { if (cfgName == ui->comboBox_cfgScheme->itemText(i)) { QMessageBox::information(this, tr("tips"), tr("The configuration scheme already exists")); return; } } ui->comboBox_cfgScheme->addItem(cfgName); if (getCfgValue("aquire", "cfgNameList", QString("")).isEmpty()) { saveCfgValue("aquire", "cfgNameList", cfgName); } else { QString allCfgName = getCfgValue("aquire", "cfgNameList", QString("")); QStringList allCfgNameList = allCfgName.split(","); if (!allCfgNameList.contains(cfgName)) { allCfgName.append(",").append(cfgName); saveCfgValue("aquire", "cfgNameList", allCfgName); } } saveCfgBaseOnSection(cfgName); setCfgBaseOnSection(cfgName); ui->comboBox_cfgScheme->setCurrentText(cfgName); emit reloadAcquireIntoCfg(); } } void Dialog_AquireInto::on_pbtn_restore_clicked() { setCfgBaseOnSection(QString("")); }