00001
00002
00003 #ifndef KMCommands_h
00004 #define KMCommands_h
00005
00006 #include <qdatetime.h>
00007 #include <qguardedptr.h>
00008 #include <qptrlist.h>
00009 #include <qvaluelist.h>
00010 #include <qvaluevector.h>
00011 #include <qtimer.h>
00012 #include <qfont.h>
00013 #include <kio/job.h>
00014 #include "kmmsgbase.h"
00015 #include <mimelib/string.h>
00016 #include <kdepimmacros.h>
00017 #include <kservice.h>
00018 #include <ktempfile.h>
00019
00020 class QPopupMenu;
00021 class KMainWindow;
00022 class KAction;
00023 class KProgressDialog;
00024 class KProcess;
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 namespace KIO { class Job; }
00036 namespace KMail {
00037 class Composer;
00038 class FolderJob;
00039 class EditorWatcher;
00040 }
00041 namespace GpgME { class Error; }
00042 namespace Kleo { class SpecialJob; }
00043
00044 typedef QMap<int,KMFolder*> KMMenuToFolder;
00045 typedef QMap<partNode*, KMMessage*> PartNodeMessageMap;
00046
00047 class KDE_EXPORT KMCommand : public QObject
00048 {
00049 Q_OBJECT
00050 friend class LaterDeleterWithCommandCompletion;
00051
00052 public:
00053 enum Result { Undefined, OK, Canceled, Failed };
00054
00055
00056 KMCommand( QWidget *parent = 0 );
00057
00058 KMCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList );
00059
00060 KMCommand( QWidget *parent, KMMsgBase *msgBase );
00061
00062 KMCommand( QWidget *parent, KMMessage *message );
00063 virtual ~KMCommand();
00064
00069 void keepFolderOpen( KMFolder *folder );
00070
00074 Result result();
00075
00076 public slots:
00077
00078 void start();
00079
00080
00081 void slotProgress( unsigned long done, unsigned long total );
00082
00083 signals:
00084 void messagesTransfered( KMCommand::Result result );
00087 void completed( KMCommand *command );
00088
00089 protected:
00090
00091 const QPtrList<KMMessage> retrievedMsgs() const;
00092
00093 KMMessage *retrievedMessage() const;
00094
00095 QWidget *parentWidget() const;
00096
00097 bool deletesItself() { return mDeletesItself; }
00103 void setDeletesItself( bool deletesItself )
00104 { mDeletesItself = deletesItself; }
00105
00106 bool emitsCompletedItself() { return mEmitsCompletedItself; }
00113 void setEmitsCompletedItself( bool emitsCompletedItself )
00114 { mEmitsCompletedItself = emitsCompletedItself; }
00115
00119 void setResult( Result result )
00120 { mResult = result; }
00121
00122 private:
00123
00124 virtual Result execute() = 0;
00125
00128 void transferSelectedMsgs();
00129
00130 private slots:
00132 virtual void slotStart();
00133
00134 void slotPostTransfer( KMCommand::Result result );
00136 void slotMsgTransfered(KMMessage* msg);
00138 void slotJobFinished();
00140 void slotTransferCancelled();
00141
00142 private:
00143
00144 KProgressDialog* mProgressDialog;
00145
00146 static int mCountJobs;
00147 int mCountMsgs;
00148 Result mResult;
00149 bool mDeletesItself : 1;
00150 bool mEmitsCompletedItself : 1;
00151
00152 QWidget *mParent;
00153 QPtrList<KMMessage> mRetrievedMsgs;
00154 QPtrList<KMMsgBase> mMsgList;
00155 QValueList<QGuardedPtr<KMFolder> > mFolders;
00156 };
00157
00158 class KDE_EXPORT KMMailtoComposeCommand : public KMCommand
00159 {
00160 Q_OBJECT
00161
00162 public:
00163 KMMailtoComposeCommand( const KURL &url, KMMessage *msg=0 );
00164
00165 private:
00166 virtual Result execute();
00167
00168 KURL mUrl;
00169 KMMessage *mMessage;
00170 };
00171
00172 class KDE_EXPORT KMMailtoReplyCommand : public KMCommand
00173 {
00174 Q_OBJECT
00175
00176 public:
00177 KMMailtoReplyCommand( QWidget *parent, const KURL &url,
00178 KMMessage *msg, const QString &selection );
00179
00180 private:
00181 virtual Result execute();
00182
00183 KURL mUrl;
00184 QString mSelection;
00185 };
00186
00187 class KDE_EXPORT KMMailtoForwardCommand : public KMCommand
00188 {
00189 Q_OBJECT
00190
00191 public:
00192 KMMailtoForwardCommand( QWidget *parent, const KURL &url,
00193 KMMessage *msg );
00194
00195 private:
00196 virtual Result execute();
00197
00198 KURL mUrl;
00199 };
00200
00201 class KDE_EXPORT KMMailtoAddAddrBookCommand : public KMCommand
00202 {
00203 Q_OBJECT
00204
00205 public:
00206 KMMailtoAddAddrBookCommand( const KURL &url, QWidget *parent );
00207
00208 private:
00209 virtual Result execute();
00210
00211 KURL mUrl;
00212 };
00213
00214 class KDE_EXPORT KMAddBookmarksCommand : public KMCommand
00215 {
00216 Q_OBJECT
00217
00218 public:
00219 KMAddBookmarksCommand( const KURL &url, QWidget *parent );
00220
00221 private:
00222 virtual Result execute();
00223
00224 KURL mUrl;
00225 };
00226
00227
00228 class KDE_EXPORT KMMailtoOpenAddrBookCommand : public KMCommand
00229 {
00230 Q_OBJECT
00231
00232 public:
00233 KMMailtoOpenAddrBookCommand( const KURL &url, QWidget *parent );
00234
00235 private:
00236 virtual Result execute();
00237
00238 KURL mUrl;
00239 };
00240
00241 class KDE_EXPORT KMUrlCopyCommand : public KMCommand
00242 {
00243 Q_OBJECT
00244
00245 public:
00246 KMUrlCopyCommand( const KURL &url, KMMainWidget *mainWidget = 0 );
00247
00248 private:
00249 virtual Result execute();
00250
00251 KURL mUrl;
00252 KMMainWidget *mMainWidget;
00253 };
00254
00255 class KDE_EXPORT KMUrlOpenCommand : public KMCommand
00256 {
00257 Q_OBJECT
00258
00259 public:
00260 KMUrlOpenCommand( const KURL &url, KMReaderWin *readerWin );
00261
00262 private:
00263 virtual Result execute();
00264
00265 KURL mUrl;
00266 KMReaderWin *mReaderWin;
00267 };
00268
00269 class KDE_EXPORT KMUrlSaveCommand : public KMCommand
00270 {
00271 Q_OBJECT
00272
00273 public:
00274 KMUrlSaveCommand( const KURL &url, QWidget *parent );
00275
00276 private slots:
00277 void slotUrlSaveResult( KIO::Job *job );
00278
00279 private:
00280 virtual Result execute();
00281
00282 KURL mUrl;
00283 };
00284
00285 class KDE_EXPORT KMEditMsgCommand : public KMCommand
00286 {
00287 Q_OBJECT
00288
00289 public:
00290 KMEditMsgCommand( QWidget *parent, KMMessage *msg );
00291
00292 private:
00293 virtual Result execute();
00294 };
00295
00296 class KDE_EXPORT KMUseTemplateCommand : public KMCommand
00297 {
00298 Q_OBJECT
00299
00300 public:
00301 KMUseTemplateCommand( QWidget *parent, KMMessage *msg );
00302
00303 private:
00304 virtual Result execute();
00305 };
00306
00307 class KDE_EXPORT KMShowMsgSrcCommand : public KMCommand
00308 {
00309 Q_OBJECT
00310
00311 public:
00312 KMShowMsgSrcCommand( QWidget *parent, KMMessage *msg,
00313 bool fixedFont );
00314 virtual Result execute();
00315
00316 private:
00317 bool mFixedFont;
00318 bool mMsgWasComplete;
00319 };
00320
00321 class KDE_EXPORT KMSaveMsgCommand : public KMCommand
00322 {
00323 Q_OBJECT
00324
00325 public:
00326 KMSaveMsgCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList );
00327 KMSaveMsgCommand( QWidget *parent, KMMessage * msg );
00328 KURL url();
00329
00330 private:
00331 virtual Result execute();
00332
00333 private slots:
00334 void slotSaveDataReq();
00335 void slotSaveResult(KIO::Job *job);
00337 void slotMessageRetrievedForSaving(KMMessage *msg);
00338
00339 private:
00340 static const int MAX_CHUNK_SIZE = 64*1024;
00341 KURL mUrl;
00342 QValueList<unsigned long> mMsgList;
00343 unsigned int mMsgListIndex;
00344 KMMessage *mStandAloneMessage;
00345 QByteArray mData;
00346 int mOffset;
00347 size_t mTotalSize;
00348 KIO::TransferJob *mJob;
00349 };
00350
00351 class KDE_EXPORT KMOpenMsgCommand : public KMCommand
00352 {
00353 Q_OBJECT
00354
00355 public:
00356 KMOpenMsgCommand( QWidget *parent, const KURL & url = KURL(),
00357 const QString & encoding = QString() );
00358
00359 private:
00360 virtual Result execute();
00361
00362 private slots:
00363 void slotDataArrived( KIO::Job *job, const QByteArray & data );
00364 void slotResult( KIO::Job *job );
00365
00366 private:
00367 static const int MAX_CHUNK_SIZE = 64*1024;
00368 KURL mUrl;
00369 DwString mMsgString;
00370 KIO::TransferJob *mJob;
00371 const QString mEncoding;
00372 };
00373
00374 class KDE_EXPORT KMSaveAttachmentsCommand : public KMCommand
00375 {
00376 Q_OBJECT
00377 public:
00382 KMSaveAttachmentsCommand( QWidget *parent, KMMessage *msg );
00387 KMSaveAttachmentsCommand( QWidget *parent, const QPtrList<KMMsgBase>& msgs );
00396 KMSaveAttachmentsCommand( QWidget *parent, QPtrList<partNode> &attachments,
00397 KMMessage *msg, bool encoded = false );
00398
00399 private slots:
00400 void slotSaveAll();
00401
00402 private:
00403 virtual Result execute();
00404 Result saveItem( partNode *node, const KURL& url );
00405
00406 private:
00407 PartNodeMessageMap mAttachmentMap;
00408 bool mImplicitAttachments;
00409 bool mEncoded;
00410 };
00411
00412 class KDE_EXPORT KMReplyToCommand : public KMCommand
00413 {
00414 Q_OBJECT
00415
00416 public:
00417 KMReplyToCommand( QWidget *parent, KMMessage *msg,
00418 const QString &selection = QString::null );
00419
00420 private:
00421 virtual Result execute();
00422
00423 private:
00424 QString mSelection;
00425 };
00426
00427 class KDE_EXPORT KMNoQuoteReplyToCommand : public KMCommand
00428 {
00429 Q_OBJECT
00430
00431 public:
00432 KMNoQuoteReplyToCommand( QWidget *parent, KMMessage *msg );
00433
00434 private:
00435 virtual Result execute();
00436 };
00437
00438 class KMReplyListCommand : public KMCommand
00439 {
00440 Q_OBJECT
00441
00442 public:
00443 KMReplyListCommand( QWidget *parent, KMMessage *msg,
00444 const QString &selection = QString::null );
00445
00446 private:
00447 virtual Result execute();
00448
00449 private:
00450 QString mSelection;
00451 };
00452
00453 class KDE_EXPORT KMReplyToAllCommand : public KMCommand
00454 {
00455 Q_OBJECT
00456
00457 public:
00458 KMReplyToAllCommand( QWidget *parent, KMMessage *msg,
00459 const QString &selection = QString::null );
00460
00461 private:
00462 virtual Result execute();
00463
00464 private:
00465 QString mSelection;
00466 };
00467
00468 class KDE_EXPORT KMReplyAuthorCommand : public KMCommand
00469 {
00470 Q_OBJECT
00471
00472 public:
00473 KMReplyAuthorCommand( QWidget *parent, KMMessage *msg,
00474 const QString &selection = QString::null );
00475
00476 private:
00477 virtual Result execute();
00478
00479 private:
00480 QString mSelection;
00481 };
00482
00483 class KDE_EXPORT KMForwardInlineCommand : public KMCommand
00484 {
00485 Q_OBJECT
00486
00487 public:
00488 KMForwardInlineCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00489 uint identity = 0 );
00490 KMForwardInlineCommand( QWidget *parent, KMMessage * msg,
00491 uint identity = 0 );
00492
00493 private:
00494 virtual Result execute();
00495
00496 private:
00497 uint mIdentity;
00498 };
00499
00500 class KDE_EXPORT KMForwardAttachedCommand : public KMCommand
00501 {
00502 Q_OBJECT
00503
00504 public:
00505 KMForwardAttachedCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00506 uint identity = 0, KMail::Composer *win = 0 );
00507 KMForwardAttachedCommand( QWidget *parent, KMMessage * msg,
00508 uint identity = 0, KMail::Composer *win = 0 );
00509
00510 private:
00511 virtual Result execute();
00512
00513 uint mIdentity;
00514 QGuardedPtr<KMail::Composer> mWin;
00515 };
00516
00517 class KDE_EXPORT KMForwardDigestCommand : public KMCommand
00518 {
00519 Q_OBJECT
00520
00521 public:
00522 KMForwardDigestCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00523 uint identity = 0, KMail::Composer *win = 0 );
00524 KMForwardDigestCommand( QWidget *parent, KMMessage * msg,
00525 uint identity = 0, KMail::Composer *win = 0 );
00526
00527 private:
00528 virtual Result execute();
00529
00530 uint mIdentity;
00531 QGuardedPtr<KMail::Composer> mWin;
00532 };
00533
00534 class KDE_EXPORT KMRedirectCommand : public KMCommand
00535 {
00536 Q_OBJECT
00537
00538 public:
00539 KMRedirectCommand( QWidget *parent, KMMessage *msg );
00540
00541 private:
00542 virtual Result execute();
00543 };
00544
00545 class KDE_EXPORT KMCustomReplyToCommand : public KMCommand
00546 {
00547 Q_OBJECT
00548
00549 public:
00550 KMCustomReplyToCommand( QWidget *parent, KMMessage *msg,
00551 const QString &selection,
00552 const QString &tmpl );
00553
00554 private:
00555 virtual Result execute();
00556
00557 private:
00558 QString mSelection;
00559 QString mTemplate;
00560 };
00561
00562 class KDE_EXPORT KMCustomReplyAllToCommand : public KMCommand
00563 {
00564 Q_OBJECT
00565
00566 public:
00567 KMCustomReplyAllToCommand( QWidget *parent, KMMessage *msg,
00568 const QString &selection,
00569 const QString &tmpl );
00570
00571 private:
00572 virtual Result execute();
00573
00574 private:
00575 QString mSelection;
00576 QString mTemplate;
00577 };
00578
00579 class KDE_EXPORT KMCustomForwardCommand : public KMCommand
00580 {
00581 Q_OBJECT
00582
00583 public:
00584 KMCustomForwardCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00585 uint identity, const QString &tmpl );
00586 KMCustomForwardCommand( QWidget *parent, KMMessage * msg,
00587 uint identity, const QString &tmpl );
00588
00589 private:
00590 virtual Result execute();
00591
00592 uint mIdentity;
00593 QString mTemplate;
00594 };
00595
00596 class KDE_EXPORT KMPrintCommand : public KMCommand
00597 {
00598 Q_OBJECT
00599
00600 public:
00601 KMPrintCommand( QWidget *parent, KMMessage *msg,
00602 bool htmlOverride=false,
00603 bool htmlLoadExtOverride=false,
00604 bool useFixedFont = false,
00605 const QString & encoding = QString() );
00606
00607 void setOverrideFont( const QFont& );
00608
00609 private:
00610 virtual Result execute();
00611
00612 bool mHtmlOverride;
00613 bool mHtmlLoadExtOverride;
00614 bool mUseFixedFont;
00615 QFont mOverrideFont;
00616 QString mEncoding;
00617 };
00618
00619 class KDE_EXPORT KMSetStatusCommand : public KMCommand
00620 {
00621 Q_OBJECT
00622
00623 public:
00624
00625 KMSetStatusCommand( KMMsgStatus status, const QValueList<Q_UINT32> &,
00626 bool toggle=false );
00627
00628 private:
00629 virtual Result execute();
00630
00631 KMMsgStatus mStatus;
00632 QValueList<Q_UINT32> mSerNums;
00633 QValueList<int> mIds;
00634 bool mToggle;
00635 };
00636
00637 class KDE_EXPORT KMFilterCommand : public KMCommand
00638 {
00639 Q_OBJECT
00640
00641 public:
00642 KMFilterCommand( const QCString &field, const QString &value );
00643
00644 private:
00645 virtual Result execute();
00646
00647 QCString mField;
00648 QString mValue;
00649 };
00650
00651
00652 class KDE_EXPORT KMFilterActionCommand : public KMCommand
00653 {
00654 Q_OBJECT
00655
00656 public:
00657 KMFilterActionCommand( QWidget *parent,
00658 const QPtrList<KMMsgBase> &msgList,
00659 KMFilter *filter );
00660
00661 private:
00662 virtual Result execute();
00663 QValueList<Q_UINT32> serNumList;
00664 KMFilter *mFilter;
00665 };
00666
00667
00668 class KDE_EXPORT KMMetaFilterActionCommand : public QObject
00669 {
00670 Q_OBJECT
00671
00672 public:
00673 KMMetaFilterActionCommand( KMFilter *filter, KMHeaders *headers,
00674 KMMainWidget *main );
00675
00676 public slots:
00677 void start();
00678
00679 private:
00680 KMFilter *mFilter;
00681 KMHeaders *mHeaders;
00682 KMMainWidget *mMainWidget;
00683 };
00684
00685 class KDE_EXPORT FolderShortcutCommand : public QObject
00686 {
00687 Q_OBJECT
00688
00689 public:
00690 FolderShortcutCommand( KMMainWidget* mainwidget, KMFolder *folder );
00691 ~FolderShortcutCommand();
00692
00693 public slots:
00694 void start();
00698 void setAction( KAction* );
00699
00700 private:
00701 KMMainWidget *mMainWidget;
00702 KMFolder *mFolder;
00703 KAction *mAction;
00704 };
00705
00706
00707 class KDE_EXPORT KMMailingListFilterCommand : public KMCommand
00708 {
00709 Q_OBJECT
00710
00711 public:
00712 KMMailingListFilterCommand( QWidget *parent, KMMessage *msg );
00713
00714 private:
00715 virtual Result execute();
00716 };
00717
00718
00726 class KDE_EXPORT KMMenuCommand : public KMCommand
00727 {
00728 Q_OBJECT
00729
00730 public:
00731 static void folderToPopupMenu(bool move, QObject *receiver,
00732 KMMenuToFolder *aMenuToFolder, QPopupMenu *menu );
00733
00734 static void makeFolderMenu(KMFolderNode* item, bool move,
00735 QObject *receiver, KMMenuToFolder *aMenuToFolder, QPopupMenu *menu );
00736 };
00737
00738 class KDE_EXPORT KMCopyCommand : public KMMenuCommand
00739 {
00740 Q_OBJECT
00741
00742 public:
00743 KMCopyCommand( KMFolder* destFolder,
00744 const QPtrList<KMMsgBase> &msgList );
00745 KMCopyCommand( KMFolder* destFolder, KMMessage *msg );
00746
00747 protected slots:
00748 void slotJobFinished( KMail::FolderJob *job );
00749
00750 void slotFolderComplete( KMFolderImap*, bool success );
00751
00752 private:
00753 virtual Result execute();
00754
00755 KMFolder *mDestFolder;
00756 QPtrList<KMMsgBase> mMsgList;
00757 QValueList<KMail::FolderJob*> mPendingJobs;
00758 };
00759
00760 namespace KPIM {
00761 class ProgressItem;
00762 }
00763 class KDE_EXPORT KMMoveCommand : public KMMenuCommand
00764 {
00765 Q_OBJECT
00766
00767 public:
00768 KMMoveCommand( KMFolder* destFolder, const QPtrList<KMMsgBase> &msgList );
00769 KMMoveCommand( KMFolder* destFolder, KMMessage * msg );
00770 KMMoveCommand( KMFolder* destFolder, KMMsgBase * msgBase );
00771 KMFolder* destFolder() const { return mDestFolder; }
00772
00773 public slots:
00774 void slotImapFolderCompleted(KMFolderImap *folder, bool success);
00775 void slotMsgAddedToDestFolder(KMFolder *folder, Q_UINT32 serNum);
00776 void slotMoveCanceled();
00777
00778 protected:
00779
00780 KMMoveCommand( Q_UINT32 sernum );
00781 void setDestFolder( KMFolder* folder ) { mDestFolder = folder; }
00782 void addMsg( KMMsgBase *msg ) { mSerNumList.append( msg->getMsgSerNum() ); }
00783 QValueVector<KMFolder*> mOpenedFolders;
00784
00785 private:
00786 virtual Result execute();
00787 void completeMove( Result result );
00788
00789 KMFolder *mDestFolder;
00790 QValueList<Q_UINT32> mSerNumList;
00791
00792
00793 QValueList<Q_UINT32> mLostBoys;
00794 KPIM::ProgressItem *mProgressItem;
00795 bool mCompleteWithAddedMsg;
00796 };
00797
00798 class KDE_EXPORT KMDeleteMsgCommand : public KMMoveCommand
00799 {
00800 Q_OBJECT
00801
00802 public:
00803 KMDeleteMsgCommand( KMFolder* srcFolder, const QPtrList<KMMsgBase> &msgList );
00804 KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg );
00805 KMDeleteMsgCommand( Q_UINT32 sernum );
00806
00807 private:
00808 static KMFolder * findTrashFolder( KMFolder * srcFolder );
00809
00810 };
00811
00812 class KDE_EXPORT KMUrlClickedCommand : public KMCommand
00813 {
00814 Q_OBJECT
00815
00816 public:
00817 KMUrlClickedCommand( const KURL &url, uint identity,
00818 KMReaderWin *readerWin, bool mHtmlPref, KMMainWidget *mainWidget = 0 );
00819
00820 private:
00821 virtual Result execute();
00822
00823 KURL mUrl;
00824 uint mIdentity;
00825 KMReaderWin *mReaderWin;
00826 bool mHtmlPref;
00827 KMMainWidget *mMainWidget;
00828 };
00829
00830 class KDE_EXPORT KMLoadPartsCommand : public KMCommand
00831 {
00832 Q_OBJECT
00833
00834 public:
00835 KMLoadPartsCommand( QPtrList<partNode>& parts, KMMessage* msg );
00836 KMLoadPartsCommand( partNode* node, KMMessage* msg );
00837 KMLoadPartsCommand( PartNodeMessageMap& partMap );
00838
00839 public slots:
00840 void slotPartRetrieved( KMMessage* msg, QString partSpecifier );
00841
00842 signals:
00843 void partsRetrieved();
00844
00845 private:
00846
00847 virtual void slotStart();
00848
00849 virtual Result execute();
00850
00851 int mNeedsRetrieval;
00852 PartNodeMessageMap mPartMap;
00853 };
00854
00855 class KDE_EXPORT KMResendMessageCommand : public KMCommand
00856 {
00857 Q_OBJECT
00858
00859 public:
00860 KMResendMessageCommand( QWidget *parent, KMMessage *msg=0 );
00861
00862 private:
00863 virtual Result execute();
00864 };
00865
00866 class KDE_EXPORT KMMailingListCommand : public KMCommand
00867 {
00868 Q_OBJECT
00869 public:
00870 KMMailingListCommand( QWidget *parent, KMFolder *folder );
00871 private:
00872 virtual Result execute();
00873 private slots:
00874 void commandCompleted( KMCommand *command );
00875 protected:
00876 virtual KURL::List urls() const =0;
00877 protected:
00878 KMFolder *mFolder;
00879 };
00880
00881 class KDE_EXPORT KMMailingListPostCommand : public KMMailingListCommand
00882 {
00883 Q_OBJECT
00884 public:
00885 KMMailingListPostCommand( QWidget *parent, KMFolder *folder );
00886 protected:
00887 virtual KURL::List urls() const;
00888 };
00889
00890 class KDE_EXPORT KMMailingListSubscribeCommand : public KMMailingListCommand
00891 {
00892 Q_OBJECT
00893 public:
00894 KMMailingListSubscribeCommand( QWidget *parent, KMFolder *folder );
00895 protected:
00896 virtual KURL::List urls() const;
00897 };
00898
00899 class KDE_EXPORT KMMailingListUnsubscribeCommand : public KMMailingListCommand
00900 {
00901 Q_OBJECT
00902 public:
00903 KMMailingListUnsubscribeCommand( QWidget *parent, KMFolder *folder );
00904 protected:
00905 virtual KURL::List urls() const;
00906 };
00907
00908 class KDE_EXPORT KMMailingListArchivesCommand : public KMMailingListCommand
00909 {
00910 Q_OBJECT
00911 public:
00912 KMMailingListArchivesCommand( QWidget *parent, KMFolder *folder );
00913 protected:
00914 virtual KURL::List urls() const;
00915 };
00916
00917 class KDE_EXPORT KMMailingListHelpCommand : public KMMailingListCommand
00918 {
00919 Q_OBJECT
00920 public:
00921 KMMailingListHelpCommand( QWidget *parent, KMFolder *folder );
00922 protected:
00923 virtual KURL::List urls() const;
00924 };
00925
00926 class KDE_EXPORT KMIMChatCommand : public KMCommand
00927 {
00928 Q_OBJECT
00929
00930 public:
00931 KMIMChatCommand( const KURL &url, KMMessage *msg=0 );
00932
00933 private:
00940 virtual Result execute();
00941
00942 KURL mUrl;
00943 KMMessage *mMessage;
00944 };
00945
00946 class KDE_EXPORT KMHandleAttachmentCommand : public KMCommand
00947 {
00948 Q_OBJECT
00949
00950 public:
00952 enum AttachmentAction
00953 {
00954 Open = 1,
00955 OpenWith = 2,
00956 View = 3,
00957 Save = 4,
00958 Properties = 5,
00959 ChiasmusEncrypt = 6
00960 };
00970 KMHandleAttachmentCommand( partNode* node, KMMessage* msg, int atmId,
00971 const QString& atmName, AttachmentAction action, KService::Ptr offer, QWidget* parent );
00972
00973
00974 signals:
00975 void showAttachment( int id, const QString& name );
00976
00977 private:
00978 virtual Result execute();
00979
00980 QString createAtmFileLink() const;
00981
00983 KService::Ptr getServiceOffer();
00984
00986 void atmOpen();
00987
00989 void atmOpenWith();
00990
00995 void atmView();
00996
00998 void atmSave();
00999
01001 void atmProperties();
01002
01004 void atmEncryptWithChiasmus();
01005
01006 private slots:
01008 virtual void slotStart();
01009
01014 void slotPartComplete();
01015
01016 void slotAtmDecryptWithChiasmusResult( const GpgME::Error &, const QVariant & );
01017 void slotAtmDecryptWithChiasmusUploadResult( KIO::Job * );
01018
01019 private:
01020 partNode* mNode;
01021 KMMessage* mMsg;
01022 int mAtmId;
01023 QString mAtmName;
01024 AttachmentAction mAction;
01025 KService::Ptr mOffer;
01026 Kleo::SpecialJob *mJob;
01027
01028 };
01029
01030
01032 class KDE_EXPORT AttachmentModifyCommand : public KMCommand
01033 {
01034 Q_OBJECT
01035 public:
01036 AttachmentModifyCommand( partNode *node, KMMessage *msg, QWidget *parent );
01037 ~AttachmentModifyCommand();
01038
01039 protected:
01040 void storeChangedMessage( KMMessage* msg );
01041 virtual Result doAttachmentModify() = 0;
01042
01043 protected:
01044 int mPartIndex;
01045 Q_UINT32 mSernum;
01046
01047 private:
01048 Result execute();
01049
01050 private slots:
01051 void messageStoreResult( KMFolderImap* folder, bool success );
01052 void messageDeleteResult( KMCommand *cmd );
01053
01054 private:
01055 QGuardedPtr<KMFolder> mFolder;
01056 };
01057
01058 class KDE_EXPORT KMDeleteAttachmentCommand : public AttachmentModifyCommand
01059 {
01060 Q_OBJECT
01061 public:
01062 KMDeleteAttachmentCommand( partNode *node, KMMessage *msg, QWidget *parent );
01063 ~KMDeleteAttachmentCommand();
01064
01065 protected:
01066 Result doAttachmentModify();
01067 };
01068
01069
01070 class KDE_EXPORT KMEditAttachmentCommand : public AttachmentModifyCommand
01071 {
01072 Q_OBJECT
01073 public:
01074 KMEditAttachmentCommand( partNode *node, KMMessage *msg, QWidget *parent );
01075 ~KMEditAttachmentCommand();
01076
01077 protected:
01078 Result doAttachmentModify();
01079
01080 private slots:
01081 void editDone( KMail::EditorWatcher *watcher );
01082
01083 private:
01084 KTempFile mTempFile;
01085 };
01086
01087 class KDE_EXPORT CreateTodoCommand : public KMCommand
01088 {
01089 Q_OBJECT
01090 public:
01091 CreateTodoCommand( QWidget *parent, KMMessage *msg );
01092
01093 private:
01094 Result execute();
01095 };
01096
01097 #endif