6 #include <tqdatetime.h> 7 #include <tqguardedptr.h> 9 #include <tqvaluelist.h> 10 #include <tqvaluevector.h> 13 #include <tdeio/job.h> 14 #include "kmmsgbase.h" 15 #include <mimelib/string.h> 16 #include <tdepimmacros.h> 18 #include <tdetempfile.h> 23 class KProgressDialog;
37 namespace TDEIO {
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( TDEIO::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(TDEIO::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 TDEIO::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( TDEIO::Job *job,
const TQByteArray & data );
386 void slotResult( TDEIO::Job *job );
389 static const int MAX_CHUNK_SIZE = 64*1024;
392 TDEIO::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( TDEAction* );
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( TDEIO::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 );
This class implements a "reader window", that is a window used for reading or viewing messages...
Base class for commands modifying attachements of existing messages.
Starts an editor for the given URL and emits an signal when editing has been finished.
Returns a popupmenu containing a hierarchy of folder names.