#pragma once #include #include #include "common.h" #include "Global.h" #include "twglue.hpp" class QApplication; class QWidget; class ScanSettingDialog; class IScannerUI { public: virtual ~IScannerUI() {} virtual void showTwainUI(void* handle, bool uiOnly,Func f,std::string model,bool modelui) = 0; virtual void closeTwainUI() = 0; virtual void postMessage() = 0; virtual void setHandle(TwGlue twglue) = 0; virtual void showindicator() = 0; virtual void hideindicator() = 0; virtual void getjsonstring(std::string& str) = 0; virtual void is_showindicator(bool enabel)=0; virtual void Message(std::string title, std::string msg, int type) = 0; }; typedef std::shared_ptr ScannerUIPtr; class GUICreate { public: static ScannerUIPtr Instance(); }; class ScannerUI : public IScannerUI { public: ScannerUI(); ~ScannerUI(); virtual void showTwainUI(void* handle, bool uiOnly, Func f,std::string model,bool modelui); virtual void closeTwainUI(); virtual void postMessage(); virtual void hideindicator(); virtual void showindicator(); virtual void getjsonstring(std::string& str); virtual void is_showindicator(bool enabel); virtual void setHandle(TwGlue twglue); virtual void Message(std::string title, std::string msg, int type); private: static int argc;// = 0; static char** argv;// = nullptr; static std::unique_ptr application; static std::unique_ptr scanDialog; json defaultjson; #ifdef WIN32 static std::unique_ptr guiBridge; HWND parent; bool modalfalg; #endif static std::unique_ptr guiIndicator; static TwGlue twglue; Func func{ nullptr,nullptr,nullptr,nullptr,nullptr,nullptr }; };