code_app/app/scantool/form_saveparam.cpp

280 lines
9.0 KiB
C++
Raw Normal View History

2024-04-24 03:57:56 +00:00
#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"
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));
2024-04-30 09:16:13 +00:00
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()));
2024-04-24 03:57:56 +00:00
2024-04-30 09:16:13 +00:00
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);
2024-04-24 03:57:56 +00:00
ui->cbox_format->setCurrentIndex(format);
2024-04-30 09:16:13 +00:00
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);
2024-04-24 03:57:56 +00:00
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
2024-04-30 09:16:13 +00:00
m_writeParam.jpegQuality = saveParam.jpegQuality;
m_writeParam.tiffCompressionBW = saveParam.tiffCompressionBW;
m_writeParam.tiffCompression = saveParam.tiffCompression;
m_writeParam.tiffQuality = saveParam.tiffQuality;
2024-04-24 03:57:56 +00:00
}
Form_SaveParam::~Form_SaveParam()
{
delete ui;
}
SaveParam Form_SaveParam::GetSaveParam()
{
SaveParam saveParam;
2024-04-30 09:16:13 +00:00
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";
2024-04-24 03:57:56 +00:00
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;
}
2024-04-30 09:16:13 +00:00
saveParam.fileNameExt = format;
saveParam.isOcr = (ui->cbox_format->currentIndex() >= 10);
2024-04-24 03:57:56 +00:00
2024-04-30 09:16:13 +00:00
saveParam.isSaveAsMultiPage = ui->cbtn_multiFile->isChecked();
saveParam.multiPagesType = (ui->radio_multiAll->isChecked()) ? 0 : 1;
saveParam.customMultiPages = ui->spinBox_multiPages->value();
2024-04-24 03:57:56 +00:00
return saveParam;
}
SaveParam Form_SaveParam::GetDefSaveParam()
{
HGChar aquireIntoPath[512];
HGBase_GetDocumentsPath(aquireIntoPath, 512);
HGChar procName[512];
HGBase_GetProcessName(procName, 512);
strcat(aquireIntoPath, procName);
2024-04-30 09:16:13 +00:00
#if defined(HG_CMP_MSC)
strcat(aquireIntoPath, "\\AquireInto\\");
#else
2024-04-24 03:57:56 +00:00
strcat(aquireIntoPath, "/AquireInto/");
2024-04-30 09:16:13 +00:00
#endif
2024-04-24 03:57:56 +00:00
SaveParam saveParam;
2024-04-30 09:16:13 +00:00
saveParam.savePath = aquireIntoPath;
saveParam.isUseSubfolderByTime = false;
saveParam.isUseSubfolderByBlankPages = false;
saveParam.isUseSubfolderByColor = false;
saveParam.jpegQuality = 80;
saveParam.tiffCompressionBW = 1;
saveParam.tiffCompression = 1;
saveParam.tiffQuality = 80;
2024-04-24 03:57:56 +00:00
#if defined(OEM_HANWANG)
2024-04-30 09:16:13 +00:00
saveParam.fileNamePrefix = "HWScan";
2024-04-24 03:57:56 +00:00
#elif defined(OEM_LISICHENG)
2024-04-30 09:16:13 +00:00
saveParam.fileNamePrefix = "LXScan";
2024-04-24 03:57:56 +00:00
#elif defined(OEM_CANGTIAN)
2024-04-30 09:16:13 +00:00
saveParam.fileNamePrefix = "CTSScan";
2024-04-24 03:57:56 +00:00
#elif defined(OEM_ZHONGJING)
2024-04-30 09:16:13 +00:00
saveParam.fileNamePrefix = "ZJScan";
2024-04-24 03:57:56 +00:00
#elif defined(OEM_ZIGUANG)
2024-04-30 09:16:13 +00:00
saveParam.fileNamePrefix = "ZGScan";
2024-04-24 03:57:56 +00:00
#elif defined(OEM_NEUTRAL)
2024-04-30 09:16:13 +00:00
saveParam.fileNamePrefix = "Scan";
2024-04-24 03:57:56 +00:00
#elif defined(OEM_DELI)
2024-04-30 09:16:13 +00:00
saveParam.fileNamePrefix = "DLScan";
2024-04-24 03:57:56 +00:00
#else
2024-04-30 09:16:13 +00:00
saveParam.fileNamePrefix = "HGScan";
2024-04-24 03:57:56 +00:00
#endif
2024-04-30 09:16:13 +00:00
saveParam.fileNameStartIndex = 1;
saveParam.fileNameDigits = 3;
saveParam.fileNameOddEvenType = 0;
saveParam.fileNameExt = "jpg";
saveParam.isOcr = false;
saveParam.isSaveAsMultiPage = false;
saveParam.multiPagesType = 0;
saveParam.customMultiPages = 1;
2024-04-24 03:57:56 +00:00
return saveParam;
}
2024-04-30 09:16:13 +00:00
int Form_SaveParam::getFormatIndex(const std::string &ext, bool ocr)
2024-04-24 03:57:56 +00:00
{
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"), ui->lineEdit_directory->text());
2024-04-24 03:57:56 +00:00
if (!save_dir.isEmpty())
{
if (save_dir[save_dir.size() - 1] != '/')
save_dir += "/";
2024-04-30 09:16:13 +00:00
char result[512] = {0};
HGBase_StandardiseFileName(save_dir.toStdString().c_str(), result, 512);
ui->lineEdit_directory->setText(QString::fromStdString(result));
2024-04-24 03:57:56 +00:00
}
}
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')));
}