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