HGGitLab

Commit fe5ead26 authored by luoliangyi's avatar luoliangyi

去掉twain相关代码

parent 172949f4
......@@ -80,14 +80,24 @@ typedef struct _dev_configs
}
OPTSCHEME* get_current(void)
{
if(cur_scheme >= 0 && cur_scheme + 1 < schemes.size())
if(cur_scheme >= 0 && cur_scheme + 1 < (int)schemes.size())
return &schemes[cur_scheme + 1];
else
return &schemes[0];
}
OPTSCHEME* select(const std::string& name)
{
OPTSCHEME *ret = nullptr;
for (int i = 0; i < (int)schemes.size(); ++i)
{
if (name == schemes[i].name)
{
ret = &schemes[i];
break;
}
}
return (nullptr != ret) ? ret : &schemes[0];
}
}DEVCFG;
......
......@@ -5,7 +5,6 @@
dialog_log::dialog_log(QWidget *parent)
: QDialog(parent)
, ui(new Ui::dialog_log)
, m_isScanning(false)
{
ui->setupUi(this);
QHBoxLayout *bottom = new QHBoxLayout();
......@@ -43,40 +42,48 @@ dialog_log::~dialog_log()
delete ui;
}
void dialog_log::add_log(QString log, bool err)
void dialog_log::addLog(const QString &log, bool err)
{
if(ui->listWidget->count() > 1000)
if (ui->listWidget->count() > 1000)
{
for(int i = 0; i < 100; ++i)
ui->listWidget->removeItemWidget(ui->listWidget->item(1));
{
QListWidgetItem *item = ui->listWidget->takeItem(0);
delete item;
}
}
QDateTime timeCurrent = QDateTime::currentDateTime();
QString time = timeCurrent.toString("[yy-MM-dd hh:mm:ss]");
ui->listWidget->addItem(time + " " + log);
int ind = ui->listWidget->count() - 1;
if(ind >= 0)
ui->listWidget->item(ind)->setTextColor(err ? Qt::red : Qt::black);
}
void dialog_log::setScanStatus(bool isscanning)
{
m_isScanning = isscanning;
int idx = ui->listWidget->count() - 1;
if (idx >= 0)
ui->listWidget->item(idx)->setTextColor(err ? Qt::red : Qt::black);
}
void dialog_log::updateWigetStaus()
void dialog_log::updateStatus(bool online, bool isScanning)
{
if(m_isScanning)
if (!online)
{
pbtn_stop->show();
pbtn_stop->hide();
pbtn_continueScan->hide();
pbtn_finishScan->hide();
}
else
{
pbtn_stop->hide();
pbtn_continueScan->show();
pbtn_finishScan->show();
if (isScanning)
{
pbtn_stop->show();
pbtn_continueScan->hide();
pbtn_finishScan->hide();
}
else
{
pbtn_stop->hide();
pbtn_continueScan->show();
pbtn_finishScan->show();
}
}
}
......@@ -88,18 +95,19 @@ void dialog_log::closeEvent(QCloseEvent *event)
void dialog_log::on_pbtn_continuScan_cliked()
{
bool isContinuScan = true;
emit continuScan(isContinuScan);
emit continueScan();
}
void dialog_log::on_pbtn_finishScan_cliked()
{
close();
}
void dialog_log::on_pbtn_stop_clicked(void)
{
emit invoke_stop();
emit stopScan();
}
void dialog_log::on_pbtn_clear_clicked()
{
ui->listWidget->clear();
......
......@@ -12,7 +12,7 @@ class dialog_log;
enum
{
INFO_DLG_FLAG_INFO_LIST = 1 << 1,
INFO_DLG_FLAG_PROGRESS = 1 << 2,
INFO_DLG_FLAG_PROGRESS = 1 << 2
};
class QListWidgetItem;
......@@ -24,27 +24,24 @@ public:
explicit dialog_log(QWidget *parent = nullptr);
~dialog_log();
void add_log(QString log, bool err);
void setScanStatus(bool isScanning);
void updateWigetStaus();
void addLog(const QString &log, bool err);
void updateStatus(bool online, bool isScanning);
signals:
void stopScan();
void continueScan();
private:
void closeEvent(QCloseEvent *event);
private slots:
void on_pbtn_stop_clicked(void);
void on_pbtn_clear_clicked();
void on_pbtn_continuScan_cliked();
void on_pbtn_finishScan_cliked();
signals:
void invoke_stop(void);
void continuScan(bool isContinuScan);
private:
Ui::dialog_log *ui;
bool m_isScanning;
QPushButton *pbtn_stop;
QPushButton *pbtn_clear;
QPushButton *pbtn_continueScan;
......
#include "hg_settingdialog.h"
#if !defined(HG_CMP_MSC) || !defined(APP_USE_TWAIN)
#include <QDebug>
#include <QLatin1String>
......@@ -1725,5 +1723,3 @@ void hg_settingdialog::slot_pushButton_scheme_management(void)
changed_count_++;
}
}
#endif // !defined(HG_CMP_MSC) || !defined(APP_USE_TWAIN)
#ifndef HG_SETTING_DIALOG_H
#define HG_SETTING_DIALOG_H
#include "base/HGDef.h"
#if !defined(HG_CMP_MSC) || !defined(APP_USE_TWAIN)
#include <QtWidgets>
#include <QSettings>
#include <algorithm>
......@@ -110,8 +107,6 @@ private slots:
void slot_pushButton_scheme_management(void);
};
#endif // !defined(HG_CMP_MSC) || !defined(APP_USE_TWAIN)
#endif // HG_SETTING_DIALOG_H
......
......@@ -9,6 +9,7 @@
#include <QStandardPaths>
#include <QDesktopServices>
#include "widget_statusbar.h"
#include "dialog_log.h"
#include "dialog_openimageindex.h"
#include "dialog_saveas.h"
#include "dialog_export.h"
......@@ -25,9 +26,7 @@
#include "dialog_aquireinto.h"
#include "dialog_logmanager.h"
#include "dialog_clrcache.h"
#if !defined(HG_CMP_MSC) || !defined(APP_USE_TWAIN)
#include "hg_settingdialog.h"
#endif
#include "imgfmt/HGPdf.h"
#include "imgfmt/HGImgFmt.h"
#include "imgproc/HGImgProc.h"
......@@ -39,7 +38,6 @@ MainWindow::MainWindow(QWidget *parent)
, ui(new Ui::MainWindow)
, m_password("123456")
, m_admin_loggedIn(false)
, m_dialog_log(new dialog_log(this))
, m_currFilePath("")
, m_currIndex(-1)
, m_multiPageCount(0)
......@@ -48,10 +46,9 @@ MainWindow::MainWindow(QWidget *parent)
, m_modify(false)
, m_scanType(1)
, m_scanInsertPos(-1)
, m_isScanning(false)
, m_isContinuScan(false)
, m_scanFileName("")
, m_scanImgFmtWriter(nullptr)
, m_isScanning(false)
{
ui->setupUi(this);
......@@ -99,6 +96,7 @@ MainWindow::MainWindow(QWidget *parent)
m_wndStatusBar = new Widget_StatusBar(ui->act_zoomIn, ui->act_zoomOut, ui->statusBar);
ui->statusBar->addWidget(m_wndStatusBar, 1);
m_dialogLog = new dialog_log(this);
connect(m_view, SIGNAL(scaleChanged(double)), this, SLOT(on_viewerScale(double)));
connect(m_view, SIGNAL(mousePos(int, int)), this, SLOT(on_viewerMousePos(int, int)));
......@@ -118,7 +116,7 @@ MainWindow::MainWindow(QWidget *parent)
QImage defItemImage(":images/image_rsc/scroll/defItemImage.png");
m_thumb->setDefItemImage(&defItemImage);
m_thumb->setType(HGImgThumb::ThumbType_Vert);
m_thumb->setItemSize(80);
m_thumb->setItemSize(120);
m_thumb->setScrollSize(16);
m_thumb->setMinScrollSliderSize(20);
m_thumb->setItemTextHeight(0);
......@@ -193,22 +191,8 @@ MainWindow::MainWindow(QWidget *parent)
menu_imageInsert->addAction(ui->act_insert);
menu_imageInsert->addAction(ui->act_insertFromScanner);
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
connect(this, SIGNAL(new_image(void *)), this, SLOT(on_new_image(void *)));
connect(this, SIGNAL(scan_working(QString)), this, SLOT(on_scan_working(QString)));
connect(this, SIGNAL(scan_finish(QString, int)), this, SLOT(on_scan_finish(QString, int)));
connect(m_dialog_log, SIGNAL(continuScan(bool)), this, SLOT(on_continuScan(bool)));
connect(m_dialog_log, SIGNAL(continuScan(void)), this, SLOT(on_act_acquire_triggered(void)));
connect(m_dialog_log, SIGNAL(invoke_stop(void)), this, SLOT(on_act_acquireStop_triggered(void)));
ui->menu_device->setEnabled(false);
m_twainDSM = nullptr;
HGTwain_LoadDSM(&m_twainDSM);
HGTwain_OpenDSM(m_twainDSM);
m_twainDS = nullptr;
HGTwain_GetDefaultDS(m_twainDSM, &m_twainDS);
#else
ui->act_consume->setVisible(false);
m_config.load();
m_view->installEventFilter(this);
ui->statusBar->installEventFilter(this);
......@@ -219,25 +203,23 @@ MainWindow::MainWindow(QWidget *parent)
connect(this, SIGNAL(scan_working(QString)), this, SLOT(on_scan_working(QString)), Qt::QueuedConnection);
connect(this, SIGNAL(scan_finish(QString, int)), this, SLOT(on_scan_finish(QString, int)), Qt::QueuedConnection);
connect(this, SIGNAL(sane_dev_error(QString)), this, SLOT(on_sane_dev_error(QString)), Qt::QueuedConnection);
connect(m_dialog_log, SIGNAL(continuScan(bool)), this, SLOT(on_continuScan(bool)), Qt::QueuedConnection);
connect(m_dialog_log, SIGNAL(continuScan(void)), this, SLOT(on_act_acquire_triggered(void)), Qt::QueuedConnection);
connect(m_dialog_log, SIGNAL(invoke_stop(void)), this, SLOT(on_act_acquireStop_triggered(void)), Qt::QueuedConnection);
connect(m_dialogLog, SIGNAL(continueScan()), this, SLOT(on_continueScan()));
connect(m_dialogLog, SIGNAL(stopScan()), this, SLOT(on_stopScan()));
m_saneNoDevAction = new QAction(tr("nodevice"), this);
m_saneNoDevAction->setEnabled(false);
ui->menu_device->addAction(m_saneNoDevAction);
set_actions_enabled(false);
ui->menu_device->setEnabled(true);
m_wndStatusBar->setDeviceStatusInfo(m_saneNoDevAction->text());
m_wndStatusBar->setDeviceStatusInfo(m_saneNoDevAction->text(), false);
m_dialogLog->addLog(m_saneNoDevAction->text(), false);
m_saneDeviceAction = nullptr;
m_saneDeviceHandle = nullptr;
SANE_Int v = 0;
sane_init_ex(&v, sane_ex_callback, this);
#endif
m_dlgFullScreen = nullptr;
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
updateActionStatus();
}
......@@ -249,11 +231,6 @@ MainWindow::~MainWindow()
m_dlgFullScreen = nullptr;
}
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
HGTwain_CloseDSM(m_twainDSM);
HGTwain_UnloadDSM(m_twainDSM);
m_twainDSM = nullptr;
#else
if (nullptr != m_saneDeviceHandle)
{
sane_cancel(m_saneDeviceHandle);
......@@ -263,7 +240,6 @@ MainWindow::~MainWindow()
m_saneDeviceAction = nullptr;
}
sane_exit();
#endif
delete ui;
}
......@@ -350,9 +326,14 @@ void MainWindow::on_act_fullscreen_triggered()
{
assert(nullptr == m_dlgFullScreen);
QStringList fileNames;
int count = 0;
m_thumb->getItemCount(&count);
if (0 == count || -1 == m_currIndex || -1 == m_multiIndex)
{
return;
}
QStringList fileNames;
for (int i = 0; i < count; ++i)
{
QString fileName;
......@@ -602,9 +583,9 @@ void MainWindow::on_clearCache()
m_thumb->getItemCount(&count);
for (int i = 0; i < count; ++i)
{
QString fileNmae;
m_thumb->getItemFileName(i, fileNmae);
if (0 == fileNmae.indexOf(getStdFileName(APP_CACHE_PATH)))
QString fileName;
m_thumb->getItemFileName(i, fileName);
if (0 == fileName.indexOf(getStdFileName(APP_CACHE_PATH)))
{
removeItems.push_back(i);
}
......@@ -613,10 +594,9 @@ void MainWindow::on_clearCache()
m_thumb->removeItems(removeItems, HGImgThumb::ThumbRemoveFlag_NULL);
}
#if !defined(HG_CMP_MSC) || !defined(APP_USE_TWAIN)
void MainWindow::on_devMenu_action_triggered()
{
QAction *curAction = qobject_cast<QAction*>(sender());
QAction *curAction = qobject_cast<QAction*>(sender());
if (curAction == m_saneDeviceAction)
{
curAction->setChecked(true);
......@@ -645,6 +625,9 @@ void MainWindow::on_devMenu_action_triggered()
curAction->setChecked(false);
}
}
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
updateActionStatus();
}
void MainWindow::on_sane_dev_arrive(QString devName)
......@@ -668,7 +651,6 @@ void MainWindow::on_sane_dev_arrive(QString devName)
connect(action_dev, SIGNAL(triggered()), this, SLOT(on_devMenu_action_triggered()));
ui->menu_device->removeAction(m_saneNoDevAction);
ui->menu_device->addAction(action_dev);
set_actions_enabled(true);
if (nullptr == m_saneDeviceHandle)
{
......@@ -676,10 +658,13 @@ void MainWindow::on_sane_dev_arrive(QString devName)
{
m_saneDeviceAction = action_dev;
action_dev->setChecked(true);
m_wndStatusBar->setDeviceStatusInfo(devName + tr(" already connected"));
m_dialog_log->add_log(devName + tr(" already connected"), false);
}
}
m_wndStatusBar->setDeviceStatusInfo(devName + tr(" already connected"), false);
m_dialogLog->addLog(devName + tr(" already connected"), false);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
updateActionStatus();
}
}
......@@ -714,12 +699,12 @@ void MainWindow::on_sane_dev_remove(QString devName)
if (actions.isEmpty())
{
ui->menu_device->addAction(m_saneNoDevAction);
set_actions_enabled(false);
ui->menu_device->setEnabled(true);
}
m_wndStatusBar->setDeviceStatusInfo(m_saneNoDevAction->text());
m_dialog_log->add_log(devName + tr(" disconnected"), true);
m_wndStatusBar->setDeviceStatusInfo(devName + tr(" disconnected"), true);
m_dialogLog->addLog(devName + tr(" disconnected"), true);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
updateActionStatus();
}
}
......@@ -733,7 +718,7 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if(obj == m_view)
{
if(event->type()==QEvent::MouseButtonDblClick)
if(event->type() == QEvent::MouseButtonDblClick)
{
on_act_open_triggered();
return true;
......@@ -742,15 +727,15 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *event)
}
else if(obj == ui->statusBar)
{
if(event->type()==QEvent::MouseButtonDblClick)
if(event->type() == QEvent::MouseButtonDblClick)
{
m_dialog_log->show();
m_dialogLog->show();
return true;
}
}
return false;
}
#endif
void MainWindow::on_new_image(void *img)
{
......@@ -817,34 +802,15 @@ void MainWindow::on_new_image(void *img)
void MainWindow::on_scan_working(QString workingInfo)
{
m_isScanning = true;
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
//
m_wndStatusBar->setDeviceStatusInfo(tr("scan starting..."));
#else
m_wndStatusBar->setDeviceStatusInfo(workingInfo);
m_dialog_log->add_log(workingInfo, false);
#endif
m_dialog_log->setScanStatus(m_isScanning);
m_dialog_log->updateWigetStaus();
m_dialog_log->show();
set_actions_enabled(!m_isScanning);
m_wndStatusBar->setDeviceStatusInfo(workingInfo, false);
m_dialogLog->addLog(workingInfo, false);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
updateActionStatus();
m_dialogLog->show();
}
void MainWindow::on_scan_finish(QString finishInfo, int err)
{
bool scanFail = false;
m_isScanning = false;
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
//
m_wndStatusBar->setDeviceStatusInfo(tr("scan finished"));
#else
if(err != SANE_STATUS_GOOD)
scanFail = true;
m_wndStatusBar->setDeviceStatusInfo(finishInfo);
m_dialog_log->add_log(finishInfo, scanFail);
m_dialog_log->setScanStatus(m_isScanning);
m_dialog_log->updateWigetStaus();
#endif
if (nullptr != m_scanImgFmtWriter)
{
HGImgFmt_CloseImageWriter(m_scanImgFmtWriter);
......@@ -852,15 +818,40 @@ void MainWindow::on_scan_finish(QString finishInfo, int err)
m_thumb->addItem(m_scanFileName);
m_scanFileName.clear();
}
m_dialog_log->setScanStatus(m_isScanning);
m_dialog_log->updateWigetStaus();
set_actions_enabled(!m_isScanning);
m_isScanning = false;
m_wndStatusBar->setDeviceStatusInfo(finishInfo, (err != SANE_STATUS_GOOD));
m_dialogLog->addLog(finishInfo, (err != SANE_STATUS_GOOD));
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
updateActionStatus();
}
void MainWindow::on_continuScan(bool isContinuScan)
void MainWindow::on_continueScan()
{
m_isContinuScan = isContinuScan;
on_act_acquire_triggered();
if (nullptr == m_saneDeviceHandle || m_isScanning)
{
return;
}
m_scanType = 1;
m_scanInsertPos = -1;
SANE_Status ret = sane_start(m_saneDeviceHandle);
if (ret != SANE_STATUS_GOOD)
{
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true);
}
}
void MainWindow::on_stopScan()
{
if (nullptr == m_saneDeviceHandle || !m_isScanning)
{
return;
}
sane_cancel(m_saneDeviceHandle);
}
void MainWindow::on_act_thumbnailBar_triggered(bool checked)
......@@ -916,8 +907,7 @@ void MainWindow::on_act_last_triggered()
QString MainWindow::getCacheFileName()
{
QString filePath = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
filePath += "/Huago/ScannerApp/Cache";
QString filePath = APP_CACHE_PATH;
HGBase_CreateDir(getStdString(getStdFileName(filePath)).c_str());
char uuid[256] = {0};
......@@ -1042,7 +1032,7 @@ void MainWindow::updateActionStatus()
ui->act_zoomIn->setEnabled(nullptr != img);
ui->act_zoomOut->setEnabled(nullptr != img);
ui->act_fullscreen->setEnabled(nullptr != img);
ui->act_fullscreen->setEnabled(count > 0 && -1 != m_currIndex && -1 != m_multiIndex);
ui->act_fitWindowSize->setEnabled(nullptr != img);
ui->act_fitWindowWidth->setEnabled(nullptr != img);
ui->act_realSize->setEnabled(nullptr != img);
......@@ -1063,21 +1053,15 @@ void MainWindow::updateActionStatus()
ui->act_consume->setEnabled(m_admin_loggedIn);
ui->act_clearRoller->setEnabled(m_admin_loggedIn);
//Temporarily hide act_consume
ui->act_consume->setVisible(false);
}
void MainWindow::set_actions_enabled(bool enable)
{
ui->act_acquireInto->setEnabled(enable);
ui->act_acquireSingle->setEnabled(enable);
ui->act_acquire->setEnabled(enable);
ui->act_scannerSettings->setEnabled(enable);
ui->act_insertFromScanner->setEnabled(enable);
ui->act_closeFile->setEnabled(enable);
ui->act_closeAll->setEnabled(enable);
ui->menu_scan->setEnabled(enable);
ui->menu_device->setEnabled(enable);
ui->act_open->setEnabled(nullptr == m_saneDeviceHandle || !m_isScanning);
ui->act_insert->setEnabled(nullptr == m_saneDeviceHandle || !m_isScanning);
ui->act_closeFile->setEnabled(nullptr == m_saneDeviceHandle || !m_isScanning);
ui->act_closeAll->setEnabled(nullptr == m_saneDeviceHandle || !m_isScanning);
ui->act_acquireInto->setEnabled(nullptr != m_saneDeviceHandle && !m_isScanning);
ui->act_acquireSingle->setEnabled(nullptr != m_saneDeviceHandle && !m_isScanning);
ui->act_acquire->setEnabled(nullptr != m_saneDeviceHandle && !m_isScanning);
ui->act_scannerSettings->setEnabled(nullptr != m_saneDeviceHandle && !m_isScanning);
ui->act_insertFromScanner->setEnabled(nullptr != m_saneDeviceHandle && !m_isScanning);
}
askIfClear MainWindow::startScanMessageBox(QWidget *parent)
......@@ -1090,7 +1074,7 @@ askIfClear MainWindow::startScanMessageBox(QWidget *parent)
box.setText(tr("Already exist images in image list.\nDo you want to clear?"));
box.exec();
if (box.clickedButton() == cancelBtn)
return cancel;
return cancelScan;
else if (box.clickedButton() == clearBtn)
{
on_act_closeAll_triggered();
......@@ -1252,12 +1236,22 @@ void MainWindow::on_act_adjust_triggered()
void MainWindow::on_act_open_triggered()
{
if (m_isScanning)
{
return;
}
QStringList fileNames = QFileDialog::getOpenFileNames(nullptr, tr("Open images"), "", "(*.jpg *.jpeg *.png *.bmp *.pdf *.tif *.tiff *.ofd)");
m_thumb->addItems(fileNames);
}
void MainWindow::on_act_insert_triggered()
{
if (m_isScanning)
{
return;
}
QStringList fileNames = QFileDialog::getOpenFileNames(nullptr, tr("Insert images"), "", "(*.jpg *.jpeg *.png *.bmp *.pdf *.tif *.tiff *.ofd)");
if (-1 != m_currIndex)
m_thumb->insertItems(fileNames, m_currIndex);
......@@ -1267,6 +1261,11 @@ void MainWindow::on_act_insert_triggered()
void MainWindow::on_act_closeFile_triggered()
{
if (m_isScanning)
{
return;
}
std::vector<int> selectIndexs;
int count = 0;
m_thumb->getItemCount(&count);
......@@ -1317,6 +1316,11 @@ void MainWindow::on_act_closeFile_triggered()
void MainWindow::on_act_closeAll_triggered()
{
if (m_isScanning)
{
return;
}
int count = 0;
m_thumb->getItemCount(&count);
if (0 == count)
......@@ -1371,7 +1375,7 @@ void MainWindow::on_act_save_triggered()
}
else
{
QMessageBox::information(this, "info", "save failed");
QMessageBox::information(this, tr("info"), tr("save failed"));
}
}
......@@ -1410,16 +1414,16 @@ void MainWindow::on_act_saveAs_triggered()
int saveQuality = dlg.getSaveQuality();
if (HGBASE_ERR_OK == HGImgFmt_SaveImage(img, 0, nullptr, (HGUInt)saveQuality, getStdString(savePath).c_str()))
{
//QMessageBox::information(this, "info", "save ok");
}
else
{
QMessageBox::information(this, "info", "save failed");
QMessageBox::information(this, tr("info"), tr("save failed"));
}
}
else
{
QMessageBox::information(this, "info", "find savePath in thumbnail");
QMessageBox::information(this, tr("info"), tr("find savePath in thumbnail"));
}
}
}
......@@ -1483,7 +1487,7 @@ void MainWindow::on_act_Export_triggered()
}
else
{
QMessageBox::information(this, "info", "find savePath in thumbnail");
QMessageBox::information(this, tr("info"), tr("find savePath in thumbnail"));
}
}
}
......@@ -1586,6 +1590,7 @@ void MainWindow::closeEvent(QCloseEvent *e)
e->ignore();
return;
}
int count = 0;
m_thumb->getItemCount(&count);
if(count != 0)
......@@ -1602,51 +1607,12 @@ void MainWindow::closeEvent(QCloseEvent *e)
return;
}
}
QDir dir = QDir(APP_CACHE_PATH);
dir.removeRecursively();
QMainWindow::closeEvent(e);
}
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
void HGAPI MainWindow::DSEventCallback(HGTwainDS ds, HGUInt event, HGPointer param)
{
(void)ds;
MainWindow *p = (MainWindow *)param;
if (event == HGTWAIN_DSEVENT_XFERREADY)
{
emit p->scan_working();
while (1)
{
HGImage img = nullptr;
HGTwain_ImageNativeXfer(p->m_twainDS, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &img);
if (nullptr != img)
{
emit p->new_image(img);
}
HGUInt imgCount = 0;
HGTwain_EndXfer(p->m_twainDS, &imgCount);
if (0 == imgCount)
{
emit p->scan_finish();
break;
}
}
HGTwain_Reset(p->m_twainDS);
HGTwain_CloseDS(p->m_twainDS);
}
else if (event == HGTWAIN_DSEVENT_CLOSEDSREQ)
{
HGTwain_CloseDS(p->m_twainDS);
}
else if (event == HGTWAIN_DSEVENT_CLOSEDSOK)
{
HGTwain_CloseDS(p->m_twainDS);
}
}
#else
int MainWindow::sane_ex_callback(SANE_Handle hdev, int code, void *data, unsigned int* len, void *param)
{
(void)hdev;
......@@ -1692,12 +1658,12 @@ int MainWindow::sane_ex_callback(SANE_Handle hdev, int code, void *data, unsigne
else if (sane_img->header.format == SANE_FRAME_RGB)
imgType = HGBASE_IMGTYPE_RGB;
HGByte *data = sane_img->data;
HGByte *imgData = sane_img->data;
HGImageInfo imgInfo = {(HGUInt)sane_img->header.pixels_per_line, (HGUInt)sane_img->header.lines,
imgType, (HGUInt)sane_img->header.bytes_per_line, HGBASE_IMGORIGIN_TOP};
HGImage img = nullptr;
HGBase_CreateImageFromData(data, &imgInfo, nullptr, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &img);
HGBase_CreateImageFromData(imgData, &imgInfo, nullptr, HGBASE_IMGTYPE_RGB, HGBASE_IMGORIGIN_TOP, &img);
if (nullptr != img)
{
emit p->new_image(img);
......@@ -1706,7 +1672,7 @@ int MainWindow::sane_ex_callback(SANE_Handle hdev, int code, void *data, unsigne
break;
case SANE_EVENT_SCAN_FINISHED:
{
int err = len ? *len : 0;
int err = len ? (int)(*len) : 0;
QString finishInfo((char*)data);
emit p->scan_finish(finishInfo, err);
}
......@@ -1715,7 +1681,6 @@ int MainWindow::sane_ex_callback(SANE_Handle hdev, int code, void *data, unsigne
return 0;
}
#endif
void MainWindow::on_act_multiRotate_triggered()
{
......@@ -1941,9 +1906,6 @@ void MainWindow::on_act_clearRoller_triggered()
return;
}
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
//clear roller based on twain
#else
unsigned int count = 0;
int ret = sane_io_control(m_saneDeviceHandle, IO_CTRL_CODE_CLEAR_ROLLER_COUNT, nullptr, &count);
......@@ -1951,7 +1913,6 @@ void MainWindow::on_act_clearRoller_triggered()
QMessageBox::information(this, tr("hint"), tr("Roller scanned count has been set to 0."));
else
QMessageBox::information(this, tr("hint"), tr("Roller scanned count reset failed."));
#endif
}
void MainWindow::on_act_help_triggered()
......@@ -1971,7 +1932,6 @@ void MainWindow::on_act_help_triggered()
void MainWindow::on_act_about_triggered()
{
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
QString company;
QString appName;
QString copyRight;
......@@ -1982,35 +1942,7 @@ void MainWindow::on_act_about_triggered()
QString address;
QString navigation;
company = tr("HuaGoScan");
appName = tr("HuaGoScan Application");
copyRight = tr("2018-2022 HuaGoScan");
developer = tr("Manufacturer/Developer: Ningbo Huagao Info&Tech co.,ltd.");
website = tr("<br>Company website: <a href='http://www.huagaochina.com/'>www.huagaochina.com</a>");
contact = tr("<br>Contact: +86 0574 27974866");
afterSelesContact = tr("");
address = tr("<br>Company address: No.655,Xueshi Road,Yinzhou district,Ningbo,Zhejiang,China(PRC)");
navigation = tr("Navigation: <a href='https://j.map.baidu.com/7e/1TO'>Visit in Baidu map.</a>");
QMessageBox::about(this,
tr("About %1").arg(company),
tr("<p>%1</p>"
"<p>Version: %2"
"<br>CopyRight: &#169; %3</p>"
"<p>%4%5%6%7%8%9</p>")
.arg(appName).arg("v2.1.2.111").arg(copyRight).arg(developer).arg(website).arg(contact).arg(afterSelesContact).arg(address).arg(navigation));
#else
QString company;
QString appName;
QString copyRight;
QString developer;
QString website;
QString contact;
QString afterSelesContact;
QString address;
QString navigation;
SANE_About *about = NULL;
SANE_About *about = nullptr;
unsigned int len = 0;
QString title(tr("About %1").arg(company)),
content(tr("<p>%1</p>"
......@@ -2042,141 +1974,120 @@ void MainWindow::on_act_about_triggered()
}
}
QMessageBox::about(this, title, content);
#endif
}
void MainWindow::on_act_scannerSettings_triggered()
{
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
if (HGBASE_ERR_OK == HGTwain_OpenDS(m_twainDS))
if (nullptr == m_saneDeviceHandle || m_isScanning)
{
if (HGBASE_ERR_OK != HGTwain_EnableDSUIOnly(m_twainDS, HGTRUE, nullptr, DSEventCallback, this))
{
HGTwain_CloseDS(m_twainDS);
}
return;
}
#else
if (nullptr != m_saneDeviceHandle)
DEVCFG cfg;
std::vector<DEVCFG>::iterator it = std::find(m_devSchemes.begin(), m_devSchemes.end(), m_saneDeviceAction->text().toStdString());
if (it != m_devSchemes.end())
{
cfg = *it;
m_devSchemes.erase(it);
}
else
{
DEVCFG cfg;
std::vector<DEVCFG>::iterator it = std::find(dev_schemes_.begin(), dev_schemes_.end(), m_saneDeviceAction->text().toStdString());
if(it != dev_schemes_.end())
{
cfg = *it;
dev_schemes_.erase(it);
}
cfg.name = m_saneDeviceAction->text().toStdString();
cfg.cur_scheme = -1;
hg_settingdialog dlg(m_saneDeviceHandle, this, &cfg);
dlg.exec();
int changes = dlg.get_changed_items();
dev_schemes_.insert(dev_schemes_.begin(), cfg);
if(changes)
m_config.save_scanner_configs(&cfg);
}
#endif
hg_settingdialog dlg(m_saneDeviceHandle, this, &cfg);
dlg.exec();
int changes = dlg.get_changed_items();
m_devSchemes.insert(m_devSchemes.begin(), cfg);
if (changes)
m_config.save_scanner_configs(&cfg);
}
void MainWindow::on_act_acquire_triggered()
{
m_scanType = 1;
m_scanInsertPos = -1;
int result = 0;
if (nullptr == m_saneDeviceHandle || m_isScanning)
{
return;
}
int count = 0;
m_thumb->getItemCount(&count);
if(!m_isContinuScan)
if (count != 0)
{
if (count != 0)
result = startScanMessageBox(this);
else
result = notClearAndScan;
if(cancel == result)
int result = startScanMessageBox(this);
if (cancelScan == result)
return;
}
m_isContinuScan = false;
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
if (HGBASE_ERR_OK == HGTwain_OpenDS(m_twainDS))
{
if (HGBASE_ERR_OK != HGTwain_EnableDS(m_twainDS, HGFALSE, nullptr, DSEventCallback, this))
{
HGTwain_CloseDS(m_twainDS);
}
}
#else
if (nullptr != m_saneDeviceHandle)
m_scanType = 1;
m_scanInsertPos = -1;
SANE_Status ret = sane_start(m_saneDeviceHandle);
if (ret != SANE_STATUS_GOOD)
{
SANE_Status ret = sane_start(m_saneDeviceHandle);
if(ret != SANE_STATUS_GOOD)
{
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"));
m_dialog_log->add_log(tr("start failed"), true);
}
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true);
}
#endif
}
void MainWindow::on_act_acquireStop_triggered()
{
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
// stop scan based on twain
#else
if (nullptr != m_saneDeviceHandle)
sane_cancel(m_saneDeviceHandle);
#endif
}
void MainWindow::on_act_acquireSingle_triggered()
{
m_scanType = 1;
m_scanInsertPos = -1;
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
if (HGBASE_ERR_OK == HGTwain_OpenDS(m_twainDS))
if (nullptr == m_saneDeviceHandle || m_isScanning)
{
HGTwain_SetCapability(m_twainDS, HGTWAIN_DSCAP_DUPLEXENABLED, 0);
if (HGBASE_ERR_OK != HGTwain_EnableDS(m_twainDS, HGFALSE, nullptr, DSEventCallback, this))
{
HGTwain_CloseDS(m_twainDS);
}
return;
}
#else
if (nullptr != m_saneDeviceHandle)
int count = 0;
m_thumb->getItemCount(&count);
if (count != 0)
{
sane_io_control(m_saneDeviceHandle, IO_CTRL_CODE_TEST_SINGLE, nullptr, nullptr);
int result = startScanMessageBox(this);
if (cancelScan == result)
return;
}
m_scanType = 1;
m_scanInsertPos = -1;
SANE_Status ret = sane_io_control(m_saneDeviceHandle, IO_CTRL_CODE_TEST_SINGLE, nullptr, nullptr);
if (ret != SANE_STATUS_GOOD)
{
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true);
}
#endif
}
void MainWindow::on_act_acquireInto_triggered()
{
if (nullptr == m_saneDeviceHandle || m_isScanning)
{
return;
}
Dialog_AquireInto dlg(this);
if (dlg.exec())
{
m_scanType = 2;
m_aquireIntoSaveParam = dlg.getSaveParam();
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
if (HGBASE_ERR_OK == HGTwain_OpenDS(m_twainDS))
{
if (HGBASE_ERR_OK != HGTwain_EnableDS(m_twainDS, HGFALSE, nullptr, DSEventCallback, this))
{
HGTwain_CloseDS(m_twainDS);
}
}
#else
if (nullptr != m_saneDeviceHandle)
SANE_Status ret = sane_start(m_saneDeviceHandle);
if (ret != SANE_STATUS_GOOD)
{
SANE_Status ret = sane_start(m_saneDeviceHandle);
if(ret != SANE_STATUS_GOOD)
{
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"));
m_dialog_log->add_log(tr("start failed"), true);
}
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true);
}
#endif
}
}
void MainWindow::on_act_insertFromScanner_triggered()
{
if (nullptr == m_saneDeviceHandle || m_isScanning)
{
return;
}
Dialog_InsertIndex dlg(this);
if (dlg.exec())
{
......@@ -2203,18 +2114,12 @@ void MainWindow::on_act_insertFromScanner_triggered()
break;
}
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
if (HGBASE_ERR_OK == HGTwain_OpenDS(m_twainDS))
SANE_Status ret = sane_start(m_saneDeviceHandle);
if (ret != SANE_STATUS_GOOD)
{
if (HGBASE_ERR_OK != HGTwain_EnableDS(m_twainDS, HGFALSE, nullptr, DSEventCallback, this))
{
HGTwain_CloseDS(m_twainDS);
}
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true);
}
#else
if (nullptr != m_saneDeviceHandle)
sane_start(m_saneDeviceHandle);
#endif
}
}
......@@ -5,13 +5,8 @@
#include <QLineEdit>
#include "HGImgView.h"
#include "HGImgThumb.h"
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
#include "twain_user/HGTwain.h"
#else
#include "sane_ex/sane_ex.h"
#include "config.h"
#endif
#include "dialog_log.h"
#include "dialog_aquireinto.h"
#include "imgfmt/HGImgFmt.h"
......@@ -45,7 +40,7 @@ protected:
enum askIfClear
{
cancel = 0,
cancelScan = 0,
clearAndScan,
notClearAndScan
};
......@@ -56,7 +51,7 @@ class MainWindow : public QMainWindow
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
virtual ~MainWindow() override;
void exitFullScreen();
......@@ -86,11 +81,9 @@ private slots:
void on_act_fullscreen_triggered();
signals:
#if !defined(HG_CMP_MSC) || !defined(APP_USE_TWAIN)
void sane_dev_arrive(QString devName);
void sane_dev_remove(QString devName);
void sane_dev_error(QString errorInfo);
#endif
void new_image(void *img);
void scan_working(QString workingInfo);
void scan_finish(QString finishInfo, int err);
......@@ -109,17 +102,16 @@ private slots:
void on_dialog_multirotate_refreshImgFile(const QString &fileName);
void on_multiPageLineEditFinished();
void on_clearCache();
#if !defined(HG_CMP_MSC) || !defined(APP_USE_TWAIN)
void on_devMenu_action_triggered();
void on_sane_dev_arrive(QString devName);
void on_sane_dev_remove(QString devName);
void on_sane_dev_error(QString errorInfo);
virtual bool eventFilter(QObject* obj, QEvent* event) override;
#endif
void on_new_image(void *img);
void on_scan_working(QString workingInfo);
void on_scan_finish(QString finishInfo, int err);
void on_continuScan(bool isContinuScan);
void on_continueScan();
void on_stopScan();
void on_act_thumbnailBar_triggered(bool checked);
......@@ -187,8 +179,6 @@ private slots:
void on_act_acquire_triggered();
void on_act_acquireStop_triggered();
void on_act_acquireSingle_triggered();
void on_act_acquireInto_triggered();
......@@ -196,21 +186,16 @@ private slots:
void on_act_insertFromScanner_triggered();
protected:
virtual void closeEvent(QCloseEvent *e);
virtual void closeEvent(QCloseEvent *e) override;
private:
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
static void HGAPI DSEventCallback(HGTwainDS ds, HGUInt event, HGPointer param);
#else
static int sane_ex_callback(SANE_Handle hdev, int code, void *data, unsigned int* len, void *param);
#endif
QString getCacheFileName();
HGImage createImage();
int getMultiPageCount();
void updateStatusBarPixelInfo();
void updateActionStatus();
void set_actions_enabled(bool enable);
askIfClear startScanMessageBox(QWidget* parent);
private:
......@@ -220,18 +205,11 @@ private:
HGImgView *m_view;
HGImgThumb *m_thumb;
QMenu *m_thumbMenu;
dialog_log *m_dialog_log;
#if defined(HG_CMP_MSC) && defined(APP_USE_TWAIN)
HGTwainDSM m_twainDSM;
HGTwainDS m_twainDS;
#else
QAction *m_saneNoDevAction;
QAction *m_saneDeviceAction;
SANE_Handle m_saneDeviceHandle;
config m_config;
std::vector<DEVCFG> dev_schemes_;
#endif
std::vector<DEVCFG> m_devSchemes;
QString m_currFilePath;
int m_currIndex;
......@@ -241,14 +219,14 @@ private:
bool m_modify; // m_view上面的图像是否改变
int m_scanType; // 1-扫描到缓存目录,2-扫描到本地目录
int m_scanInsertPos; // 扫描插入位置,-1表示插入到最后
bool m_isScanning;
bool m_isContinuScan;
QString m_scanFileName;
HGImgFmtWriter m_scanImgFmtWriter;
AquireIntoSaveParam m_aquireIntoSaveParam;
bool m_isScanning;
class HGLineEdit* m_multiPageLineEdit;
class Widget_StatusBar *m_wndStatusBar;
class dialog_log *m_dialogLog;
class Dialog_FullScreen *m_dlgFullScreen;
};
#endif // MAINWINDOW_H
......@@ -48,8 +48,20 @@ void Widget_StatusBar::setScale(double scale)
m_lbl_scale->setText(QString("%1%").arg((int)(scale * 100.0)));
}
void Widget_StatusBar::setDeviceStatusInfo(const QString &info)
void Widget_StatusBar::setDeviceStatusInfo(const QString &info, bool err)
{
ui->lbl_devSts->setText(info);
m_devStatusInfos.append(info);
if (err)
{
QPalette pe;
pe.setColor(QPalette::WindowText, Qt::red);
ui->lbl_devSts->setPalette(pe);
}
else
{
QPalette pe;
pe.setColor(QPalette::WindowText, Qt::black);
ui->lbl_devSts->setPalette(pe);
}
}
......@@ -20,13 +20,12 @@ public:
void setPixelInfo(int width, int height, int bpp);
void setMousePosInfo(int x, int y);
void setScale(double scale);
void setDeviceStatusInfo(const QString &info);
void setDeviceStatusInfo(const QString &info, bool err);
private:
Ui::Widget_StatusBar *ui;
QLabel* m_lbl_scale;
QStringList m_devStatusInfos;
};
#endif // WIDGET_STATUSBAR_H
......@@ -88,8 +88,8 @@ HEADERS += \
../../../../app/scanner/dialog_admin.h \
../../../../app/scanner/dialog_log.h \
../../../../app/scanner/config.h \
../../../../app/scanner/json/json.h \
../../../../app/scanner/json/cJSON.h \
../../../../app/scanner/json.h \
../../../../app/scanner/cJSON.h \
../../../../ui/HGImgThumb.h \
../../../../ui/HGImgView.h \
../../../../ui/HGUIGlobal.h
......@@ -121,9 +121,8 @@ TRANSLATIONS += \
../../../../app/scanner/Scanner_zh_CN.ts
RESOURCES += \
../../../../app/scanner/Scanner_resource.qrc \
../../../../app/scanner/Scanner_resource.qrc
DISTFILES += \
../../../../app/scanner/Scanner_zh_CN.qm \
../../../../app/scanner/Scanner_zh_CN.ts \
../../../../app/scanner/qt_zh_CN.qm
......@@ -10,8 +10,6 @@ CONFIG += c++11
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
#DEFINES += APP_USE_TWAIN
RC_ICONS = ../../../app/scanner/image_rsc/logo/logo.ico
# You can also make your code fail to compile if it uses deprecated APIs.
......@@ -21,7 +19,7 @@ RC_ICONS = ../../../app/scanner/image_rsc/logo/logo.ico
win32 {
contains(QT_ARCH, i386) {
LIBS += -L../../../release/lib/windows/x86 -lHGBase -lHGImgFmt -lHGImgProc -lHGTwainUser -lhgsane
LIBS += -L../../../release/lib/windows/x86 -lHGBase -lHGImgFmt -lHGImgProc -lhgsane
CONFIG(release, debug|release) {
DESTDIR = ../../../release/bin/windows/x86/
}
......@@ -29,7 +27,7 @@ contains(QT_ARCH, i386) {
}
} else {
LIBS += -L../../../release/lib/windows/x64 -lHGBase -lHGImgFmt -lHGImgProc -lHGTwainUser
LIBS += -L../../../release/lib/windows/x64 -lHGBase -lHGImgFmt -lHGImgProc -lhgsane
CONFIG(release, debug|release) {
DESTDIR = ../../../release/bin/windows/x64/
}
......@@ -100,8 +98,8 @@ HEADERS += \
../../../app/scanner/dialog_admin.h \
../../../app/scanner/dialog_log.h \
../../../app/scanner/config.h \
../../../app/scanner/json/json.h \
../../../app/scanner/json/cJSON.h \
../../../app/scanner/json.h \
../../../app/scanner/cJSON.h \
../../../ui/HGImgThumb.h \
../../../ui/HGImgView.h \
../../../ui/HGUIGlobal.h
......@@ -133,9 +131,8 @@ TRANSLATIONS += \
../../../app/scanner/Scanner_zh_CN.ts
RESOURCES += \
../../../app/scanner/Scanner_resource.qrc \
../../../app/scanner/Scanner_resource.qrc
DISTFILES += \
../../../app/scanner/Scanner_zh_CN.qm \
../../../app/scanner/Scanner_zh_CN.ts \
../../../app/scanner/qt_zh_CN.qm
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment