digiKam
Loading...
Searching...
No Matches
progressmanager.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 : 2012-01-13
7 * Description : progress manager
8 *
9 * SPDX-FileCopyrightText: 2007-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2012 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
11 * SPDX-FileCopyrightText: 2004 by Till Adam <adam at kde dot org>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19// Qt includes
20
21#include <QObject>
22#include <QString>
23#include <QMap>
24#include <QHash>
25#include <QPixmap>
26
27// Local includes
28
29#include "digikam_export.h"
30
31namespace Digikam
32{
33
34class DIGIKAM_EXPORT ProgressItem : public QObject
35{
36 Q_OBJECT
37
38public:
39
40 ProgressItem(ProgressItem* const parent,
41 const QString& id,
42 const QString& label,
43 const QString& status,
44 bool canBeCanceled,
45 bool hasThumb);
46 ~ProgressItem() override;
47
52 void setShowAtStart(bool showAtStart);
53
57 bool showAtStart() const;
58
63 const QString& id() const;
64
68 ProgressItem* parent() const;
69
73 const QString& label() const;
74
78 void setLabel(const QString& v);
79
83 const QString& status() const;
84
89 void setStatus(const QString& v);
90
94 bool canBeCanceled() const;
95
99 bool usesBusyIndicator() const;
100
106 void setUsesBusyIndicator(bool useBusyIndicator);
107
111 bool hasThumbnail() const;
112
116 void setThumbnail(const QIcon &icon);
117
121 unsigned int progress() const;
122
127 void setProgress(unsigned int v);
128
136 void setComplete();
137
142 void reset();
143
144 void cancel();
145 bool canceled() const;
146
147 // Often needed values for calculating progress.
148 void setTotalItems(unsigned int v);
149 void incTotalItems(unsigned int v = 1);
150 unsigned int totalItems() const;
151 bool setCompletedItems(unsigned int v);
152 bool incCompletedItems(unsigned int v = 1);
153 unsigned int completedItems() const;
154 bool totalCompleted() const;
155
159 void updateProgress();
160
166 bool advance(unsigned int v);
167
168 void addChild(ProgressItem* const kiddo);
169 void removeChild(ProgressItem* const kiddo);
170
171Q_SIGNALS:
172
178
184 void progressItemProgress(ProgressItem*, unsigned int);
185
193
205 void progressItemCanceledById(const QString& id);
206
213 void progressItemStatus(ProgressItem*, const QString&);
214
221 void progressItemLabel(ProgressItem*, const QString&);
222
231
237 void progressItemThumbnail(ProgressItem* item, const QPixmap& thumb);
238
239private:
240
241 class Private;
242 Private* const d = nullptr;
243};
244
245// --------------------------------------------------------------------------------------------
246
267class DIGIKAM_EXPORT ProgressManager : public QObject
268{
269 Q_OBJECT
270
271public:
272
276 bool isEmpty() const;
277
281 ProgressItem* findItembyId(const QString& id) const;
282
290 ProgressItem* singleItem() const;
291
295 static ProgressManager* instance();
296
303 QString getUniqueID();
304
316 static ProgressItem* createProgressItem(const QString& label,
317 const QString& status = QString(),
318 bool canBeCanceled = true,
319 bool hasThumb = false);
320
334 static ProgressItem* createProgressItem(ProgressItem* const parent,
335 const QString& id,
336 const QString& label,
337 const QString& status = QString(),
338 bool canBeCanceled = true,
339 bool hasThumb = false);
340
345 static ProgressItem* createProgressItem(const QString& parent,
346 const QString& id,
347 const QString& label,
348 const QString& status = QString(),
349 bool canBeCanceled = true,
350 bool hasThumb = false);
351
355 static ProgressItem* createProgressItem(const QString& id,
356 const QString& label,
357 const QString& status = QString(),
358 bool canBeCanceled = true,
359 bool hasThumb = false);
360
368 static bool addProgressItem(ProgressItem* const t, ProgressItem* const parent = nullptr);
369
374 static void emitShowProgressView();
375
376Q_SIGNALS:
377
382
386 void progressItemProgress(ProgressItem*, unsigned int);
387
392
397
401 void progressItemStatus(ProgressItem*, const QString&);
402
406 void progressItemLabel(ProgressItem*, const QString&);
407
412
416 void progressItemThumbnail(ProgressItem*, const QPixmap&);
417
423
425
426public Q_SLOTS:
427
433 void slotStandardCancelHandler(ProgressItem* item);
434
438 void slotAbortAll();
439
440private Q_SLOTS:
441
442 void slotTransactionCompleted(ProgressItem* item);
443 void slotTransactionCompletedDeferred(ProgressItem* item);
444 void slotTransactionViewIsEmpty();
445
446private:
447
448 // Disable
450 ProgressManager(QObject*);
452 ~ProgressManager() override;
453
454 void emitShowProgressViewImpl();
455
456 virtual ProgressItem* createProgressItemImpl(ProgressItem* const parent,
457 const QString& id,
458 const QString& label,
459 const QString& status,
460 bool cancellable,
461 bool hasThumb);
462
463 virtual ProgressItem* createProgressItemImpl(const QString& parent,
464 const QString& id,
465 const QString& label,
466 const QString& status,
467 bool cancellable,
468 bool hasThumb);
469
470 virtual void addProgressItemImpl(ProgressItem* const t, ProgressItem* const parent);
471
472private:
473
474 class Private;
475 Private* const d = nullptr;
476
477 friend class ProgressManagerCreator;
478};
479
480} // namespace Digikam
Definition progressmanager.h:35
void progressItemUsesBusyIndicator(ProgressItem *item, bool value)
void progressItemCanceled(ProgressItem *)
void progressItemStatus(ProgressItem *, const QString &)
void progressItemCanceledById(const QString &id)
void progressItemAdded(ProgressItem *)
void progressItemThumbnail(ProgressItem *item, const QPixmap &thumb)
void progressItemCompleted(ProgressItem *)
void progressItemProgress(ProgressItem *, unsigned int)
void progressItemLabel(ProgressItem *, const QString &)
Definition progressmanager.h:268
void progressItemCompleted(ProgressItem *)
void progressItemStatus(ProgressItem *, const QString &)
void progressItemThumbnail(ProgressItem *, const QPixmap &)
void completeTransactionDeferred(ProgressItem *item)
void progressItemProgress(ProgressItem *, unsigned int)
void progressItemUsesBusyIndicator(ProgressItem *, bool)
void progressItemAdded(ProgressItem *)
void progressItemCanceled(ProgressItem *)
void progressItemLabel(ProgressItem *, const QString &)
qulonglong value
Definition itemviewutilities.cpp:585
Definition datefolderview.cpp:34