#ifndef DIALOG_DEVICE_SCAN_H #define DIALOG_DEVICE_SCAN_H #include "base/HGDef.h" #include "base/HGThread.h" #include "HGSaneUI.h" #include namespace Ui { class Dialog_Device_Scan; } class Dialog_Device_Scan : public QDialog { Q_OBJECT public: Dialog_Device_Scan(const SANEAPI* saneApi, SANE_Handle dev, const char *devName, show_scan_ui_event_callback eventCallback, void *eventParam, show_scan_ui_image_callback imageCallback, void *imageParam, QWidget *parent = nullptr); ~Dialog_Device_Scan(); protected: void keyPressEvent(QKeyEvent *e) override; signals: void eventFunc(int flag, QString errInfo); void imageCount(int count); private slots: void on_eventFunc(int flag, QString errInfo); void on_pushButton_Cancel_clicked(); void on_pushButton_Complete_clicked(); void on_imageCount(int count); private: void startScan(); protected: virtual void closeEvent(QCloseEvent *e) override; private: static void HGAPI ThreadFunc(HGThread thread, HGPointer param); private: Ui::Dialog_Device_Scan *ui; SANEAPI m_saneAPI; SANE_Handle m_saneDev; show_scan_ui_event_callback m_eventCallback; void *m_eventParam; show_scan_ui_image_callback m_imageCallback; void *m_imageParam; volatile HGBool m_stopThread; HGThread m_thread; QTimer *m_timer; }; #endif // DIALOG_DEVICE_SCAN_H