24 #ifndef __KPIM_PROGRESSMANAGER_H__
25 #define __KPIM_PROGRESSMANAGER_H__
31 #include <kdepimmacros.h>
36 class ProgressManager;
37 typedef TQMap<ProgressItem*, bool> ProgressItemMap;
39 class KDE_EXPORT ProgressItem :
public TQObject
43 friend class ProgressManager;
44 friend class TQDict< ProgressItem >;
52 const TQString& id()
const {
return mId; }
57 ProgressItem *parent()
const {
return mParent; }
62 const TQString& label()
const {
return mLabel; }
68 void setLabel(
const TQString& v );
73 const TQString& status()
const {
return mStatus; }
79 void setStatus(
const TQString& v );
84 bool canBeCanceled()
const {
return mCanBeCanceled; }
90 bool usesCrypto()
const {
return mUsesCrypto; }
97 void setUsesCrypto(
bool v );
102 bool usesBusyIndicator()
const {
return mUsesBusyIndicator; }
109 void setUsesBusyIndicator(
bool useBusyIndicator );
114 unsigned int progress()
const {
return mProgress; }
120 void setProgress(
unsigned int v );
135 void reset() { setProgress( 0 ); setStatus( TQString() ); mCompleted = 0; }
140 void setTotalItems(
unsigned int v ) { mTotal = v; }
141 unsigned int totalItems()
const {
return mTotal; }
142 void setCompletedItems(
unsigned int v ) { mCompleted = v; }
143 void incCompletedItems(
unsigned int v = 1 ) { mCompleted += v; }
144 unsigned int completedItems()
const {
return mCompleted; }
149 void updateProgress() { setProgress( mTotal? mCompleted*100/mTotal: 0 ); }
151 void addChild( ProgressItem *kiddo );
152 void removeChild( ProgressItem *kiddo );
154 bool canceled()
const {
return mCanceled; }
161 void progressItemAdded( KPIM::ProgressItem* );
167 void progressItemProgress( KPIM::ProgressItem*,
unsigned int );
174 void progressItemCompleted( KPIM::ProgressItem* );
185 void progressItemCanceled( KPIM::ProgressItem* );
192 void progressItemStatus( KPIM::ProgressItem*,
const TQString& );
199 void progressItemLabel( KPIM::ProgressItem*,
const TQString& );
206 void progressItemUsesCrypto( KPIM::ProgressItem*,
bool );
215 void progressItemUsesBusyIndicator( KPIM::ProgressItem *item,
bool value );
220 ProgressItem( ProgressItem* parent,
222 const TQString& label,
223 const TQString& status,
226 virtual ~ProgressItem();
233 ProgressItem* mParent;
235 unsigned int mProgress;
236 ProgressItemMap mChildren;
238 unsigned int mCompleted;
239 bool mWaitingForKids;
242 bool mUsesBusyIndicator;
286 static TQString
getUniqueID() {
return TQString::number( ++uID ); }
297 return instance()->createProgressItemImpl( 0, getUniqueID(), label,
298 TQString(),
true,
false );
317 static ProgressItem * createProgressItem( ProgressItem* parent,
319 const TQString& label,
320 const TQString& status = TQString(),
321 bool canBeCanceled =
true,
322 bool usesCrypto =
false ) {
323 return instance()->createProgressItemImpl( parent,
id, label, status,
324 canBeCanceled, usesCrypto );
331 static ProgressItem * createProgressItem(
const TQString& parent,
333 const TQString& label,
334 const TQString& status = TQString(),
335 bool canBeCanceled =
true,
336 bool usesCrypto =
false ) {
337 return instance()->createProgressItemImpl( parent,
id, label,
338 status, canBeCanceled, usesCrypto );
344 static ProgressItem * createProgressItem(
const TQString&
id,
345 const TQString& label,
346 const TQString& status = TQString(),
347 bool canBeCanceled =
true,
348 bool usesCrypto =
false ) {
349 return instance()->createProgressItemImpl( 0,
id, label, status,
350 canBeCanceled, usesCrypto );
357 bool isEmpty()
const {
return mTransactions.isEmpty(); }
366 ProgressItem* singleItem()
const;
373 instance()->emitShowProgressDialogImpl();
378 void progressItemAdded( KPIM::ProgressItem* );
380 void progressItemProgress( KPIM::ProgressItem*,
unsigned int );
382 void progressItemCompleted( KPIM::ProgressItem* );
384 void progressItemCanceled( KPIM::ProgressItem* );
386 void progressItemStatus( KPIM::ProgressItem*,
const TQString& );
388 void progressItemLabel( KPIM::ProgressItem*,
const TQString& );
390 void progressItemUsesCrypto( KPIM::ProgressItem*,
bool );
392 void progressItemUsesBusyIndicator( KPIM::ProgressItem*,
bool );
398 void showProgressDialog();
406 void slotStandardCancelHandler( KPIM::ProgressItem* item );
414 void slotTransactionCompleted( KPIM::ProgressItem *item );
421 virtual ProgressItem* createProgressItemImpl(
422 ProgressItem* parent,
const TQString&
id,
423 const TQString& label,
const TQString& status,
424 bool cancellable,
bool usesCrypto );
425 virtual ProgressItem* createProgressItemImpl(
426 const TQString& parent,
const TQString&
id,
427 const TQString& label,
const TQString& status,
428 bool cancellable,
bool usesCrypto );
429 void emitShowProgressDialogImpl();
431 TQDict< ProgressItem > mTransactions;
433 static unsigned int uID;
438 #endif // __KPIM_PROGRESSMANAGER_H__