code_app/app/scanner/mainwindow.h

260 lines
6.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 "HGImgView.h"
#include "HGImgThumb.h"
#include "sane/sane_ex.h"
#include "config.h"
#include "dialog_aquireinto.h"
#include "imgfmt/HGImgFmt.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 MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
virtual ~MainWindow() override;
void exitFullScreen();
static HGResult saveImage(HGImage image, const HGImgFmtSaveInfo* info, bool ocr, const HGChar *fileName);
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();
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);
void scan_working(QString workingInfo);
void scan_finish(QString finishInfo, int err);
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);
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_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();
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);
HGUInt getDpi();
QString getCacheFileName(HGImage img);
HGImage createImage();
int getMultiPageCount();
void updateStatusBarPixelInfo();
void updateActionStatus();
void startSaveMessageBox(QWidget* parent);
askIfClear startScanMessageBox(QWidget* parent);
bool startSpaceCheck(QWidget* parent);
QString passwordEncrypt(const QString& password);
QString passwordDecrypt(const QString& transcode);
bool open_scanner(const QString& name, OPTSCHEME* schm);
bool judgeDiskSpace(QString currentPath);
private:
Ui::MainWindow *ui;
QString m_password;
bool m_admin_loggedIn;
HGImgView *m_view;
HGImgThumb *m_thumb;
QMenu *m_thumbMenu;
QAction *m_moveToAction;
config m_config;
sane_dev cur_dev_;
std::vector<DEVCFG> dev_schemes_;
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;
class HGLineEdit* m_multiPageLineEdit;
class Widget_StatusBar *m_wndStatusBar;
class dialog_log *m_dialogLog;
class Dialog_FullScreen *m_dlgFullScreen;
};
#endif // MAINWINDOW_H