diff --git a/kmfolder.cpp b/kmfolder.cpp index 3591fd8c5..8b0ea285c 100644 --- a/kmfolder.cpp +++ b/kmfolder.cpp @@ -416,8 +416,6 @@ void KMFolder::removeMsg(int idx, bool) return; } - emit aboutToRemoveMsg( this, idx ); - KMMsgBase* mb = getMsgBase(idx); QString msgIdMD5 = mb->msgIdMD5(); Q_UINT32 serNum = kernel->msgDict()->getMsgSerNum(this, idx); @@ -451,8 +449,6 @@ KMMessage* KMFolder::take(int idx) assert(idx>=0 && idx<=count()); - emit aboutToRemoveMsg( this, idx ); - mb = getMsgBase(idx); if (!mb) return 0; if (!mb->isMessage()) readMsg(idx); diff --git a/kmfolder.h b/kmfolder.h index 200adaee5..28a62a215 100644 --- a/kmfolder.h +++ b/kmfolder.h @@ -479,20 +479,18 @@ signals: /** Emitted when the icon paths are set. */ void iconsChanged(); - /** Emitted when a message is about to be removed from a folder - */ - void aboutToRemoveMsg( KMFolder* fld, int idx ); + /** Emitted before a message is removed from the folder. */ + void msgRemoved(KMFolder*, Q_UINT32 sernum); /** Emitted when a message is removed from the folder. */ - void msgRemoved(int,QString); - void msgRemoved(KMFolder*, Q_UINT32); + void msgRemoved(int idx,QString msgIdMD5); /** Emitted when a message is added from the folder. */ - void msgAdded(int); - void msgAdded(KMFolder*, Q_UINT32); + void msgAdded(int idx); + void msgAdded(KMFolder*, Q_UINT32 sernum); /** Emitted, when the status of a message is changed */ - void msgChanged(KMFolder*, Q_UINT32, int delta); + void msgChanged(KMFolder*, Q_UINT32 sernum, int delta); /** Emitted when a field of the header of a specific message changed. */ void msgHeaderChanged(int); diff --git a/kmgroupware.cpp b/kmgroupware.cpp index e0e2b8caa..6d8e1c239 100644 --- a/kmgroupware.cpp +++ b/kmgroupware.cpp @@ -375,14 +375,14 @@ void KMGroupware::initFolders() connect( mNotes, SIGNAL( msgAdded( KMFolder*, Q_UINT32 ) ), this, SLOT( slotIncidenceAdded( KMFolder*, Q_UINT32 ) ) ); - connect( mContacts, SIGNAL( aboutToRemoveMsg( KMFolder*, int ) ), - this, SLOT( slotIncidenceDeleted( KMFolder*, int ) ) ); - connect( mCalendar, SIGNAL( aboutToRemoveMsg( KMFolder*, int ) ), - this, SLOT( slotIncidenceDeleted( KMFolder*, int ) ) ); - connect( mTasks, SIGNAL( aboutToRemoveMsg( KMFolder*, int ) ), - this, SLOT( slotIncidenceDeleted( KMFolder*, int ) ) ); - connect( mNotes, SIGNAL( aboutToRemoveMsg( KMFolder*, int ) ), - this, SLOT( slotIncidenceDeleted( KMFolder*, int ) ) ); + connect( mContacts, SIGNAL( msgRemoved( KMFolder*, Q_UINT32 ) ), + this, SLOT( slotIncidenceDeleted( KMFolder*, Q_UINT32 ) ) ); + connect( mCalendar, SIGNAL( msgRemoved( KMFolder*, Q_UINT32 ) ), + this, SLOT( slotIncidenceDeleted( KMFolder*, Q_UINT32 ) ) ); + connect( mTasks, SIGNAL( msgRemoved( KMFolder*, Q_UINT32 ) ), + this, SLOT( slotIncidenceDeleted( KMFolder*, Q_UINT32 ) ) ); + connect( mNotes, SIGNAL( msgRemoved( KMFolder*, Q_UINT32 ) ), + this, SLOT( slotIncidenceDeleted( KMFolder*, Q_UINT32 ) ) ); if( mMainWin && mMainWin->mainKMWidget()->folderTree() ) { mMainWin->mainKMWidget()->folderTree()->reload(); @@ -1152,8 +1152,36 @@ void KMGroupware::slotIncidenceAdded( KMFolder* folder, Q_UINT32 sernum ) if( unget ) folder->unGetMsg(i); } -void KMGroupware::slotIncidenceDeleted( KMFolder* folder, int idx ) +void KMGroupware::slotIncidenceDeleted( KMFolder* folder, Q_UINT32 sernum ) { + QString type; + if( folder == mContacts ) { + type = "Contact"; + } else if( folder == mCalendar ) { + type = "Calendar"; + } else if( folder == mTasks ) { + type = "Task"; + } else if( folder == mNotes ) { + type = "Note"; + } else { + kdError() << "Not a groupware folder" << endl; + return; + } + + int i = 0; + KMFolder* aFolder = 0; + KMKernel::self()->msgDict()->getLocation( sernum, &aFolder, &i ); + assert( folder == aFolder ); + + bool unget = !folder->isMessage( i ); + int iDummy; + QString s; + if( KMGroupware::vPartFoundAndDecoded( folder->getMsg( i ), iDummy, &s, 0 ) ) { + QString uid( "UID" ); + vPartMicroParser( s.utf8(), uid ); + emit incidenceDeleted( type, uid ); + } + if( unget ) folder->unGetMsg(i); } void KMGroupware::slotNewOrUpdatedIncident( const QString& type, diff --git a/kmgroupware.h b/kmgroupware.h index 77784cee6..a30a77794 100644 --- a/kmgroupware.h +++ b/kmgroupware.h @@ -52,7 +52,7 @@ signals: private slots: // internal slots for new interface void slotIncidenceAdded( KMFolder*, Q_UINT32 ); - void slotIncidenceDeleted( KMFolder*, int ); + void slotIncidenceDeleted( KMFolder*, Q_UINT32 ); ////////////////////////////////// public: