File indexing completed on 2024-05-19 04:07:51
0001 /* 0002 SPDX-FileCopyrightText: 2010 Johannes Loehnert <loehnert.kde@gmx.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef PALAPELI_PUZZLEPREVIEW_H 0008 #define PALAPELI_PUZZLEPREVIEW_H 0009 0010 #include <QGraphicsView> 0011 #include <QTimer> 0012 0013 namespace Palapeli 0014 { 0015 struct PuzzleMetadata; 0016 0017 class PuzzlePreview : public QGraphicsView 0018 { 0019 Q_OBJECT 0020 public: 0021 explicit PuzzlePreview(QWidget* parent); 0022 0023 void setImage(const QImage &image); 0024 void loadImageFrom(const Palapeli::PuzzleMetadata& md); 0025 0026 public Q_SLOTS: 0027 // toggles visibility state AND updates config with the new state. 0028 void toggleVisible(); 0029 0030 Q_SIGNALS: 0031 void closing(); 0032 0033 protected: 0034 void mouseMoveEvent(QMouseEvent* event) override; 0035 void enterEvent(QEnterEvent* event) override; 0036 void leaveEvent(QEvent* event) override; 0037 void resizeEvent(QResizeEvent* event) override; 0038 void moveEvent(QMoveEvent *event) override; 0039 void closeEvent(QCloseEvent* event) override; 0040 void updateViewport(); 0041 0042 private Q_SLOTS: 0043 void writeConfigIfGeometryChanged(); 0044 0045 private: 0046 // used to save geometry after move/resize, to avoid writing config file each time the cursor moves a pixel. 0047 QTimer* m_settingsSaveTimer; 0048 bool m_geometryChanged; 0049 0050 qreal m_hoverZoom; 0051 bool m_isZoomed; 0052 QPoint m_mousePos; 0053 }; 0054 } 0055 0056 #endif // PALAPELI_PUZZLEPREVIEW_H