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