61 lines
1.5 KiB
C++
61 lines
1.5 KiB
C++
// SPDX-FileCopyrightText: 2021 Noah Davis <noahadvs@gmail.com>
|
|
// 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
|