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