#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #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(); 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_viewerDrop(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_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); 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); QString getCacheFileName(); 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); 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 dev_schemes_; 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_isScanning; class HGLineEdit* m_multiPageLineEdit; class Widget_StatusBar *m_wndStatusBar; class dialog_log *m_dialogLog; class Dialog_FullScreen *m_dlgFullScreen; }; #endif // MAINWINDOW_H