File indexing completed on 2024-05-12 04:38:17
0001 /* 0002 SPDX-FileCopyrightText: 2004 Till Adam <adam@kde.org> 0003 based on imapprogressdialog.cpp ,which is 0004 SPDX-FileCopyrightText: 2002-2003 Klarälvdalens Datakonsult AB 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #ifndef KDEVPLATFORM_PROGRESSDIALOG_H 0010 #define KDEVPLATFORM_PROGRESSDIALOG_H 0011 0012 #include "overlaywidget.h" 0013 0014 #include <QMap> 0015 #include <QScrollArea> 0016 #include <QWidget> 0017 0018 class QProgressBar; 0019 class QFrame; 0020 class QLabel; 0021 class QPushButton; 0022 0023 namespace KDevelop { 0024 class ProgressItem; 0025 class TransactionItem; 0026 class SSLLabel; 0027 0028 class TransactionItemView : public QScrollArea 0029 { 0030 Q_OBJECT 0031 public: 0032 explicit TransactionItemView( QWidget * parent = nullptr, const char * name = nullptr ); 0033 0034 ~TransactionItemView() override {} 0035 TransactionItem *addTransactionItem( ProgressItem *item, bool first ); 0036 0037 QSize sizeHint() const override; 0038 QSize minimumSizeHint() const override; 0039 0040 public Q_SLOTS: 0041 void slotItemCompleted(TransactionItem * item); 0042 0043 protected: 0044 void resizeEvent ( QResizeEvent *event ) override; 0045 0046 private: 0047 QWidget *mBigBox; 0048 }; 0049 0050 class TransactionItem : public QWidget 0051 { 0052 Q_OBJECT 0053 public: 0054 TransactionItem( QWidget *parent, ProgressItem *item, bool first ); 0055 0056 ~TransactionItem() override; 0057 0058 void hideHLine(); 0059 0060 void setProgress( int progress ); 0061 void setLabel( const QString & ); 0062 0063 // the given text is interpreted as RichText, so you might need to 0064 // Qt::escape() it before passing 0065 void setStatus( const QString & ); 0066 0067 void setTotalSteps( int totalSteps ); 0068 0069 ProgressItem *item() const { return mItem; } 0070 0071 void addSubTransaction( ProgressItem *item ); 0072 0073 // The progressitem is deleted immediately, we take 5s to go out, 0074 // so better not use mItem during this time. 0075 void setItemComplete() { mItem = nullptr; } 0076 0077 public Q_SLOTS: 0078 void slotItemCanceled(); 0079 0080 protected: 0081 QProgressBar *mProgress; 0082 QPushButton *mCancelButton; 0083 QLabel *mItemLabel; 0084 QLabel *mItemStatus; 0085 QFrame *mFrame; 0086 ProgressItem *mItem; 0087 }; 0088 0089 class ProgressDialog : public OverlayWidget 0090 { 0091 Q_OBJECT 0092 public: 0093 ProgressDialog( QWidget *alignWidget, QWidget *parent, const char *name = nullptr ); 0094 ~ProgressDialog() override; 0095 void setVisible( bool b ) override; 0096 0097 public Q_SLOTS: 0098 void slotToggleVisibility(); 0099 0100 protected Q_SLOTS: 0101 void slotTransactionAdded( KDevelop::ProgressItem *item ); 0102 void slotTransactionCompleted( KDevelop::ProgressItem *item ); 0103 void slotTransactionCanceled( KDevelop::ProgressItem *item ); 0104 void slotTransactionProgress( KDevelop::ProgressItem *item, unsigned int progress ); 0105 void slotTransactionStatus( KDevelop::ProgressItem *item, const QString & ); 0106 void slotTransactionLabel( KDevelop::ProgressItem *item, const QString & ); 0107 void slotTransactionUsesBusyIndicator( KDevelop::ProgressItem *, bool ); 0108 0109 void slotClose(); 0110 void slotShow(); 0111 void slotHide(); 0112 0113 Q_SIGNALS: 0114 void visibilityChanged( bool ); 0115 0116 protected: 0117 void closeEvent( QCloseEvent * ) override; 0118 0119 TransactionItemView *mScrollView; 0120 QMap<const ProgressItem *, TransactionItem *> mTransactionsToListviewItems; 0121 bool mWasLastShown; 0122 }; 0123 0124 } // namespace KDevelop 0125 0126 #endif // __KDevelop_PROGRESSDIALOG_H__