code_app/app/scanner/mainwindow.h

344 lines
8.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLineEdit>
#include <QListWidgetItem>
#include <QTranslator>
#include "HGImgView.h"
#include "HGImgThumb.h"
#include "sane/sane_ex.h"
#include "dialog_aquireinto.h"
#include "imgfmt/HGImgFmt.h"
#include "VersionDll.h"
#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
};
struct FwUpgradeAndDevLock
{
enum
{
FwUpgrade = 0x00000001,
DevLock = 0x00000002,
};
FwUpgradeAndDevLock(const std::string &devName)
{
m_devName = devName;
m_checkFlag = 0;
m_handleFlag = 0;
}
std::string m_devName; // 设备名
HGUInt m_checkFlag; // 检查标记
HGUInt m_handleFlag; // 执行标记
std::string m_upgradeFilePath; // 升级文件路径
HGBool m_lock; // 锁定/解锁
};
//class dialog_wrong_img;
class MainWindow : public QMainWindow
{
Q_OBJECT
std::vector<class dialog_wrong_img*> wrong_imgs_;
public:
MainWindow(const QString& appLang, QWidget *parent = nullptr);
virtual ~MainWindow() override;
void exitFullScreen();
static HGResult saveImage(HGImage image, const HGImgFmtSaveInfo* info, bool ocr, const HGChar *fileName);
static QString getLogInfo(HGResult ret);
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();
void on_act_autoSave_triggered();
signals:
void sane_dev_arrive(QString devName, bool opened);
void sane_dev_remove(QString devName);
void sane_dev_error(QString errorInfo);
void new_image(void *img, int statu);
void scan_working(QString workingInfo);
void scan_finish(QString finishInfo, int err);
void fwUpgradeAndDevLock_Finish();
private slots:
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);
void on_thumbDrop(const QObject *source, const QStringList &fileNames, int pos);
void on_viewerDrop(const QObject *source, const QStringList &fileNames);
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);
void on_new_image(void *img, int statu);
void on_scan_working(QString workingInfo);
void on_scan_finish(QString finishInfo, int err);
void on_fwUpgradeAndDevLock_Finish();
void on_export_scanned_image(void);
void on_continueScan();
void on_stopScan();
void on_statusInfoDblClick();
void on_wrong_image_decide(dialog_wrong_img* dlg, bool save);
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);
void on_act_sortPages_triggered();
void on_actionact_update_triggered();
void on_act_feedback_triggered();
void on_act_driver_log_triggered();
void on_act_device_log_triggered();
void on_act_simpCN_triggered();
void on_act_English_triggered();
public slots:
void my_url_handler(const QUrl& url);
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);
static void HGAPI CrashFunc(HGPointer crashAddr, HGPointer param);
static void HGAPI FwUpgradeAndDevLockThread(HGThread thread, HGPointer param);
HGUInt getDpi();
QString getCacheFileName(HGImage img);
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);
bool open_scanner(const QString& name, const QString& scheme);
bool judgeDiskSpace(QString currentPath, bool showDlg = true);
void upgradeApp(QString pkgPath);
bool isLimitAccessFolder(QString filePath);
static QString GetDevType(const QString& fwVersion, bool &canLock);
void upgradeFwAndLockDevice();
void deleteOverdueLogFile(const QString& logFilePath);
void deleteUpgradePkg(const QString& cfgFilePath);
private:
Ui::MainWindow *ui;
QString m_currLang;
VersionDll *m_versionDll;
QString m_password;
bool m_admin_loggedIn;
HGImgView *m_view;
HGImgThumb *m_thumb;
QMenu *m_thumbMenu;
QMenu* m_menu_imageInsert;
QAction *m_moveToAction;
QAction* m_act_thumbGrid;
QListWidget* m_listwidget;
QMenu *m_menu_language;
QAction *m_act_simpCN;
QAction *m_act_English;
dev_que dev_que_;
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_;
HGUInt m_dpi;
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;
bool m_aquireIntoInBlank;
int m_aquireIntoBatchStartIndex;
int m_aquireIntoPageIndex;
int m_aquireIntoMultiPageCount;
bool m_isScanning;
bool m_closeTip;
int m_currScanCount;
QString m_devSerialNum;
QString m_devVersionNum;
QString m_currDeviceName;
const char* m_oemName;
bool m_cacheDirNotify;
bool m_AquirePathNotify;
// 固件升级和设备锁定
std::vector<FwUpgradeAndDevLock> m_vFwUpgradeAndDevLock;
HGThread m_threadFwUpgradeAndDevLock;
class HGLineEdit* m_multiPageLineEdit;
class Widget_StatusBar *m_wndStatusBar;
class dialog_log *m_dialogLog;
class Dialog_FullScreen *m_dlgFullScreen;
};
#endif // MAINWINDOW_H