kmail

kmcommands.h

00001 // -*- mode: C++; c-file-style: "gnu" -*-
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" // for KMMsgStatus
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   // Trival constructor, don't retrieve any messages
00050   KMCommand( QWidget *parent = 0 );
00051   // Retrieve all messages in msgList when start is called.
00052   KMCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList );
00053   // Retrieve the single message msgBase when start is called.
00054   KMCommand( QWidget *parent, KMMsgBase *msgBase );
00055   // Retrieve the single message msgBase when start is called.
00056   KMCommand( QWidget *parent, KMMessage *message );
00057   virtual ~KMCommand();
00058 
00063   void keepFolderOpen( KMFolder *folder );
00064 
00068   Result result();
00069 
00070 public slots:
00071   // Retrieve messages then calls execute
00072   void start();
00073 
00074   // advance the progressbar, emitted by the folderjob
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   // Returns list of messages retrieved
00085   const QPtrList<KMMessage> retrievedMsgs() const;
00086   // Returns the single message retrieved
00087   KMMessage *retrievedMessage() const;
00088   // Returns the parent widget
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   // execute should be implemented by derived classes
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   // ProgressDialog for transferring messages
00138   KProgressDialog* mProgressDialog;
00139   //Currently only one async command allowed at a time
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   // Serial numbers
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   // Needed for KMDeleteCommand for "move to trash"
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   // List of serial numbers that have to be transferred to a host.
00783   // Ticked off as they come in via msgAdded signals.
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   // Retrieve parts then calls execute
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 /*KMCommands_h*/
KDE Home | KDE Accessibility Home | Description of Access Keys