File indexing completed on 2024-05-12 13:04:45
0001 /* 0002 * This file is part of the KDE project 0003 * SPDX-FileCopyrightText: 2013 Arjen Hiemstra <ahiemstra@heimr.nl> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef CQCANVASCONTROLLERITEM_H 0009 #define CQCANVASCONTROLLERITEM_H 0010 0011 #include <QDeclarativeItem> 0012 0013 class CQCanvasControllerItem : public QDeclarativeItem 0014 { 0015 Q_OBJECT 0016 Q_PROPERTY(QDeclarativeItem* canvas READ canvas WRITE setCanvas NOTIFY canvasChanged) 0017 Q_PROPERTY(QDeclarativeItem* flickable READ flickable WRITE setFlickable NOTIFY flickableChanged) 0018 Q_PROPERTY(QSize documentSize READ documentSize NOTIFY documentSizeChanged) 0019 Q_PROPERTY(qreal zoom READ zoom WRITE setZoom NOTIFY zoomChanged) 0020 Q_PROPERTY(qreal minimumZoom READ minimumZoom WRITE setMinimumZoom NOTIFY minimumZoomChanged) 0021 Q_PROPERTY(qreal maximumZoom READ maximumZoom WRITE setMaximumZoom NOTIFY maximumZoomChanged) 0022 public: 0023 explicit CQCanvasControllerItem(QDeclarativeItem* parent = 0); 0024 ~CQCanvasControllerItem(); 0025 0026 void paint(QPainter* painter, const QStyleOptionGraphicsItem*, QWidget* ); 0027 0028 QDeclarativeItem* canvas() const; 0029 void setCanvas(QDeclarativeItem* canvas); 0030 0031 QDeclarativeItem* flickable() const; 0032 void setFlickable(QDeclarativeItem* item); 0033 0034 QSize documentSize() const; 0035 0036 qreal zoom() const; 0037 void setZoom(qreal newZoom); 0038 /** 0039 * Zoom to fit page, but without changing the mode. This is used for 0040 * reader mode in Calligra Gemini. 0041 */ 0042 Q_INVOKABLE void zoomToPage(); 0043 0044 qreal minimumZoom() const; 0045 void setMinimumZoom(qreal newZoom); 0046 0047 qreal maximumZoom() const; 0048 void setMaximumZoom(qreal newZoom); 0049 0050 public Q_SLOTS: 0051 void beginZoomGesture(); 0052 void endZoomGesture(); 0053 0054 void zoomBy(qreal amount, const QPointF& center = QPointF()); 0055 0056 void fitToWidth(qreal width); 0057 0058 void returnToBounds(); 0059 0060 Q_SIGNALS: 0061 void canvasChanged(); 0062 void flickableChanged(); 0063 void documentSizeChanged(); 0064 void zoomChanged(); 0065 void minimumZoomChanged(); 0066 void maximumZoomChanged(); 0067 void movingFastChanged(); 0068 0069 protected: 0070 virtual void geometryChanged(const QRectF& newGeometry, const QRectF& oldGeometry); 0071 virtual QVariant itemChange(GraphicsItemChange change, const QVariant& value); 0072 0073 private Q_SLOTS: 0074 void updateDocumentSize(const QSize& size); 0075 void updateDocumentPosition(const QPoint& pos); 0076 void canvasControllerChanged(); 0077 0078 private: 0079 class Private; 0080 Private * const d; 0081 }; 0082 0083 #endif // CQCANVASCONTROLLERITEM_H