6 #include <tqdatetime.h>
7 #include <tqguardedptr.h>
9 #include <tqvaluelist.h>
10 #include <tqvaluevector.h>
14 #include "kmmsgbase.h"
15 #include <mimelib/string.h>
16 #include <kdepimmacros.h>
18 #include <ktempfile.h>
23 class KProgressDialog;
37 namespace KIO {
class Job; }
45 namespace GpgME {
class Error; }
46 namespace Kleo {
class SpecialJob; }
48 typedef TQMap<int,KMFolder*> KMMenuToFolder;
49 typedef TQMap<partNode*, KMMessage*> PartNodeMessageMap;
51 class KDE_EXPORT KMCommand :
public TQObject
55 friend class LaterDeleterWithCommandCompletion;
58 enum Result { Undefined, OK, Canceled, Failed };
61 KMCommand( TQWidget *parent = 0 );
63 KMCommand( TQWidget *parent,
const TQPtrList<KMMsgBase> &msgList );
65 KMCommand( TQWidget *parent, KMMsgBase *msgBase );
67 KMCommand( TQWidget *parent,
KMMessage *message );
74 void keepFolderOpen(
KMFolder *folder );
86 void slotProgress(
unsigned long done,
unsigned long total );
91 void messagesTransfered( KMCommand::Result result );
94 void completed( KMCommand *command );
98 const TQPtrList<KMMessage> retrievedMsgs()
const;
102 TQWidget *parentWidget()
const;
104 bool deletesItself() {
return mDeletesItself; }
110 void setDeletesItself(
bool deletesItself )
111 { mDeletesItself = deletesItself; }
113 bool emitsCompletedItself() {
return mEmitsCompletedItself; }
120 void setEmitsCompletedItself(
bool emitsCompletedItself )
121 { mEmitsCompletedItself = emitsCompletedItself; }
126 void setResult( Result result )
127 { mResult = result; }
131 virtual Result execute() = 0;
135 void transferSelectedMsgs();
139 virtual void slotStart();
141 void slotPostTransfer( KMCommand::Result result );
145 void slotJobFinished();
147 void slotTransferCancelled();
151 KProgressDialog* mProgressDialog;
153 static int mCountJobs;
156 bool mDeletesItself : 1;
157 bool mEmitsCompletedItself : 1;
160 TQPtrList<KMMessage> mRetrievedMsgs;
161 TQPtrList<KMMsgBase> mMsgList;
162 TQValueList<TQGuardedPtr<KMFolder> > mFolders;
165 class KDE_EXPORT KMMailtoComposeCommand :
public KMCommand
171 KMMailtoComposeCommand(
const KURL &url,
KMMessage *msg=0 );
174 virtual Result execute();
180 class KDE_EXPORT KMMailtoReplyCommand :
public KMCommand
186 KMMailtoReplyCommand( TQWidget *parent,
const KURL &url,
187 KMMessage *msg,
const TQString &selection );
190 virtual Result execute();
196 class KDE_EXPORT KMMailtoForwardCommand :
public KMCommand
202 KMMailtoForwardCommand( TQWidget *parent,
const KURL &url,
206 virtual Result execute();
211 class KDE_EXPORT KMMailtoAddAddrBookCommand :
public KMCommand
217 KMMailtoAddAddrBookCommand(
const KURL &url, TQWidget *parent );
220 virtual Result execute();
225 class KDE_EXPORT KMAddBookmarksCommand :
public KMCommand
231 KMAddBookmarksCommand(
const KURL &url, TQWidget *parent );
234 virtual Result execute();
240 class KDE_EXPORT KMMailtoOpenAddrBookCommand :
public KMCommand
246 KMMailtoOpenAddrBookCommand(
const KURL &url, TQWidget *parent );
249 virtual Result execute();
254 class KDE_EXPORT KMUrlCopyCommand :
public KMCommand
260 KMUrlCopyCommand(
const KURL &url, KMMainWidget *mainWidget = 0 );
263 virtual Result execute();
266 KMMainWidget *mMainWidget;
269 class KDE_EXPORT KMUrlOpenCommand :
public KMCommand
275 KMUrlOpenCommand(
const KURL &url,
KMReaderWin *readerWin );
278 virtual Result execute();
284 class KDE_EXPORT KMUrlSaveCommand :
public KMCommand
290 KMUrlSaveCommand(
const KURL &url, TQWidget *parent );
293 void slotUrlSaveResult( KIO::Job *job );
296 virtual Result execute();
301 class KDE_EXPORT KMEditMsgCommand :
public KMCommand
307 KMEditMsgCommand( TQWidget *parent,
KMMessage *msg );
310 virtual Result execute();
313 class KDE_EXPORT KMUseTemplateCommand :
public KMCommand
319 KMUseTemplateCommand( TQWidget *parent,
KMMessage *msg );
322 virtual Result execute();
325 class KDE_EXPORT KMShowMsgSrcCommand :
public KMCommand
331 KMShowMsgSrcCommand( TQWidget *parent,
KMMessage *msg,
333 virtual Result execute();
337 bool mMsgWasComplete;
340 class KDE_EXPORT KMSaveMsgCommand :
public KMCommand
346 KMSaveMsgCommand( TQWidget *parent,
const TQPtrList<KMMsgBase> &msgList );
347 KMSaveMsgCommand( TQWidget *parent,
KMMessage * msg );
351 virtual Result execute();
354 void slotSaveDataReq();
355 void slotSaveResult(KIO::Job *job);
357 void slotMessageRetrievedForSaving(
KMMessage *msg);
360 static const int MAX_CHUNK_SIZE = 64*1024;
362 TQValueList<unsigned long> mMsgList;
363 TQValueList<KMMsgBase *> mUngetMsgs;
364 unsigned int mMsgListIndex;
369 KIO::TransferJob *mJob;
372 class KDE_EXPORT KMOpenMsgCommand :
public KMCommand
378 KMOpenMsgCommand( TQWidget *parent,
const KURL & url = KURL(),
379 const TQString & encoding = TQString() );
382 virtual Result execute();
385 void slotDataArrived( KIO::Job *job,
const TQByteArray & data );
386 void slotResult( KIO::Job *job );
389 static const int MAX_CHUNK_SIZE = 64*1024;
392 KIO::TransferJob *mJob;
393 const TQString mEncoding;
396 class KDE_EXPORT KMSaveAttachmentsCommand :
public KMCommand
405 KMSaveAttachmentsCommand( TQWidget *parent,
KMMessage *msg );
410 KMSaveAttachmentsCommand( TQWidget *parent,
const TQPtrList<KMMsgBase>& msgs );
419 KMSaveAttachmentsCommand( TQWidget *parent, TQPtrList<partNode> &attachments,
426 virtual Result execute();
427 Result saveItem( partNode *node,
const KURL& url );
430 PartNodeMessageMap mAttachmentMap;
431 bool mImplicitAttachments;
435 class KDE_EXPORT KMReplyToCommand :
public KMCommand
441 KMReplyToCommand( TQWidget *parent,
KMMessage *msg,
442 const TQString &selection = TQString() );
445 virtual Result execute();
451 class KDE_EXPORT KMNoQuoteReplyToCommand :
public KMCommand
457 KMNoQuoteReplyToCommand( TQWidget *parent,
KMMessage *msg );
460 virtual Result execute();
463 class KMReplyListCommand :
public KMCommand
469 KMReplyListCommand( TQWidget *parent,
KMMessage *msg,
470 const TQString &selection = TQString() );
473 virtual Result execute();
479 class KDE_EXPORT KMReplyToAllCommand :
public KMCommand
485 KMReplyToAllCommand( TQWidget *parent,
KMMessage *msg,
486 const TQString &selection = TQString() );
489 virtual Result execute();
495 class KDE_EXPORT KMReplyAuthorCommand :
public KMCommand
501 KMReplyAuthorCommand( TQWidget *parent,
KMMessage *msg,
502 const TQString &selection = TQString() );
505 virtual Result execute();
511 class KDE_EXPORT KMForwardInlineCommand :
public KMCommand
517 KMForwardInlineCommand( TQWidget *parent,
const TQPtrList<KMMsgBase> &msgList,
519 KMForwardInlineCommand( TQWidget *parent,
KMMessage * msg,
523 virtual Result execute();
529 class KDE_EXPORT KMForwardAttachedCommand :
public KMCommand
535 KMForwardAttachedCommand( TQWidget *parent,
const TQPtrList<KMMsgBase> &msgList,
536 uint identity = 0, KMail::Composer *win = 0 );
537 KMForwardAttachedCommand( TQWidget *parent,
KMMessage * msg,
538 uint identity = 0, KMail::Composer *win = 0 );
541 virtual Result execute();
544 TQGuardedPtr<KMail::Composer> mWin;
547 class KDE_EXPORT KMForwardDigestCommand :
public KMCommand
553 KMForwardDigestCommand( TQWidget *parent,
const TQPtrList<KMMsgBase> &msgList,
554 uint identity = 0, KMail::Composer *win = 0 );
555 KMForwardDigestCommand( TQWidget *parent,
KMMessage * msg,
556 uint identity = 0, KMail::Composer *win = 0 );
559 virtual Result execute();
562 TQGuardedPtr<KMail::Composer> mWin;
565 class KDE_EXPORT KMRedirectCommand :
public KMCommand
571 KMRedirectCommand( TQWidget *parent,
KMMessage *msg );
574 virtual Result execute();
577 class KDE_EXPORT KMCustomReplyToCommand :
public KMCommand
583 KMCustomReplyToCommand( TQWidget *parent,
KMMessage *msg,
584 const TQString &selection,
585 const TQString &tmpl );
588 virtual Result execute();
595 class KDE_EXPORT KMCustomReplyAllToCommand :
public KMCommand
601 KMCustomReplyAllToCommand( TQWidget *parent,
KMMessage *msg,
602 const TQString &selection,
603 const TQString &tmpl );
606 virtual Result execute();
613 class KDE_EXPORT KMCustomForwardCommand :
public KMCommand
619 KMCustomForwardCommand( TQWidget *parent,
const TQPtrList<KMMsgBase> &msgList,
620 uint identity,
const TQString &tmpl );
621 KMCustomForwardCommand( TQWidget *parent,
KMMessage * msg,
622 uint identity,
const TQString &tmpl );
625 virtual Result execute();
631 class KDE_EXPORT KMPrintCommand :
public KMCommand
637 KMPrintCommand( TQWidget *parent,
KMMessage *msg,
639 const KMail::HeaderStrategy *headerStrategy = 0,
640 bool htmlOverride =
false,
641 bool htmlLoadExtOverride =
false,
642 bool useFixedFont =
false,
643 const TQString & encoding = TQString() );
645 void setOverrideFont(
const TQFont& );
648 virtual Result execute();
651 const KMail::HeaderStrategy *mHeaderStrategy;
653 bool mHtmlLoadExtOverride;
655 TQFont mOverrideFont;
659 class KDE_EXPORT KMSeStatusCommand :
public KMCommand
666 KMSeStatusCommand( KMMsgStatus status,
const TQValueList<TQ_UINT32> &,
670 virtual Result execute();
673 TQValueList<TQ_UINT32> mSerNums;
674 TQValueList<int> mIds;
678 class KDE_EXPORT KMFilterCommand :
public KMCommand
684 KMFilterCommand(
const TQCString &field,
const TQString &value );
687 virtual Result execute();
694 class KDE_EXPORT KMFilterActionCommand :
public KMCommand
700 KMFilterActionCommand( TQWidget *parent,
701 const TQPtrList<KMMsgBase> &msgList,
705 virtual Result execute();
706 TQValueList<TQ_UINT32> serNumList;
711 class KDE_EXPORT KMMetaFilterActionCommand :
public TQObject
717 KMMetaFilterActionCommand( KMFilter *filter,
KMHeaders *headers,
718 KMMainWidget *main );
726 KMMainWidget *mMainWidget;
729 class KDE_EXPORT FolderShortcutCommand :
public TQObject
735 FolderShortcutCommand( KMMainWidget* mainwidget,
KMFolder *folder );
736 ~FolderShortcutCommand();
743 void setAction( KAction* );
746 KMMainWidget *mMainWidget;
752 class KDE_EXPORT KMMailingListFilterCommand :
public KMCommand
758 KMMailingListFilterCommand( TQWidget *parent,
KMMessage *msg );
761 virtual Result execute();
778 static void folderToPopupMenu(
bool move, TQObject *receiver,
779 KMMenuToFolder *aMenuToFolder, TQPopupMenu *menu );
781 static void makeFolderMenu(KMFolderNode* item,
bool move,
782 TQObject *receiver, KMMenuToFolder *aMenuToFolder, TQPopupMenu *menu );
791 KMCopyCommand(
KMFolder* destFolder,
792 const TQPtrList<KMMsgBase> &msgList );
796 void slotJobFinished( KMail::FolderJob *job );
798 void slotFolderComplete( KMFolderImap*,
bool success );
801 virtual Result execute();
804 TQPtrList<KMMsgBase> mMsgList;
805 TQValueList<KMail::FolderJob*> mPendingJobs;
817 KMMoveCommand(
KMFolder* destFolder,
const TQPtrList<KMMsgBase> &msgList );
819 KMMoveCommand(
KMFolder* destFolder, KMMsgBase * msgBase );
820 KMFolder* destFolder()
const {
return mDestFolder; }
823 void slotImapFolderCompleted(KMFolderImap *folder,
bool success);
824 void slotMsgAddedToDestFolder(
KMFolder *folder, TQ_UINT32 serNum);
825 void slotMoveCanceled();
829 KMMoveCommand( TQ_UINT32 sernum );
830 void setDestFolder(
KMFolder* folder ) { mDestFolder = folder; }
831 void addMsg( KMMsgBase *msg ) { mSerNumList.append( msg->getMsgSerNum() ); }
832 TQValueVector<KMFolder*> mOpenedFolders;
835 virtual Result execute();
836 void completeMove( Result result );
839 TQValueList<TQ_UINT32> mSerNumList;
842 TQValueList<TQ_UINT32> mLostBoys;
843 KPIM::ProgressItem *mProgressItem;
844 bool mCompleteWithAddedMsg;
847 class KDE_EXPORT KMDeleteMsgCommand :
public KMMoveCommand
853 KMDeleteMsgCommand(
KMFolder* srcFolder,
const TQPtrList<KMMsgBase> &msgList );
855 KMDeleteMsgCommand( TQ_UINT32 sernum );
862 class KDE_EXPORT KMUrlClickedCommand :
public KMCommand
868 KMUrlClickedCommand(
const KURL &url, uint identity,
869 KMReaderWin *readerWin,
bool mHtmlPref, KMMainWidget *mainWidget = 0 );
872 virtual Result execute();
878 KMMainWidget *mMainWidget;
881 class KDE_EXPORT KMLoadPartsCommand :
public KMCommand
887 KMLoadPartsCommand( TQPtrList<partNode>& parts,
KMMessage* msg );
888 KMLoadPartsCommand( partNode* node,
KMMessage* msg );
889 KMLoadPartsCommand( PartNodeMessageMap& partMap );
892 void slotPartRetrieved(
KMMessage* msg, TQString partSpecifier );
895 void partsRetrieved();
899 virtual void slotStart();
901 virtual Result execute();
904 PartNodeMessageMap mPartMap;
907 class KDE_EXPORT KMResendMessageCommand :
public KMCommand
913 KMResendMessageCommand( TQWidget *parent,
KMMessage *msg=0 );
916 virtual Result execute();
919 class KDE_EXPORT KMMailingListCommand :
public KMCommand
924 KMMailingListCommand( TQWidget *parent,
KMFolder *folder );
926 virtual Result execute();
928 void commandCompleted( KMCommand *command );
930 virtual KURL::List urls()
const =0;
935 class KDE_EXPORT KMMailingListPostCommand :
public KMMailingListCommand
940 KMMailingListPostCommand( TQWidget *parent,
KMFolder *folder );
942 virtual KURL::List urls()
const;
945 class KDE_EXPORT KMMailingListSubscribeCommand :
public KMMailingListCommand
950 KMMailingListSubscribeCommand( TQWidget *parent,
KMFolder *folder );
952 virtual KURL::List urls()
const;
955 class KDE_EXPORT KMMailingListUnsubscribeCommand :
public KMMailingListCommand
960 KMMailingListUnsubscribeCommand( TQWidget *parent,
KMFolder *folder );
962 virtual KURL::List urls()
const;
965 class KDE_EXPORT KMMailingListArchivesCommand :
public KMMailingListCommand
970 KMMailingListArchivesCommand( TQWidget *parent,
KMFolder *folder );
972 virtual KURL::List urls()
const;
975 class KDE_EXPORT KMMailingListHelpCommand :
public KMMailingListCommand
980 KMMailingListHelpCommand( TQWidget *parent,
KMFolder *folder );
982 virtual KURL::List urls()
const;
985 class KDE_EXPORT KMIMChatCommand :
public KMCommand
991 KMIMChatCommand(
const KURL &url,
KMMessage *msg=0 );
1000 virtual Result execute();
1006 class KDE_EXPORT KMHandleAttachmentCommand :
public KMCommand
1013 enum AttachmentAction
1031 KMHandleAttachmentCommand( partNode* node,
KMMessage* msg,
int atmId,
1032 const TQString& atmName, AttachmentAction action, KService::Ptr offer, TQWidget* parent );
1036 void showAttachment(
int id,
const TQString& name );
1039 virtual Result execute();
1041 TQString createAtmFileLink()
const;
1044 KService::Ptr getServiceOffer();
1062 void atmProperties();
1065 void atmEncryptWithChiasmus();
1069 virtual void slotStart();
1075 void slotPartComplete();
1077 void slotAtmDecryptWithChiasmusResult(
const GpgME::Error &,
const TQVariant & );
1078 void slotAtmDecryptWithChiasmusUploadResult( KIO::Job * );
1085 AttachmentAction mAction;
1086 KService::Ptr mOffer;
1087 Kleo::SpecialJob *mJob;
1103 void storeChangedMessage(
KMMessage* msg );
1104 virtual Result doAttachmentModify() = 0;
1114 void messageStoreResult( KMFolderImap* folder,
bool success );
1115 void messageDeleteResult( KMCommand *cmd );
1118 TQGuardedPtr<KMFolder> mFolder;
1126 KMDeleteAttachmentCommand( partNode *node,
KMMessage *msg, TQWidget *parent );
1127 KMDeleteAttachmentCommand(
int nodeId,
KMMessage *msg, TQWidget *parent );
1128 ~KMDeleteAttachmentCommand();
1131 Result doAttachmentModify();
1140 KMEditAttachmentCommand( partNode *node,
KMMessage *msg, TQWidget *parent );
1141 KMEditAttachmentCommand(
int nodeId,
KMMessage *msg, TQWidget *parent );
1142 ~KMEditAttachmentCommand();
1145 Result doAttachmentModify();
1151 KTempFile mTempFile;
1154 class KDE_EXPORT CreateTodoCommand :
public KMCommand
1159 CreateTodoCommand( TQWidget *parent,
KMMessage *msg );