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