code_app/app/scanner/mainwindow.h

357 lines
9.5 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 <QtWidgets>
#include <QPropertyAnimation>
#include "HGImgView.h"
#include "HGImgThumb.h"
#include "sane/sane_ex.h"
#include "dialog_aquireinto.h"
#include "widget_imgproc_base.h"
#include "widget_imgproc_sidebar.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
};
//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, int ocrLanguageType, 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 sane_dev_readyStatus(QString promptInfo);
void pre_new_image(void *img);
void post_new_image(unsigned int ret, int statu);
void scan_working(QString workingInfo);
void scan_finish(QString finishInfo, int err);
private slots:
void on_AcquireInto2();
void on_reloadAcquireIntoCfg();
void on_m_acquireIntoCfg_changed(QString schemeName);
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_sane_dev_readyStatus(QString promptInfo);
void on_pre_new_image(void *img);
void on_post_new_image(unsigned int ret, int statu);
void on_scan_working(QString workingInfo);
void on_scan_finish(QString finishInfo, int err);
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_m_pbtn_push_clicked();
void on_dialog_sideBar_applyToImage(HGImage img, int brightness, int contrast, double gamma, bool enhanceText);
void on_dialog_sideBar_finish(bool ok);
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();
void on_act_deleteFile_triggered();
public slots:
void my_url_handler(const QUrl& url);
protected:
virtual void closeEvent(QCloseEvent *e) override;
virtual void resizeEvent(QResizeEvent *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);
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(int type); //type:1-aquire,2-aquireInto
static QString GetDevType(const QString& fwVersion, bool &canLock);
void deleteOverdueLogFile(const QString& logFilePath);
void deleteUpgradePkg(const QString& cfgFilePath);
QString getDevPid();
QString getDevSerialNum();
QString getDevFwVersionNum();
void initAcquireIntoComboBox();
void updateSideBar();
private:
Ui::MainWindow *ui;
QAction *m_act_acquireInto2;
QComboBox *m_cbtn_acquireIntoCfg;
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;
QPushButton *m_pbtn_push;
Widget_Imgproc_SideBar *m_widget_sideBar;
QPropertyAnimation *m_propertyAnimation;
QPropertyAnimation *m_propertyAnimation2;
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_;
union VIDPID
{
struct
{
unsigned short VID;
unsigned short PID;
};
unsigned int Value;
};
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表示插入到最后
int m_saveType;
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;
QString m_devPid;
const char* m_oemName;
bool m_cacheDirNotify;
bool m_AquirePathNotify;
bool m_bSideflag;
bool m_bSideEditing;
class HGLineEdit* m_multiPageLineEdit;
class Widget_StatusBar *m_wndStatusBar;
class dialog_log *m_dialogLog;
class Dialog_AquireInto *m_dialogAcquireinto;
class Dialog_FullScreen *m_dlgFullScreen;
};
#endif // MAINWINDOW_H