kmail

kmcommands.h

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