File indexing completed on 2025-06-08 07:27:57
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Alexander Stippich <a.stippich@gmx.net> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #ifndef KSANE_PAGESIZE_OPTION_H 0008 #define KSANE_PAGESIZE_OPTION_H 0009 0010 #include <QList> 0011 0012 #include "baseoption.h" 0013 0014 namespace KSaneCore 0015 { 0016 0017 static const QString PageSizeOptionName = QStringLiteral("KSane::PageSize"); 0018 0019 class PageSizeOption : public BaseOption 0020 { 0021 Q_OBJECT 0022 0023 public: 0024 PageSizeOption(BaseOption *m_optionTopLeftX, 0025 BaseOption *m_optionTopLeftY, 0026 BaseOption *m_optionBottomRightX, 0027 BaseOption *m_optionBottomRightY, 0028 BaseOption *m_optionResolution); 0029 0030 QVariant value() const override; 0031 QString valueAsString() const override; 0032 0033 Option::OptionState state() const override; 0034 QString name() const override; 0035 QString title() const override; 0036 QString description() const override; 0037 QVariantList valueList() const override; 0038 0039 public Q_SLOTS: 0040 bool setValue(const QVariant &value) override; 0041 0042 private Q_SLOTS: 0043 void optionTopLeftXUpdated(); 0044 void optionTopLeftYUpdated(); 0045 void optionBottomRightXUpdated(); 0046 void optionBottomRightYUpdated(); 0047 0048 private: 0049 double ensureMilliMeter(BaseOption *option, double value); 0050 0051 BaseOption *m_optionTopLeftX; 0052 BaseOption *m_optionTopLeftY; 0053 BaseOption *m_optionBottomRightX; 0054 BaseOption *m_optionBottomRightY; 0055 BaseOption *m_optionResolution; 0056 int m_currentIndex = -1; 0057 Option::OptionState m_state = Option::StateDisabled; 0058 QVariantList m_availableSizesListNames; 0059 QList<QSizeF> m_availableSizesList; 0060 }; 0061 0062 } // namespace KSaneCore 0063 0064 #endif // KSANE_PAGESIZE_OPTION_H