kmail Library API Documentation

kmcommands.h

00001 #ifndef KMCommands_h
00002 #define KMCommands_h
00003 
00004 #include <qguardedptr.h>
00005 #include <qptrlist.h>
00006 #include <qvaluelist.h>
00007 #include <kio/job.h>
00008 #include "kmmsgbase.h" // for KMMsgStatus
00009 
00010 class QPopupMenu;
00011 class QTextCodec;
00012 class KMainWindow;
00013 class KProgressDialog;
00014 class KMComposeWin;
00015 class KMFilter;
00016 class KMFolder;
00017 class KMFolderImap;
00018 class KMFolderNode;
00019 class KMHeaders;
00020 class KMMainWidget;
00021 class KMMessage;
00022 class KMMsgBase;
00023 class KMReaderWin;
00024 class partNode;
00025 namespace KIO { class Job; }
00026 
00027 typedef QMap<int,KMFolder*> KMMenuToFolder;
00028 
00029 class KMCommand : public QObject
00030 {
00031   Q_OBJECT
00032 
00033 public:
00034   // Trival constructor, don't retrieve any messages
00035   KMCommand( QWidget *parent = 0 );
00036   // Retrieve all messages in msgList when start is called.
00037   KMCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList );
00038   // Retrieve the single message msgBase when start is called.
00039   KMCommand( QWidget *parent, KMMsgBase *msgBase );
00040   // Retrieve the single message msgBase when start is called.
00041   KMCommand( QWidget *parent, KMMessage *message );
00042   virtual ~KMCommand();
00043 
00044   bool deletesItself () { return mDeletesItself; }
00045   void setDeletesItself( bool deletesItself )
00046   { mDeletesItself = deletesItself; }
00047 
00048 
00049 public slots:
00050   // Retrieve messages then calls execute
00051   void start();
00052 
00053 protected:
00054   // Returns list of messages retrieved
00055   const QPtrList<KMMessage> retrievedMsgs() const;
00056   // Returns the single message retrieved
00057   KMMessage *retrievedMessage() const;
00058 
00059 private:
00060   // execute should be implemented by derived classes
00061   virtual void execute() = 0;
00062 
00063   void preTransfer();
00064 
00067   void transferSelectedMsgs();
00068 
00069 private slots:
00070   void slotPostTransfer(bool);
00072   void slotMsgTransfered(KMMessage* msg);
00074   void slotJobFinished();
00076   void slotTransferCancelled();
00077 signals:
00078   void messagesTransfered(bool);
00081   void completed( bool success);
00082 
00083 private:
00084   // ProgressDialog for transferring messages
00085   KProgressDialog* mProgressDialog;
00086   //Currently only one async command allowed at a time
00087   static int mCountJobs;
00088   int mCountMsgs;
00089   bool mDeletesItself;
00090 
00091   QWidget *mParent;
00092   QPtrList<KMMessage> mRetrievedMsgs;
00093   QPtrList<KMMsgBase> mMsgList;
00094   QValueList<QGuardedPtr<KMFolder> > mFolders;
00095 };
00096 
00097 class KMMailtoComposeCommand : public KMCommand
00098 {
00099   Q_OBJECT
00100 
00101 public:
00102   KMMailtoComposeCommand( const KURL &url, KMMessage *msg=0 );
00103 
00104 private:
00105   virtual void execute();
00106 
00107   KURL mUrl;
00108   KMMessage *mMessage;
00109 };
00110 
00111 class KMMailtoReplyCommand : public KMCommand
00112 {
00113   Q_OBJECT
00114 
00115 public:
00116   KMMailtoReplyCommand( QWidget *parent, const KURL &url,
00117             KMMessage *msg, const QString &selection );
00118 
00119 private:
00120   virtual void execute();
00121 
00122   KURL mUrl;
00123   QString mSelection;
00124 };
00125 
00126 class KMMailtoForwardCommand : public KMCommand
00127 {
00128   Q_OBJECT
00129 
00130 public:
00131   KMMailtoForwardCommand( QWidget *parent, const KURL &url,
00132               KMMessage *msg );
00133 
00134 private:
00135   virtual void execute();
00136 
00137   KURL mUrl;
00138 };
00139 
00140 class KMMailtoAddAddrBookCommand : public KMCommand
00141 {
00142   Q_OBJECT
00143 
00144 public:
00145   KMMailtoAddAddrBookCommand( const KURL &url, QWidget *parent );
00146 
00147 private:
00148   virtual void execute();
00149 
00150   KURL mUrl;
00151   QWidget *mParent;
00152 };
00153 
00154 class KMAddBookmarksCommand : public KMCommand
00155 {
00156   Q_OBJECT
00157 
00158 public:
00159   KMAddBookmarksCommand( const KURL &url, QWidget *parent );
00160 
00161 private:
00162   virtual void execute();
00163 
00164   KURL mUrl;
00165   QWidget *mParent;
00166 };
00167 
00168 
00169 class KMMailtoOpenAddrBookCommand : public KMCommand
00170 {
00171   Q_OBJECT
00172 
00173 public:
00174   KMMailtoOpenAddrBookCommand( const KURL &url, QWidget *parent );
00175 
00176 private:
00177   virtual void execute();
00178 
00179   KURL mUrl;
00180   QWidget *mParent;
00181 };
00182 
00183 class KMUrlCopyCommand : public KMCommand
00184 {
00185   Q_OBJECT
00186 
00187 public:
00188   KMUrlCopyCommand( const KURL &url, KMMainWidget *mainWidget = 0 );
00189 
00190 private:
00191   virtual void execute();
00192 
00193   KURL mUrl;
00194   KMMainWidget *mMainWidget;
00195 };
00196 
00197 class KMUrlOpenCommand : public KMCommand
00198 {
00199   Q_OBJECT
00200 
00201 public:
00202   KMUrlOpenCommand( const KURL &url, KMReaderWin *readerWin );
00203 
00204 private:
00205   virtual void execute();
00206 
00207   KURL mUrl;
00208   KMReaderWin *mReaderWin;
00209 };
00210 
00211 class KMUrlSaveCommand : public KMCommand
00212 {
00213   Q_OBJECT
00214 
00215 public:
00216   KMUrlSaveCommand( const KURL &url, QWidget *parent );
00217 
00218 private slots:
00219   void slotUrlSaveResult( KIO::Job *job );
00220 
00221 private:
00222   virtual void execute();
00223 
00224   KURL mUrl;
00225   QWidget *mParent;
00226 };
00227 
00228 class KMEditMsgCommand : public KMCommand
00229 {
00230   Q_OBJECT
00231 
00232 public:
00233   KMEditMsgCommand( QWidget *parent, KMMessage *msg );
00234 
00235 private:
00236   virtual void execute();
00237 };
00238 
00239 class KMShowMsgSrcCommand : public KMCommand
00240 {
00241   Q_OBJECT
00242 
00243 public:
00244   KMShowMsgSrcCommand( QWidget *parent, KMMessage *msg,
00245                bool fixedFont );
00246   virtual void execute();
00247 
00248 private:
00249   bool mFixedFont;
00250 };
00251 
00252 class KMSaveMsgCommand : public KMCommand
00253 {
00254   Q_OBJECT
00255 
00256 public:
00257   KMSaveMsgCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList );
00258   KMSaveMsgCommand( QWidget *parent, KMMessage * msg );
00259   KURL url();
00260 
00261 private:
00262   virtual void execute();
00263 
00264 private slots:
00265   void slotSaveDataReq();
00266   void slotSaveResult(KIO::Job *job);
00268   void slotMessageRetrievedForSaving(KMMessage *msg);
00269 
00270 private:
00271   static const int MAX_CHUNK_SIZE = 64*1024;
00272   KURL mUrl;
00273   QValueList<unsigned long> mMsgList;
00274   unsigned int mMsgListIndex;
00275   QByteArray mData;
00276   int mOffset;
00277   size_t mTotalSize;
00278   KIO::TransferJob *mJob;
00279 };
00280 
00281 class KMSaveAttachmentsCommand : public KMCommand
00282 {
00283   Q_OBJECT
00284 public:
00285   KMSaveAttachmentsCommand( QWidget *parent, KMMessage *msg  );
00286   KMSaveAttachmentsCommand( QWidget *parent, const QPtrList<KMMsgBase>& msgs );
00287   KMSaveAttachmentsCommand( QWidget *parent, QPtrList<partNode> &attachments, 
00288       KMMessage *msg, bool encoded = false  );
00289 
00290 protected slots:
00291   void slotSaveAll();
00292 
00293 private:
00294   virtual void execute();
00295 private:
00296   void parse( partNode *rootNode );
00297   void saveAll( const QPtrList<partNode>& attachments );
00298   void saveItem( partNode *node, const QString& filename );
00299 private:
00300   QWidget *mParent;
00301   QPtrList<partNode> mAttachments;
00302   bool mEncoded;
00303   bool mMessageComplete;
00304 };
00305 
00306 class KMReplyToCommand : public KMCommand
00307 {
00308   Q_OBJECT
00309 
00310 public:
00311   KMReplyToCommand( QWidget *parent, KMMessage *msg,
00312                     const QString &selection = QString::null );
00313 
00314 private:
00315   virtual void execute();
00316 
00317 private:
00318   QString mSelection;
00319 };
00320 
00321 class KMNoQuoteReplyToCommand : public KMCommand
00322 {
00323   Q_OBJECT
00324 
00325 public:
00326   KMNoQuoteReplyToCommand( QWidget *parent, KMMessage *msg );
00327 
00328 private:
00329   virtual void execute();
00330 };
00331 
00332 class KMReplyListCommand : public KMCommand
00333 {
00334   Q_OBJECT
00335 
00336 public:
00337   KMReplyListCommand( QWidget *parent, KMMessage *msg,
00338               const QString &selection = QString::null );
00339 
00340 private:
00341   virtual void execute();
00342 
00343 private:
00344   QString mSelection;
00345 };
00346 
00347 class KMReplyToAllCommand : public KMCommand
00348 {
00349   Q_OBJECT
00350 
00351 public:
00352   KMReplyToAllCommand( QWidget *parent, KMMessage *msg,
00353                const QString &selection = QString::null );
00354 
00355 private:
00356   virtual void execute();
00357 
00358 private:
00359   QString mSelection;
00360 };
00361 
00362 class KMReplyAuthorCommand : public KMCommand
00363 {
00364   Q_OBJECT
00365 
00366 public:
00367   KMReplyAuthorCommand( QWidget *parent, KMMessage *msg,
00368                         const QString &selection = QString::null );
00369 
00370 private:
00371   virtual void execute();
00372 
00373 private:
00374   QString mSelection;
00375 };
00376 
00377 class KMForwardCommand : public KMCommand
00378 {
00379   Q_OBJECT
00380 
00381 public:
00382   KMForwardCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00383                     uint identity = 0 );
00384   KMForwardCommand( QWidget *parent, KMMessage * msg,
00385                     uint identity = 0 );
00386 
00387 private:
00388   virtual void execute();
00389 
00390 private:
00391   QWidget *mParent;
00392   uint mIdentity;
00393 };
00394 
00395 class KMForwardAttachedCommand : public KMCommand
00396 {
00397   Q_OBJECT
00398 
00399 public:
00400   KMForwardAttachedCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00401                 uint identity = 0, KMComposeWin *win = 0 );
00402   KMForwardAttachedCommand( QWidget *parent, KMMessage * msg,
00403                 uint identity = 0, KMComposeWin *win = 0 );
00404 
00405 private:
00406   virtual void execute();
00407 
00408   uint mIdentity;
00409   QGuardedPtr<KMComposeWin> mWin;
00410 };
00411 
00412 class KMRedirectCommand : public KMCommand
00413 {
00414   Q_OBJECT
00415 
00416 public:
00417   KMRedirectCommand( QWidget *parent, KMMessage *msg );
00418 
00419 private:
00420   virtual void execute();
00421 };
00422 
00423 class KMBounceCommand : public KMCommand
00424 {
00425   Q_OBJECT
00426 
00427 public:
00428   KMBounceCommand( QWidget *parent, KMMessage *msg );
00429 
00430 private:
00431   virtual void execute();
00432 };
00433 
00434 class KMPrintCommand : public KMCommand
00435 {
00436   Q_OBJECT
00437 
00438 public:
00439   KMPrintCommand( QWidget *parent, KMMessage *msg, bool htmlOverride=false );
00440 
00441 private:
00442   virtual void execute();
00443 
00444   bool mHtmlOverride;
00445 };
00446 
00447 class KMSetStatusCommand : public KMCommand
00448 {
00449   Q_OBJECT
00450 
00451 public:
00452   // Serial numbers
00453   KMSetStatusCommand( KMMsgStatus status, const QValueList<Q_UINT32> &,
00454                       bool toggle=false );
00455 
00456 private:
00457   virtual void execute();
00458 
00459   KMMsgStatus mStatus;
00460   QValueList<Q_UINT32> mSerNums;
00461   QValueList<int> mIds;
00462   bool mToggle;
00463 };
00464 
00465 class KMFilterCommand : public KMCommand
00466 {
00467   Q_OBJECT
00468 
00469 public:
00470   KMFilterCommand( const QCString &field, const QString &value );
00471 
00472 private:
00473   virtual void execute();
00474 
00475   QCString mField;
00476   QString mValue;
00477 };
00478 
00479 
00480 class KMFilterActionCommand : public KMCommand
00481 {
00482   Q_OBJECT
00483 
00484 public:
00485   KMFilterActionCommand( QWidget *parent,
00486              const QPtrList<KMMsgBase> &msgList,
00487              KMFilter *filter );
00488 
00489 private:
00490   virtual void execute();
00491 
00492   KMFilter *mFilter;
00493 };
00494 
00495 
00496 class KMMetaFilterActionCommand : public QObject
00497 {
00498   Q_OBJECT
00499 
00500 public:
00501   KMMetaFilterActionCommand( KMFilter *filter, KMHeaders *headers,
00502                  KMMainWidget *main );
00503 
00504 public slots:
00505   void start();
00506 
00507 private:
00508   KMFilter *mFilter;
00509   KMHeaders *mHeaders;
00510   KMMainWidget *mMainWidget;
00511 };
00512 
00513 
00514 class KMMailingListFilterCommand : public KMCommand
00515 {
00516   Q_OBJECT
00517 
00518 public:
00519   KMMailingListFilterCommand( QWidget *parent, KMMessage *msg );
00520 
00521 private:
00522   virtual void execute();
00523 };
00524 
00525 
00533 class KMMenuCommand : public KMCommand
00534 {
00535   Q_OBJECT
00536 
00537 public:
00538   static QPopupMenu* folderToPopupMenu(bool move, QObject *receiver,
00539     KMMenuToFolder *aMenuToFolder, QPopupMenu *menu );
00540 
00541   static QPopupMenu* makeFolderMenu(KMFolderNode* item, bool move,
00542     QObject *receiver, KMMenuToFolder *aMenuToFolder, QPopupMenu *menu );
00543 };
00544 
00545 class KMCopyCommand : public KMMenuCommand
00546 {
00547   Q_OBJECT
00548 
00549 public:
00550   KMCopyCommand( KMFolder* destFolder,
00551          const QPtrList<KMMsgBase> &msgList );
00552   KMCopyCommand( KMFolder* destFolder, KMMessage *msg );
00553 
00554 private:
00555   virtual void execute();
00556 
00557   KMFolder *mDestFolder;
00558   QPtrList<KMMsgBase> mMsgList;
00559 };
00560 
00561 class KMMoveCommand : public KMMenuCommand
00562 {
00563   Q_OBJECT
00564 
00565 public:
00566   KMMoveCommand( KMFolder* destFolder, const QPtrList<KMMsgBase> &msgList );
00567   KMMoveCommand( KMFolder* destFolder, KMMessage * msg );
00568   KMMoveCommand( KMFolder* destFolder, KMMsgBase * msgBase );
00569 
00570 public slots:
00571   void slotImapFolderCompleted(KMFolderImap *folder, bool success);
00572   void slotMsgAddedToDestFolder(KMFolder *folder, Q_UINT32 serNum);
00573 
00574 private:
00575   virtual void execute();
00576 
00577   KMFolder *mDestFolder;
00578   QPtrList<KMMsgBase> mMsgList;
00579   // List of serial numbers that have to be transferred to a host.
00580   // Ticked off as they come in via msgAdded signals. 
00581   QValueList<Q_UINT32> mLostBoys;
00582 };
00583 
00584 class KMDeleteMsgCommand : public KMMoveCommand
00585 {
00586   Q_OBJECT
00587 
00588 public:
00589   KMDeleteMsgCommand( KMFolder* srcFolder, const QPtrList<KMMsgBase> &msgList );
00590   KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg );
00591 
00592 private:
00593   static KMFolder * findTrashFolder( KMFolder * srcFolder );
00594 };
00595 
00596 class KMUrlClickedCommand : public KMCommand
00597 {
00598   Q_OBJECT
00599 
00600 public:
00601   KMUrlClickedCommand( const KURL &url, uint identity,
00602     KMReaderWin *readerWin, bool mHtmlPref, KMMainWidget *mainWidget = 0 );
00603 
00604 private:
00605   virtual void execute();
00606 
00607   KURL mUrl;
00608   uint mIdentity;
00609   KMReaderWin *mReaderWin;
00610   bool mHtmlPref;
00611   KMMainWidget *mMainWidget;
00612 };
00613 
00614 class KMLoadPartsCommand : public KMCommand
00615 {
00616   Q_OBJECT
00617 
00618 public:
00619   KMLoadPartsCommand( QPtrList<partNode>& parts, KMMessage* msg );
00620   KMLoadPartsCommand( partNode* node, KMMessage* msg );
00621 
00622 public slots:
00623   // Retrieve parts then calls execute
00624   void start();
00625   void slotPartRetrieved( KMMessage* msg, QString partSpecifier );  
00626 
00627 signals:
00628   void partsRetrieved();
00629 
00630 private:
00631   virtual void execute();
00632 
00633   QPtrList<partNode> mParts;
00634   int mNeedsRetrieval;
00635   KMMessage *mMsg;
00636 };
00637 
00638 #endif /*KMCommands_h*/
KDE Logo
This file is part of the documentation for kmail Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat May 1 11:37:20 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003