scantool:将配置保存到数据库
This commit is contained in:
parent
36c29a56d5
commit
dfd4e2e565
|
@ -1,20 +0,0 @@
|
|||
#include "HGUIGlobal.h"
|
||||
#include "base/HGDef.h"
|
||||
#include "base/HGInc.h"
|
||||
#include "base/HGUtility.h"
|
||||
|
||||
QString getStdFileName(const QString &fileName)
|
||||
{
|
||||
char result[512] = {0};
|
||||
HGBase_StandardiseFileName(fileName.toStdString().c_str(), result, 512);
|
||||
return result;
|
||||
}
|
||||
|
||||
std::string getStdString(const QString &str)
|
||||
{
|
||||
#ifdef HG_CMP_MSC
|
||||
return str.toLocal8Bit().data();
|
||||
#else
|
||||
return str.toStdString();
|
||||
#endif
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
#ifndef __HGUIGLOBAL_H__
|
||||
#define __HGUIGLOBAL_H__
|
||||
|
||||
#include <QString>
|
||||
|
||||
QString getStdFileName(const QString &fileName);
|
||||
|
||||
std::string getStdString(const QString &str);
|
||||
|
||||
#endif /* __HGUIGLOBAL_H__ */
|
|
@ -1,70 +0,0 @@
|
|||
#include "app_cfg.h"
|
||||
#include "base/HGDef.h"
|
||||
#include "base/HGInc.h"
|
||||
#include "base/HGUtility.h"
|
||||
#include "base/HGIni.h"
|
||||
#include "HGUIGlobal.h"
|
||||
#include "HGString.h"
|
||||
|
||||
QString getCfgValue(const char *appName, const char *key, const QString &def)
|
||||
{
|
||||
HGChar cfgPath[512];
|
||||
HGBase_GetConfigPath(cfgPath, 512);
|
||||
strcat(cfgPath, "config.ini");
|
||||
|
||||
HGChar value[512] = {0};
|
||||
HGBase_GetProfileString(cfgPath, appName, key, getStdString(def).c_str(), value, 512);
|
||||
return StdStringToUtf8(value).c_str();
|
||||
}
|
||||
|
||||
int getCfgValue(const char *appName, const char *key, int def)
|
||||
{
|
||||
HGChar cfgPath[512];
|
||||
HGBase_GetConfigPath(cfgPath, 512);
|
||||
strcat(cfgPath, "config.ini");
|
||||
|
||||
HGInt value = 0;
|
||||
HGBase_GetProfileInt(cfgPath, appName, key, def, &value);
|
||||
return value;
|
||||
}
|
||||
|
||||
bool getCfgValue(const char *appName, const char *key, bool def)
|
||||
{
|
||||
HGChar cfgPath[512];
|
||||
HGBase_GetConfigPath(cfgPath, 512);
|
||||
strcat(cfgPath, "config.ini");
|
||||
|
||||
HGInt value = 0;
|
||||
HGBase_GetProfileInt(cfgPath, appName, key, (HGInt)def, &value);
|
||||
return (bool)value;
|
||||
}
|
||||
|
||||
void saveCfgValue(const char *appName, const char *key, const QString &value)
|
||||
{
|
||||
HGChar cfgPath[512];
|
||||
HGBase_GetConfigPath(cfgPath, 512);
|
||||
HGBase_CreateDir(cfgPath);
|
||||
strcat(cfgPath, "config.ini");
|
||||
|
||||
HGBase_SetProfileString(cfgPath, appName, key, getStdString(value).c_str());
|
||||
}
|
||||
|
||||
void saveCfgValue(const char *appName, const char *key, int value)
|
||||
{
|
||||
HGChar cfgPath[512];
|
||||
HGBase_GetConfigPath(cfgPath, 512);
|
||||
HGBase_CreateDir(cfgPath);
|
||||
strcat(cfgPath, "config.ini");
|
||||
|
||||
HGBase_SetProfileInt(cfgPath, appName, key, value);
|
||||
}
|
||||
|
||||
void saveCfgValue(const char *appName, const char *key, bool value)
|
||||
{
|
||||
HGChar cfgPath[512];
|
||||
HGBase_GetConfigPath(cfgPath, 512);
|
||||
HGBase_CreateDir(cfgPath);
|
||||
strcat(cfgPath, "config.ini");
|
||||
|
||||
HGBase_SetProfileInt(cfgPath, appName, key, (HGInt)value);
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
#ifndef __APP_CFG_H__
|
||||
#define __APP_CFG_H__
|
||||
|
||||
#include <QString>
|
||||
|
||||
QString getCfgValue(const char *appName, const char *key, const QString &def);
|
||||
int getCfgValue(const char *appName, const char *key, int def);
|
||||
bool getCfgValue(const char *appName, const char *key, bool def);
|
||||
|
||||
void saveCfgValue(const char *appName, const char *key, const QString &value);
|
||||
void saveCfgValue(const char *appName, const char *key, int value);
|
||||
void saveCfgValue(const char *appName, const char *key, bool value);
|
||||
|
||||
#endif /* __APP_CFG_H__ */
|
|
@ -1,6 +1,5 @@
|
|||
#include "dialog_writesettings.h"
|
||||
#include "ui_dialog_writesettings.h"
|
||||
#include "app_cfg.h"
|
||||
|
||||
Dialog_WriteSettings::Dialog_WriteSettings(int suffix_type, const WriteParam &writeParam, QWidget *parent)
|
||||
: QDialog(parent)
|
||||
|
@ -24,11 +23,11 @@ Dialog_WriteSettings::Dialog_WriteSettings(int suffix_type, const WriteParam &wr
|
|||
ui->spin_jpg_quality->setVisible(jpg_enable);
|
||||
//set value
|
||||
|
||||
ui->slider_jpg_quality->setValue(writeParam.m_jpegQuality);
|
||||
ui->spin_jpg_quality->setValue(writeParam.m_jpegQuality);
|
||||
ui->cbox_tif_bw->setCurrentIndex(writeParam.m_tiffCompressionBW);
|
||||
ui->cbox_tif_color->setCurrentIndex(writeParam.m_tiffCompression);
|
||||
ui->spin_tif_quality->setValue(writeParam.m_tiffQuality);
|
||||
ui->slider_jpg_quality->setValue(writeParam.jpegQuality);
|
||||
ui->spin_jpg_quality->setValue(writeParam.jpegQuality);
|
||||
ui->cbox_tif_bw->setCurrentIndex(writeParam.tiffCompressionBW);
|
||||
ui->cbox_tif_color->setCurrentIndex(writeParam.tiffCompression);
|
||||
ui->spin_tif_quality->setValue(writeParam.tiffQuality);
|
||||
//set enable
|
||||
ui->spin_tif_quality->setEnabled(ui->cbox_tif_color->currentIndex() == 2);
|
||||
|
||||
|
@ -44,10 +43,10 @@ Dialog_WriteSettings::~Dialog_WriteSettings()
|
|||
WriteParam Dialog_WriteSettings::GetWriteParam()
|
||||
{
|
||||
WriteParam writeParam;
|
||||
writeParam.m_jpegQuality = ui->spin_jpg_quality->value();
|
||||
writeParam.m_tiffCompressionBW = ui->cbox_tif_bw->currentIndex();
|
||||
writeParam.m_tiffCompression = ui->cbox_tif_color->currentIndex();
|
||||
writeParam.m_tiffQuality = ui->spin_tif_quality->value();
|
||||
writeParam.jpegQuality = ui->spin_jpg_quality->value();
|
||||
writeParam.tiffCompressionBW = ui->cbox_tif_bw->currentIndex();
|
||||
writeParam.tiffCompression = ui->cbox_tif_color->currentIndex();
|
||||
writeParam.tiffQuality = ui->spin_tif_quality->value();
|
||||
|
||||
return writeParam;
|
||||
}
|
||||
|
|
|
@ -10,10 +10,10 @@ class Dialog_WriteSettings;
|
|||
|
||||
struct WriteParam
|
||||
{
|
||||
int m_jpegQuality;
|
||||
int m_tiffCompressionBW;
|
||||
int m_tiffCompression;
|
||||
int m_tiffQuality;
|
||||
int jpegQuality;
|
||||
int tiffCompressionBW;
|
||||
int tiffCompression;
|
||||
int tiffQuality;
|
||||
};
|
||||
|
||||
class Dialog_WriteSettings : public QDialog
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#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)
|
||||
|
@ -18,21 +15,21 @@ Form_SaveParam::Form_SaveParam(const SaveParam &saveParam, QWidget *parent)
|
|||
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->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.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->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.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->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')));
|
||||
|
@ -51,10 +48,10 @@ Form_SaveParam::Form_SaveParam(const SaveParam &saveParam, QWidget *parent)
|
|||
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;
|
||||
m_writeParam.jpegQuality = saveParam.jpegQuality;
|
||||
m_writeParam.tiffCompressionBW = saveParam.tiffCompressionBW;
|
||||
m_writeParam.tiffCompression = saveParam.tiffCompression;
|
||||
m_writeParam.tiffQuality = saveParam.tiffQuality;
|
||||
}
|
||||
|
||||
Form_SaveParam::~Form_SaveParam()
|
||||
|
@ -65,20 +62,20 @@ Form_SaveParam::~Form_SaveParam()
|
|||
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();
|
||||
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();
|
||||
|
||||
QString format = "jpg";
|
||||
std::string format = "jpg";
|
||||
switch (ui->cbox_format->currentIndex())
|
||||
{
|
||||
case 1:
|
||||
|
@ -117,12 +114,12 @@ SaveParam Form_SaveParam::GetSaveParam()
|
|||
default:
|
||||
break;
|
||||
}
|
||||
saveParam.m_fileNameExt = format;
|
||||
saveParam.m_isOcr = (ui->cbox_format->currentIndex() >= 10);
|
||||
saveParam.fileNameExt = format;
|
||||
saveParam.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();
|
||||
saveParam.isSaveAsMultiPage = ui->cbtn_multiFile->isChecked();
|
||||
saveParam.multiPagesType = (ui->radio_multiAll->isChecked()) ? 0 : 1;
|
||||
saveParam.customMultiPages = ui->spinBox_multiPages->value();
|
||||
|
||||
return saveParam;
|
||||
}
|
||||
|
@ -134,50 +131,53 @@ SaveParam Form_SaveParam::GetDefSaveParam()
|
|||
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");
|
||||
#if defined(HG_CMP_MSC)
|
||||
strcat(aquireIntoPath, "\\AquireInto\\");
|
||||
#else
|
||||
saveParam.m_fileNamePrefix = QString("HGScan");
|
||||
strcat(aquireIntoPath, "/AquireInto/");
|
||||
#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;
|
||||
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 QString &ext, bool ocr)
|
||||
int Form_SaveParam::getFormatIndex(const std::string &ext, bool ocr)
|
||||
{
|
||||
if (ext == "bmp")
|
||||
return 1;
|
||||
|
@ -207,7 +207,10 @@ void Form_SaveParam::on_btn_directory_clicked()
|
|||
{
|
||||
if (save_dir[save_dir.size() - 1] != '/')
|
||||
save_dir += "/";
|
||||
ui->lineEdit_directory->setText(getStdFileName(save_dir));
|
||||
|
||||
char result[512] = {0};
|
||||
HGBase_StandardiseFileName(save_dir.toStdString().c_str(), result, 512);
|
||||
ui->lineEdit_directory->setText(QString::fromStdString(result));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define FORM_SAVEPARAM_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <string>
|
||||
#include "dialog_writesettings.h"
|
||||
|
||||
namespace Ui {
|
||||
|
@ -10,23 +11,23 @@ class Form_SaveParam;
|
|||
|
||||
struct SaveParam
|
||||
{
|
||||
QString m_savePath;
|
||||
bool m_isUseSubfolderByTime;
|
||||
bool m_isUseSubfolderByBlankPages;
|
||||
bool m_isUseSubfolderByColor;
|
||||
int m_jpegQuality;
|
||||
int m_tiffCompressionBW;
|
||||
int m_tiffCompression;
|
||||
int m_tiffQuality;
|
||||
QString m_fileNamePrefix;
|
||||
int m_fileNameStartIndex;
|
||||
int m_fileNameDigits;
|
||||
int m_fileNameOddEventType;
|
||||
QString m_fileNameExt;
|
||||
bool m_isOcr;
|
||||
bool m_isSaveAsMultiPage;
|
||||
int m_multiPagesType;
|
||||
int m_customMultiPages;
|
||||
std::string savePath;
|
||||
bool isUseSubfolderByTime;
|
||||
bool isUseSubfolderByBlankPages;
|
||||
bool isUseSubfolderByColor;
|
||||
int jpegQuality;
|
||||
int tiffCompressionBW;
|
||||
int tiffCompression;
|
||||
int tiffQuality;
|
||||
std::string fileNamePrefix;
|
||||
int fileNameStartIndex;
|
||||
int fileNameDigits;
|
||||
int fileNameOddEvenType;
|
||||
std::string fileNameExt;
|
||||
bool isOcr;
|
||||
bool isSaveAsMultiPage;
|
||||
int multiPagesType;
|
||||
int customMultiPages;
|
||||
};
|
||||
|
||||
class Form_SaveParam : public QWidget
|
||||
|
@ -41,7 +42,7 @@ public:
|
|||
static SaveParam GetDefSaveParam();
|
||||
|
||||
private:
|
||||
int getFormatIndex(const QString &ext, bool ocr);
|
||||
int getFormatIndex(const std::string &ext, bool ocr);
|
||||
|
||||
private slots:
|
||||
void on_btn_directory_clicked();
|
||||
|
|
|
@ -8,9 +8,11 @@
|
|||
#include "base/HGUtility.h"
|
||||
#include "imgproc/HGImgProc.h"
|
||||
#include "imgproc/HGOCR.h"
|
||||
#include "HGUIGlobal.h"
|
||||
#include "dialog_scaninfo.h"
|
||||
#include "form_saveparam.h"
|
||||
#include "sqlite3.h"
|
||||
#include "cJSON.h"
|
||||
#include "HGString.h"
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QMainWindow(parent)
|
||||
|
@ -55,7 +57,7 @@ MainWindow::MainWindow(QWidget *parent)
|
|||
ui->tableWidget->horizontalHeader()->setFixedHeight(40);
|
||||
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
|
||||
ui->tableWidget->setHorizontalHeaderItem(0, new QTableWidgetItem("Device Type"));
|
||||
ui->tableWidget->setHorizontalHeaderItem(1, new QTableWidgetItem("Button Type"));
|
||||
ui->tableWidget->setHorizontalHeaderItem(1, new QTableWidgetItem("Button Id"));
|
||||
ui->tableWidget->setHorizontalHeaderItem(2, new QTableWidgetItem("Device Config"));
|
||||
ui->tableWidget->setHorizontalHeaderItem(3, new QTableWidgetItem("Save Param"));
|
||||
ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||
|
@ -158,36 +160,416 @@ void MainWindow::StopScan()
|
|||
}
|
||||
}
|
||||
|
||||
std::vector<DeviceConfig> MainWindow::MakeDeviceConfigs(const std::string &str)
|
||||
{
|
||||
std::vector<DeviceConfig> deviceConfigs;
|
||||
|
||||
cJSON* json = cJSON_Parse(str.c_str());
|
||||
if (NULL != json)
|
||||
{
|
||||
cJSON* p = json->child;
|
||||
while (NULL != p)
|
||||
{
|
||||
if (0 != strcmp(p->string, "device_configs"))
|
||||
{
|
||||
p = p->next;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (p->type != cJSON_Array)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
cJSON* pEx = p->child;
|
||||
while (NULL != pEx)
|
||||
{
|
||||
if (pEx->type != cJSON_Object)
|
||||
{
|
||||
pEx = pEx->next;
|
||||
continue;
|
||||
}
|
||||
|
||||
std::string name;
|
||||
int valueType = 0;
|
||||
std::string stringValue;
|
||||
int intValue = 0;
|
||||
double doubleValue = 0;
|
||||
bool boolValue = false;
|
||||
|
||||
cJSON* pEx2 = pEx->child;
|
||||
while (NULL != pEx2)
|
||||
{
|
||||
if (0 == strcmp(pEx2->string, "name") && pEx2->type == cJSON_String)
|
||||
{
|
||||
name = pEx2->valuestring;
|
||||
}
|
||||
else if (0 == strcmp(pEx2->string, "value"))
|
||||
{
|
||||
if (pEx2->type == cJSON_String)
|
||||
{
|
||||
stringValue = pEx2->valuestring;
|
||||
}
|
||||
else if (pEx2->type == cJSON_Number)
|
||||
{
|
||||
intValue = pEx2->valueint;
|
||||
doubleValue = pEx2->valuedouble;
|
||||
}
|
||||
else if (pEx2->type == cJSON_True)
|
||||
{
|
||||
boolValue = true;
|
||||
}
|
||||
else if (pEx2->type == cJSON_False)
|
||||
{
|
||||
boolValue = false;
|
||||
}
|
||||
}
|
||||
else if (0 == strcmp(pEx2->string, "value_type") && pEx2->type == cJSON_Number)
|
||||
{
|
||||
valueType = pEx2->valueint;
|
||||
}
|
||||
|
||||
pEx2 = pEx2->next;
|
||||
}
|
||||
|
||||
DeviceConfig deviceConfig;
|
||||
deviceConfig.name = name;
|
||||
deviceConfig.valueType = valueType;
|
||||
if (1 == deviceConfig.valueType)
|
||||
deviceConfig.stringValue = stringValue;
|
||||
else if (2 == deviceConfig.valueType)
|
||||
deviceConfig.intValue = intValue;
|
||||
else if (3 == deviceConfig.valueType)
|
||||
deviceConfig.doubleValue = doubleValue;
|
||||
else if (4 == deviceConfig.valueType)
|
||||
deviceConfig.boolValue = boolValue;
|
||||
|
||||
deviceConfigs.push_back(deviceConfig);
|
||||
pEx = pEx->next;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
cJSON_Delete(json);
|
||||
}
|
||||
|
||||
return deviceConfigs;
|
||||
}
|
||||
|
||||
std::string MainWindow::GetDeviceConfigsStr(const std::vector<DeviceConfig> &deviceConfigs)
|
||||
{
|
||||
std::string str;
|
||||
|
||||
cJSON* json = cJSON_CreateObject();
|
||||
if (NULL != json)
|
||||
{
|
||||
cJSON* array = cJSON_CreateArray();
|
||||
for (int i = 0; i < deviceConfigs.size(); ++i)
|
||||
{
|
||||
cJSON* obj = cJSON_CreateObject();
|
||||
cJSON_AddItemToObject(obj, "name", cJSON_CreateString(deviceConfigs[i].name.c_str()));
|
||||
cJSON_AddItemToObject(obj, "value_type", cJSON_CreateNumber(deviceConfigs[i].valueType));
|
||||
|
||||
if (1 == deviceConfigs[i].valueType)
|
||||
{
|
||||
cJSON_AddItemToObject(obj, "value", cJSON_CreateString(deviceConfigs[i].stringValue.c_str()));
|
||||
}
|
||||
else if (2 == deviceConfigs[i].valueType)
|
||||
{
|
||||
cJSON_AddItemToObject(obj, "value", cJSON_CreateNumber(deviceConfigs[i].intValue));
|
||||
}
|
||||
else if (3 == deviceConfigs[i].valueType)
|
||||
{
|
||||
cJSON_AddItemToObject(obj, "value", cJSON_CreateNumber(deviceConfigs[i].doubleValue));
|
||||
}
|
||||
else if (4 == deviceConfigs[i].valueType)
|
||||
{
|
||||
cJSON_AddItemToObject(obj, "value", deviceConfigs[i].boolValue ? cJSON_CreateTrue() : cJSON_CreateFalse());
|
||||
}
|
||||
|
||||
cJSON_AddItemToArray(array, obj);
|
||||
}
|
||||
|
||||
cJSON_AddItemToObject(json, "device_configs", array);
|
||||
|
||||
char* resp = cJSON_Print(json);
|
||||
if (NULL != resp)
|
||||
{
|
||||
str = resp;
|
||||
free(resp);
|
||||
}
|
||||
|
||||
cJSON_Delete(json);
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
SaveParam MainWindow::MakeSaveParam(const std::string &str)
|
||||
{
|
||||
SaveParam saveParam = Form_SaveParam::GetDefSaveParam();
|
||||
|
||||
cJSON* json = cJSON_Parse(str.c_str());
|
||||
if (NULL != json)
|
||||
{
|
||||
cJSON* p = json->child;
|
||||
while (NULL != p)
|
||||
{
|
||||
if (0 != strcmp(p->string, "save_param"))
|
||||
{
|
||||
p = p->next;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (p->type != cJSON_Object)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
cJSON* pEx = p->child;
|
||||
while (NULL != pEx)
|
||||
{
|
||||
if (0 == strcmp(pEx->string, "save_path") && pEx->type == cJSON_String)
|
||||
{
|
||||
saveParam.savePath = Utf8ToStdString(pEx->valuestring);
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "use_subfolder_by_time") && pEx->type == cJSON_True)
|
||||
{
|
||||
saveParam.isUseSubfolderByTime = true;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "use_subfolder_by_time") && pEx->type == cJSON_False)
|
||||
{
|
||||
saveParam.isUseSubfolderByTime = false;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "use_subfolder_by_blank_pages") && pEx->type == cJSON_True)
|
||||
{
|
||||
saveParam.isUseSubfolderByBlankPages = true;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "use_subfolder_by_blank_pages") && pEx->type == cJSON_False)
|
||||
{
|
||||
saveParam.isUseSubfolderByBlankPages = false;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "use_subfolder_by_color") && pEx->type == cJSON_True)
|
||||
{
|
||||
saveParam.isUseSubfolderByColor = true;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "use_subfolder_by_color") && pEx->type == cJSON_False)
|
||||
{
|
||||
saveParam.isUseSubfolderByColor = false;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "jpeg_quality") && pEx->type == cJSON_Number)
|
||||
{
|
||||
saveParam.jpegQuality = pEx->valueint;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "tiff_compression_bw") && pEx->type == cJSON_Number)
|
||||
{
|
||||
saveParam.tiffCompressionBW = pEx->valueint;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "tiff_compression") && pEx->type == cJSON_Number)
|
||||
{
|
||||
saveParam.tiffCompression = pEx->valueint;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "tiff_quality") && pEx->type == cJSON_Number)
|
||||
{
|
||||
saveParam.tiffQuality = pEx->valueint;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "filename_prefix") && pEx->type == cJSON_String)
|
||||
{
|
||||
saveParam.fileNamePrefix = Utf8ToStdString(pEx->valuestring);
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "filename_start_index") && pEx->type == cJSON_Number)
|
||||
{
|
||||
saveParam.fileNameStartIndex = pEx->valueint;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "filename_digits") && pEx->type == cJSON_Number)
|
||||
{
|
||||
saveParam.fileNameDigits = pEx->valueint;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "filename_odd_even_type") && pEx->type == cJSON_Number)
|
||||
{
|
||||
saveParam.fileNameOddEvenType = pEx->valueint;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "filename_ext") && pEx->type == cJSON_String)
|
||||
{
|
||||
saveParam.fileNameExt = Utf8ToStdString(pEx->valuestring);
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "ocr") && pEx->type == cJSON_True)
|
||||
{
|
||||
saveParam.isOcr = true;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "ocr") && pEx->type == cJSON_False)
|
||||
{
|
||||
saveParam.isOcr = false;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "save_as_multi_page") && pEx->type == cJSON_True)
|
||||
{
|
||||
saveParam.isSaveAsMultiPage = true;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "save_as_multi_page") && pEx->type == cJSON_False)
|
||||
{
|
||||
saveParam.isSaveAsMultiPage = false;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "multi_pages_type") && pEx->type == cJSON_Number)
|
||||
{
|
||||
saveParam.multiPagesType = pEx->valueint;
|
||||
}
|
||||
else if (0 == strcmp(pEx->string, "custom_multi_pages") && pEx->type == cJSON_Number)
|
||||
{
|
||||
saveParam.customMultiPages = pEx->valueint;
|
||||
}
|
||||
|
||||
pEx = pEx->next;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
cJSON_Delete(json);
|
||||
}
|
||||
|
||||
return saveParam;
|
||||
}
|
||||
|
||||
std::string MainWindow::GetSaveParamStr(const SaveParam &saveParam)
|
||||
{
|
||||
std::string str;
|
||||
|
||||
cJSON* json = cJSON_CreateObject();
|
||||
if (NULL != json)
|
||||
{
|
||||
cJSON* obj = cJSON_CreateObject();
|
||||
cJSON_AddItemToObject(obj, "save_path", cJSON_CreateString(StdStringToUtf8(saveParam.savePath).c_str()));
|
||||
cJSON_AddItemToObject(obj, "use_subfolder_by_time", saveParam.isUseSubfolderByTime ? cJSON_CreateTrue() : cJSON_CreateFalse());
|
||||
cJSON_AddItemToObject(obj, "use_subfolder_by_blank_pages", saveParam.isUseSubfolderByBlankPages ? cJSON_CreateTrue() : cJSON_CreateFalse());
|
||||
cJSON_AddItemToObject(obj, "use_subfolder_by_color", saveParam.isUseSubfolderByColor ? cJSON_CreateTrue() : cJSON_CreateFalse());
|
||||
cJSON_AddItemToObject(obj, "jpeg_quality", cJSON_CreateNumber(saveParam.jpegQuality));
|
||||
cJSON_AddItemToObject(obj, "tiff_compression_bw", cJSON_CreateNumber(saveParam.tiffCompressionBW));
|
||||
cJSON_AddItemToObject(obj, "tiff_compression", cJSON_CreateNumber(saveParam.tiffCompression));
|
||||
cJSON_AddItemToObject(obj, "tiff_quality", cJSON_CreateNumber(saveParam.tiffQuality));
|
||||
cJSON_AddItemToObject(obj, "filename_prefix", cJSON_CreateString(StdStringToUtf8(saveParam.fileNamePrefix).c_str()));
|
||||
cJSON_AddItemToObject(obj, "filename_start_index", cJSON_CreateNumber(saveParam.fileNameStartIndex));
|
||||
cJSON_AddItemToObject(obj, "filename_digits", cJSON_CreateNumber(saveParam.fileNameDigits));
|
||||
cJSON_AddItemToObject(obj, "filename_odd_even_type", cJSON_CreateNumber(saveParam.fileNameOddEvenType));
|
||||
cJSON_AddItemToObject(obj, "filename_ext", cJSON_CreateString(StdStringToUtf8(saveParam.fileNameExt).c_str()));
|
||||
cJSON_AddItemToObject(obj, "ocr", saveParam.isOcr ? cJSON_CreateTrue() : cJSON_CreateFalse());
|
||||
cJSON_AddItemToObject(obj, "save_as_multi_page", saveParam.isSaveAsMultiPage ? cJSON_CreateTrue() : cJSON_CreateFalse());
|
||||
cJSON_AddItemToObject(obj, "multi_pages_type", cJSON_CreateNumber(saveParam.multiPagesType));
|
||||
cJSON_AddItemToObject(obj, "custom_multi_pages", cJSON_CreateNumber(saveParam.customMultiPages));
|
||||
cJSON_AddItemToObject(json, "save_param", obj);
|
||||
|
||||
char* resp = cJSON_Print(json);
|
||||
if (NULL != resp)
|
||||
{
|
||||
str = resp;
|
||||
free(resp);
|
||||
}
|
||||
|
||||
cJSON_Delete(json);
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
void MainWindow::LoadCfg()
|
||||
{
|
||||
// TODO 加载配置文件到m_vScanParams
|
||||
m_vScanParams.clear();
|
||||
|
||||
HGChar cfgPath[256];
|
||||
HGBase_GetConfigPath(cfgPath, 256);
|
||||
char dbPath[256];
|
||||
sprintf(dbPath, "%s%s", cfgPath, "config.db");
|
||||
|
||||
sqlite3 *sqlite = nullptr;
|
||||
sqlite3_open_v2(dbPath, &sqlite, SQLITE_OPEN_READONLY | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_SHAREDCACHE, NULL);
|
||||
if (NULL == sqlite)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
sqlite3_stmt* stmt = NULL;
|
||||
char sql[256];
|
||||
sprintf(sql, "select * from scan_params");
|
||||
int ret = sqlite3_prepare(sqlite, sql, -1, &stmt, NULL);
|
||||
if (0 != ret)
|
||||
{
|
||||
sqlite3_close(sqlite);
|
||||
return;
|
||||
}
|
||||
|
||||
ret = sqlite3_step(stmt);
|
||||
while (SQLITE_ROW == ret)
|
||||
{
|
||||
int id = sqlite3_column_int(stmt, 0);
|
||||
const char* deviceType = (const char*)sqlite3_column_text(stmt, 1);
|
||||
int buttonId = sqlite3_column_int(stmt, 2);
|
||||
const char* deviceConfigs = (const char*)sqlite3_column_text(stmt, 3);
|
||||
const char* saveParam = (const char*)sqlite3_column_text(stmt, 4);
|
||||
|
||||
ScanParam scanParam;
|
||||
scanParam.deviceType = deviceType;
|
||||
scanParam.buttonId = buttonId;
|
||||
scanParam.deviceConfigs = MakeDeviceConfigs(deviceConfigs);
|
||||
scanParam.saveParam = MakeSaveParam(saveParam);
|
||||
m_vScanParams.push_back(scanParam);
|
||||
|
||||
ret = sqlite3_step(stmt);
|
||||
}
|
||||
|
||||
ret = sqlite3_finalize(stmt);
|
||||
assert(0 == ret);
|
||||
|
||||
sqlite3_close(sqlite);
|
||||
}
|
||||
|
||||
void MainWindow::SaveCfg()
|
||||
{
|
||||
// TODO 保存m_vScanParams到配置文件
|
||||
HGChar cfgPath[256];
|
||||
HGBase_GetConfigPath(cfgPath, 256);
|
||||
HGBase_CreateDir(cfgPath);
|
||||
char dbPath[256];
|
||||
sprintf(dbPath, "%s%s", cfgPath, "config.db");
|
||||
HGBase_DeleteFile(dbPath);
|
||||
|
||||
sqlite3 *sqlite = nullptr;
|
||||
sqlite3_open_v2(dbPath, &sqlite, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_SHAREDCACHE, NULL);
|
||||
if (NULL == sqlite)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int ret = sqlite3_exec(sqlite, "create table scan_params (id integer primary key autoincrement, device_type text, "
|
||||
"button_id integer, device_configs text, save_param text)", NULL, NULL, NULL);
|
||||
if (0 != ret)
|
||||
{
|
||||
sqlite3_close(sqlite);
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < (int)m_vScanParams.size(); ++i)
|
||||
{
|
||||
std::string deviceConfigsStr = GetDeviceConfigsStr(m_vScanParams[i].deviceConfigs);
|
||||
std::string saveParamStr = GetSaveParamStr(m_vScanParams[i].saveParam);
|
||||
|
||||
char *sql = new char [1024 + deviceConfigsStr.size() + saveParamStr.size()];
|
||||
sprintf(sql, "insert into scan_params (device_type, button_id, device_configs, save_param) values ('%s', '%d', '%s', '%s')",
|
||||
m_vScanParams[i].deviceType.c_str(), m_vScanParams[i].buttonId, deviceConfigsStr.c_str(), saveParamStr.c_str());
|
||||
sqlite3_exec(sqlite, sql, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
sqlite3_close(sqlite);
|
||||
}
|
||||
|
||||
QString MainWindow::GetDesc(const std::vector<DeviceConfig> &deviceConfigs)
|
||||
{
|
||||
QString desc;
|
||||
QString desc = "-";
|
||||
|
||||
return desc;
|
||||
}
|
||||
|
||||
QString MainWindow::GetDesc(const SaveParam &saveParam)
|
||||
{
|
||||
QString desc;
|
||||
|
||||
desc += "[";
|
||||
desc += tr("Save path:");
|
||||
desc += saveParam.m_savePath;
|
||||
desc += "]";
|
||||
desc += " ";
|
||||
desc += "[";
|
||||
desc += tr("Image format:");
|
||||
desc += saveParam.m_fileNameExt;
|
||||
desc += "]";
|
||||
QString desc = "-";
|
||||
|
||||
return desc;
|
||||
}
|
||||
|
@ -318,12 +700,17 @@ void MainWindow::StartScan(unsigned int buttonId)
|
|||
m_aquireIntoMultiPageCount = 0;
|
||||
|
||||
QDateTime dateTime = QDateTime::currentDateTime();
|
||||
if (m_aquireIntoSaveParam.m_isUseSubfolderByTime)
|
||||
if (m_aquireIntoSaveParam.isUseSubfolderByTime)
|
||||
{
|
||||
m_aquireIntoSaveParam.m_savePath = getStdFileName(m_aquireIntoSaveParam.m_savePath + dateTime.toString("yyyy-MM-dd") + "/");
|
||||
#ifdef HG_CMP_MSC
|
||||
std::string newPath = m_aquireIntoSaveParam.savePath + dateTime.toString("yyyy-MM-dd").toStdString() + "\\";
|
||||
#else
|
||||
std::string newPath = m_aquireIntoSaveParam.savePath + dateTime.toString("yyyy-MM-dd").toStdString() + "/";
|
||||
#endif
|
||||
m_aquireIntoSaveParam.savePath = newPath;
|
||||
}
|
||||
|
||||
if (m_aquireIntoSaveParam.m_isOcr)
|
||||
if (m_aquireIntoSaveParam.isOcr)
|
||||
{
|
||||
HGBase_CreateMsgPump(&m_ocrMsgPump);
|
||||
HGBase_OpenThread(ocrThreadFunc, this, &m_ocrThread);
|
||||
|
@ -416,23 +803,23 @@ void MainWindow::AddManualScanParam()
|
|||
|
||||
void MainWindow::SaveImage(HGImage image)
|
||||
{
|
||||
if (m_aquireIntoSaveParam.m_isSaveAsMultiPage)
|
||||
if (m_aquireIntoSaveParam.isSaveAsMultiPage)
|
||||
{
|
||||
if (nullptr == m_scanImgFmtWriter)
|
||||
{
|
||||
assert(m_scanFileName.isEmpty());
|
||||
HGBase_CreateDir(getStdString(m_aquireIntoSaveParam.m_savePath).c_str());
|
||||
HGBase_CreateDir(m_aquireIntoSaveParam.savePath.c_str());
|
||||
|
||||
QString scanFileName;
|
||||
while (1)
|
||||
{
|
||||
scanFileName = m_aquireIntoSaveParam.m_savePath + m_aquireIntoSaveParam.m_fileNamePrefix + QString("%1.%2")
|
||||
.arg(m_aquireIntoSaveParam.m_fileNameStartIndex, m_aquireIntoSaveParam.m_fileNameDigits, 10, QLatin1Char('0'))
|
||||
.arg(m_aquireIntoSaveParam.m_fileNameExt);
|
||||
scanFileName = QString::fromLocal8Bit(m_aquireIntoSaveParam.savePath.c_str()) + QString::fromLocal8Bit(m_aquireIntoSaveParam.fileNamePrefix.c_str())
|
||||
+ QString("%1.%2").arg(m_aquireIntoSaveParam.fileNameStartIndex, m_aquireIntoSaveParam.fileNameDigits, 10, QLatin1Char('0'))
|
||||
.arg(QString::fromLocal8Bit(m_aquireIntoSaveParam.fileNameExt.c_str()));
|
||||
QFileInfo fileInfo(scanFileName);
|
||||
if (fileInfo.isFile())
|
||||
{
|
||||
++m_aquireIntoSaveParam.m_fileNameStartIndex;
|
||||
++m_aquireIntoSaveParam.fileNameStartIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -446,7 +833,7 @@ void MainWindow::SaveImage(HGImage image)
|
|||
fmtType = HGIMGFMT_TYPE_TIFF;
|
||||
}
|
||||
|
||||
HGImgFmt_OpenImageWriter(getStdString(getStdFileName(scanFileName)).c_str(), fmtType, &m_scanImgFmtWriter);
|
||||
HGImgFmt_OpenImageWriter(scanFileName.toLocal8Bit().toStdString().c_str(), fmtType, &m_scanImgFmtWriter);
|
||||
if (nullptr != m_scanImgFmtWriter)
|
||||
{
|
||||
m_scanFileName = scanFileName;
|
||||
|
@ -456,24 +843,24 @@ void MainWindow::SaveImage(HGImage image)
|
|||
if (nullptr != m_scanImgFmtWriter)
|
||||
{
|
||||
HGImgFmtSaveInfo saveInfo;
|
||||
saveInfo.jpegQuality = (HGUInt)m_aquireIntoSaveParam.m_jpegQuality;
|
||||
saveInfo.jpegQuality = (HGUInt)m_aquireIntoSaveParam.jpegQuality;
|
||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_NONE;
|
||||
saveInfo.tiffJpegQuality = (HGUInt)m_aquireIntoSaveParam.m_tiffQuality;
|
||||
saveInfo.tiffJpegQuality = (HGUInt)m_aquireIntoSaveParam.tiffQuality;
|
||||
|
||||
HGImageInfo imgInfo;
|
||||
HGBase_GetImageInfo(image, &imgInfo);
|
||||
if (HGBASE_IMGTYPE_BINARY == imgInfo.type)
|
||||
{
|
||||
if (1 == m_aquireIntoSaveParam.m_tiffCompressionBW)
|
||||
if (1 == m_aquireIntoSaveParam.tiffCompressionBW)
|
||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
|
||||
else if (2 == m_aquireIntoSaveParam.m_tiffCompressionBW)
|
||||
else if (2 == m_aquireIntoSaveParam.tiffCompressionBW)
|
||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_CCITTFAX4;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (1 == m_aquireIntoSaveParam.m_tiffCompression)
|
||||
if (1 == m_aquireIntoSaveParam.tiffCompression)
|
||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
|
||||
else if (2 == m_aquireIntoSaveParam.m_tiffCompression)
|
||||
else if (2 == m_aquireIntoSaveParam.tiffCompression)
|
||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_JPEG;
|
||||
}
|
||||
|
||||
|
@ -487,7 +874,7 @@ void MainWindow::SaveImage(HGImage image)
|
|||
if (HGBASE_ERR_OK == HGImgFmt_SaveImageToWriter(m_scanImgFmtWriter, image, &saveInfo))
|
||||
{
|
||||
++m_aquireIntoMultiPageCount;
|
||||
if (1 == m_aquireIntoSaveParam.m_multiPagesType && m_aquireIntoMultiPageCount == m_aquireIntoSaveParam.m_customMultiPages)
|
||||
if (1 == m_aquireIntoSaveParam.multiPagesType && m_aquireIntoMultiPageCount == m_aquireIntoSaveParam.customMultiPages)
|
||||
{
|
||||
HGImgFmt_CloseImageWriter(m_scanImgFmtWriter);
|
||||
m_scanImgFmtWriter = nullptr;
|
||||
|
@ -505,7 +892,7 @@ void MainWindow::SaveImage(HGImage image)
|
|||
}
|
||||
|
||||
m_scanFileName.clear();
|
||||
++m_aquireIntoSaveParam.m_fileNameStartIndex;
|
||||
++m_aquireIntoSaveParam.fileNameStartIndex;
|
||||
m_aquireIntoMultiPageCount = 0;
|
||||
}
|
||||
}
|
||||
|
@ -515,8 +902,8 @@ void MainWindow::SaveImage(HGImage image)
|
|||
{
|
||||
assert(nullptr == m_scanImgFmtWriter);
|
||||
|
||||
QString savePath = m_aquireIntoSaveParam.m_savePath;
|
||||
if (m_aquireIntoSaveParam.m_isUseSubfolderByBlankPages)
|
||||
QString savePath = QString::fromLocal8Bit(m_aquireIntoSaveParam.savePath.c_str());
|
||||
if (m_aquireIntoSaveParam.isUseSubfolderByBlankPages)
|
||||
{
|
||||
HGBool isBlank = HGFALSE;
|
||||
HGImgProc_ImageBlankCheck(image, nullptr, &isBlank);
|
||||
|
@ -536,10 +923,14 @@ void MainWindow::SaveImage(HGImage image)
|
|||
|
||||
char batchDir[20];
|
||||
sprintf(batchDir, "batch%d", m_aquireIntoBatchStartIndex);
|
||||
savePath = getStdFileName(savePath + batchDir + "/");
|
||||
#ifdef HG_CMP_MSC
|
||||
savePath = savePath + batchDir + "\\";
|
||||
#else
|
||||
savePath = savePath + batchDir + "/";
|
||||
#endif
|
||||
}
|
||||
|
||||
if (m_aquireIntoSaveParam.m_isUseSubfolderByColor)
|
||||
if (m_aquireIntoSaveParam.isUseSubfolderByColor)
|
||||
{
|
||||
QString colorModeName;
|
||||
HGImageInfo imgInfo;
|
||||
|
@ -550,21 +941,24 @@ void MainWindow::SaveImage(HGImage image)
|
|||
colorModeName = tr("gray");
|
||||
else
|
||||
colorModeName = tr("rgb");
|
||||
|
||||
savePath = getStdFileName(savePath + colorModeName + "/");
|
||||
#ifdef HG_CMP_MSC
|
||||
savePath = savePath + colorModeName + "\\";
|
||||
#else
|
||||
savePath = savePath + colorModeName + "/";
|
||||
#endif
|
||||
}
|
||||
|
||||
HGBase_CreateDir(getStdString(savePath).c_str());
|
||||
HGBase_CreateDir(savePath.toLocal8Bit().toStdString().c_str());
|
||||
|
||||
while (1)
|
||||
{
|
||||
m_scanFileName = savePath + m_aquireIntoSaveParam.m_fileNamePrefix + QString("%1.%2")
|
||||
.arg(m_aquireIntoSaveParam.m_fileNameStartIndex, m_aquireIntoSaveParam.m_fileNameDigits, 10, QLatin1Char('0'))
|
||||
.arg(m_aquireIntoSaveParam.m_fileNameExt);
|
||||
m_scanFileName = savePath + QString::fromLocal8Bit(m_aquireIntoSaveParam.fileNamePrefix.c_str()) + QString("%1.%2")
|
||||
.arg(m_aquireIntoSaveParam.fileNameStartIndex, m_aquireIntoSaveParam.fileNameDigits, 10, QLatin1Char('0'))
|
||||
.arg(QString::fromLocal8Bit(m_aquireIntoSaveParam.fileNameExt.c_str()));
|
||||
QFileInfo fileInfo(m_scanFileName);
|
||||
if (fileInfo.isFile())
|
||||
{
|
||||
++m_aquireIntoSaveParam.m_fileNameStartIndex;
|
||||
++m_aquireIntoSaveParam.fileNameStartIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -573,24 +967,24 @@ void MainWindow::SaveImage(HGImage image)
|
|||
}
|
||||
|
||||
HGImgFmtSaveInfo saveInfo;
|
||||
saveInfo.jpegQuality = (HGUInt)m_aquireIntoSaveParam.m_jpegQuality;
|
||||
saveInfo.jpegQuality = (HGUInt)m_aquireIntoSaveParam.jpegQuality;
|
||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_NONE;
|
||||
saveInfo.tiffJpegQuality = (HGUInt)m_aquireIntoSaveParam.m_tiffQuality;
|
||||
saveInfo.tiffJpegQuality = (HGUInt)m_aquireIntoSaveParam.tiffQuality;
|
||||
|
||||
HGImageInfo imgInfo;
|
||||
HGBase_GetImageInfo(image, &imgInfo);
|
||||
if (HGBASE_IMGTYPE_BINARY == imgInfo.type)
|
||||
{
|
||||
if (1 == m_aquireIntoSaveParam.m_tiffCompressionBW)
|
||||
if (1 == m_aquireIntoSaveParam.tiffCompressionBW)
|
||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
|
||||
else if (2 == m_aquireIntoSaveParam.m_tiffCompressionBW)
|
||||
else if (2 == m_aquireIntoSaveParam.tiffCompressionBW)
|
||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_CCITTFAX4;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (1 == m_aquireIntoSaveParam.m_tiffCompression)
|
||||
if (1 == m_aquireIntoSaveParam.tiffCompression)
|
||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
|
||||
else if (2 == m_aquireIntoSaveParam.m_tiffCompression)
|
||||
else if (2 == m_aquireIntoSaveParam.tiffCompression)
|
||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_JPEG;
|
||||
}
|
||||
|
||||
|
@ -603,7 +997,7 @@ void MainWindow::SaveImage(HGImage image)
|
|||
saveInfo.tiffJpegQuality = 100;
|
||||
}
|
||||
|
||||
if (HGBASE_ERR_OK == HGImgFmt_SaveImage(image, fmtType, &saveInfo, getStdString(m_scanFileName).c_str()))
|
||||
if (HGBASE_ERR_OK == HGImgFmt_SaveImage(image, fmtType, &saveInfo, m_scanFileName.toLocal8Bit().toStdString().c_str()))
|
||||
{
|
||||
if (nullptr != m_ocrMsgPump)
|
||||
{
|
||||
|
@ -617,7 +1011,7 @@ void MainWindow::SaveImage(HGImage image)
|
|||
}
|
||||
}
|
||||
|
||||
++m_aquireIntoSaveParam.m_fileNameStartIndex;
|
||||
++m_aquireIntoSaveParam.fileNameStartIndex;
|
||||
}
|
||||
|
||||
m_scanFileName.clear();
|
||||
|
@ -676,8 +1070,8 @@ int MainWindow::sane_ex_callback(SANE_Handle hdev, int code, void* data, unsigne
|
|||
++p->m_aquireIntoPageIndex;
|
||||
emit p->scanImage(p->m_aquireIntoPageIndex);
|
||||
|
||||
if ((1 == p->m_aquireIntoSaveParam.m_fileNameOddEventType && 1 != p->m_aquireIntoPageIndex % 2)
|
||||
|| (2 == p->m_aquireIntoSaveParam.m_fileNameOddEventType && 0 != p->m_aquireIntoPageIndex % 2))
|
||||
if ((1 == p->m_aquireIntoSaveParam.fileNameOddEvenType && 1 != p->m_aquireIntoPageIndex % 2)
|
||||
|| (2 == p->m_aquireIntoSaveParam.fileNameOddEvenType && 0 != p->m_aquireIntoPageIndex % 2))
|
||||
{
|
||||
// 跳过
|
||||
}
|
||||
|
@ -841,7 +1235,7 @@ void MainWindow::on_scanFinish()
|
|||
}
|
||||
|
||||
m_scanFileName.clear();
|
||||
++m_aquireIntoSaveParam.m_fileNameStartIndex;
|
||||
++m_aquireIntoSaveParam.fileNameStartIndex;
|
||||
m_aquireIntoMultiPageCount = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,10 @@ public:
|
|||
void StopScan();
|
||||
|
||||
private:
|
||||
static std::vector<DeviceConfig> MakeDeviceConfigs(const std::string &str);
|
||||
static std::string GetDeviceConfigsStr(const std::vector<DeviceConfig> &deviceConfigs);
|
||||
static SaveParam MakeSaveParam(const std::string &str);
|
||||
static std::string GetSaveParamStr(const SaveParam &saveParam);
|
||||
void LoadCfg();
|
||||
void SaveCfg();
|
||||
QString GetDesc(const std::vector<DeviceConfig> &deviceConfigs);
|
||||
|
|
|
@ -98,8 +98,6 @@ win32 {
|
|||
}
|
||||
|
||||
SOURCES += \
|
||||
../../../app/scantool/HGUIGlobal.cpp \
|
||||
../../../app/scantool/app_cfg.cpp \
|
||||
../../../app/scantool/dialog_add.cpp \
|
||||
../../../app/scantool/dialog_scaninfo.cpp \
|
||||
../../../app/scantool/dialog_writesettings.cpp \
|
||||
|
@ -113,8 +111,6 @@ SOURCES += \
|
|||
|
||||
|
||||
HEADERS += \
|
||||
../../../app/scantool/HGUIGlobal.h \
|
||||
../../../app/scantool/app_cfg.h \
|
||||
../../../app/scantool/dialog_add.h \
|
||||
../../../app/scantool/dialog_scaninfo.h \
|
||||
../../../app/scantool/dialog_writesettings.h \
|
||||
|
|
Loading…
Reference in New Issue