2022-11-23 10:39:06 +00:00
|
|
|
|
#ifndef MAINWINDOW_H
|
2022-05-03 10:25:52 +00:00
|
|
|
|
#define MAINWINDOW_H
|
|
|
|
|
|
|
|
|
|
#include <QMainWindow>
|
|
|
|
|
#include <QLineEdit>
|
2022-07-07 08:16:41 +00:00
|
|
|
|
#include <QListWidgetItem>
|
2023-01-28 02:57:18 +00:00
|
|
|
|
#include <QTranslator>
|
2023-03-31 07:22:07 +00:00
|
|
|
|
#include <QtWidgets>
|
2022-05-03 10:25:52 +00:00
|
|
|
|
#include "HGImgView.h"
|
|
|
|
|
#include "HGImgThumb.h"
|
|
|
|
|
#include "sane/sane_ex.h"
|
|
|
|
|
#include "dialog_aquireinto.h"
|
|
|
|
|
#include "imgfmt/HGImgFmt.h"
|
2022-07-14 07:44:53 +00:00
|
|
|
|
#include "VersionDll.h"
|
2022-05-03 10:25:52 +00:00
|
|
|
|
#include "device_menu.h"
|
|
|
|
|
#include "sane_device.h"
|
|
|
|
|
|
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
|
namespace Ui { class MainWindow; }
|
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
|
|
|
|
|
|
class HGLineEdit : public QLineEdit
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
public:
|
|
|
|
|
HGLineEdit(QWidget* parent)
|
|
|
|
|
: QLineEdit(parent)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
void focusInEvent(QFocusEvent* e)
|
|
|
|
|
{
|
|
|
|
|
(void)e;
|
|
|
|
|
QString text = this->text();
|
|
|
|
|
QStringList list = text.split("/");
|
|
|
|
|
text = list.first();
|
|
|
|
|
this->setText(text);
|
|
|
|
|
this->selectAll();
|
|
|
|
|
|
|
|
|
|
QLineEdit::focusInEvent(e);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum askIfClear
|
|
|
|
|
{
|
|
|
|
|
cancelScan = 0,
|
|
|
|
|
clearAndScan,
|
|
|
|
|
notClearAndScan
|
|
|
|
|
};
|
|
|
|
|
|
2022-11-03 09:18:30 +00:00
|
|
|
|
struct FwUpgradeAndDevLock
|
|
|
|
|
{
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
FwUpgrade = 0x00000001,
|
|
|
|
|
DevLock = 0x00000002,
|
|
|
|
|
};
|
|
|
|
|
|
2022-11-11 08:39:46 +00:00
|
|
|
|
FwUpgradeAndDevLock(const std::string &devName)
|
2022-11-03 09:18:30 +00:00
|
|
|
|
{
|
|
|
|
|
m_devName = devName;
|
2022-12-06 00:40:31 +00:00
|
|
|
|
m_checkFlag = 0;
|
2022-11-03 09:18:30 +00:00
|
|
|
|
m_handleFlag = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::string m_devName; // 设备名
|
|
|
|
|
HGUInt m_checkFlag; // 检查标记
|
|
|
|
|
HGUInt m_handleFlag; // 执行标记
|
|
|
|
|
std::string m_upgradeFilePath; // 升级文件路径
|
|
|
|
|
HGBool m_lock; // 锁定/解锁
|
|
|
|
|
};
|
|
|
|
|
|
2022-07-23 08:54:56 +00:00
|
|
|
|
//class dialog_wrong_img;
|
|
|
|
|
|
2022-05-03 10:25:52 +00:00
|
|
|
|
class MainWindow : public QMainWindow
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
2022-07-23 08:54:56 +00:00
|
|
|
|
std::vector<class dialog_wrong_img*> wrong_imgs_;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
|
|
|
|
public:
|
2023-01-29 03:18:42 +00:00
|
|
|
|
MainWindow(const QString& appLang, QWidget *parent = nullptr);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
virtual ~MainWindow() override;
|
|
|
|
|
|
|
|
|
|
void exitFullScreen();
|
2023-03-02 07:43:58 +00:00
|
|
|
|
static HGResult saveImage(HGImage image, const HGImgFmtSaveInfo* info, bool ocr, int ocrLanguageType, const HGChar *fileName);
|
2022-11-24 09:02:26 +00:00
|
|
|
|
static QString getLogInfo(HGResult ret);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
void on_act_90Left_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_90Right_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_180_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_fitWindowSize_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_fitWindowWidth_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_realSize_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_zoomIn_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_zoomOut_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_statusBar_triggered(bool checked);
|
|
|
|
|
|
|
|
|
|
void on_act_toolBar_triggered(bool checked);
|
|
|
|
|
|
|
|
|
|
void on_act_colorInfo_triggered(bool checked);
|
|
|
|
|
|
|
|
|
|
void on_act_fullscreen_triggered();
|
|
|
|
|
|
2022-06-02 10:27:14 +00:00
|
|
|
|
void on_act_autoSave_triggered();
|
|
|
|
|
|
2022-05-03 10:25:52 +00:00
|
|
|
|
signals:
|
|
|
|
|
void sane_dev_arrive(QString devName, bool opened);
|
|
|
|
|
void sane_dev_remove(QString devName);
|
|
|
|
|
void sane_dev_error(QString errorInfo);
|
2022-07-23 08:54:56 +00:00
|
|
|
|
void new_image(void *img, int statu);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
void scan_working(QString workingInfo);
|
|
|
|
|
void scan_finish(QString finishInfo, int err);
|
2022-11-03 09:18:30 +00:00
|
|
|
|
void fwUpgradeAndDevLock_Finish();
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
|
|
|
|
private slots:
|
2023-03-06 09:01:57 +00:00
|
|
|
|
void on_AcquireInto2();
|
2023-03-31 07:22:07 +00:00
|
|
|
|
void on_reloadAcquireIntoCfg();
|
|
|
|
|
void on_m_acquireIntoCfg_changed(QString schemeName);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
void on_itemCountChanged(int count);
|
|
|
|
|
void on_itemSelectingChanged();
|
|
|
|
|
void on_currItemChanged(int index);
|
|
|
|
|
void on_itemDoubleClicked(int index);
|
|
|
|
|
void on_thumbContextMenu(int index);
|
|
|
|
|
void on_viewerScale(double scale);
|
|
|
|
|
void on_viewerMousePos(int x, int y);
|
2022-05-14 05:22:20 +00:00
|
|
|
|
void on_thumbDrop(const QObject *source, const QStringList &fileNames, int pos);
|
|
|
|
|
void on_viewerDrop(const QObject *source, const QStringList &fileNames);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
void on_viewerDblClick();
|
|
|
|
|
void on_act_moveTo_triggered();
|
|
|
|
|
void on_act_thumbGrid_triggered(bool checked);
|
|
|
|
|
void on_dialog_adjust_applyToImage(HGImage img);
|
|
|
|
|
void on_dialog_multirotate_refreshImgFile(const QString &fileName);
|
|
|
|
|
void on_multiPageLineEditFinished();
|
|
|
|
|
void on_clearCache();
|
|
|
|
|
void on_sane_dev_arrive(QString devName, bool opened);
|
|
|
|
|
void on_sane_dev_remove(QString devName);
|
|
|
|
|
void on_sane_dev_error(QString errorInfo);
|
2022-07-23 08:54:56 +00:00
|
|
|
|
void on_new_image(void *img, int statu);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
void on_scan_working(QString workingInfo);
|
|
|
|
|
void on_scan_finish(QString finishInfo, int err);
|
2022-11-03 09:18:30 +00:00
|
|
|
|
void on_fwUpgradeAndDevLock_Finish();
|
2022-05-26 09:20:12 +00:00
|
|
|
|
void on_export_scanned_image(void);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
void on_continueScan();
|
|
|
|
|
void on_stopScan();
|
|
|
|
|
void on_statusInfoDblClick();
|
2022-07-23 08:54:56 +00:00
|
|
|
|
void on_wrong_image_decide(dialog_wrong_img* dlg, bool save);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
|
|
|
|
void on_act_thumbnailBar_triggered(bool checked);
|
|
|
|
|
|
|
|
|
|
void on_act_previous_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_next_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_first_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_last_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_openPageNum_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_previousPage_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_nextPage_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_firstPage_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_lastPage_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_adjust_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_open_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_insert_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_closeFile_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_closeAll_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_exit_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_save_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_saveAs_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_Export_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_imageInfo_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_multiRotate_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_autoCrop_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_signIn_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_passwordChange_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_signOut_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_log_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_clrCache_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_consume_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_clearRoller_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_help_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_about_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_scannerSettings_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_acquire_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_acquireSingle_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_acquireInto_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_insertFromScanner_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_imageEdit_triggered();
|
|
|
|
|
|
|
|
|
|
void on_scanOptions_changed(const QString &device, const QString &option, bool checked_now);
|
|
|
|
|
|
2022-05-16 06:38:22 +00:00
|
|
|
|
void on_act_sortPages_triggered();
|
|
|
|
|
|
2022-07-07 08:16:41 +00:00
|
|
|
|
void on_actionact_update_triggered();
|
|
|
|
|
|
2022-07-20 09:30:27 +00:00
|
|
|
|
void on_act_feedback_triggered();
|
|
|
|
|
|
2022-07-26 05:44:44 +00:00
|
|
|
|
void on_act_driver_log_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_device_log_triggered();
|
|
|
|
|
|
2023-01-28 02:57:18 +00:00
|
|
|
|
void on_act_simpCN_triggered();
|
|
|
|
|
|
|
|
|
|
void on_act_English_triggered();
|
|
|
|
|
|
2023-02-03 02:21:33 +00:00
|
|
|
|
void on_act_deleteFile_triggered();
|
|
|
|
|
|
2022-05-10 10:15:37 +00:00
|
|
|
|
public slots:
|
|
|
|
|
void my_url_handler(const QUrl& url);
|
|
|
|
|
|
2022-05-03 10:25:52 +00:00
|
|
|
|
protected:
|
|
|
|
|
virtual void closeEvent(QCloseEvent *e) override;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
static int sane_ex_callback(SANE_Handle hdev, int code, void *data, unsigned int* len, void *param);
|
2022-10-12 03:51:41 +00:00
|
|
|
|
static void HGAPI CrashFunc(HGPointer crashAddr, HGPointer param);
|
2022-11-03 09:18:30 +00:00
|
|
|
|
static void HGAPI FwUpgradeAndDevLockThread(HGThread thread, HGPointer param);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
2022-05-20 10:44:24 +00:00
|
|
|
|
HGUInt getDpi();
|
2022-06-01 10:47:58 +00:00
|
|
|
|
QString getCacheFileName(HGImage img);
|
2022-05-03 10:25:52 +00:00
|
|
|
|
HGImage createImage();
|
|
|
|
|
int getMultiPageCount();
|
|
|
|
|
void updateStatusBarPixelInfo();
|
|
|
|
|
void updateActionStatus();
|
|
|
|
|
void startSaveMessageBox(QWidget* parent);
|
|
|
|
|
askIfClear startScanMessageBox(QWidget* parent);
|
|
|
|
|
QString passwordEncrypt(const QString& password);
|
|
|
|
|
QString passwordDecrypt(const QString& transcode);
|
2022-10-28 01:03:22 +00:00
|
|
|
|
bool open_scanner(const QString& name, const QString& scheme);
|
2022-11-24 16:39:37 +00:00
|
|
|
|
bool judgeDiskSpace(QString currentPath, bool showDlg = true);
|
2022-07-22 06:25:24 +00:00
|
|
|
|
void upgradeApp(QString pkgPath);
|
2023-02-22 07:18:06 +00:00
|
|
|
|
bool isLimitAccessFolder(int type); //type:1-aquire,2-aquireInto
|
2022-12-03 08:58:16 +00:00
|
|
|
|
static QString GetDevType(const QString& fwVersion, bool &canLock);
|
2022-11-07 02:10:21 +00:00
|
|
|
|
void upgradeFwAndLockDevice();
|
2022-11-29 07:42:18 +00:00
|
|
|
|
void deleteOverdueLogFile(const QString& logFilePath);
|
|
|
|
|
void deleteUpgradePkg(const QString& cfgFilePath);
|
2023-02-06 08:18:47 +00:00
|
|
|
|
QString getDevPid();
|
2023-03-31 07:22:07 +00:00
|
|
|
|
void initAcquireIntoComboBox();
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
Ui::MainWindow *ui;
|
2023-03-06 09:01:57 +00:00
|
|
|
|
QAction *m_act_acquireInto2;
|
2023-03-31 07:22:07 +00:00
|
|
|
|
QComboBox *m_cbtn_acquireIntoCfg;
|
2023-01-28 07:32:08 +00:00
|
|
|
|
QString m_currLang;
|
2022-07-14 07:44:53 +00:00
|
|
|
|
VersionDll *m_versionDll;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
QString m_password;
|
|
|
|
|
bool m_admin_loggedIn;
|
|
|
|
|
HGImgView *m_view;
|
|
|
|
|
HGImgThumb *m_thumb;
|
|
|
|
|
QMenu *m_thumbMenu;
|
2023-01-28 07:32:08 +00:00
|
|
|
|
QMenu* m_menu_imageInsert;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
QAction *m_moveToAction;
|
2023-01-28 07:32:08 +00:00
|
|
|
|
QAction* m_act_thumbGrid;
|
2022-07-07 08:16:41 +00:00
|
|
|
|
QListWidget* m_listwidget;
|
2023-01-28 07:32:08 +00:00
|
|
|
|
QMenu *m_menu_language;
|
2023-01-28 02:57:18 +00:00
|
|
|
|
QAction *m_act_simpCN;
|
|
|
|
|
QAction *m_act_English;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
2022-10-28 01:03:22 +00:00
|
|
|
|
dev_que dev_que_;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
2022-06-02 10:27:14 +00:00
|
|
|
|
bool auto_save_changes_;
|
|
|
|
|
bool save_from_changed_;
|
|
|
|
|
typedef struct _save_opt
|
|
|
|
|
{
|
|
|
|
|
QString path;
|
|
|
|
|
int index;
|
|
|
|
|
int jpegQuality;
|
|
|
|
|
int tiffCompressionBW;
|
|
|
|
|
int tiffCompression;
|
|
|
|
|
int tiffQuality;
|
|
|
|
|
bool isOcr;
|
|
|
|
|
}SAVEOPT;
|
|
|
|
|
SAVEOPT auto_save_info_;
|
|
|
|
|
|
2023-02-06 08:18:47 +00:00
|
|
|
|
union VIDPID
|
|
|
|
|
{
|
|
|
|
|
struct
|
|
|
|
|
{
|
|
|
|
|
unsigned short VID;
|
|
|
|
|
unsigned short PID;
|
|
|
|
|
};
|
|
|
|
|
unsigned int Value;
|
|
|
|
|
};
|
|
|
|
|
|
2022-05-20 10:44:24 +00:00
|
|
|
|
HGUInt m_dpi;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
QString m_currFilePath;
|
|
|
|
|
int m_currIndex;
|
|
|
|
|
int m_multiPageCount;
|
|
|
|
|
int m_multiIndex;
|
|
|
|
|
bool m_modify; // m_view上面的图像是否改变
|
|
|
|
|
bool m_singleScan; // 是否单张扫描
|
|
|
|
|
int m_scanType; // 1-扫描到缓存目录,2-扫描到本地目录
|
|
|
|
|
int m_scanInsertPos; // 扫描插入位置,-1表示插入到最后
|
|
|
|
|
QString m_scanFileName;
|
|
|
|
|
HGImgFmtWriter m_scanImgFmtWriter;
|
|
|
|
|
AquireIntoSaveParam m_aquireIntoSaveParam;
|
2022-05-16 02:43:51 +00:00
|
|
|
|
bool m_aquireIntoInBlank;
|
|
|
|
|
int m_aquireIntoBatchStartIndex;
|
|
|
|
|
int m_aquireIntoPageIndex;
|
|
|
|
|
int m_aquireIntoMultiPageCount;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
bool m_isScanning;
|
2022-07-14 11:13:00 +00:00
|
|
|
|
bool m_closeTip;
|
2022-07-30 01:27:43 +00:00
|
|
|
|
int m_currScanCount;
|
2022-07-27 10:41:21 +00:00
|
|
|
|
QString m_devSerialNum;
|
|
|
|
|
QString m_devVersionNum;
|
2022-07-28 09:22:27 +00:00
|
|
|
|
QString m_currDeviceName;
|
2023-01-13 05:56:24 +00:00
|
|
|
|
const char* m_oemName;
|
2022-11-24 15:48:08 +00:00
|
|
|
|
bool m_cacheDirNotify;
|
|
|
|
|
bool m_AquirePathNotify;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
2022-11-03 09:18:30 +00:00
|
|
|
|
// 固件升级和设备锁定
|
|
|
|
|
std::vector<FwUpgradeAndDevLock> m_vFwUpgradeAndDevLock;
|
|
|
|
|
HGThread m_threadFwUpgradeAndDevLock;
|
|
|
|
|
|
2022-05-03 10:25:52 +00:00
|
|
|
|
class HGLineEdit* m_multiPageLineEdit;
|
|
|
|
|
class Widget_StatusBar *m_wndStatusBar;
|
|
|
|
|
class dialog_log *m_dialogLog;
|
2023-03-31 07:22:07 +00:00
|
|
|
|
class Dialog_AquireInto *m_dialogAcquireinto;
|
2022-05-03 10:25:52 +00:00
|
|
|
|
class Dialog_FullScreen *m_dlgFullScreen;
|
|
|
|
|
};
|
|
|
|
|
#endif // MAINWINDOW_H
|