File indexing completed on 2024-04-28 12:19:09
0001 /* 0002 * SPDX-FileCopyrightText: 2009, 2017 Kare Sars <kare dot sars at iki dot fi> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "ksanewidget.h" 0008 0009 // Qt includes 0010 #include <QMap> 0011 #include <QHBoxLayout> 0012 #include <QTimer> 0013 #include <QDebug> 0014 0015 // KDE includes 0016 #include <KLocalizedString> 0017 #include <QPushButton> 0018 0019 // Local includes 0020 #include "twainiface.h" 0021 0022 namespace KSaneIface 0023 { 0024 0025 KSaneWidget::KSaneWidget(QWidget *parent) 0026 : QWidget(parent), d(new KSaneWidgetPrivate) 0027 { 0028 QPushButton *openDialog = new QPushButton; 0029 openDialog->setText(i18n("Open scan dialog")); 0030 QHBoxLayout *lay = new QHBoxLayout; 0031 lay->addWidget(openDialog); 0032 setLayout(lay); 0033 0034 connect(openDialog, &QPushButton::clicked, d, &KSaneWidgetPrivate::ReOpenDialog); 0035 0036 // Forward signals from the private class 0037 //connect(d, SIGNAL(scanProgress(int)), this, SIGNAL(scanProgress(int))); 0038 connect(d, &KSaneWidgetPrivate::ImageReady, this, &KSaneWidget::imageReady); 0039 connect(d, &KSaneWidgetPrivate::qImageReady, this, &KSaneWidget::scannedImageReady); 0040 //connect(d, SIGNAL(scanDone(int,QString)), this, SIGNAL(scanDone(int,QString))); 0041 0042 } 0043 0044 KSaneWidget::~KSaneWidget() 0045 { 0046 delete d; 0047 } 0048 0049 QString KSaneWidget::selectDevice(QWidget *parent) 0050 { 0051 //qDebug() << "KSaneWidget::selectDevice"; 0052 return d->SelectSource(); 0053 } 0054 0055 bool KSaneWidget::openDevice(const QString &device_name) 0056 { 0057 //qDebug() << "KSaneWidget::openDevice" << device_name; 0058 if (!d->OpenSource(device_name)) { 0059 return false; 0060 } 0061 QTimer::singleShot(0, d, &KSaneWidgetPrivate::OpenDialog); 0062 0063 return true; 0064 } 0065 0066 bool KSaneWidget::closeDevice() 0067 { 0068 //qDebug() << "KSaneWidget::closeDevice"; 0069 d->CloseDSM(); 0070 return true; 0071 } 0072 0073 QImage KSaneWidget::toQImage(const QByteArray &data, 0074 int width, 0075 int height, 0076 int bytes_per_line, 0077 ImageFormat format) 0078 { 0079 return toQImageSilent(data, 0080 width, 0081 height, 0082 bytes_per_line, 0083 format); 0084 } 0085 0086 QImage KSaneWidget::toQImageSilent(const QByteArray &data, 0087 int width, 0088 int height, 0089 int bytes_per_line, 0090 ImageFormat format) 0091 { 0092 return KSaneWidget::toQImageSilent(data, 0093 width, 0094 height, 0095 bytes_per_line, 0096 (int) currentDPI(), 0097 format); 0098 } 0099 0100 QImage KSaneWidget::toQImageSilent(const QByteArray &data, 0101 int width, 0102 int height, 0103 int bytes_per_line, 0104 int dpi, 0105 ImageFormat format) 0106 { 0107 QImage img = QImage::fromData(data, "BMP"); 0108 return img; 0109 } 0110 0111 void KSaneWidget::scanFinal() 0112 { 0113 } 0114 0115 void KSaneWidget::startPreviewScan() 0116 { 0117 } 0118 0119 void KSaneWidget::scanCancel() 0120 { 0121 Q_EMIT scanProgress(0); 0122 } 0123 0124 // stubbed functions that will not get an implementation any time soon. 0125 QString KSaneWidget::deviceName() const 0126 { 0127 return QString(); 0128 } 0129 QString KSaneWidget::deviceVendor() const 0130 { 0131 return QString(); 0132 } 0133 QString KSaneWidget::deviceModel() const 0134 { 0135 return QString(); 0136 } 0137 QString KSaneWidget::vendor() const 0138 { 0139 return QString(); 0140 } 0141 QString KSaneWidget::make() const 0142 { 0143 return QString(); 0144 } 0145 QString KSaneWidget::model() const 0146 { 0147 return QString(); 0148 } 0149 void KSaneWidget::getOptVals(QMap <QString, QString> &opts) 0150 { 0151 opts.clear(); 0152 } 0153 bool KSaneWidget::getOptVal(const QString &optname, QString &value) 0154 { 0155 return false; 0156 } 0157 int KSaneWidget::setOptVals(const QMap <QString, QString> &opts) 0158 { 0159 return 0; 0160 } 0161 bool KSaneWidget::setOptVal(const QString &option, const QString &value) 0162 { 0163 return false; 0164 } 0165 void KSaneWidget::setScanButtonText(const QString &scanLabel) {} 0166 void KSaneWidget::setPreviewButtonText(const QString &previewLabel) {} 0167 void KSaneWidget::enableAutoSelect(bool enable) {} 0168 float KSaneWidget::currentDPI() 0169 { 0170 return 0.0; 0171 } 0172 void KSaneWidget::setPreviewResolution(float dpi) 0173 { 0174 Q_UNUSED(dpi); 0175 } 0176 void KSaneWidget::setSelection(QPointF lefttop, QPointF rightbottom) 0177 { 0178 Q_UNUSED(lefttop); 0179 Q_UNUSED(rightbottom); 0180 } 0181 void KSaneWidget::setOptionsCollapsed(bool) {} 0182 void KSaneWidget::setScanButtonHidden(bool) {} 0183 void KSaneWidget::initGetDeviceList() const {} 0184 } // NameSpace KSaneIface