From 45f95675560bfc4b02e56b9cb06a02d107e4a0b8 Mon Sep 17 00:00:00 2001 From: Till Adam Date: Mon, 18 Oct 2004 20:28:59 +0000 Subject: [PATCH] Add a serial number based DeleteMsgCommand which also works if the message is opened in an external reader window. svn path=/trunk/kdepim/; revision=355767 --- kmcommands.cpp | 23 ++++++++++++++++++++--- kmcommands.h | 8 ++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/kmcommands.cpp b/kmcommands.cpp index 5baa4fee1..96c480d09 100644 --- a/kmcommands.cpp +++ b/kmcommands.cpp @@ -1603,7 +1603,7 @@ void KMMenuCommand::makeFolderMenu(KMFolderNode* node, bool move, KMCopyCommand::KMCopyCommand( KMFolder* destFolder, const QPtrList &msgList ) - :mDestFolder( destFolder ), mMsgList( msgList ) +:mDestFolder( destFolder ), mMsgList( msgList ) { } @@ -1721,6 +1721,12 @@ KMMoveCommand::KMMoveCommand( KMFolder* destFolder, mMsgList.append( msgBase ); } +KMMoveCommand::KMMoveCommand( Q_UINT32 ) +:mProgressItem( 0 ) +{ + setDeletesItself( true ); +} + KMCommand::Result KMMoveCommand::execute() { setEmitsCompletedItself( true ); @@ -1910,15 +1916,25 @@ void KMMoveCommand::slotMoveCanceled() // srcFolder doesn't make much sense for searchFolders KMDeleteMsgCommand::KMDeleteMsgCommand( KMFolder* srcFolder, const QPtrList &msgList ) -:KMMoveCommand(findTrashFolder( srcFolder ), msgList) +:KMMoveCommand( findTrashFolder( srcFolder ), msgList) { } KMDeleteMsgCommand::KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg ) -:KMMoveCommand(findTrashFolder( srcFolder ), msg) +:KMMoveCommand( findTrashFolder( srcFolder ), msg) { } +KMDeleteMsgCommand::KMDeleteMsgCommand( Q_UINT32 sernum ) +:KMMoveCommand( sernum ) +{ + KMFolder *srcFolder; + int idx; + kmkernel->msgDict()->getLocation( sernum, &srcFolder, &idx ); + KMMsgBase *msg = srcFolder->getMsgBase( idx ); + addMsg( msg ); + setDestFolder( findTrashFolder( srcFolder ) ); +} KMFolder * KMDeleteMsgCommand::findTrashFolder( KMFolder * folder ) { @@ -1930,6 +1946,7 @@ KMFolder * KMDeleteMsgCommand::findTrashFolder( KMFolder * folder ) return 0; } + KMUrlClickedCommand::KMUrlClickedCommand( const KURL &url, uint identity, KMReaderWin *readerWin, bool htmlPref, KMMainWidget *mainWidget ) :mUrl( url ), mIdentity( identity ), mReaderWin( readerWin ), diff --git a/kmcommands.h b/kmcommands.h index f551084cf..245320d89 100644 --- a/kmcommands.h +++ b/kmcommands.h @@ -675,6 +675,12 @@ public slots: void slotMsgAddedToDestFolder(KMFolder *folder, Q_UINT32 serNum); void slotMoveCanceled(); +protected: + // Needed for KMDeleteCommand for "move to trash" + KMMoveCommand( Q_UINT32 sernum ); + void setDestFolder( KMFolder* folder ) { mDestFolder = folder; } + void addMsg( KMMsgBase *msg ) { mMsgList.append( msg ); } + private: virtual Result execute(); void completeMove( Result result ); @@ -694,9 +700,11 @@ class KMDeleteMsgCommand : public KMMoveCommand public: KMDeleteMsgCommand( KMFolder* srcFolder, const QPtrList &msgList ); KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg ); + KMDeleteMsgCommand( Q_UINT32 sernum ); private: static KMFolder * findTrashFolder( KMFolder * srcFolder ); + }; class KMUrlClickedCommand : public KMCommand