File indexing completed on 2024-06-02 04:15:20
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2012-01-13 0007 * Description : progress manager 0008 * 0009 * SPDX-FileCopyrightText: 2007-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0010 * SPDX-FileCopyrightText: 2012 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de> 0011 * SPDX-FileCopyrightText: 2004 by Till Adam <adam at kde dot org> 0012 * 0013 * SPDX-License-Identifier: GPL-2.0-or-later 0014 * 0015 * ============================================================ */ 0016 0017 #ifndef DIGIKAM_PROGRESS_VIEW_H 0018 #define DIGIKAM_PROGRESS_VIEW_H 0019 0020 // Qt includes 0021 0022 #include <QScrollArea> 0023 0024 // Local includes 0025 0026 #include "overlaywidget.h" 0027 #include "digikam_export.h" 0028 0029 namespace Digikam 0030 { 0031 class ProgressItem; 0032 0033 class TransactionItem : public DVBox 0034 { 0035 Q_OBJECT 0036 0037 public: 0038 0039 explicit TransactionItem(QWidget* const parent, ProgressItem* const item, bool first); 0040 ~TransactionItem() override; 0041 0042 void hideHLine(); 0043 0044 void setProgress(int progress); 0045 void setLabel(const QString&); 0046 void setThumbnail(const QPixmap&); 0047 0048 // NOTE: the given text is interpreted as RichText, so you might need to 0049 // use .toHtmlEscaped() it before passing 0050 void setStatus(const QString&); 0051 0052 void setTotalSteps( int totalSteps ); 0053 0054 ProgressItem* item() const; 0055 0056 void addSubTransaction(ProgressItem* const item); 0057 0058 // The progressitem is deleted immediately, we take 5s to go out, 0059 // so better not use mItem during this time. 0060 void setItemComplete(); 0061 0062 public Q_SLOTS: 0063 0064 void slotItemCanceled(); 0065 0066 private: 0067 0068 class Private; 0069 Private* const d; 0070 }; 0071 0072 // -------------------------------------------------------------------------------- 0073 0074 class TransactionItemView : public QScrollArea 0075 { 0076 Q_OBJECT 0077 0078 public: 0079 0080 explicit TransactionItemView(QWidget* const parent = nullptr, const QString& name=QString()); 0081 ~TransactionItemView() override {} 0082 0083 TransactionItem* addTransactionItem(ProgressItem* item, bool first); 0084 0085 QSize sizeHint() const override; 0086 QSize minimumSizeHint() const override; 0087 0088 public Q_SLOTS: 0089 0090 void slotLayoutFirstItem(); 0091 0092 Q_SIGNALS: 0093 0094 void signalTransactionViewIsEmpty(); 0095 0096 protected: 0097 0098 void resizeEvent(QResizeEvent* event) override; 0099 0100 private: 0101 0102 DVBox* m_bigBox; 0103 }; 0104 0105 // -------------------------------------------------------------------------------- 0106 0107 class DIGIKAM_EXPORT ProgressView : public OverlayWidget 0108 { 0109 Q_OBJECT 0110 0111 public: 0112 0113 explicit ProgressView(QWidget* const alignWidget, QWidget* const parent, const QString& name = QString()); 0114 ~ProgressView() override; 0115 0116 void setVisible(bool b) override; 0117 0118 public Q_SLOTS: 0119 0120 void slotToggleVisibility(); 0121 0122 Q_SIGNALS: 0123 0124 void visibilityChanged(bool); 0125 0126 protected Q_SLOTS: 0127 0128 void slotTransactionAdded(ProgressItem*); 0129 void slotTransactionCompleted(ProgressItem*); 0130 void slotTransactionCanceled(ProgressItem*); 0131 void slotTransactionProgress(ProgressItem*, unsigned int progress); 0132 void slotTransactionStatus(ProgressItem*, const QString&); 0133 void slotTransactionLabel(ProgressItem*, const QString&); 0134 void slotTransactionUsesBusyIndicator(ProgressItem*, bool); 0135 void slotTransactionThumbnail(ProgressItem*, const QPixmap&); 0136 void slotClose(); 0137 void slotShow(); 0138 void slotHide(); 0139 0140 protected: 0141 0142 void closeEvent(QCloseEvent*) override; 0143 0144 private: 0145 0146 class Private; 0147 Private* const d; 0148 }; 0149 0150 } // namespace Digikam 0151 0152 #endif // DIGIKAM_PROGRESS_VIEW_H