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