File indexing completed on 2024-05-12 04:19:52

0001 // SPDX-FileCopyrightText: 2021 Noah Davis <noahadvs@gmail.com>
0002 // SPDX-License-Identifier: LGPL-2.1-or-later
0003 
0004 #ifndef GWENVIEW_ZOOMCOMBOBOX_P_H
0005 #define GWENVIEW_ZOOMCOMBOBOX_P_H
0006 
0007 #include "zoomcombobox.h"
0008 
0009 namespace Gwenview
0010 {
0011 class ZoomValidator : public QValidator
0012 {
0013     Q_OBJECT
0014     Q_PROPERTY(qreal minimum READ minimum WRITE setMinimum NOTIFY changed)
0015     Q_PROPERTY(qreal maximum READ maximum WRITE setMaximum NOTIFY changed)
0016 public:
0017     explicit ZoomValidator(qreal minimum, qreal maximum, ZoomComboBox *q, ZoomComboBoxPrivate *d, QWidget *parent = nullptr);
0018     ~ZoomValidator() override;
0019 
0020     qreal minimum() const;
0021     void setMinimum(const qreal minimum);
0022 
0023     qreal maximum() const;
0024     void setMaximum(const qreal maximum);
0025 
0026     QValidator::State validate(QString &input, int &pos) const override;
0027 
0028 private:
0029     qreal m_minimum;
0030     qreal m_maximum;
0031     ZoomComboBox *m_zoomComboBox;
0032     ZoomComboBoxPrivate *m_zoomComboBoxPrivate;
0033     Q_DISABLE_COPY(ZoomValidator)
0034 };
0035 
0036 class ZoomComboBoxPrivate
0037 {
0038     Q_DECLARE_PUBLIC(ZoomComboBox)
0039 
0040 public:
0041     ZoomComboBoxPrivate(ZoomComboBox *q);
0042 
0043     void setActions(QAction *zoomToFitAction, QAction *zoomToFillAction, QAction *actualSizeAction);
0044 
0045 public:
0046     ZoomComboBox *const q_ptr;
0047 
0048     QAction *mZoomToFitAction = nullptr;
0049     QAction *mZoomToFillAction = nullptr;
0050     QAction *mActualSizeAction = nullptr;
0051 
0052     qreal value = 1.0;
0053     ZoomValidator *validator = nullptr;
0054     int lastSelectedIndex = 0;
0055     qreal lastCustomZoomValue = 1.0;
0056 };
0057 
0058 }
0059 
0060 #endif // GWENVIEW_ZOOMCOMBOBOX_P_H