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 QValueList<KMMsgBase *> mUngetMsgs;
00350 unsigned int mMsgListIndex;
00351 KMMessage *mStandAloneMessage;
00352 QByteArray mData;
00353 int mOffset;
00354 size_t mTotalSize;
00355 KIO::TransferJob *mJob;
00356 };
00357
00358 class KDE_EXPORT KMOpenMsgCommand : public KMCommand
00359 {
00360 Q_OBJECT
00361
00362 public:
00363 KMOpenMsgCommand( QWidget *parent, const KURL & url = KURL(),
00364 const QString & encoding = QString() );
00365
00366 private:
00367 virtual Result execute();
00368
00369 private slots:
00370 void slotDataArrived( KIO::Job *job, const QByteArray & data );
00371 void slotResult( KIO::Job *job );
00372
00373 private:
00374 static const int MAX_CHUNK_SIZE = 64*1024;
00375 KURL mUrl;
00376 DwString mMsgString;
00377 KIO::TransferJob *mJob;
00378 const QString mEncoding;
00379 };
00380
00381 class KDE_EXPORT KMSaveAttachmentsCommand : public KMCommand
00382 {
00383 Q_OBJECT
00384 public:
00389 KMSaveAttachmentsCommand( QWidget *parent, KMMessage *msg );
00394 KMSaveAttachmentsCommand( QWidget *parent, const QPtrList<KMMsgBase>& msgs );
00403 KMSaveAttachmentsCommand( QWidget *parent, QPtrList<partNode> &attachments,
00404 KMMessage *msg, bool encoded = false );
00405
00406 private slots:
00407 void slotSaveAll();
00408
00409 private:
00410 virtual Result execute();
00411 Result saveItem( partNode *node, const KURL& url );
00412
00413 private:
00414 PartNodeMessageMap mAttachmentMap;
00415 bool mImplicitAttachments;
00416 bool mEncoded;
00417 };
00418
00419 class KDE_EXPORT KMReplyToCommand : public KMCommand
00420 {
00421 Q_OBJECT
00422
00423 public:
00424 KMReplyToCommand( QWidget *parent, KMMessage *msg,
00425 const QString &selection = QString::null );
00426
00427 private:
00428 virtual Result execute();
00429
00430 private:
00431 QString mSelection;
00432 };
00433
00434 class KDE_EXPORT KMNoQuoteReplyToCommand : public KMCommand
00435 {
00436 Q_OBJECT
00437
00438 public:
00439 KMNoQuoteReplyToCommand( QWidget *parent, KMMessage *msg );
00440
00441 private:
00442 virtual Result execute();
00443 };
00444
00445 class KMReplyListCommand : public KMCommand
00446 {
00447 Q_OBJECT
00448
00449 public:
00450 KMReplyListCommand( QWidget *parent, KMMessage *msg,
00451 const QString &selection = QString::null );
00452
00453 private:
00454 virtual Result execute();
00455
00456 private:
00457 QString mSelection;
00458 };
00459
00460 class KDE_EXPORT KMReplyToAllCommand : public KMCommand
00461 {
00462 Q_OBJECT
00463
00464 public:
00465 KMReplyToAllCommand( QWidget *parent, KMMessage *msg,
00466 const QString &selection = QString::null );
00467
00468 private:
00469 virtual Result execute();
00470
00471 private:
00472 QString mSelection;
00473 };
00474
00475 class KDE_EXPORT KMReplyAuthorCommand : public KMCommand
00476 {
00477 Q_OBJECT
00478
00479 public:
00480 KMReplyAuthorCommand( QWidget *parent, KMMessage *msg,
00481 const QString &selection = QString::null );
00482
00483 private:
00484 virtual Result execute();
00485
00486 private:
00487 QString mSelection;
00488 };
00489
00490 class KDE_EXPORT KMForwardInlineCommand : public KMCommand
00491 {
00492 Q_OBJECT
00493
00494 public:
00495 KMForwardInlineCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00496 uint identity = 0 );
00497 KMForwardInlineCommand( QWidget *parent, KMMessage * msg,
00498 uint identity = 0 );
00499
00500 private:
00501 virtual Result execute();
00502
00503 private:
00504 uint mIdentity;
00505 };
00506
00507 class KDE_EXPORT KMForwardAttachedCommand : public KMCommand
00508 {
00509 Q_OBJECT
00510
00511 public:
00512 KMForwardAttachedCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00513 uint identity = 0, KMail::Composer *win = 0 );
00514 KMForwardAttachedCommand( QWidget *parent, KMMessage * msg,
00515 uint identity = 0, KMail::Composer *win = 0 );
00516
00517 private:
00518 virtual Result execute();
00519
00520 uint mIdentity;
00521 QGuardedPtr<KMail::Composer> mWin;
00522 };
00523
00524 class KDE_EXPORT KMForwardDigestCommand : public KMCommand
00525 {
00526 Q_OBJECT
00527
00528 public:
00529 KMForwardDigestCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00530 uint identity = 0, KMail::Composer *win = 0 );
00531 KMForwardDigestCommand( QWidget *parent, KMMessage * msg,
00532 uint identity = 0, KMail::Composer *win = 0 );
00533
00534 private:
00535 virtual Result execute();
00536
00537 uint mIdentity;
00538 QGuardedPtr<KMail::Composer> mWin;
00539 };
00540
00541 class KDE_EXPORT KMRedirectCommand : public KMCommand
00542 {
00543 Q_OBJECT
00544
00545 public:
00546 KMRedirectCommand( QWidget *parent, KMMessage *msg );
00547
00548 private:
00549 virtual Result execute();
00550 };
00551
00552 class KDE_EXPORT KMCustomReplyToCommand : public KMCommand
00553 {
00554 Q_OBJECT
00555
00556 public:
00557 KMCustomReplyToCommand( QWidget *parent, KMMessage *msg,
00558 const QString &selection,
00559 const QString &tmpl );
00560
00561 private:
00562 virtual Result execute();
00563
00564 private:
00565 QString mSelection;
00566 QString mTemplate;
00567 };
00568
00569 class KDE_EXPORT KMCustomReplyAllToCommand : public KMCommand
00570 {
00571 Q_OBJECT
00572
00573 public:
00574 KMCustomReplyAllToCommand( QWidget *parent, KMMessage *msg,
00575 const QString &selection,
00576 const QString &tmpl );
00577
00578 private:
00579 virtual Result execute();
00580
00581 private:
00582 QString mSelection;
00583 QString mTemplate;
00584 };
00585
00586 class KDE_EXPORT KMCustomForwardCommand : public KMCommand
00587 {
00588 Q_OBJECT
00589
00590 public:
00591 KMCustomForwardCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00592 uint identity, const QString &tmpl );
00593 KMCustomForwardCommand( QWidget *parent, KMMessage * msg,
00594 uint identity, const QString &tmpl );
00595
00596 private:
00597 virtual Result execute();
00598
00599 uint mIdentity;
00600 QString mTemplate;
00601 };
00602
00603 class KDE_EXPORT KMPrintCommand : public KMCommand
00604 {
00605 Q_OBJECT
00606
00607 public:
00608 KMPrintCommand( QWidget *parent, KMMessage *msg,
00609 const KMail::HeaderStyle *headerStyle = 0,
00610 const KMail::HeaderStrategy *headerStrategy = 0,
00611 bool htmlOverride = false,
00612 bool htmlLoadExtOverride = false,
00613 bool useFixedFont = false,
00614 const QString & encoding = QString() );
00615
00616 void setOverrideFont( const QFont& );
00617
00618 private:
00619 virtual Result execute();
00620
00621 const KMail::HeaderStyle *mHeaderStyle;
00622 const KMail::HeaderStrategy *mHeaderStrategy;
00623 bool mHtmlOverride;
00624 bool mHtmlLoadExtOverride;
00625 bool mUseFixedFont;
00626 QFont mOverrideFont;
00627 QString mEncoding;
00628 };
00629
00630 class KDE_EXPORT KMSetStatusCommand : public KMCommand
00631 {
00632 Q_OBJECT
00633
00634 public:
00635
00636 KMSetStatusCommand( KMMsgStatus status, const QValueList<Q_UINT32> &,
00637 bool toggle=false );
00638
00639 private:
00640 virtual Result execute();
00641
00642 KMMsgStatus mStatus;
00643 QValueList<Q_UINT32> mSerNums;
00644 QValueList<int> mIds;
00645 bool mToggle;
00646 };
00647
00648 class KDE_EXPORT KMFilterCommand : public KMCommand
00649 {
00650 Q_OBJECT
00651
00652 public:
00653 KMFilterCommand( const QCString &field, const QString &value );
00654
00655 private:
00656 virtual Result execute();
00657
00658 QCString mField;
00659 QString mValue;
00660 };
00661
00662
00663 class KDE_EXPORT KMFilterActionCommand : public KMCommand
00664 {
00665 Q_OBJECT
00666
00667 public:
00668 KMFilterActionCommand( QWidget *parent,
00669 const QPtrList<KMMsgBase> &msgList,
00670 KMFilter *filter );
00671
00672 private:
00673 virtual Result execute();
00674 QValueList<Q_UINT32> serNumList;
00675 KMFilter *mFilter;
00676 };
00677
00678
00679 class KDE_EXPORT KMMetaFilterActionCommand : public QObject
00680 {
00681 Q_OBJECT
00682
00683 public:
00684 KMMetaFilterActionCommand( KMFilter *filter, KMHeaders *headers,
00685 KMMainWidget *main );
00686
00687 public slots:
00688 void start();
00689
00690 private:
00691 KMFilter *mFilter;
00692 KMHeaders *mHeaders;
00693 KMMainWidget *mMainWidget;
00694 };
00695
00696 class KDE_EXPORT FolderShortcutCommand : public QObject
00697 {
00698 Q_OBJECT
00699
00700 public:
00701 FolderShortcutCommand( KMMainWidget* mainwidget, KMFolder *folder );
00702 ~FolderShortcutCommand();
00703
00704 public slots:
00705 void start();
00709 void setAction( KAction* );
00710
00711 private:
00712 KMMainWidget *mMainWidget;
00713 KMFolder *mFolder;
00714 KAction *mAction;
00715 };
00716
00717
00718 class KDE_EXPORT KMMailingListFilterCommand : public KMCommand
00719 {
00720 Q_OBJECT
00721
00722 public:
00723 KMMailingListFilterCommand( QWidget *parent, KMMessage *msg );
00724
00725 private:
00726 virtual Result execute();
00727 };
00728
00729
00737 class KDE_EXPORT KMMenuCommand : public KMCommand
00738 {
00739 Q_OBJECT
00740
00741 public:
00742 static void folderToPopupMenu(bool move, QObject *receiver,
00743 KMMenuToFolder *aMenuToFolder, QPopupMenu *menu );
00744
00745 static void makeFolderMenu(KMFolderNode* item, bool move,
00746 QObject *receiver, KMMenuToFolder *aMenuToFolder, QPopupMenu *menu );
00747 };
00748
00749 class KDE_EXPORT KMCopyCommand : public KMMenuCommand
00750 {
00751 Q_OBJECT
00752
00753 public:
00754 KMCopyCommand( KMFolder* destFolder,
00755 const QPtrList<KMMsgBase> &msgList );
00756 KMCopyCommand( KMFolder* destFolder, KMMessage *msg );
00757
00758 protected slots:
00759 void slotJobFinished( KMail::FolderJob *job );
00760
00761 void slotFolderComplete( KMFolderImap*, bool success );
00762
00763 private:
00764 virtual Result execute();
00765
00766 KMFolder *mDestFolder;
00767 QPtrList<KMMsgBase> mMsgList;
00768 QValueList<KMail::FolderJob*> mPendingJobs;
00769 };
00770
00771 namespace KPIM {
00772 class ProgressItem;
00773 }
00774 class KDE_EXPORT KMMoveCommand : public KMMenuCommand
00775 {
00776 Q_OBJECT
00777
00778 public:
00779 KMMoveCommand( KMFolder* destFolder, const QPtrList<KMMsgBase> &msgList );
00780 KMMoveCommand( KMFolder* destFolder, KMMessage * msg );
00781 KMMoveCommand( KMFolder* destFolder, KMMsgBase * msgBase );
00782 KMFolder* destFolder() const { return mDestFolder; }
00783
00784 public slots:
00785 void slotImapFolderCompleted(KMFolderImap *folder, bool success);
00786 void slotMsgAddedToDestFolder(KMFolder *folder, Q_UINT32 serNum);
00787 void slotMoveCanceled();
00788
00789 protected:
00790
00791 KMMoveCommand( Q_UINT32 sernum );
00792 void setDestFolder( KMFolder* folder ) { mDestFolder = folder; }
00793 void addMsg( KMMsgBase *msg ) { mSerNumList.append( msg->getMsgSerNum() ); }
00794 QValueVector<KMFolder*> mOpenedFolders;
00795
00796 private:
00797 virtual Result execute();
00798 void completeMove( Result result );
00799
00800 KMFolder *mDestFolder;
00801 QValueList<Q_UINT32> mSerNumList;
00802
00803
00804 QValueList<Q_UINT32> mLostBoys;
00805 KPIM::ProgressItem *mProgressItem;
00806 bool mCompleteWithAddedMsg;
00807 };
00808
00809 class KDE_EXPORT KMDeleteMsgCommand : public KMMoveCommand
00810 {
00811 Q_OBJECT
00812
00813 public:
00814 KMDeleteMsgCommand( KMFolder* srcFolder, const QPtrList<KMMsgBase> &msgList );
00815 KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg );
00816 KMDeleteMsgCommand( Q_UINT32 sernum );
00817
00818 private:
00819 static KMFolder * findTrashFolder( KMFolder * srcFolder );
00820
00821 };
00822
00823 class KDE_EXPORT KMUrlClickedCommand : public KMCommand
00824 {
00825 Q_OBJECT
00826
00827 public:
00828 KMUrlClickedCommand( const KURL &url, uint identity,
00829 KMReaderWin *readerWin, bool mHtmlPref, KMMainWidget *mainWidget = 0 );
00830
00831 private:
00832 virtual Result execute();
00833
00834 KURL mUrl;
00835 uint mIdentity;
00836 KMReaderWin *mReaderWin;
00837 bool mHtmlPref;
00838 KMMainWidget *mMainWidget;
00839 };
00840
00841 class KDE_EXPORT KMLoadPartsCommand : public KMCommand
00842 {
00843 Q_OBJECT
00844
00845 public:
00846 KMLoadPartsCommand( QPtrList<partNode>& parts, KMMessage* msg );
00847 KMLoadPartsCommand( partNode* node, KMMessage* msg );
00848 KMLoadPartsCommand( PartNodeMessageMap& partMap );
00849
00850 public slots:
00851 void slotPartRetrieved( KMMessage* msg, QString partSpecifier );
00852
00853 signals:
00854 void partsRetrieved();
00855
00856 private:
00857
00858 virtual void slotStart();
00859
00860 virtual Result execute();
00861
00862 int mNeedsRetrieval;
00863 PartNodeMessageMap mPartMap;
00864 };
00865
00866 class KDE_EXPORT KMResendMessageCommand : public KMCommand
00867 {
00868 Q_OBJECT
00869
00870 public:
00871 KMResendMessageCommand( QWidget *parent, KMMessage *msg=0 );
00872
00873 private:
00874 virtual Result execute();
00875 };
00876
00877 class KDE_EXPORT KMMailingListCommand : public KMCommand
00878 {
00879 Q_OBJECT
00880 public:
00881 KMMailingListCommand( QWidget *parent, KMFolder *folder );
00882 private:
00883 virtual Result execute();
00884 private slots:
00885 void commandCompleted( KMCommand *command );
00886 protected:
00887 virtual KURL::List urls() const =0;
00888 protected:
00889 KMFolder *mFolder;
00890 };
00891
00892 class KDE_EXPORT KMMailingListPostCommand : public KMMailingListCommand
00893 {
00894 Q_OBJECT
00895 public:
00896 KMMailingListPostCommand( QWidget *parent, KMFolder *folder );
00897 protected:
00898 virtual KURL::List urls() const;
00899 };
00900
00901 class KDE_EXPORT KMMailingListSubscribeCommand : public KMMailingListCommand
00902 {
00903 Q_OBJECT
00904 public:
00905 KMMailingListSubscribeCommand( QWidget *parent, KMFolder *folder );
00906 protected:
00907 virtual KURL::List urls() const;
00908 };
00909
00910 class KDE_EXPORT KMMailingListUnsubscribeCommand : public KMMailingListCommand
00911 {
00912 Q_OBJECT
00913 public:
00914 KMMailingListUnsubscribeCommand( QWidget *parent, KMFolder *folder );
00915 protected:
00916 virtual KURL::List urls() const;
00917 };
00918
00919 class KDE_EXPORT KMMailingListArchivesCommand : public KMMailingListCommand
00920 {
00921 Q_OBJECT
00922 public:
00923 KMMailingListArchivesCommand( QWidget *parent, KMFolder *folder );
00924 protected:
00925 virtual KURL::List urls() const;
00926 };
00927
00928 class KDE_EXPORT KMMailingListHelpCommand : public KMMailingListCommand
00929 {
00930 Q_OBJECT
00931 public:
00932 KMMailingListHelpCommand( QWidget *parent, KMFolder *folder );
00933 protected:
00934 virtual KURL::List urls() const;
00935 };
00936
00937 class KDE_EXPORT KMIMChatCommand : public KMCommand
00938 {
00939 Q_OBJECT
00940
00941 public:
00942 KMIMChatCommand( const KURL &url, KMMessage *msg=0 );
00943
00944 private:
00951 virtual Result execute();
00952
00953 KURL mUrl;
00954 KMMessage *mMessage;
00955 };
00956
00957 class KDE_EXPORT KMHandleAttachmentCommand : public KMCommand
00958 {
00959 Q_OBJECT
00960
00961 public:
00963 enum AttachmentAction
00964 {
00965 Open = 1,
00966 OpenWith = 2,
00967 View = 3,
00968 Save = 4,
00969 Properties = 5,
00970 ChiasmusEncrypt = 6
00971 };
00981 KMHandleAttachmentCommand( partNode* node, KMMessage* msg, int atmId,
00982 const QString& atmName, AttachmentAction action, KService::Ptr offer, QWidget* parent );
00983
00984
00985 signals:
00986 void showAttachment( int id, const QString& name );
00987
00988 private:
00989 virtual Result execute();
00990
00991 QString createAtmFileLink() const;
00992
00994 KService::Ptr getServiceOffer();
00995
00997 void atmOpen();
00998
01000 void atmOpenWith();
01001
01006 void atmView();
01007
01009 void atmSave();
01010
01012 void atmProperties();
01013
01015 void atmEncryptWithChiasmus();
01016
01017 private slots:
01019 virtual void slotStart();
01020
01025 void slotPartComplete();
01026
01027 void slotAtmDecryptWithChiasmusResult( const GpgME::Error &, const QVariant & );
01028 void slotAtmDecryptWithChiasmusUploadResult( KIO::Job * );
01029
01030 private:
01031 partNode* mNode;
01032 KMMessage* mMsg;
01033 int mAtmId;
01034 QString mAtmName;
01035 AttachmentAction mAction;
01036 KService::Ptr mOffer;
01037 Kleo::SpecialJob *mJob;
01038
01039 };
01040
01041
01043 class KDE_EXPORT AttachmentModifyCommand : public KMCommand
01044 {
01045 Q_OBJECT
01046 public:
01047 AttachmentModifyCommand( partNode *node, KMMessage *msg, QWidget *parent );
01048 AttachmentModifyCommand( int nodeId, KMMessage *msg, QWidget *parent );
01049 ~AttachmentModifyCommand();
01050
01051 protected:
01052 void storeChangedMessage( KMMessage* msg );
01053 virtual Result doAttachmentModify() = 0;
01054
01055 protected:
01056 int mPartIndex;
01057 Q_UINT32 mSernum;
01058
01059 private:
01060 Result execute();
01061
01062 private slots:
01063 void messageStoreResult( KMFolderImap* folder, bool success );
01064 void messageDeleteResult( KMCommand *cmd );
01065
01066 private:
01067 QGuardedPtr<KMFolder> mFolder;
01068 };
01069
01070 class KDE_EXPORT KMDeleteAttachmentCommand : public AttachmentModifyCommand
01071 {
01072 Q_OBJECT
01073 public:
01074 KMDeleteAttachmentCommand( partNode *node, KMMessage *msg, QWidget *parent );
01075 KMDeleteAttachmentCommand( int nodeId, KMMessage *msg, QWidget *parent );
01076 ~KMDeleteAttachmentCommand();
01077
01078 protected:
01079 Result doAttachmentModify();
01080 };
01081
01082
01083 class KDE_EXPORT KMEditAttachmentCommand : public AttachmentModifyCommand
01084 {
01085 Q_OBJECT
01086 public:
01087 KMEditAttachmentCommand( partNode *node, KMMessage *msg, QWidget *parent );
01088 KMEditAttachmentCommand( int nodeId, KMMessage *msg, QWidget *parent );
01089 ~KMEditAttachmentCommand();
01090
01091 protected:
01092 Result doAttachmentModify();
01093
01094 private slots:
01095 void editDone( KMail::EditorWatcher *watcher );
01096
01097 private:
01098 KTempFile mTempFile;
01099 };
01100
01101 class KDE_EXPORT CreateTodoCommand : public KMCommand
01102 {
01103 Q_OBJECT
01104 public:
01105 CreateTodoCommand( QWidget *parent, KMMessage *msg );
01106
01107 private:
01108 Result execute();
01109 };
01110
01111 #endif