1 /* ============================================================ 2 * 3 * SPDX-FileCopyrightText: 2009 Kare Sars <kare dot sars at iki dot fi> 4 * SPDX-FileCopyrightText: 2014 Gregor Mitsch : port to KDE5 frameworks 5 * 6 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 7 * 8 * ============================================================ */ 9 10 #ifndef KSANE_BASE_OPTION_H 11 #define KSANE_BASE_OPTION_H 12 13 // Qt includes 14 #include <QObject> 15 16 //KDE includes 17 18 #include <klocalizedstring.h> 19 20 // Sane includes 21 extern "C" 22 { 23 #include <sane/sane.h> 24 #include <sane/saneopts.h> 25 } 26 27 #include "../ksaneoption.h" 28 29 #define SANE_TRANSLATION_DOMAIN "sane-backends" 30 31 namespace KSaneIface 32 { 33 sane_i18n(const char * text)34inline QString sane_i18n(const char *text) { 35 return i18nd(SANE_TRANSLATION_DOMAIN, text); 36 } 37 38 39 class KSaneBaseOption : public QObject 40 { 41 Q_OBJECT 42 43 public: 44 45 KSaneBaseOption(); 46 KSaneBaseOption(const SANE_Handle handle, const int index); 47 ~KSaneBaseOption() override; 48 static KSaneOption::KSaneOptionType optionType(const SANE_Option_Descriptor *optDesc); 49 50 bool needsPolling() const; 51 virtual void readOption(); 52 virtual void readValue(); 53 54 55 virtual QString name() const; 56 virtual QString title() const; 57 virtual QString description() const; 58 virtual KSaneOption::KSaneOptionType type() const; 59 virtual KSaneOption::KSaneOptionState state() const; 60 virtual QVariant minimumValue() const; 61 virtual QVariant maximumValue() const; 62 virtual QVariant stepValue() const; 63 virtual QVariant value() const; 64 virtual QVariantList valueList() const; 65 virtual QVariantList internalValueList() const; 66 virtual KSaneOption::KSaneOptionUnit valueUnit() const; 67 virtual int valueSize() const; 68 virtual QString valueAsString() const; 69 70 bool storeCurrentData(); 71 bool restoreSavedData(); 72 73 Q_SIGNALS: 74 void optionsNeedReload(); 75 void valuesNeedReload(); 76 void optionReloaded(); 77 void valueChanged(const QVariant &value); 78 79 public Q_SLOTS: 80 81 virtual bool setValue(const QVariant &value); 82 83 protected: 84 85 static SANE_Word toSANE_Word(unsigned char *data); 86 static void fromSANE_Word(unsigned char *data, SANE_Word from); 87 bool writeData(void *data); 88 89 SANE_Handle m_handle = nullptr; 90 int m_index = -1; 91 const SANE_Option_Descriptor *m_optDesc = nullptr; ///< This pointer is provided by sane 92 unsigned char *m_data= nullptr; 93 KSaneOption::KSaneOptionType m_optionType = KSaneOption::TypeDetectFail; 94 }; 95 96 } // NameSpace KSaneIface 97 98 #endif // KSANE_BASE_OPTION_H 99 100