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 { 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   // Trival constructor, don't retrieve any messages
00047   KMCommand( QWidget *parent = 0 );
00048   // Retrieve all messages in msgList when start is called.
00049   KMCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList );
00050   // Retrieve the single message msgBase when start is called.
00051   KMCommand( QWidget *parent, KMMsgBase *msgBase );
00052   // Retrieve the single message msgBase when start is called.
00053   KMCommand( QWidget *parent, KMMessage *message );
00054   virtual ~KMCommand();
00055 
00060   void keepFolderOpen( KMFolder *folder );
00061 
00065   Result result();
00066 
00067 public slots:
00068   // Retrieve messages then calls execute
00069   void start();
00070 
00071   // advance the progressbar, emitted by the folderjob
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   // Returns list of messages retrieved
00082   const QPtrList<KMMessage> retrievedMsgs() const;
00083   // Returns the single message retrieved
00084   KMMessage *retrievedMessage() const;
00085   // Returns the parent widget
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   // execute should be implemented by derived classes
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   // ProgressDialog for transferring messages
00135   KProgressDialog* mProgressDialog;
00136   //Currently only one async command allowed at a time
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   // Serial numbers
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   // List of serial numbers that need to be loaded
00746   // Ticked off as they come in via msgAdded signals.
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   // Needed for KMDeleteCommand for "move to trash"
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   // List of serial numbers that have to be transferred to a host.
00782   // Ticked off as they come in via msgAdded signals.
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   // Retrieve parts then calls execute
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 /*KMCommands_h*/
KDE Home | KDE Accessibility Home | Description of Access Keys