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