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   unsigned int mMsgListIndex;
00350   KMMessage *mStandAloneMessage;
00351   QByteArray mData;
00352   int mOffset;
00353   size_t mTotalSize;
00354   KIO::TransferJob *mJob;
00355 };
00356 
00357 class KDE_EXPORT KMOpenMsgCommand : public KMCommand
00358 {
00359   Q_OBJECT
00360 
00361 public:
00362   KMOpenMsgCommand( QWidget *parent, const KURL & url = KURL(),
00363                     const QString & encoding = QString() );
00364 
00365 private:
00366   virtual Result execute();
00367 
00368 private slots:
00369   void slotDataArrived( KIO::Job *job, const QByteArray & data );
00370   void slotResult( KIO::Job *job );
00371 
00372 private:
00373   static const int MAX_CHUNK_SIZE = 64*1024;
00374   KURL mUrl;
00375   DwString mMsgString;
00376   KIO::TransferJob *mJob;
00377   const QString mEncoding;
00378 };
00379 
00380 class KDE_EXPORT KMSaveAttachmentsCommand : public KMCommand
00381 {
00382   Q_OBJECT
00383 public:
00388   KMSaveAttachmentsCommand( QWidget *parent, KMMessage *msg  );
00393   KMSaveAttachmentsCommand( QWidget *parent, const QPtrList<KMMsgBase>& msgs );
00402   KMSaveAttachmentsCommand( QWidget *parent, QPtrList<partNode> &attachments,
00403                             KMMessage *msg, bool encoded = false  );
00404 
00405 private slots:
00406   void slotSaveAll();
00407 
00408 private:
00409   virtual Result execute();
00410   Result saveItem( partNode *node, const KURL& url );
00411 
00412 private:
00413   PartNodeMessageMap mAttachmentMap;
00414   bool mImplicitAttachments;
00415   bool mEncoded;
00416 };
00417 
00418 class KDE_EXPORT KMReplyToCommand : public KMCommand
00419 {
00420   Q_OBJECT
00421 
00422 public:
00423   KMReplyToCommand( QWidget *parent, KMMessage *msg,
00424                     const QString &selection = QString::null );
00425 
00426 private:
00427   virtual Result execute();
00428 
00429 private:
00430   QString mSelection;
00431 };
00432 
00433 class KDE_EXPORT KMNoQuoteReplyToCommand : public KMCommand
00434 {
00435   Q_OBJECT
00436 
00437 public:
00438   KMNoQuoteReplyToCommand( QWidget *parent, KMMessage *msg );
00439 
00440 private:
00441   virtual Result execute();
00442 };
00443 
00444 class KMReplyListCommand : public KMCommand
00445 {
00446   Q_OBJECT
00447 
00448 public:
00449   KMReplyListCommand( 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 KMReplyToAllCommand : public KMCommand
00460 {
00461   Q_OBJECT
00462 
00463 public:
00464   KMReplyToAllCommand( 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 KMReplyAuthorCommand : public KMCommand
00475 {
00476   Q_OBJECT
00477 
00478 public:
00479   KMReplyAuthorCommand( QWidget *parent, KMMessage *msg,
00480                         const QString &selection = QString::null );
00481 
00482 private:
00483   virtual Result execute();
00484 
00485 private:
00486   QString mSelection;
00487 };
00488 
00489 class KDE_EXPORT KMForwardInlineCommand : public KMCommand
00490 {
00491   Q_OBJECT
00492 
00493 public:
00494   KMForwardInlineCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00495                           uint identity = 0 );
00496   KMForwardInlineCommand( QWidget *parent, KMMessage * msg,
00497                           uint identity = 0 );
00498 
00499 private:
00500   virtual Result execute();
00501 
00502 private:
00503   uint mIdentity;
00504 };
00505 
00506 class KDE_EXPORT KMForwardAttachedCommand : public KMCommand
00507 {
00508   Q_OBJECT
00509 
00510 public:
00511   KMForwardAttachedCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00512                 uint identity = 0, KMail::Composer *win = 0 );
00513   KMForwardAttachedCommand( QWidget *parent, KMMessage * msg,
00514                 uint identity = 0, KMail::Composer *win = 0 );
00515 
00516 private:
00517   virtual Result execute();
00518 
00519   uint mIdentity;
00520   QGuardedPtr<KMail::Composer> mWin;
00521 };
00522 
00523 class KDE_EXPORT KMForwardDigestCommand : public KMCommand
00524 {
00525   Q_OBJECT
00526 
00527 public:
00528   KMForwardDigestCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00529                 uint identity = 0, KMail::Composer *win = 0 );
00530   KMForwardDigestCommand( QWidget *parent, KMMessage * msg,
00531                 uint identity = 0, KMail::Composer *win = 0 );
00532 
00533 private:
00534   virtual Result execute();
00535 
00536   uint mIdentity;
00537   QGuardedPtr<KMail::Composer> mWin;
00538 };
00539 
00540 class KDE_EXPORT KMRedirectCommand : public KMCommand
00541 {
00542   Q_OBJECT
00543 
00544 public:
00545   KMRedirectCommand( QWidget *parent, KMMessage *msg );
00546 
00547 private:
00548   virtual Result execute();
00549 };
00550 
00551 class KDE_EXPORT KMCustomReplyToCommand : public KMCommand
00552 {
00553   Q_OBJECT
00554 
00555 public:
00556   KMCustomReplyToCommand( QWidget *parent, KMMessage *msg,
00557                           const QString &selection,
00558                           const QString &tmpl );
00559 
00560 private:
00561   virtual Result execute();
00562 
00563 private:
00564   QString mSelection;
00565   QString mTemplate;
00566 };
00567 
00568 class KDE_EXPORT KMCustomReplyAllToCommand : public KMCommand
00569 {
00570   Q_OBJECT
00571 
00572 public:
00573   KMCustomReplyAllToCommand( QWidget *parent, KMMessage *msg,
00574                           const QString &selection,
00575                           const QString &tmpl );
00576 
00577 private:
00578   virtual Result execute();
00579 
00580 private:
00581   QString mSelection;
00582   QString mTemplate;
00583 };
00584 
00585 class KDE_EXPORT KMCustomForwardCommand : public KMCommand
00586 {
00587   Q_OBJECT
00588 
00589 public:
00590   KMCustomForwardCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00591                           uint identity, const QString &tmpl );
00592   KMCustomForwardCommand( QWidget *parent, KMMessage * msg,
00593                           uint identity, const QString &tmpl );
00594 
00595 private:
00596   virtual Result execute();
00597 
00598   uint mIdentity;
00599   QString mTemplate;
00600 };
00601 
00602 class KDE_EXPORT KMPrintCommand : public KMCommand
00603 {
00604   Q_OBJECT
00605 
00606 public:
00607   KMPrintCommand( QWidget *parent, KMMessage *msg,
00608                   const KMail::HeaderStyle *headerStyle = 0,
00609                   const KMail::HeaderStrategy *headerStrategy = 0,
00610                   bool htmlOverride = false,
00611                   bool htmlLoadExtOverride = false,
00612                   bool useFixedFont = false,
00613                   const QString & encoding = QString() );
00614 
00615   void setOverrideFont( const QFont& );
00616 
00617 private:
00618   virtual Result execute();
00619 
00620   const KMail::HeaderStyle *mHeaderStyle;
00621   const KMail::HeaderStrategy *mHeaderStrategy;
00622   bool mHtmlOverride;
00623   bool mHtmlLoadExtOverride;
00624   bool mUseFixedFont;
00625   QFont mOverrideFont;
00626   QString mEncoding;
00627 };
00628 
00629 class KDE_EXPORT KMSetStatusCommand : public KMCommand
00630 {
00631   Q_OBJECT
00632 
00633 public:
00634   // Serial numbers
00635   KMSetStatusCommand( KMMsgStatus status, const QValueList<Q_UINT32> &,
00636                       bool toggle=false );
00637 
00638 private:
00639   virtual Result execute();
00640 
00641   KMMsgStatus mStatus;
00642   QValueList<Q_UINT32> mSerNums;
00643   QValueList<int> mIds;
00644   bool mToggle;
00645 };
00646 
00647 class KDE_EXPORT KMFilterCommand : public KMCommand
00648 {
00649   Q_OBJECT
00650 
00651 public:
00652   KMFilterCommand( const QCString &field, const QString &value );
00653 
00654 private:
00655   virtual Result execute();
00656 
00657   QCString mField;
00658   QString mValue;
00659 };
00660 
00661 
00662 class KDE_EXPORT KMFilterActionCommand : public KMCommand
00663 {
00664   Q_OBJECT
00665 
00666 public:
00667   KMFilterActionCommand( QWidget *parent,
00668              const QPtrList<KMMsgBase> &msgList,
00669              KMFilter *filter );
00670 
00671 private:
00672   virtual Result execute();
00673   QValueList<Q_UINT32> serNumList;
00674   KMFilter *mFilter;
00675 };
00676 
00677 
00678 class KDE_EXPORT KMMetaFilterActionCommand : public QObject
00679 {
00680   Q_OBJECT
00681 
00682 public:
00683   KMMetaFilterActionCommand( KMFilter *filter, KMHeaders *headers,
00684                  KMMainWidget *main );
00685 
00686 public slots:
00687   void start();
00688 
00689 private:
00690   KMFilter *mFilter;
00691   KMHeaders *mHeaders;
00692   KMMainWidget *mMainWidget;
00693 };
00694 
00695 class KDE_EXPORT FolderShortcutCommand : public QObject
00696 {
00697   Q_OBJECT
00698 
00699 public:
00700   FolderShortcutCommand( KMMainWidget* mainwidget, KMFolder *folder );
00701   ~FolderShortcutCommand();
00702 
00703 public slots:
00704   void start();
00708   void setAction( KAction* );
00709 
00710 private:
00711   KMMainWidget *mMainWidget;
00712   KMFolder *mFolder;
00713   KAction *mAction;
00714 };
00715 
00716 
00717 class KDE_EXPORT KMMailingListFilterCommand : public KMCommand
00718 {
00719   Q_OBJECT
00720 
00721 public:
00722   KMMailingListFilterCommand( QWidget *parent, KMMessage *msg );
00723 
00724 private:
00725   virtual Result execute();
00726 };
00727 
00728 
00736 class KDE_EXPORT KMMenuCommand : public KMCommand
00737 {
00738   Q_OBJECT
00739 
00740 public:
00741   static void folderToPopupMenu(bool move, QObject *receiver,
00742     KMMenuToFolder *aMenuToFolder, QPopupMenu *menu );
00743 
00744   static void makeFolderMenu(KMFolderNode* item, bool move,
00745     QObject *receiver, KMMenuToFolder *aMenuToFolder, QPopupMenu *menu );
00746 };
00747 
00748 class KDE_EXPORT KMCopyCommand : public KMMenuCommand
00749 {
00750   Q_OBJECT
00751 
00752 public:
00753   KMCopyCommand( KMFolder* destFolder,
00754          const QPtrList<KMMsgBase> &msgList );
00755   KMCopyCommand( KMFolder* destFolder, KMMessage *msg );
00756 
00757 protected slots:
00758   void slotJobFinished( KMail::FolderJob *job );
00759 
00760   void slotFolderComplete( KMFolderImap*, bool success );
00761 
00762 private:
00763   virtual Result execute();
00764 
00765   KMFolder *mDestFolder;
00766   QPtrList<KMMsgBase> mMsgList;
00767   QValueList<KMail::FolderJob*> mPendingJobs;
00768 };
00769 
00770 namespace KPIM {
00771   class ProgressItem;
00772 }
00773 class KDE_EXPORT KMMoveCommand : public KMMenuCommand
00774 {
00775   Q_OBJECT
00776 
00777 public:
00778   KMMoveCommand( KMFolder* destFolder, const QPtrList<KMMsgBase> &msgList );
00779   KMMoveCommand( KMFolder* destFolder, KMMessage * msg );
00780   KMMoveCommand( KMFolder* destFolder, KMMsgBase * msgBase );
00781   KMFolder* destFolder() const { return mDestFolder; }
00782 
00783 public slots:
00784   void slotImapFolderCompleted(KMFolderImap *folder, bool success);
00785   void slotMsgAddedToDestFolder(KMFolder *folder, Q_UINT32 serNum);
00786   void slotMoveCanceled();
00787 
00788 protected:
00789   // Needed for KMDeleteCommand for "move to trash"
00790   KMMoveCommand( Q_UINT32 sernum );
00791   void setDestFolder( KMFolder* folder ) { mDestFolder = folder; }
00792   void addMsg( KMMsgBase *msg ) { mSerNumList.append( msg->getMsgSerNum() ); }
00793   QValueVector<KMFolder*> mOpenedFolders;
00794 
00795 private:
00796   virtual Result execute();
00797   void completeMove( Result result );
00798 
00799   KMFolder *mDestFolder;
00800   QValueList<Q_UINT32> mSerNumList;
00801   // List of serial numbers that have to be transferred to a host.
00802   // Ticked off as they come in via msgAdded signals.
00803   QValueList<Q_UINT32> mLostBoys;
00804   KPIM::ProgressItem *mProgressItem;
00805   bool mCompleteWithAddedMsg;
00806 };
00807 
00808 class KDE_EXPORT KMDeleteMsgCommand : public KMMoveCommand
00809 {
00810   Q_OBJECT
00811 
00812 public:
00813   KMDeleteMsgCommand( KMFolder* srcFolder, const QPtrList<KMMsgBase> &msgList );
00814   KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg );
00815   KMDeleteMsgCommand( Q_UINT32 sernum );
00816 
00817 private:
00818   static KMFolder * findTrashFolder( KMFolder * srcFolder );
00819 
00820 };
00821 
00822 class KDE_EXPORT KMUrlClickedCommand : public KMCommand
00823 {
00824   Q_OBJECT
00825 
00826 public:
00827   KMUrlClickedCommand( const KURL &url, uint identity,
00828     KMReaderWin *readerWin, bool mHtmlPref, KMMainWidget *mainWidget = 0 );
00829 
00830 private:
00831   virtual Result execute();
00832 
00833   KURL mUrl;
00834   uint mIdentity;
00835   KMReaderWin *mReaderWin;
00836   bool mHtmlPref;
00837   KMMainWidget *mMainWidget;
00838 };
00839 
00840 class KDE_EXPORT KMLoadPartsCommand : public KMCommand
00841 {
00842   Q_OBJECT
00843 
00844 public:
00845   KMLoadPartsCommand( QPtrList<partNode>& parts, KMMessage* msg );
00846   KMLoadPartsCommand( partNode* node, KMMessage* msg );
00847   KMLoadPartsCommand( PartNodeMessageMap& partMap );
00848 
00849 public slots:
00850   void slotPartRetrieved( KMMessage* msg, QString partSpecifier );
00851 
00852 signals:
00853   void partsRetrieved();
00854 
00855 private:
00856   // Retrieve parts then calls execute
00857   virtual void slotStart();
00858 
00859   virtual Result execute();
00860 
00861   int mNeedsRetrieval;
00862   PartNodeMessageMap mPartMap;
00863 };
00864 
00865 class KDE_EXPORT KMResendMessageCommand : public KMCommand
00866 {
00867   Q_OBJECT
00868 
00869 public:
00870   KMResendMessageCommand( QWidget *parent, KMMessage *msg=0 );
00871 
00872 private:
00873   virtual Result execute();
00874 };
00875 
00876 class KDE_EXPORT KMMailingListCommand : public KMCommand
00877 {
00878   Q_OBJECT
00879 public:
00880   KMMailingListCommand( QWidget *parent, KMFolder *folder );
00881 private:
00882   virtual Result execute();
00883 private slots:
00884   void commandCompleted( KMCommand *command );
00885 protected:
00886   virtual KURL::List urls() const =0;
00887 protected:
00888   KMFolder *mFolder;
00889 };
00890 
00891 class KDE_EXPORT KMMailingListPostCommand : public KMMailingListCommand
00892 {
00893   Q_OBJECT
00894 public:
00895   KMMailingListPostCommand( QWidget *parent, KMFolder *folder );
00896 protected:
00897   virtual KURL::List urls() const;
00898 };
00899 
00900 class KDE_EXPORT KMMailingListSubscribeCommand : public KMMailingListCommand
00901 {
00902   Q_OBJECT
00903 public:
00904   KMMailingListSubscribeCommand( QWidget *parent, KMFolder *folder );
00905 protected:
00906   virtual KURL::List urls() const;
00907 };
00908 
00909 class KDE_EXPORT KMMailingListUnsubscribeCommand : public KMMailingListCommand
00910 {
00911   Q_OBJECT
00912 public:
00913   KMMailingListUnsubscribeCommand( QWidget *parent, KMFolder *folder );
00914 protected:
00915   virtual KURL::List urls() const;
00916 };
00917 
00918 class KDE_EXPORT KMMailingListArchivesCommand : public KMMailingListCommand
00919 {
00920   Q_OBJECT
00921 public:
00922   KMMailingListArchivesCommand( QWidget *parent, KMFolder *folder );
00923 protected:
00924   virtual KURL::List urls() const;
00925 };
00926 
00927 class KDE_EXPORT KMMailingListHelpCommand : public KMMailingListCommand
00928 {
00929   Q_OBJECT
00930 public:
00931   KMMailingListHelpCommand( QWidget *parent, KMFolder *folder );
00932 protected:
00933   virtual KURL::List urls() const;
00934 };
00935 
00936 class KDE_EXPORT KMIMChatCommand : public KMCommand
00937 {
00938   Q_OBJECT
00939 
00940 public:
00941   KMIMChatCommand( const KURL &url, KMMessage *msg=0 );
00942 
00943 private:
00950   virtual Result execute();
00951 
00952   KURL mUrl;
00953   KMMessage *mMessage;
00954 };
00955 
00956 class KDE_EXPORT KMHandleAttachmentCommand : public KMCommand
00957 {
00958   Q_OBJECT
00959 
00960 public:
00962   enum AttachmentAction
00963   {
00964     Open = 1,
00965     OpenWith = 2,
00966     View = 3,
00967     Save = 4,
00968     Properties = 5,
00969     ChiasmusEncrypt = 6
00970   };
00980   KMHandleAttachmentCommand( partNode* node, KMMessage* msg, int atmId,
00981       const QString& atmName, AttachmentAction action, KService::Ptr offer, QWidget* parent );
00982 
00983 
00984 signals:
00985   void showAttachment( int id, const QString& name );
00986 
00987 private:
00988   virtual Result execute();
00989 
00990   QString createAtmFileLink() const;
00991 
00993   KService::Ptr getServiceOffer();
00994 
00996   void atmOpen();
00997 
00999   void atmOpenWith();
01000 
01005   void atmView();
01006 
01008   void atmSave();
01009 
01011   void atmProperties();
01012 
01014   void atmEncryptWithChiasmus();
01015 
01016 private slots:
01018   virtual void slotStart();
01019 
01024   void slotPartComplete();
01025 
01026   void slotAtmDecryptWithChiasmusResult( const GpgME::Error &, const QVariant & );
01027   void slotAtmDecryptWithChiasmusUploadResult( KIO::Job * );
01028 
01029 private:
01030   partNode* mNode;
01031   KMMessage* mMsg;
01032   int mAtmId;
01033   QString mAtmName;
01034   AttachmentAction mAction;
01035   KService::Ptr mOffer;
01036   Kleo::SpecialJob *mJob;
01037 
01038 };
01039 
01040 
01042 class KDE_EXPORT AttachmentModifyCommand : public KMCommand
01043 {
01044   Q_OBJECT
01045   public:
01046     AttachmentModifyCommand( partNode *node, KMMessage *msg, QWidget *parent );
01047     AttachmentModifyCommand( int nodeId, KMMessage *msg, QWidget *parent );
01048     ~AttachmentModifyCommand();
01049 
01050   protected:
01051     void storeChangedMessage( KMMessage* msg );
01052     virtual Result doAttachmentModify() = 0;
01053 
01054   protected:
01055     int mPartIndex;
01056     Q_UINT32 mSernum;
01057 
01058   private:
01059     Result execute();
01060 
01061   private slots:
01062     void messageStoreResult( KMFolderImap* folder, bool success );
01063     void messageDeleteResult( KMCommand *cmd );
01064 
01065   private:
01066     QGuardedPtr<KMFolder> mFolder;
01067 };
01068 
01069 class KDE_EXPORT KMDeleteAttachmentCommand : public AttachmentModifyCommand
01070 {
01071   Q_OBJECT
01072   public:
01073     KMDeleteAttachmentCommand( partNode *node, KMMessage *msg, QWidget *parent );
01074     KMDeleteAttachmentCommand( int nodeId, KMMessage *msg, QWidget *parent );
01075     ~KMDeleteAttachmentCommand();
01076 
01077   protected:
01078     Result doAttachmentModify();
01079 };
01080 
01081 
01082 class KDE_EXPORT KMEditAttachmentCommand : public AttachmentModifyCommand
01083 {
01084   Q_OBJECT
01085   public:
01086     KMEditAttachmentCommand( partNode *node, KMMessage *msg, QWidget *parent );
01087     KMEditAttachmentCommand( int nodeId, KMMessage *msg, QWidget *parent );
01088     ~KMEditAttachmentCommand();
01089 
01090   protected:
01091     Result doAttachmentModify();
01092 
01093   private slots:
01094     void editDone( KMail::EditorWatcher *watcher );
01095 
01096   private:
01097     KTempFile mTempFile;
01098 };
01099 
01100 class KDE_EXPORT CreateTodoCommand : public KMCommand
01101 {
01102   Q_OBJECT
01103   public:
01104     CreateTodoCommand( QWidget *parent, KMMessage *msg );
01105 
01106   private:
01107     Result execute();
01108 };
01109 
01110 #endif /*KMCommands_h*/
KDE Home | KDE Accessibility Home | Description of Access Keys