فهرست منبع

User select scanner test

Alexey Edelev 4 سال پیش
والد
کامیت
32cfb0b584
5فایلهای تغییر یافته به همراه31 افزوده شده و 17 حذف شده
  1. 16 14
      scanengine.cpp
  2. 9 0
      src/qtwaincontext.cpp
  3. 1 0
      src/qtwaincontext_p.h
  4. 4 2
      src/qtwainscanner_p.cpp
  5. 1 1
      src/qtwainscannermanager.cpp

+ 16 - 14
scanengine.cpp

@@ -27,25 +27,26 @@
 
 #include "qtwainscannermanager.h"
 #include "qtwainscanner.h"
+#include "qtwaincontext_p.h"
 
 #include <QBuffer>
 #include <QDebug>
 
 ScanEngine::ScanEngine() : m_scanner(nullptr)
 {
-    QList<QString> scanners = QtTWAIN::QTWAINScannerManager::scannerList();
-    qDebug() << scanners;
-    if (scanners.size() > 0) {
-        m_scanner = QtTWAIN::QTWAINScannerManager::acquireScanner(scanners.at(0));
-        QObject::connect(m_scanner, &QtTWAIN::QTWAINScanner::imageReady, this, [this](const QImage &img) {
-            QByteArray imgData;
-            QBuffer buff(&imgData);
-            buff.open(QIODevice::WriteOnly);
-            img.save(&buff, "PNG");
-            m_scannedImage = imgData.toBase64();
-            scannedImageChanged();
-        });
-    }
+//    QList<QString> scanners = QtTWAIN::QTWAINScannerManager::scannerList();
+//    qDebug() << scanners;
+//    if (scanners.size() > 0) {
+//        m_scanner = QtTWAIN::QTWAINScannerManager::acquireScanner(scanners.at(0));
+//        QObject::connect(m_scanner, &QtTWAIN::QTWAINScanner::imageReady, this, [this](const QImage &img) {
+//            QByteArray imgData;
+//            QBuffer buff(&imgData);
+//            buff.open(QIODevice::WriteOnly);
+//            img.save(&buff, "PNG");
+//            m_scannedImage = imgData.toBase64();
+//            scannedImageChanged();
+//        });
+//    }
 }
 
 ScanEngine::~ScanEngine() {
@@ -65,5 +66,6 @@ QString ScanEngine::scannerName() const
 }
 
 void ScanEngine::scan() {
-    m_scanner->scan();
+    QtTWAIN::QTWAINContext::instance()->userSelectScanner();
+//    m_scanner->scan();
 }

+ 9 - 0
src/qtwaincontext.cpp

@@ -124,6 +124,15 @@ void QTWAINContext::fetchScannerList()
     } while(result == TWRC_SUCCESS);
 }
 
+void QTWAINContext::userSelectScanner()
+{
+    TW_IDENTITY dataSource;
+    if (TWRC_SUCCESS != m_dsm->entry(&m_appIdentity, nullptr, DG_CONTROL, DAT_IDENTITY, MSG_USERSELECT, &dataSource)) {
+        updateStatus();
+        qDebug() << "Unable to get scanner: " << m_status.ConditionCode;
+    }
+}
+
 bool QTWAINContext::openDS(TW_IDENTITY *dataSource)
 {
     if (TWRC_SUCCESS != m_dsm->entry(&m_appIdentity, nullptr, DG_CONTROL, DAT_IDENTITY, MSG_OPENDS, dataSource)) {

+ 1 - 0
src/qtwaincontext_p.h

@@ -51,6 +51,7 @@ public:
     void openDSM(const WId winId);
     void closeDSM();
     void fetchScannerList();
+    void userSelectScanner();
 
     QList<QString> scannerList() const {
         return m_scannerList.keys();

+ 4 - 2
src/qtwainscanner_p.cpp

@@ -91,9 +91,11 @@ bool QTWAINScannerPrivate::open()
         m_filter.reset(new QTWAINEventFilter(this));
         m_isOpen = true; //TODO: probably might be handled by state
         status = QtTWAIN::Ready; //TODO: call status changed notification
-    } else {
-        status = QtTWAIN::Error;
+        return true;
     }
+
+    status = QtTWAIN::Error;
+    return false;
 }
 
 void QTWAINScannerPrivate::close()

+ 1 - 1
src/qtwainscannermanager.cpp

@@ -35,7 +35,7 @@ void QTWAINScannerManager::init(WId winId)
 {
     QTWAINContext *ctx = QTWAINContext::instance();
     ctx->openDSM(winId);
-    ctx->fetchScannerList();
+//    ctx->fetchScannerList();
 }
 
 QList<QString> QTWAINScannerManager::scannerList()