HGGitLab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
app
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
luoliangyi
app
Commits
fe5ead26
Commit
fe5ead26
authored
Apr 24, 2022
by
luoliangyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
去掉twain相关代码
parent
172949f4
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
267 additions
and
371 deletions
+267
-371
app/scanner/config.h
app/scanner/config.h
+11
-1
app/scanner/dialog_log.cpp
app/scanner/dialog_log.cpp
+29
-21
app/scanner/dialog_log.h
app/scanner/dialog_log.h
+7
-10
app/scanner/hg_settingdialog.cpp
app/scanner/hg_settingdialog.cpp
+0
-4
app/scanner/hg_settingdialog.h
app/scanner/hg_settingdialog.h
+0
-5
app/scanner/mainwindow.cpp
app/scanner/mainwindow.cpp
+189
-284
app/scanner/mainwindow.h
app/scanner/mainwindow.h
+8
-30
app/scanner/widget_statusbar.cpp
app/scanner/widget_statusbar.cpp
+14
-2
app/scanner/widget_statusbar.h
app/scanner/widget_statusbar.h
+1
-2
build-qt/uos/amd64/HGSolution/HGScanner.pro
build-qt/uos/amd64/HGSolution/HGScanner.pro
+3
-4
build-qt/windows/HGSolution/HGScanner.pro
build-qt/windows/HGSolution/HGScanner.pro
+5
-8
No files found.
app/scanner/config.h
View file @
fe5ead26
...
...
@@ -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
;
...
...
app/scanner/dialog_log.cpp
View file @
fe5ead26
...
...
@@ -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
::
add
Log
(
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
::
update
WigetStaus
(
)
void
dialog_log
::
update
Status
(
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
();
...
...
app/scanner/dialog_log.h
View file @
fe5ead26
...
...
@@ -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
;
...
...
app/scanner/hg_settingdialog.cpp
View file @
fe5ead26
#
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)
app/scanner/hg_settingdialog.h
View file @
fe5ead26
#
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
...
...
app/scanner/mainwindow.cpp
View file @
fe5ead26
...
...
@@ -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
(
8
0
);
m_thumb
->
setItemSize
(
12
0
);
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
fileN
ma
e
;
m_thumb
->
getItemFileName
(
i
,
fileN
ma
e
);
if
(
0
==
fileN
ma
e
.
indexOf
(
getStdFileName
(
APP_CACHE_PATH
)))
QString
fileN
am
e
;
m_thumb
->
getItemFileName
(
i
,
fileN
am
e
);
if
(
0
==
fileN
am
e
.
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
_l
og
->
show
();
m_dialog
L
og
->
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_continu
Scan
(
bool
isContinuScan
)
void
MainWindow
::
on_continu
eScan
(
)
{
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.
\n
Do you want to clear?"
));
box
.
exec
();
if
(
box
.
clickedButton
()
==
cancelBtn
)
return
cancel
;
return
cancel
Scan
;
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
*
d
ata
=
sane_img
->
data
;
HGByte
*
imgD
ata
=
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
(
d
ata
,
&
imgInfo
,
nullptr
,
HGBASE_IMGTYPE_RGB
,
HGBASE_IMGORIGIN_TOP
,
&
img
);
HGBase_CreateImageFromData
(
imgD
ata
,
&
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: © %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
}
}
app/scanner/mainwindow.h
View file @
fe5ead26
...
...
@@ -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
,
cancel
Scan
=
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
app/scanner/widget_statusbar.cpp
View file @
fe5ead26
...
...
@@ -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
);
}
}
app/scanner/widget_statusbar.h
View file @
fe5ead26
...
...
@@ -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
build-qt/uos/amd64/HGSolution/HGScanner.pro
View file @
fe5ead26
...
...
@@ -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
build-qt/windows/HGSolution/HGScanner.pro
View file @
fe5ead26
...
...
@@ -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
-
l
HGTwainUser
-
l
hgsane
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
-
l
HGTwainUser
LIBS
+=
-
L
..
/../../
release
/
lib
/
windows
/
x64
-
lHGBase
-
lHGImgFmt
-
lHGImgProc
-
l
hgsane
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment