61 lines
1.5 KiB
C
Raw Normal View History

2024-06-29 11:52:32 +06:00
// 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