digiKam
Loading...
Searching...
No Matches
imagedialog.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 : 2008-03-13
7 * Description : Image files selection dialog.
8 *
9 * SPDX-FileCopyrightText: 2008-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QUrl>
20#include <QScrollArea>
21#include <QFileIconProvider>
22#include <QIcon>
23#include <QImage>
24#include <QModelIndex>
25#include <QFileInfo>
26#include <QAbstractItemView>
27
28// Local includes
29
30#include "digikam_export.h"
31#include "ditemtooltip.h"
32
33namespace Digikam
34{
35
36class LoadingDescription;
37class ThumbnailImageCatcher;
38
39class DIGIKAM_EXPORT ImageDialogPreview : public QScrollArea
40{
41 Q_OBJECT
42
43public:
44
45 explicit ImageDialogPreview(QWidget* const parent = nullptr);
46 ~ImageDialogPreview() override;
47
48 QSize sizeHint() const override;
49
50 static QString identifyItem(const QUrl& url, const QImage& preview = QImage());
51
52public Q_SLOTS:
53
54 void slotShowPreview(const QUrl& url);
55
56private Q_SLOTS:
57
58 void showPreview();
59 void slotClearPreview();
60 void slotThumbnail(const LoadingDescription& desc, const QPixmap& pix);
61
62private:
63
64 void resizeEvent(QResizeEvent* e) override;
65
66private:
67
68 class Private;
69 Private* const d = nullptr;
70};
71
72// ------------------------------------------------------------------------
73
75{
76 Q_OBJECT
77
78public:
79
80 explicit ImageDialogToolTip();
81 ~ImageDialogToolTip() override;
82
83 void setData(QAbstractItemView* const view,
84 const QModelIndex& index,
85 const QUrl& url);
86
87private:
88
89 QRect repositionRect() override;
90 QString tipContents() override;
91
92 // Disable
93 explicit ImageDialogToolTip(QWidget*);
94
95private:
96
97 class Private;
98 Private* const d = nullptr;
99};
100
101// ------------------------------------------------------------------------
102
103class DIGIKAM_EXPORT ImageDialogIconProvider : public QObject,
104 public QFileIconProvider
105{
106 Q_OBJECT
107
108public:
109
110 explicit ImageDialogIconProvider();
111 ~ImageDialogIconProvider() override;
112
113#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
114
115 QIcon icon(QAbstractFileIconProvider::IconType type) const override;
116
117#else
118
119 QIcon icon(QFileIconProvider::IconType type) const override;
120
121#endif
122
123 QIcon icon(const QFileInfo& info) const override;
124
125Q_SIGNALS:
126
128
129private Q_SLOTS:
130
131 void slotThumbnailLoaded(const LoadingDescription& desc, const QImage& img);
132
133private:
134
135 // Disable
136 explicit ImageDialogIconProvider(QObject*);
137
138private:
139
140 class Private;
141 Private* const d = nullptr;
142};
143
144// ------------------------------------------------------------------------
145
146class DIGIKAM_EXPORT ImageDialog : public QObject
147{
148 Q_OBJECT
149
150public:
151
152 explicit ImageDialog(QWidget* const parent,
153 const QUrl& url,
154 bool singleSelect = false,
155 const QString& caption = QString());
156 ~ImageDialog();
157
158 QUrl url() const;
159 QList<QUrl> urls() const;
160 QStringList fileFormats() const;
161
162 void setEnableToolTips(bool val);
163
164 static QUrl getImageURL(QWidget* const parent,
165 const QUrl& url,
166 const QString& caption = QString());
167
168 static QList<QUrl> getImageURLs(QWidget* const parent,
169 const QUrl& url,
170 const QString& caption = QString());
171
172private:
173
174 bool eventFilter(QObject* obj, QEvent* ev);
175
176 void hideToolTip();
177 bool acceptToolTip(const QUrl& url) const;
178
179 // Disable
180 ImageDialog(const ImageDialog&) = delete;
181 ImageDialog& operator=(const ImageDialog&) = delete;
182
183private Q_SLOTS:
184
185 void slotToolTip();
186
187private:
188
189 class Private;
190 Private* const d = nullptr;
191};
192
193} // namespace Digikam
Definition ditemtooltip.h:65
Definition imagedialog.h:105
Definition imagedialog.h:40
Definition imagedialog.h:75
void setData(QAbstractItemView *const view, const QModelIndex &index, const QUrl &url)
Definition imagedialog_tooltip.cpp:56
~ImageDialogToolTip() override
Definition imagedialog_tooltip.cpp:46
ImageDialogToolTip()
Definition imagedialog_tooltip.cpp:36
Definition imagedialog_p.h:58
Definition imagedialog.h:147
Definition loadingdescription.h:35
Definition datefolderview.cpp:34