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