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 bool decrypt = false );
00757 KMCopyCommand( KMFolder* destFolder, KMMessage *msg,
00758 bool decrypt = false );
00759
00760 protected slots:
00761 void slotJobFinished( KMail::FolderJob *job );
00762
00763 void slotFolderComplete( KMFolderImap*, bool success );
00764
00765 private:
00766 virtual Result execute();
00767
00768 KMFolder *mDestFolder;
00769 QPtrList<KMMsgBase> mMsgList;
00770 QValueList<KMail::FolderJob*> mPendingJobs;
00771 bool mDecrypt;
00772 };
00773
00774 namespace KPIM {
00775 class ProgressItem;
00776 }
00777 class KDE_EXPORT KMMoveCommand : public KMMenuCommand
00778 {
00779 Q_OBJECT
00780
00781 public:
00782 KMMoveCommand( KMFolder* destFolder, const QPtrList<KMMsgBase> &msgList );
00783 KMMoveCommand( KMFolder* destFolder, KMMessage * msg );
00784 KMMoveCommand( KMFolder* destFolder, KMMsgBase * msgBase );
00785 KMFolder* destFolder() const { return mDestFolder; }
00786
00787 public slots:
00788 void slotImapFolderCompleted(KMFolderImap *folder, bool success);
00789 void slotMsgAddedToDestFolder(KMFolder *folder, Q_UINT32 serNum);
00790 void slotMoveCanceled();
00791
00792 protected:
00793
00794 KMMoveCommand( Q_UINT32 sernum );
00795 void setDestFolder( KMFolder* folder ) { mDestFolder = folder; }
00796 void addMsg( KMMsgBase *msg ) { mSerNumList.append( msg->getMsgSerNum() ); }
00797 QValueVector<KMFolder*> mOpenedFolders;
00798
00799 private:
00800 virtual Result execute();
00801 void completeMove( Result result );
00802
00803 KMFolder *mDestFolder;
00804 QValueList<Q_UINT32> mSerNumList;
00805
00806
00807 QValueList<Q_UINT32> mLostBoys;
00808 KPIM::ProgressItem *mProgressItem;
00809 bool mCompleteWithAddedMsg;
00810 };
00811
00812 class KDE_EXPORT KMDeleteMsgCommand : public KMMoveCommand
00813 {
00814 Q_OBJECT
00815
00816 public:
00817 KMDeleteMsgCommand( KMFolder* srcFolder, const QPtrList<KMMsgBase> &msgList );
00818 KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg );
00819 KMDeleteMsgCommand( Q_UINT32 sernum );
00820
00821 private:
00822 static KMFolder * findTrashFolder( KMFolder * srcFolder );
00823
00824 };
00825
00826 class KDE_EXPORT KMUrlClickedCommand : public KMCommand
00827 {
00828 Q_OBJECT
00829
00830 public:
00831 KMUrlClickedCommand( const KURL &url, uint identity,
00832 KMReaderWin *readerWin, bool mHtmlPref, KMMainWidget *mainWidget = 0 );
00833
00834 private:
00835 virtual Result execute();
00836
00837 KURL mUrl;
00838 uint mIdentity;
00839 KMReaderWin *mReaderWin;
00840 bool mHtmlPref;
00841 KMMainWidget *mMainWidget;
00842 };
00843
00844 class KDE_EXPORT KMLoadPartsCommand : public KMCommand
00845 {
00846 Q_OBJECT
00847
00848 public:
00849 KMLoadPartsCommand( QPtrList<partNode>& parts, KMMessage* msg );
00850 KMLoadPartsCommand( partNode* node, KMMessage* msg );
00851 KMLoadPartsCommand( PartNodeMessageMap& partMap );
00852
00853 public slots:
00854 void slotPartRetrieved( KMMessage* msg, QString partSpecifier );
00855
00856 signals:
00857 void partsRetrieved();
00858
00859 private:
00860
00861 virtual void slotStart();
00862
00863 virtual Result execute();
00864
00865 int mNeedsRetrieval;
00866 PartNodeMessageMap mPartMap;
00867 };
00868
00869 class KDE_EXPORT KMResendMessageCommand : public KMCommand
00870 {
00871 Q_OBJECT
00872
00873 public:
00874 KMResendMessageCommand( QWidget *parent, KMMessage *msg=0 );
00875
00876 private:
00877 virtual Result execute();
00878 };
00879
00880 class KDE_EXPORT KMMailingListCommand : public KMCommand
00881 {
00882 Q_OBJECT
00883 public:
00884 KMMailingListCommand( QWidget *parent, KMFolder *folder );
00885 private:
00886 virtual Result execute();
00887 private slots:
00888 void commandCompleted( KMCommand *command );
00889 protected:
00890 virtual KURL::List urls() const =0;
00891 protected:
00892 KMFolder *mFolder;
00893 };
00894
00895 class KDE_EXPORT KMMailingListPostCommand : public KMMailingListCommand
00896 {
00897 Q_OBJECT
00898 public:
00899 KMMailingListPostCommand( QWidget *parent, KMFolder *folder );
00900 protected:
00901 virtual KURL::List urls() const;
00902 };
00903
00904 class KDE_EXPORT KMMailingListSubscribeCommand : public KMMailingListCommand
00905 {
00906 Q_OBJECT
00907 public:
00908 KMMailingListSubscribeCommand( QWidget *parent, KMFolder *folder );
00909 protected:
00910 virtual KURL::List urls() const;
00911 };
00912
00913 class KDE_EXPORT KMMailingListUnsubscribeCommand : public KMMailingListCommand
00914 {
00915 Q_OBJECT
00916 public:
00917 KMMailingListUnsubscribeCommand( QWidget *parent, KMFolder *folder );
00918 protected:
00919 virtual KURL::List urls() const;
00920 };
00921
00922 class KDE_EXPORT KMMailingListArchivesCommand : public KMMailingListCommand
00923 {
00924 Q_OBJECT
00925 public:
00926 KMMailingListArchivesCommand( QWidget *parent, KMFolder *folder );
00927 protected:
00928 virtual KURL::List urls() const;
00929 };
00930
00931 class KDE_EXPORT KMMailingListHelpCommand : public KMMailingListCommand
00932 {
00933 Q_OBJECT
00934 public:
00935 KMMailingListHelpCommand( QWidget *parent, KMFolder *folder );
00936 protected:
00937 virtual KURL::List urls() const;
00938 };
00939
00940 class KDE_EXPORT KMIMChatCommand : public KMCommand
00941 {
00942 Q_OBJECT
00943
00944 public:
00945 KMIMChatCommand( const KURL &url, KMMessage *msg=0 );
00946
00947 private:
00954 virtual Result execute();
00955
00956 KURL mUrl;
00957 KMMessage *mMessage;
00958 };
00959
00960 class KDE_EXPORT KMHandleAttachmentCommand : public KMCommand
00961 {
00962 Q_OBJECT
00963
00964 public:
00966 enum AttachmentAction
00967 {
00968 Open = 1,
00969 OpenWith = 2,
00970 View = 3,
00971 Save = 4,
00972 Properties = 5,
00973 ChiasmusEncrypt = 6
00974 };
00984 KMHandleAttachmentCommand( partNode* node, KMMessage* msg, int atmId,
00985 const QString& atmName, AttachmentAction action, KService::Ptr offer, QWidget* parent );
00986
00987
00988 signals:
00989 void showAttachment( int id, const QString& name );
00990
00991 private:
00992 virtual Result execute();
00993
00994 QString createAtmFileLink() const;
00995
00997 KService::Ptr getServiceOffer();
00998
01000 void atmOpen();
01001
01003 void atmOpenWith();
01004
01009 void atmView();
01010
01012 void atmSave();
01013
01015 void atmProperties();
01016
01018 void atmEncryptWithChiasmus();
01019
01020 private slots:
01022 virtual void slotStart();
01023
01028 void slotPartComplete();
01029
01030 void slotAtmDecryptWithChiasmusResult( const GpgME::Error &, const QVariant & );
01031 void slotAtmDecryptWithChiasmusUploadResult( KIO::Job * );
01032
01033 private:
01034 partNode* mNode;
01035 KMMessage* mMsg;
01036 int mAtmId;
01037 QString mAtmName;
01038 AttachmentAction mAction;
01039 KService::Ptr mOffer;
01040 Kleo::SpecialJob *mJob;
01041
01042 };
01043
01044
01046 class KDE_EXPORT AttachmentModifyCommand : public KMCommand
01047 {
01048 Q_OBJECT
01049 public:
01050 AttachmentModifyCommand( partNode *node, KMMessage *msg, QWidget *parent );
01051 AttachmentModifyCommand( int nodeId, KMMessage *msg, QWidget *parent );
01052 ~AttachmentModifyCommand();
01053
01054 protected:
01055 void storeChangedMessage( KMMessage* msg );
01056 virtual Result doAttachmentModify() = 0;
01057
01058 protected:
01059 int mPartIndex;
01060 Q_UINT32 mSernum;
01061
01062 private:
01063 Result execute();
01064
01065 private slots:
01066 void messageStoreResult( KMFolderImap* folder, bool success );
01067 void messageDeleteResult( KMCommand *cmd );
01068
01069 private:
01070 QGuardedPtr<KMFolder> mFolder;
01071 };
01072
01073 class KDE_EXPORT KMDeleteAttachmentCommand : public AttachmentModifyCommand
01074 {
01075 Q_OBJECT
01076 public:
01077 KMDeleteAttachmentCommand( partNode *node, KMMessage *msg, QWidget *parent );
01078 KMDeleteAttachmentCommand( int nodeId, KMMessage *msg, QWidget *parent );
01079 ~KMDeleteAttachmentCommand();
01080
01081 protected:
01082 Result doAttachmentModify();
01083 };
01084
01085
01086 class KDE_EXPORT KMEditAttachmentCommand : public AttachmentModifyCommand
01087 {
01088 Q_OBJECT
01089 public:
01090 KMEditAttachmentCommand( partNode *node, KMMessage *msg, QWidget *parent );
01091 KMEditAttachmentCommand( int nodeId, KMMessage *msg, QWidget *parent );
01092 ~KMEditAttachmentCommand();
01093
01094 protected:
01095 Result doAttachmentModify();
01096
01097 private slots:
01098 void editDone( KMail::EditorWatcher *watcher );
01099
01100 private:
01101 KTempFile mTempFile;
01102 };
01103
01104 class KDE_EXPORT CreateTodoCommand : public KMCommand
01105 {
01106 Q_OBJECT
01107 public:
01108 CreateTodoCommand( QWidget *parent, KMMessage *msg );
01109
01110 private:
01111 Result execute();
01112 };
01113
01114 #endif