24#include <tqvaluevector.h>
28#include <kstaticdeleter.h>
30#include "progressmanager.h"
34KPIM::ProgressManager * KPIM::ProgressManager::mInstance = 0;
35unsigned int KPIM::ProgressManager::uID = 42;
37ProgressItem::ProgressItem(
38 ProgressItem* parent,
const TQString&
id,
39 const TQString& label,
const TQString& status,
bool canBeCanceled,
41 :mId( id ), mLabel( label ), mStatus( status ), mParent( parent ),
42 mCanBeCanceled( canBeCanceled ), mProgress( 0 ), mTotal( 0 ),
43 mCompleted( 0 ), mWaitingForKids( false ), mCanceled( false ),
44 mUsesCrypto( usesCrypto ), mUsesBusyIndicator( false )
47ProgressItem::~ProgressItem()
51void ProgressItem::setComplete()
55 if ( mChildren.isEmpty() ) {
58 emit progressItemCompleted(
this );
60 parent()->removeChild(
this );
63 mWaitingForKids =
true;
67void ProgressItem::addChild( ProgressItem *kiddo )
69 mChildren.replace( kiddo,
true );
72void ProgressItem::removeChild( ProgressItem *kiddo )
74 mChildren.remove( kiddo );
76 if ( mChildren.count() == 0 && mWaitingForKids ) {
77 emit progressItemCompleted(
this );
82void ProgressItem::cancel()
84 if ( mCanceled || !mCanBeCanceled )
return;
85 kdDebug(5300) <<
"ProgressItem::cancel() - " << label() << endl;
88 TQValueList<ProgressItem*> kids = mChildren.keys();
89 TQValueList<ProgressItem*>::Iterator it( kids.begin() );
90 TQValueList<ProgressItem*>::Iterator end( kids.end() );
91 for ( ; it != end; it++ ) {
92 ProgressItem *kid = *it;
93 if ( kid->canBeCanceled() )
96 setStatus( i18n(
"Aborting..." ) );
97 emit progressItemCanceled(
this );
101void ProgressItem::setProgress(
unsigned int v )
105 emit progressItemProgress(
this, mProgress );
108void ProgressItem::setLabel(
const TQString& v )
111 emit progressItemLabel(
this, mLabel );
114void ProgressItem::setStatus(
const TQString& v )
117 emit progressItemStatus(
this, mStatus );
120void ProgressItem::setUsesCrypto(
bool v )
123 emit progressItemUsesCrypto(
this, v );
126void ProgressItem::setUsesBusyIndicator(
bool useBusyIndicator )
128 mUsesBusyIndicator = useBusyIndicator;
129 emit progressItemUsesBusyIndicator(
this, useBusyIndicator );
134ProgressManager::ProgressManager() :TQObject() {
138ProgressManager::~ProgressManager() { mInstance = 0; }
139static KStaticDeleter<ProgressManager> progressManagerDeleter;
144 progressManagerDeleter.setObject( mInstance,
new ProgressManager() );
149ProgressItem* ProgressManager::createProgressItemImpl(
150 ProgressItem* parent,
const TQString&
id,
151 const TQString &label,
const TQString &status,
152 bool cancellable,
bool usesCrypto )
155 if ( !mTransactions[
id ] ) {
156 t =
new ProgressItem ( parent,
id, label, status, cancellable, usesCrypto );
157 mTransactions.insert(
id, t );
159 ProgressItem *p = mTransactions[ parent->id() ];
166 this, TQ_SLOT( slotTransactionCompleted(KPIM::ProgressItem*) ) );
175 connect ( t, TQ_SIGNAL(
progressItemLabel(KPIM::ProgressItem*,
const TQString&) ),
185 t = mTransactions[id];
190ProgressItem* ProgressManager::createProgressItemImpl(
191 const TQString& parent,
const TQString &
id,
192 const TQString &label,
const TQString& status,
193 bool canBeCanceled,
bool usesCrypto )
195 ProgressItem * p = mTransactions[parent];
196 return createProgressItemImpl( p,
id, label, status, canBeCanceled, usesCrypto );
199void ProgressManager::emitShowProgressDialogImpl()
207void ProgressManager::slotTransactionCompleted( ProgressItem *item )
209 mTransactions.remove( item->id() );
220 ProgressItem *item = 0;
221 TQDictIterator< ProgressItem > it( mTransactions );
222 for ( ; it.current(); ++it ) {
225 if ( (*it)->usesBusyIndicator() )
228 if ( !(*it)->parent() ) {
240 TQDictIterator< ProgressItem > it( mTransactions );
241 for ( ; it.current(); ++it ) {
242 it.current()->cancel();
248#include "progressmanager.moc"
void progressItemAdded(KPIM::ProgressItem *)
void progressItemCanceled(KPIM::ProgressItem *)
void progressItemLabel(KPIM::ProgressItem *, const TQString &)
static ProgressManager * instance()
void slotAbortAll()
Aborts all running jobs.
void slotStandardCancelHandler(KPIM::ProgressItem *item)
Calls setCompleted() on the item, to make sure it goes away.
void progressItemUsesBusyIndicator(KPIM::ProgressItem *, bool)
void progressItemStatus(KPIM::ProgressItem *, const TQString &)
void progressItemProgress(KPIM::ProgressItem *, unsigned int)
void progressItemCompleted(KPIM::ProgressItem *)
void showProgressDialog()
Emitted when an operation requests the listeners to be shown.
ProgressItem * singleItem() const
void progressItemUsesCrypto(KPIM::ProgressItem *, bool)
TDEPIM classes for drag and drop of mails.