1 /* ============================================================ 2 * 3 * SPDX-FileCopyrightText: 2021 Alexander Stippich <a.stippich@gmx.net> 4 * 5 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 6 * 7 * ============================================================ */ 8 9 #ifndef KSANE_PAGESIZE_OPTION_H 10 #define KSANE_PAGESIZE_OPTION_H 11 12 #include <QList> 13 14 #include "ksanebaseoption.h" 15 16 namespace KSaneIface 17 { 18 19 static const QString PageSizeOptionName = QStringLiteral("KSane::PageSize"); 20 21 class KSanePageSizeOption : public KSaneBaseOption 22 { 23 Q_OBJECT 24 25 public: 26 KSanePageSizeOption(KSaneBaseOption *m_optionTopLeftX, KSaneBaseOption *m_optionTopLeftY, 27 KSaneBaseOption *m_optionBottomRightX, KSaneBaseOption *m_optionBottomRightY, 28 KSaneBaseOption *m_optionResolution); 29 30 QVariant value() const override; 31 QString valueAsString() const override; 32 33 KSaneOption::KSaneOptionState state() const override; 34 QString name() const override; 35 QString title() const override; 36 QString description() const override; 37 QVariantList valueList() const override; 38 39 public Q_SLOTS: 40 bool setValue(const QVariant &value) override; 41 42 private Q_SLOTS: 43 void optionTopLeftXUpdated(); 44 void optionTopLeftYUpdated(); 45 void optionBottomRightXUpdated(); 46 void optionBottomRightYUpdated(); 47 48 private: 49 double ensureMilliMeter(KSaneBaseOption *option, double value); 50 51 KSaneBaseOption *m_optionTopLeftX; 52 KSaneBaseOption *m_optionTopLeftY; 53 KSaneBaseOption *m_optionBottomRightX; 54 KSaneBaseOption *m_optionBottomRightY; 55 KSaneBaseOption *m_optionResolution; 56 int m_currentIndex = -1; 57 KSaneOption::KSaneOptionState m_state = KSaneOption::StateDisabled; 58 QVariantList m_availableSizesListNames; 59 QList<QSizeF> m_availableSizesList; 60 }; 61 62 } // NameSpace KSaneIface 63 64 #endif // KSANE_PAGESIZE_OPTION_H 65