code_app/app/scanner/dialog_aquireinto.cpp

217 lines
8.1 KiB
C++

#include "dialog_aquireinto.h"
#include "ui_dialog_aquireinto.h"
#include "dialog_writesettings.h"
#include <QFileDialog>
#include <QDateTime>
#include <QRegExpValidator>
#include <QStandardPaths>
#include "base/HGDef.h"
#include "base/HGInc.h"
#include "base/HGUtility.h"
#include "HGUIGlobal.h"
#include "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);
HGChar procName[512];
HGBase_GetProcessName(procName, 512);
strcat(aquireIntoPath, procName);
strcat(aquireIntoPath, "/AquireInto/");
QString filePath = getStdFileName(StdStringToUtf8(aquireIntoPath).c_str());
ui->lineEdit_directory->setText(getCfgValue("aquire", "aquireIntoPath", filePath));
ui->cbtn_subFolder->setChecked(getCfgValue("aquire", "subFolderByTime", false));
ui->cbtn_subFolderByBlank->setChecked(getCfgValue("aquire", "subFolderByBlank", false));
ui->cbtn_subFolderByColor->setChecked(getCfgValue("aquire", "subFolderByColor", false));
#if defined(OEM_HANWANG)
ui->lineEdit_fileName->setText(getCfgValue("aquire", "namePrefix", QString("HWScan")));
#elif defined(OEM_LISICHENG)
ui->lineEdit_fileName->setText(getCfgValue("aquire", "namePrefix", QString("LXScan")));
#else
ui->lineEdit_fileName->setText(getCfgValue("aquire", "namePrefix", QString("HGScan")));
#endif
#if defined(OEM_LISICHENG) || defined(x86_64)
ui->cbox_format->removeItem(7);
ui->cbox_format->removeItem(6);
#endif
ui->spin_index->setValue(getCfgValue("aquire", "startIndex", 1));
ui->cbox_digit->setCurrentIndex(getCfgValue("aquire", "digit", 2));
ui->cbox_evenOdd->setCurrentIndex(getCfgValue("aquire", "evenOdd", 0));
ui->cbox_format->setCurrentIndex(getCfgValue("aquire", "format", 0));
ui->cbtn_multiFile->setChecked(getCfgValue("aquire", "multiFile", false));
ui->radio_multiAll->setChecked(getCfgValue("aquire", "multiAll", true));
ui->spinBox_multiPages->setValue(getCfgValue("aquire", "multiPages", 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->btn_option->setEnabled(0 == ui->cbox_format->currentIndex() || 3 == ui->cbox_format->currentIndex());
ui->cbtn_multiFile->setEnabled(ui->cbox_format->currentIndex() > 2 && ui->cbox_format->currentIndex() < 6);
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 = "tif";
break;
case 4:
format = "pdf";
break;
case 5:
format = "ofd";
break;
case 6:
format = "pdf";
break;
case 7:
format = "ofd";
break;
default:
break;
}
param.m_fileNameExt = format;
param.m_isOcr = (ui->cbox_format->currentIndex() >= 6);
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_WriteSettings dlg(ui->cbox_format->currentIndex(), this);
dlg.exec();
}
void Dialog_AquireInto::on_cbox_format_currentIndexChanged(int index)
{
ui->cbtn_multiFile->setEnabled(index > 2 && index < 6);
if (index < 3 || index > 5)
ui->cbtn_multiFile->setChecked(false);
ui->btn_option->setEnabled(0 == index || 3 == 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()
{
saveCfgValue("aquire", "aquireIntoPath", ui->lineEdit_directory->text());
saveCfgValue("aquire", "namePrefix", ui->lineEdit_fileName->text());
saveCfgValue("aquire", "subFolderByTime", ui->cbtn_subFolder->isChecked());
saveCfgValue("aquire", "subFolderByBlank", ui->cbtn_subFolderByBlank->isChecked());
saveCfgValue("aquire", "subFolderByColor", ui->cbtn_subFolderByColor->isChecked());
saveCfgValue("aquire", "startIndex", ui->spin_index->value());
saveCfgValue("aquire", "digit", ui->cbox_digit->currentIndex());
saveCfgValue("aquire", "evenOdd", ui->cbox_evenOdd->currentIndex());
saveCfgValue("aquire", "format", ui->cbox_format->currentIndex());
saveCfgValue("aquire", "multiFile", ui->cbtn_multiFile->isChecked());
saveCfgValue("aquire", "multiAll", ui->radio_multiAll->isChecked());
saveCfgValue("aquire", "multiPages", ui->spinBox_multiPages->value());
}
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')));
}