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