00001
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"
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
00061 KMCommand( TQWidget *parent = 0 );
00062
00063 KMCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList );
00064
00065 KMCommand( TQWidget *parent, KMMsgBase *msgBase );
00066
00067 KMCommand( TQWidget *parent, KMMessage *message );
00068 virtual ~KMCommand();
00069
00074 void keepFolderOpen( KMFolder *folder );
00075
00079 Result result();
00080
00081 public slots:
00082
00083 void start();
00084
00085
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
00098 const TQPtrList<KMMessage> retrievedMsgs() const;
00099
00100 KMMessage *retrievedMessage() const;
00101
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
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
00151 KProgressDialog* mProgressDialog;
00152
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
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
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
00841
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
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