kmcommands.h
00001 // -*- mode: C++; c-file-style: "gnu" -*- 00002 00003 #ifndef KMCommands_h 00004 #define KMCommands_h 00005 00006 #include <tqdatetime.h> 00007 #include <tqguardedptr.h> 00008 #include <tqptrlist.h> 00009 #include <tqvaluelist.h> 00010 #include <tqvaluevector.h> 00011 #include <tqtimer.h> 00012 #include <tqfont.h> 00013 #include <tdeio/job.h> 00014 #include "kmmsgbase.h" // for KMMsgStatus 00015 #include <mimelib/string.h> 00016 #include <tdepimmacros.h> 00017 #include <kservice.h> 00018 #include <tdetempfile.h> 00019 00020 class TQPopupMenu; 00021 class TDEMainWindow; 00022 class TDEAction; 00023 class KProgressDialog; 00024 class TDEProcess; 00025 class KMFilter; 00026 class KMFolder; 00027 class KMFolderImap; 00028 class KMFolderNode; 00029 class KMHeaders; 00030 class KMMainWidget; 00031 class KMMessage; 00032 class KMMsgBase; 00033 class KMReaderWin; 00034 class partNode; 00035 class DwBodyPart; 00036 class DwEntity; 00037 namespace TDEIO { class Job; } 00038 namespace KMail { 00039 class Composer; 00040 class FolderJob; 00041 class EditorWatcher; 00042 class HeaderStyle; 00043 class HeaderStrategy; 00044 } 00045 namespace GpgME { class Error; } 00046 namespace Kleo { class SpecialJob; } 00047 00048 typedef TQMap<int,KMFolder*> KMMenuToFolder; 00049 typedef TQMap<partNode*, KMMessage*> PartNodeMessageMap; 00050 00051 class KDE_EXPORT KMCommand : public TQObject 00052 { 00053 Q_OBJECT 00054 00055 friend class LaterDeleterWithCommandCompletion; 00056 00057 public: 00058 enum Result { Undefined, OK, Canceled, Failed }; 00059 00060 // Trival constructor, don't retrieve any messages 00061 KMCommand( TQWidget *parent = 0 ); 00062 // Retrieve all messages in msgList when start is called. 00063 KMCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList ); 00064 // Retrieve the single message msgBase when start is called. 00065 KMCommand( TQWidget *parent, KMMsgBase *msgBase ); 00066 // Retrieve the single message msgBase when start is called. 00067 KMCommand( TQWidget *parent, KMMessage *message ); 00068 virtual ~KMCommand(); 00069 00074 void keepFolderOpen( KMFolder *folder ); 00075 00079 Result result(); 00080 00081 public slots: 00082 // Retrieve messages then calls execute 00083 void start(); 00084 00085 // advance the progressbar, emitted by the folderjob 00086 void slotProgress( unsigned long done, unsigned long total ); 00087 00088 signals: 00089 00091 void messagesTransfered( KMCommand::Result result ); 00092 00094 void completed( KMCommand *command ); 00095 00096 protected: 00097 // Returns list of messages retrieved 00098 const TQPtrList<KMMessage> retrievedMsgs() const; 00099 // Returns the single message retrieved 00100 KMMessage *retrievedMessage() const; 00101 // Returns the parent widget 00102 TQWidget *parentWidget() const; 00103 00104 bool deletesItself() { return mDeletesItself; } 00110 void setDeletesItself( bool deletesItself ) 00111 { mDeletesItself = deletesItself; } 00112 00113 bool emitsCompletedItself() { return mEmitsCompletedItself; } 00120 void setEmitsCompletedItself( bool emitsCompletedItself ) 00121 { mEmitsCompletedItself = emitsCompletedItself; } 00122 00126 void setResult( Result result ) 00127 { mResult = result; } 00128 00129 private: 00130 // execute should be implemented by derived classes 00131 virtual Result execute() = 0; 00132 00135 void transferSelectedMsgs(); 00136 00137 private slots: 00139 virtual void slotStart(); 00140 00141 void slotPostTransfer( KMCommand::Result result ); 00143 void slotMsgTransfered(KMMessage* msg); 00145 void slotJobFinished(); 00147 void slotTransferCancelled(); 00148 00149 private: 00150 // ProgressDialog for transferring messages 00151 KProgressDialog* mProgressDialog; 00152 //Currently only one async command allowed at a time 00153 static int mCountJobs; 00154 int mCountMsgs; 00155 Result mResult; 00156 bool mDeletesItself : 1; 00157 bool mEmitsCompletedItself : 1; 00158 00159 TQWidget *mParent; 00160 TQPtrList<KMMessage> mRetrievedMsgs; 00161 TQPtrList<KMMsgBase> mMsgList; 00162 TQValueList<TQGuardedPtr<KMFolder> > mFolders; 00163 }; 00164 00165 class KDE_EXPORT KMMailtoComposeCommand : public KMCommand 00166 { 00167 Q_OBJECT 00168 00169 00170 public: 00171 KMMailtoComposeCommand( const KURL &url, KMMessage *msg=0 ); 00172 00173 private: 00174 virtual Result execute(); 00175 00176 KURL mUrl; 00177 KMMessage *mMessage; 00178 }; 00179 00180 class KDE_EXPORT KMMailtoReplyCommand : public KMCommand 00181 { 00182 Q_OBJECT 00183 00184 00185 public: 00186 KMMailtoReplyCommand( TQWidget *parent, const KURL &url, 00187 KMMessage *msg, const TQString &selection ); 00188 00189 private: 00190 virtual Result execute(); 00191 00192 KURL mUrl; 00193 TQString mSelection; 00194 }; 00195 00196 class KDE_EXPORT KMMailtoForwardCommand : public KMCommand 00197 { 00198 Q_OBJECT 00199 00200 00201 public: 00202 KMMailtoForwardCommand( TQWidget *parent, const KURL &url, 00203 KMMessage *msg ); 00204 00205 private: 00206 virtual Result execute(); 00207 00208 KURL mUrl; 00209 }; 00210 00211 class KDE_EXPORT KMMailtoAddAddrBookCommand : public KMCommand 00212 { 00213 Q_OBJECT 00214 00215 00216 public: 00217 KMMailtoAddAddrBookCommand( const KURL &url, TQWidget *parent ); 00218 00219 private: 00220 virtual Result execute(); 00221 00222 KURL mUrl; 00223 }; 00224 00225 class KDE_EXPORT KMAddBookmarksCommand : public KMCommand 00226 { 00227 Q_OBJECT 00228 00229 00230 public: 00231 KMAddBookmarksCommand( const KURL &url, TQWidget *parent ); 00232 00233 private: 00234 virtual Result execute(); 00235 00236 KURL mUrl; 00237 }; 00238 00239 00240 class KDE_EXPORT KMMailtoOpenAddrBookCommand : public KMCommand 00241 { 00242 Q_OBJECT 00243 00244 00245 public: 00246 KMMailtoOpenAddrBookCommand( const KURL &url, TQWidget *parent ); 00247 00248 private: 00249 virtual Result execute(); 00250 00251 KURL mUrl; 00252 }; 00253 00254 class KDE_EXPORT KMUrlCopyCommand : public KMCommand 00255 { 00256 Q_OBJECT 00257 00258 00259 public: 00260 KMUrlCopyCommand( const KURL &url, KMMainWidget *mainWidget = 0 ); 00261 00262 private: 00263 virtual Result execute(); 00264 00265 KURL mUrl; 00266 KMMainWidget *mMainWidget; 00267 }; 00268 00269 class KDE_EXPORT KMUrlOpenCommand : public KMCommand 00270 { 00271 Q_OBJECT 00272 00273 00274 public: 00275 KMUrlOpenCommand( const KURL &url, KMReaderWin *readerWin ); 00276 00277 private: 00278 virtual Result execute(); 00279 00280 KURL mUrl; 00281 KMReaderWin *mReaderWin; 00282 }; 00283 00284 class KDE_EXPORT KMUrlSaveCommand : public KMCommand 00285 { 00286 Q_OBJECT 00287 00288 00289 public: 00290 KMUrlSaveCommand( const KURL &url, TQWidget *parent ); 00291 00292 private slots: 00293 void slotUrlSaveResult( TDEIO::Job *job ); 00294 00295 private: 00296 virtual Result execute(); 00297 00298 KURL mUrl; 00299 }; 00300 00301 class KDE_EXPORT KMEditMsgCommand : public KMCommand 00302 { 00303 Q_OBJECT 00304 00305 00306 public: 00307 KMEditMsgCommand( TQWidget *parent, KMMessage *msg ); 00308 00309 private: 00310 virtual Result execute(); 00311 }; 00312 00313 class KDE_EXPORT KMUseTemplateCommand : public KMCommand 00314 { 00315 Q_OBJECT 00316 00317 00318 public: 00319 KMUseTemplateCommand( TQWidget *parent, KMMessage *msg ); 00320 00321 private: 00322 virtual Result execute(); 00323 }; 00324 00325 class KDE_EXPORT KMShowMsgSrcCommand : public KMCommand 00326 { 00327 Q_OBJECT 00328 00329 00330 public: 00331 KMShowMsgSrcCommand( TQWidget *parent, KMMessage *msg, 00332 bool fixedFont ); 00333 virtual Result execute(); 00334 00335 private: 00336 bool mFixedFont; 00337 bool mMsgWasComplete; 00338 }; 00339 00340 class KDE_EXPORT KMSaveMsgCommand : public KMCommand 00341 { 00342 Q_OBJECT 00343 00344 00345 public: 00346 KMSaveMsgCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList ); 00347 KMSaveMsgCommand( TQWidget *parent, KMMessage * msg ); 00348 KURL url(); 00349 00350 private: 00351 virtual Result execute(); 00352 00353 private slots: 00354 void slotSaveDataReq(); 00355 void slotSaveResult(TDEIO::Job *job); 00357 void slotMessageRetrievedForSaving(KMMessage *msg); 00358 00359 private: 00360 static const int MAX_CHUNK_SIZE = 64*1024; 00361 KURL mUrl; 00362 TQValueList<unsigned long> mMsgList; 00363 TQValueList<KMMsgBase *> mUngetMsgs; 00364 unsigned int mMsgListIndex; 00365 KMMessage *mStandAloneMessage; 00366 TQByteArray mData; 00367 int mOffset; 00368 size_t mTotalSize; 00369 TDEIO::TransferJob *mJob; 00370 }; 00371 00372 class KDE_EXPORT KMOpenMsgCommand : public KMCommand 00373 { 00374 Q_OBJECT 00375 00376 00377 public: 00378 KMOpenMsgCommand( TQWidget *parent, const KURL & url = KURL(), 00379 const TQString & encoding = TQString() ); 00380 00381 private: 00382 virtual Result execute(); 00383 00384 private slots: 00385 void slotDataArrived( TDEIO::Job *job, const TQByteArray & data ); 00386 void slotResult( TDEIO::Job *job ); 00387 00388 private: 00389 static const int MAX_CHUNK_SIZE = 64*1024; 00390 KURL mUrl; 00391 DwString mMsgString; 00392 TDEIO::TransferJob *mJob; 00393 const TQString mEncoding; 00394 }; 00395 00396 class KDE_EXPORT KMSaveAttachmentsCommand : public KMCommand 00397 { 00398 Q_OBJECT 00399 00400 public: 00405 KMSaveAttachmentsCommand( TQWidget *parent, KMMessage *msg ); 00410 KMSaveAttachmentsCommand( TQWidget *parent, const TQPtrList<KMMsgBase>& msgs ); 00419 KMSaveAttachmentsCommand( TQWidget *parent, TQPtrList<partNode> &attachments, 00420 KMMessage *msg, bool encoded = false ); 00421 00422 private slots: 00423 void slotSaveAll(); 00424 00425 private: 00426 virtual Result execute(); 00427 Result saveItem( partNode *node, const KURL& url ); 00428 00429 private: 00430 PartNodeMessageMap mAttachmentMap; 00431 bool mImplicitAttachments; 00432 bool mEncoded; 00433 }; 00434 00435 class KDE_EXPORT KMReplyToCommand : public KMCommand 00436 { 00437 Q_OBJECT 00438 00439 00440 public: 00441 KMReplyToCommand( TQWidget *parent, KMMessage *msg, 00442 const TQString &selection = TQString() ); 00443 00444 private: 00445 virtual Result execute(); 00446 00447 private: 00448 TQString mSelection; 00449 }; 00450 00451 class KDE_EXPORT KMNoQuoteReplyToCommand : public KMCommand 00452 { 00453 Q_OBJECT 00454 00455 00456 public: 00457 KMNoQuoteReplyToCommand( TQWidget *parent, KMMessage *msg ); 00458 00459 private: 00460 virtual Result execute(); 00461 }; 00462 00463 class KMReplyListCommand : public KMCommand 00464 { 00465 Q_OBJECT 00466 00467 00468 public: 00469 KMReplyListCommand( TQWidget *parent, KMMessage *msg, 00470 const TQString &selection = TQString() ); 00471 00472 private: 00473 virtual Result execute(); 00474 00475 private: 00476 TQString mSelection; 00477 }; 00478 00479 class KDE_EXPORT KMReplyToAllCommand : public KMCommand 00480 { 00481 Q_OBJECT 00482 00483 00484 public: 00485 KMReplyToAllCommand( TQWidget *parent, KMMessage *msg, 00486 const TQString &selection = TQString() ); 00487 00488 private: 00489 virtual Result execute(); 00490 00491 private: 00492 TQString mSelection; 00493 }; 00494 00495 class KDE_EXPORT KMReplyAuthorCommand : public KMCommand 00496 { 00497 Q_OBJECT 00498 00499 00500 public: 00501 KMReplyAuthorCommand( TQWidget *parent, KMMessage *msg, 00502 const TQString &selection = TQString() ); 00503 00504 private: 00505 virtual Result execute(); 00506 00507 private: 00508 TQString mSelection; 00509 }; 00510 00511 class KDE_EXPORT KMForwardInlineCommand : public KMCommand 00512 { 00513 Q_OBJECT 00514 00515 00516 public: 00517 KMForwardInlineCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList, 00518 uint identity = 0 ); 00519 KMForwardInlineCommand( TQWidget *parent, KMMessage * msg, 00520 uint identity = 0 ); 00521 00522 private: 00523 virtual Result execute(); 00524 00525 private: 00526 uint mIdentity; 00527 }; 00528 00529 class KDE_EXPORT KMForwardAttachedCommand : public KMCommand 00530 { 00531 Q_OBJECT 00532 00533 00534 public: 00535 KMForwardAttachedCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList, 00536 uint identity = 0, KMail::Composer *win = 0 ); 00537 KMForwardAttachedCommand( TQWidget *parent, KMMessage * msg, 00538 uint identity = 0, KMail::Composer *win = 0 ); 00539 00540 private: 00541 virtual Result execute(); 00542 00543 uint mIdentity; 00544 TQGuardedPtr<KMail::Composer> mWin; 00545 }; 00546 00547 class KDE_EXPORT KMForwardDigestCommand : public KMCommand 00548 { 00549 Q_OBJECT 00550 00551 00552 public: 00553 KMForwardDigestCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList, 00554 uint identity = 0, KMail::Composer *win = 0 ); 00555 KMForwardDigestCommand( TQWidget *parent, KMMessage * msg, 00556 uint identity = 0, KMail::Composer *win = 0 ); 00557 00558 private: 00559 virtual Result execute(); 00560 00561 uint mIdentity; 00562 TQGuardedPtr<KMail::Composer> mWin; 00563 }; 00564 00565 class KDE_EXPORT KMRedirectCommand : public KMCommand 00566 { 00567 Q_OBJECT 00568 00569 00570 public: 00571 KMRedirectCommand( TQWidget *parent, KMMessage *msg ); 00572 00573 private: 00574 virtual Result execute(); 00575 }; 00576 00577 class KDE_EXPORT KMCustomReplyToCommand : public KMCommand 00578 { 00579 Q_OBJECT 00580 00581 00582 public: 00583 KMCustomReplyToCommand( TQWidget *parent, KMMessage *msg, 00584 const TQString &selection, 00585 const TQString &tmpl ); 00586 00587 private: 00588 virtual Result execute(); 00589 00590 private: 00591 TQString mSelection; 00592 TQString mTemplate; 00593 }; 00594 00595 class KDE_EXPORT KMCustomReplyAllToCommand : public KMCommand 00596 { 00597 Q_OBJECT 00598 00599 00600 public: 00601 KMCustomReplyAllToCommand( TQWidget *parent, KMMessage *msg, 00602 const TQString &selection, 00603 const TQString &tmpl ); 00604 00605 private: 00606 virtual Result execute(); 00607 00608 private: 00609 TQString mSelection; 00610 TQString mTemplate; 00611 }; 00612 00613 class KDE_EXPORT KMCustomForwardCommand : public KMCommand 00614 { 00615 Q_OBJECT 00616 00617 00618 public: 00619 KMCustomForwardCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList, 00620 uint identity, const TQString &tmpl ); 00621 KMCustomForwardCommand( TQWidget *parent, KMMessage * msg, 00622 uint identity, const TQString &tmpl ); 00623 00624 private: 00625 virtual Result execute(); 00626 00627 uint mIdentity; 00628 TQString mTemplate; 00629 }; 00630 00631 class KDE_EXPORT KMPrintCommand : public KMCommand 00632 { 00633 Q_OBJECT 00634 00635 00636 public: 00637 KMPrintCommand( TQWidget *parent, KMMessage *msg, 00638 const KMail::HeaderStyle *headerStyle = 0, 00639 const KMail::HeaderStrategy *headerStrategy = 0, 00640 bool htmlOverride = false, 00641 bool htmlLoadExtOverride = false, 00642 bool useFixedFont = false, 00643 const TQString & encoding = TQString() ); 00644 00645 void setOverrideFont( const TQFont& ); 00646 00647 private: 00648 virtual Result execute(); 00649 00650 const KMail::HeaderStyle *mHeaderStyle; 00651 const KMail::HeaderStrategy *mHeaderStrategy; 00652 bool mHtmlOverride; 00653 bool mHtmlLoadExtOverride; 00654 bool mUseFixedFont; 00655 TQFont mOverrideFont; 00656 TQString mEncoding; 00657 }; 00658 00659 class KDE_EXPORT KMSeStatusCommand : public KMCommand 00660 { 00661 Q_OBJECT 00662 00663 00664 public: 00665 // Serial numbers 00666 KMSeStatusCommand( KMMsgStatus status, const TQValueList<TQ_UINT32> &, 00667 bool toggle=false ); 00668 00669 private: 00670 virtual Result execute(); 00671 00672 KMMsgStatus mStatus; 00673 TQValueList<TQ_UINT32> mSerNums; 00674 TQValueList<int> mIds; 00675 bool mToggle; 00676 }; 00677 00678 class KDE_EXPORT KMFilterCommand : public KMCommand 00679 { 00680 Q_OBJECT 00681 00682 00683 public: 00684 KMFilterCommand( const TQCString &field, const TQString &value ); 00685 00686 private: 00687 virtual Result execute(); 00688 00689 TQCString mField; 00690 TQString mValue; 00691 }; 00692 00693 00694 class KDE_EXPORT KMFilterActionCommand : public KMCommand 00695 { 00696 Q_OBJECT 00697 00698 00699 public: 00700 KMFilterActionCommand( TQWidget *parent, 00701 const TQPtrList<KMMsgBase> &msgList, 00702 KMFilter *filter ); 00703 00704 private: 00705 virtual Result execute(); 00706 TQValueList<TQ_UINT32> serNumList; 00707 KMFilter *mFilter; 00708 }; 00709 00710 00711 class KDE_EXPORT KMMetaFilterActionCommand : public TQObject 00712 { 00713 Q_OBJECT 00714 00715 00716 public: 00717 KMMetaFilterActionCommand( KMFilter *filter, KMHeaders *headers, 00718 KMMainWidget *main ); 00719 00720 public slots: 00721 void start(); 00722 00723 private: 00724 KMFilter *mFilter; 00725 KMHeaders *mHeaders; 00726 KMMainWidget *mMainWidget; 00727 }; 00728 00729 class KDE_EXPORT FolderShortcutCommand : public TQObject 00730 { 00731 Q_OBJECT 00732 00733 00734 public: 00735 FolderShortcutCommand( KMMainWidget* mainwidget, KMFolder *folder ); 00736 ~FolderShortcutCommand(); 00737 00738 public slots: 00739 void start(); 00743 void setAction( TDEAction* ); 00744 00745 private: 00746 KMMainWidget *mMainWidget; 00747 KMFolder *mFolder; 00748 TDEAction *mAction; 00749 }; 00750 00751 00752 class KDE_EXPORT KMMailingListFilterCommand : public KMCommand 00753 { 00754 Q_OBJECT 00755 00756 00757 public: 00758 KMMailingListFilterCommand( TQWidget *parent, KMMessage *msg ); 00759 00760 private: 00761 virtual Result execute(); 00762 }; 00763 00764 00772 class KDE_EXPORT KMMenuCommand : public KMCommand 00773 { 00774 Q_OBJECT 00775 00776 00777 public: 00778 static void folderToPopupMenu(bool move, TQObject *receiver, 00779 KMMenuToFolder *aMenuToFolder, TQPopupMenu *menu ); 00780 00781 static void makeFolderMenu(KMFolderNode* item, bool move, 00782 TQObject *receiver, KMMenuToFolder *aMenuToFolder, TQPopupMenu *menu ); 00783 }; 00784 00785 class KDE_EXPORT KMCopyCommand : public KMMenuCommand 00786 { 00787 Q_OBJECT 00788 00789 00790 public: 00791 KMCopyCommand( KMFolder* destFolder, 00792 const TQPtrList<KMMsgBase> &msgList ); 00793 KMCopyCommand( KMFolder* destFolder, KMMessage *msg ); 00794 00795 protected slots: 00796 void slotJobFinished( KMail::FolderJob *job ); 00797 00798 void slotFolderComplete( KMFolderImap*, bool success ); 00799 00800 private: 00801 virtual Result execute(); 00802 00803 KMFolder *mDestFolder; 00804 TQPtrList<KMMsgBase> mMsgList; 00805 TQValueList<KMail::FolderJob*> mPendingJobs; 00806 }; 00807 00808 namespace KPIM { 00809 class ProgressItem; 00810 } 00811 class KDE_EXPORT KMMoveCommand : public KMMenuCommand 00812 { 00813 Q_OBJECT 00814 00815 00816 public: 00817 KMMoveCommand( KMFolder* destFolder, const TQPtrList<KMMsgBase> &msgList ); 00818 KMMoveCommand( KMFolder* destFolder, KMMessage * msg ); 00819 KMMoveCommand( KMFolder* destFolder, KMMsgBase * msgBase ); 00820 KMFolder* destFolder() const { return mDestFolder; } 00821 00822 public slots: 00823 void slotImapFolderCompleted(KMFolderImap *folder, bool success); 00824 void slotMsgAddedToDestFolder(KMFolder *folder, TQ_UINT32 serNum); 00825 void slotMoveCanceled(); 00826 00827 protected: 00828 // Needed for KMDeleteCommand for "move to trash" 00829 KMMoveCommand( TQ_UINT32 sernum ); 00830 void setDestFolder( KMFolder* folder ) { mDestFolder = folder; } 00831 void addMsg( KMMsgBase *msg ) { mSerNumList.append( msg->getMsgSerNum() ); } 00832 TQValueVector<KMFolder*> mOpenedFolders; 00833 00834 private: 00835 virtual Result execute(); 00836 void completeMove( Result result ); 00837 00838 KMFolder *mDestFolder; 00839 TQValueList<TQ_UINT32> mSerNumList; 00840 // List of serial numbers that have to be transferred to a host. 00841 // Ticked off as they come in via msgAdded signals. 00842 TQValueList<TQ_UINT32> mLostBoys; 00843 KPIM::ProgressItem *mProgressItem; 00844 bool mCompleteWithAddedMsg; 00845 }; 00846 00847 class KDE_EXPORT KMDeleteMsgCommand : public KMMoveCommand 00848 { 00849 Q_OBJECT 00850 00851 00852 public: 00853 KMDeleteMsgCommand( KMFolder* srcFolder, const TQPtrList<KMMsgBase> &msgList ); 00854 KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg ); 00855 KMDeleteMsgCommand( TQ_UINT32 sernum ); 00856 00857 private: 00858 static KMFolder * findTrashFolder( KMFolder * srcFolder ); 00859 00860 }; 00861 00862 class KDE_EXPORT KMUrlClickedCommand : public KMCommand 00863 { 00864 Q_OBJECT 00865 00866 00867 public: 00868 KMUrlClickedCommand( const KURL &url, uint identity, 00869 KMReaderWin *readerWin, bool mHtmlPref, KMMainWidget *mainWidget = 0 ); 00870 00871 private: 00872 virtual Result execute(); 00873 00874 KURL mUrl; 00875 uint mIdentity; 00876 KMReaderWin *mReaderWin; 00877 bool mHtmlPref; 00878 KMMainWidget *mMainWidget; 00879 }; 00880 00881 class KDE_EXPORT KMLoadPartsCommand : public KMCommand 00882 { 00883 Q_OBJECT 00884 00885 00886 public: 00887 KMLoadPartsCommand( TQPtrList<partNode>& parts, KMMessage* msg ); 00888 KMLoadPartsCommand( partNode* node, KMMessage* msg ); 00889 KMLoadPartsCommand( PartNodeMessageMap& partMap ); 00890 00891 public slots: 00892 void slotPartRetrieved( KMMessage* msg, TQString partSpecifier ); 00893 00894 signals: 00895 void partsRetrieved(); 00896 00897 private: 00898 // Retrieve parts then calls execute 00899 virtual void slotStart(); 00900 00901 virtual Result execute(); 00902 00903 int mNeedsRetrieval; 00904 PartNodeMessageMap mPartMap; 00905 }; 00906 00907 class KDE_EXPORT KMResendMessageCommand : public KMCommand 00908 { 00909 Q_OBJECT 00910 00911 00912 public: 00913 KMResendMessageCommand( TQWidget *parent, KMMessage *msg=0 ); 00914 00915 private: 00916 virtual Result execute(); 00917 }; 00918 00919 class KDE_EXPORT KMMailingListCommand : public KMCommand 00920 { 00921 Q_OBJECT 00922 00923 public: 00924 KMMailingListCommand( TQWidget *parent, KMFolder *folder ); 00925 private: 00926 virtual Result execute(); 00927 private slots: 00928 void commandCompleted( KMCommand *command ); 00929 protected: 00930 virtual KURL::List urls() const =0; 00931 protected: 00932 KMFolder *mFolder; 00933 }; 00934 00935 class KDE_EXPORT KMMailingListPostCommand : public KMMailingListCommand 00936 { 00937 Q_OBJECT 00938 00939 public: 00940 KMMailingListPostCommand( TQWidget *parent, KMFolder *folder ); 00941 protected: 00942 virtual KURL::List urls() const; 00943 }; 00944 00945 class KDE_EXPORT KMMailingListSubscribeCommand : public KMMailingListCommand 00946 { 00947 Q_OBJECT 00948 00949 public: 00950 KMMailingListSubscribeCommand( TQWidget *parent, KMFolder *folder ); 00951 protected: 00952 virtual KURL::List urls() const; 00953 }; 00954 00955 class KDE_EXPORT KMMailingListUnsubscribeCommand : public KMMailingListCommand 00956 { 00957 Q_OBJECT 00958 00959 public: 00960 KMMailingListUnsubscribeCommand( TQWidget *parent, KMFolder *folder ); 00961 protected: 00962 virtual KURL::List urls() const; 00963 }; 00964 00965 class KDE_EXPORT KMMailingListArchivesCommand : public KMMailingListCommand 00966 { 00967 Q_OBJECT 00968 00969 public: 00970 KMMailingListArchivesCommand( TQWidget *parent, KMFolder *folder ); 00971 protected: 00972 virtual KURL::List urls() const; 00973 }; 00974 00975 class KDE_EXPORT KMMailingListHelpCommand : public KMMailingListCommand 00976 { 00977 Q_OBJECT 00978 00979 public: 00980 KMMailingListHelpCommand( TQWidget *parent, KMFolder *folder ); 00981 protected: 00982 virtual KURL::List urls() const; 00983 }; 00984 00985 class KDE_EXPORT KMIMChatCommand : public KMCommand 00986 { 00987 Q_OBJECT 00988 00989 00990 public: 00991 KMIMChatCommand( const KURL &url, KMMessage *msg=0 ); 00992 00993 private: 01000 virtual Result execute(); 01001 01002 KURL mUrl; 01003 KMMessage *mMessage; 01004 }; 01005 01006 class KDE_EXPORT KMHandleAttachmentCommand : public KMCommand 01007 { 01008 Q_OBJECT 01009 01010 01011 public: 01013 enum AttachmentAction 01014 { 01015 Open = 1, 01016 OpenWith = 2, 01017 View = 3, 01018 Save = 4, 01019 Properties = 5, 01020 ChiasmusEncrypt = 6 01021 }; 01031 KMHandleAttachmentCommand( partNode* node, KMMessage* msg, int atmId, 01032 const TQString& atmName, AttachmentAction action, KService::Ptr offer, TQWidget* parent ); 01033 01034 01035 signals: 01036 void showAttachment( int id, const TQString& name ); 01037 01038 private: 01039 virtual Result execute(); 01040 01041 TQString createAtmFileLink() const; 01042 01044 KService::Ptr getServiceOffer(); 01045 01047 void atmOpen(); 01048 01050 void atmOpenWith(); 01051 01056 void atmView(); 01057 01059 void atmSave(); 01060 01062 void atmProperties(); 01063 01065 void atmEncryptWithChiasmus(); 01066 01067 private slots: 01069 virtual void slotStart(); 01070 01075 void slotPartComplete(); 01076 01077 void slotAtmDecryptWithChiasmusResult( const GpgME::Error &, const TQVariant & ); 01078 void slotAtmDecryptWithChiasmusUploadResult( TDEIO::Job * ); 01079 01080 private: 01081 partNode* mNode; 01082 KMMessage* mMsg; 01083 int mAtmId; 01084 TQString mAtmName; 01085 AttachmentAction mAction; 01086 KService::Ptr mOffer; 01087 Kleo::SpecialJob *mJob; 01088 01089 }; 01090 01091 01093 class KDE_EXPORT AttachmentModifyCommand : public KMCommand 01094 { 01095 Q_OBJECT 01096 01097 public: 01098 AttachmentModifyCommand( partNode *node, KMMessage *msg, TQWidget *parent ); 01099 AttachmentModifyCommand( int nodeId, KMMessage *msg, TQWidget *parent ); 01100 ~AttachmentModifyCommand(); 01101 01102 protected: 01103 void storeChangedMessage( KMMessage* msg ); 01104 virtual Result doAttachmentModify() = 0; 01105 01106 protected: 01107 int mPartIndex; 01108 TQ_UINT32 mSernum; 01109 01110 private: 01111 Result execute(); 01112 01113 private slots: 01114 void messageStoreResult( KMFolderImap* folder, bool success ); 01115 void messageDeleteResult( KMCommand *cmd ); 01116 01117 private: 01118 TQGuardedPtr<KMFolder> mFolder; 01119 }; 01120 01121 class KDE_EXPORT KMDeleteAttachmentCommand : public AttachmentModifyCommand 01122 { 01123 Q_OBJECT 01124 01125 public: 01126 KMDeleteAttachmentCommand( partNode *node, KMMessage *msg, TQWidget *parent ); 01127 KMDeleteAttachmentCommand( int nodeId, KMMessage *msg, TQWidget *parent ); 01128 ~KMDeleteAttachmentCommand(); 01129 01130 protected: 01131 Result doAttachmentModify(); 01132 }; 01133 01134 01135 class KDE_EXPORT KMEditAttachmentCommand : public AttachmentModifyCommand 01136 { 01137 Q_OBJECT 01138 01139 public: 01140 KMEditAttachmentCommand( partNode *node, KMMessage *msg, TQWidget *parent ); 01141 KMEditAttachmentCommand( int nodeId, KMMessage *msg, TQWidget *parent ); 01142 ~KMEditAttachmentCommand(); 01143 01144 protected: 01145 Result doAttachmentModify(); 01146 01147 private slots: 01148 void editDone( KMail::EditorWatcher *watcher ); 01149 01150 private: 01151 KTempFile mTempFile; 01152 }; 01153 01154 class KDE_EXPORT CreateTodoCommand : public KMCommand 01155 { 01156 Q_OBJECT 01157 01158 public: 01159 CreateTodoCommand( TQWidget *parent, KMMessage *msg ); 01160 01161 private: 01162 Result execute(); 01163 }; 01164 01165 #endif /*KMCommands_h*/