digiKam
Loading...
Searching...
No Matches
previewlist.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 : 2010-02-13
7 * Description : a list of selectable options with preview
8 * effects as thumbnails.
9 *
10 * SPDX-FileCopyrightText: 2010-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Qt includes
19
20#include <QObject>
21#include <QPixmap>
22#include <QListWidget>
23#include <QListWidgetItem>
24
25// Local includes
26
27#include "digikam_export.h"
28
29namespace Digikam
30{
31
32class DImgThreadedFilter;
33
34class DIGIKAM_EXPORT PreviewThreadWrapper : public QObject
35{
36 Q_OBJECT
37
38public:
39
40 explicit PreviewThreadWrapper(QObject* const parent = nullptr);
41 ~PreviewThreadWrapper() override;
42
43 void registerFilter(int id, DImgThreadedFilter* const filter);
44
45 void startFilters();
46 void stopFilters();
47
48Q_SIGNALS:
49
51 void signalFilterFinished(int, const QPixmap&);
52
53private Q_SLOTS:
54
55 void slotFilterStarted();
56 void slotFilterFinished(bool success);
57 void slotFilterProgress(int progress);
58
59private:
60
61 class Private;
62 Private* const d = nullptr;
63};
64
65// -------------------------------------------------------------------
66
67class DIGIKAM_EXPORT PreviewListItem : public QListWidgetItem
68{
69
70public:
71
72 explicit PreviewListItem(QListWidget* const parent = nullptr);
73 ~PreviewListItem() override;
74
75 void setPixmap(const QPixmap& pix);
76
77 void setId(int id);
78 int id() const;
79
80 void setBusy(bool b);
81 bool isBusy() const;
82
83private:
84
85 class Private;
86 Private* const d = nullptr;
87
88private:
89
90 Q_DISABLE_COPY(PreviewListItem)
91};
92
93// -------------------------------------------------------------------
94
95class DIGIKAM_EXPORT PreviewList : public QListWidget
96{
97 Q_OBJECT
98
99public:
100
101 explicit PreviewList(QWidget* const parent = nullptr);
102 ~PreviewList() override;
103
104 PreviewListItem* addItem(DImgThreadedFilter* const filter, const QString& txt, int id);
105
106 void setCurrentId(int id);
107 int currentId() const;
108
109 void startFilters();
110 void stopFilters();
111
112private Q_SLOTS:
113
114 void slotProgressTimerDone();
115 void slotFilterStarted(int);
116 void slotFilterFinished(int, const QPixmap&);
117
118private:
119
120 PreviewListItem* findItem(int id) const;
121
122private:
123
124 class Private;
125 Private* const d = nullptr;
126};
127
128} // namespace Digikam
Definition dimgthreadedfilter.h:31
Definition previewlist.h:68
Definition previewlist.h:96
Definition previewlist.h:35
void signalFilterFinished(int, const QPixmap &)
Definition datefolderview.cpp:34