// SPDX-FileCopyrightText: 2021 Noah Davis // SPDX-License-Identifier: LGPL-2.1-or-later #ifndef GWENVIEW_ZOOMCOMBOBOX_P_H #define GWENVIEW_ZOOMCOMBOBOX_P_H #include "zoomcombobox.h" namespace Gwenview { class ZoomValidator : public QValidator { Q_OBJECT Q_PROPERTY(qreal minimum READ minimum WRITE setMinimum NOTIFY changed) Q_PROPERTY(qreal maximum READ maximum WRITE setMaximum NOTIFY changed) public: explicit ZoomValidator(qreal minimum, qreal maximum, ZoomComboBox *q, ZoomComboBoxPrivate *d, QWidget *parent = nullptr); ~ZoomValidator() override; qreal minimum() const; void setMinimum(const qreal minimum); qreal maximum() const; void setMaximum(const qreal maximum); QValidator::State validate(QString &input, int &pos) const override; private: qreal m_minimum; qreal m_maximum; ZoomComboBox *m_zoomComboBox; ZoomComboBoxPrivate *m_zoomComboBoxPrivate; Q_DISABLE_COPY(ZoomValidator) }; class ZoomComboBoxPrivate { Q_DECLARE_PUBLIC(ZoomComboBox) public: ZoomComboBoxPrivate(ZoomComboBox *q); void setActions(QAction *zoomToFitAction, QAction *zoomToFillAction, QAction *actualSizeAction); public: ZoomComboBox *const q_ptr; QAction *mZoomToFitAction = nullptr; QAction *mZoomToFillAction = nullptr; QAction *mActualSizeAction = nullptr; qreal value = 1.0; ZoomValidator *validator = nullptr; int lastSelectedIndex = 0; qreal lastCustomZoomValue = 1.0; }; } #endif // GWENVIEW_ZOOMCOMBOBOX_P_H