twain3/ui/ScannerUI.h

69 lines
1.9 KiB
C++

#pragma once
#include <memory>
#include <functional>
#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;
virtual void setindicatortext(std::string str) = 0;
};
typedef std::shared_ptr<IScannerUI> 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);
virtual void setindicatortext(std::string str);
private:
static int argc;// = 0;
static char** argv;// = nullptr;
static std::unique_ptr<QApplication> application;
static std::unique_ptr<ScanSettingDialog> scanDialog;
json defaultjson;
#ifdef WIN32
static std::unique_ptr<QWidget> guiBridge;
HWND parent;
bool modalfalg;
#endif
static std::unique_ptr<QWidget> guiIndicator;
static TwGlue twglue;
Func func{ nullptr,nullptr,nullptr,nullptr,nullptr,nullptr };
};