277 lines
9.0 KiB
C++
277 lines
9.0 KiB
C++
|
#include "form_saveparam.h"
|
||
|
#include "ui_form_saveparam.h"
|
||
|
#include <QFileDialog>
|
||
|
#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')));
|
||
|
}
|