digiKam
Loading...
Searching...
No Matches
paniconwidget.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2004-08-22
7 * Description : a generic widget to display a panel to choose
8 * a rectangular image area.
9 *
10 * SPDX-FileCopyrightText: 1997 by Tim D. Gilman <tdgilman at best dot org>
11 * SPDX-FileCopyrightText: 1998-2001 by Mirko Boehm <mirko at kde dot org>
12 * SPDX-FileCopyrightText: 2007 by John Layt <john at layt dot net>
13 * SPDX-FileCopyrightText: 2004-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
14 *
15 * SPDX-License-Identifier: GPL-2.0-or-later
16 *
17 * ============================================================ */
18
19#pragma once
20
21// Qt includes
22
23#include <QWidget>
24#include <QRect>
25#include <QImage>
26#include <QPixmap>
27#include <QHideEvent>
28#include <QMouseEvent>
29#include <QTimerEvent>
30#include <QPaintEvent>
31#include <QFrame>
32
33// Local includes
34
35#include "digikam_export.h"
36#include "dimg.h"
37
38class QToolButton;
39
40namespace Digikam
41{
42
46class DIGIKAM_EXPORT PanIconFrame : public QFrame
47{
48 Q_OBJECT
49
50public:
51
52 explicit PanIconFrame(QWidget* const parent = nullptr);
53 ~PanIconFrame() override;
54
62 void setMainWidget(QWidget* const main);
63
67 void popup(const QPoint& pos);
68
72 int exec(const QPoint& pos);
73
77 int exec(int x, int y);
78
83 void resizeEvent(QResizeEvent* resize) override;
84
85Q_SIGNALS:
86
88
89protected:
90
94 void keyPressEvent(QKeyEvent* e) override;
95
96public Q_SLOTS:
97
102 void close(int r);
103
104private:
105
106 class Private;
107 friend class Private;
108 Private* const d = nullptr;
109
110 Q_DISABLE_COPY(PanIconFrame)
111};
112
113// ---------------------------------------------------------------------------------
114
115class DIGIKAM_EXPORT PanIconWidget : public QWidget
116{
117 Q_OBJECT
118
119public:
120
121 explicit PanIconWidget(QWidget* const parent = nullptr);
122 ~PanIconWidget() override;
123
124 static QToolButton* button();
125
126 void setImage(int previewWidth, int previewHeight, const QImage& fullOriginalImage);
127 void setImage(int previewWidth, int previewHeight, const DImg& fullOriginalImage);
128 void setImage(const QImage& scaledPreviewImage, const QSize& fullImageSize);
129
130 void setRegionSelection(const QRect& regionSelection);
131 QRect getRegionSelection() const;
132 void setCenterSelection();
133
134 void setCursorToLocalRegionSelectionCenter();
135 void setMouseFocus();
136
137Q_SIGNALS:
138
143 void signalSelectionMoved(const QRect& rect, bool targetDone);
144
146
148
149public Q_SLOTS:
150
151 void slotZoomFactorChanged(double);
152
153protected:
154
155 void showEvent(QShowEvent*) override;
156 void hideEvent(QHideEvent*) override;
157 void paintEvent(QPaintEvent*) override;
158 void mousePressEvent(QMouseEvent*) override;
159 void mouseReleaseEvent(QMouseEvent*) override;
160 void mouseMoveEvent(QMouseEvent*) override;
161
165 void regionSelectionMoved(bool targetDone);
166
167protected Q_SLOTS:
168
169 void slotFlickerTimer();
170
171private:
172
173 class Private;
174 Private* const d = nullptr;
175};
176
177} // namespace Digikam
int main(int argc, char *argv[])
Definition CMakeCCompilerId.c:877
Definition dimg.h:52
Definition paniconwidget.h:47
Definition paniconwidget.h:116
void signalSelectionMoved(const QRect &rect, bool targetDone)
Definition datefolderview.cpp:34