kmail Library API Documentation

kmcommands.h

00001 // -*- mode: C++; c-file-style: "gnu" -*- 00002 00003 #ifndef KMCommands_h 00004 #define KMCommands_h 00005 00006 #include <qguardedptr.h> 00007 #include <qptrlist.h> 00008 #include <qvaluelist.h> 00009 #include <kio/job.h> 00010 #include "kmmsgbase.h" // for KMMsgStatus 00011 #include <mimelib/string.h> 00012 00013 class QPopupMenu; 00014 class QTextCodec; 00015 class KMainWindow; 00016 class KProgressDialog; 00017 class KMComposeWin; 00018 class KMFilter; 00019 class KMFolder; 00020 class KMFolderImap; 00021 class KMFolderNode; 00022 class KMHeaders; 00023 class KMMainWidget; 00024 class KMMessage; 00025 class KMMsgBase; 00026 class KMReaderWin; 00027 class partNode; 00028 namespace KIO { class Job; } 00029 00030 typedef QMap<int,KMFolder*> KMMenuToFolder; 00031 typedef QMap<partNode*, KMMessage*> PartNodeMessageMap; 00032 00033 class KMCommand : public QObject 00034 { 00035 Q_OBJECT 00036 00037 public: 00038 enum Result { Undefined, OK, Canceled, Failed }; 00039 00040 // Trival constructor, don't retrieve any messages 00041 KMCommand( QWidget *parent = 0 ); 00042 // Retrieve all messages in msgList when start is called. 00043 KMCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList ); 00044 // Retrieve the single message msgBase when start is called. 00045 KMCommand( QWidget *parent, KMMsgBase *msgBase ); 00046 // Retrieve the single message msgBase when start is called. 00047 KMCommand( QWidget *parent, KMMessage *message ); 00048 virtual ~KMCommand(); 00049 00054 void keepFolderOpen( KMFolder *folder ); 00055 00059 Result result(); 00060 00061 public slots: 00062 // Retrieve messages then calls execute 00063 void start(); 00064 00065 // advance the progressbar, emitted by the folderjob 00066 void slotProgress( unsigned long done, unsigned long total ); 00067 00068 signals: 00069 void messagesTransfered( KMCommand::Result result ); 00072 void completed( KMCommand *command ); 00073 00074 protected: 00075 // Returns list of messages retrieved 00076 const QPtrList<KMMessage> retrievedMsgs() const; 00077 // Returns the single message retrieved 00078 KMMessage *retrievedMessage() const; 00079 // Returns the parent widget 00080 QWidget *parentWidget() const; 00081 00082 bool deletesItself() { return mDeletesItself; } 00088 void setDeletesItself( bool deletesItself ) 00089 { mDeletesItself = deletesItself; } 00090 00091 bool emitsCompletedItself() { return mEmitsCompletedItself; } 00098 void setEmitsCompletedItself( bool emitsCompletedItself ) 00099 { mEmitsCompletedItself = emitsCompletedItself; } 00100 00104 void setResult( Result result ) 00105 { mResult = result; } 00106 00107 private: 00108 // execute should be implemented by derived classes 00109 virtual Result execute() = 0; 00110 00113 void transferSelectedMsgs(); 00114 00115 private slots: 00117 virtual void slotStart(); 00118 00119 void slotPostTransfer( KMCommand::Result result ); 00121 void slotMsgTransfered(KMMessage* msg); 00123 void slotJobFinished(); 00125 void slotTransferCancelled(); 00126 00127 private: 00128 // ProgressDialog for transferring messages 00129 KProgressDialog* mProgressDialog; 00130 //Currently only one async command allowed at a time 00131 static int mCountJobs; 00132 int mCountMsgs; 00133 Result mResult; 00134 bool mDeletesItself : 1; 00135 bool mEmitsCompletedItself : 1; 00136 00137 QWidget *mParent; 00138 QPtrList<KMMessage> mRetrievedMsgs; 00139 QPtrList<KMMsgBase> mMsgList; 00140 QValueList<QGuardedPtr<KMFolder> > mFolders; 00141 }; 00142 00143 class KMMailtoComposeCommand : public KMCommand 00144 { 00145 Q_OBJECT 00146 00147 public: 00148 KMMailtoComposeCommand( const KURL &url, KMMessage *msg=0 ); 00149 00150 private: 00151 virtual Result execute(); 00152 00153 KURL mUrl; 00154 KMMessage *mMessage; 00155 }; 00156 00157 class KMMailtoReplyCommand : public KMCommand 00158 { 00159 Q_OBJECT 00160 00161 public: 00162 KMMailtoReplyCommand( QWidget *parent, const KURL &url, 00163 KMMessage *msg, const QString &selection ); 00164 00165 private: 00166 virtual Result execute(); 00167 00168 KURL mUrl; 00169 QString mSelection; 00170 }; 00171 00172 class KMMailtoForwardCommand : public KMCommand 00173 { 00174 Q_OBJECT 00175 00176 public: 00177 KMMailtoForwardCommand( QWidget *parent, const KURL &url, 00178 KMMessage *msg ); 00179 00180 private: 00181 virtual Result execute(); 00182 00183 KURL mUrl; 00184 }; 00185 00186 class KMMailtoAddAddrBookCommand : public KMCommand 00187 { 00188 Q_OBJECT 00189 00190 public: 00191 KMMailtoAddAddrBookCommand( const KURL &url, QWidget *parent ); 00192 00193 private: 00194 virtual Result execute(); 00195 00196 KURL mUrl; 00197 }; 00198 00199 class KMAddBookmarksCommand : public KMCommand 00200 { 00201 Q_OBJECT 00202 00203 public: 00204 KMAddBookmarksCommand( const KURL &url, QWidget *parent ); 00205 00206 private: 00207 virtual Result execute(); 00208 00209 KURL mUrl; 00210 }; 00211 00212 00213 class KMMailtoOpenAddrBookCommand : public KMCommand 00214 { 00215 Q_OBJECT 00216 00217 public: 00218 KMMailtoOpenAddrBookCommand( const KURL &url, QWidget *parent ); 00219 00220 private: 00221 virtual Result execute(); 00222 00223 KURL mUrl; 00224 }; 00225 00226 class KMUrlCopyCommand : public KMCommand 00227 { 00228 Q_OBJECT 00229 00230 public: 00231 KMUrlCopyCommand( const KURL &url, KMMainWidget *mainWidget = 0 ); 00232 00233 private: 00234 virtual Result execute(); 00235 00236 KURL mUrl; 00237 KMMainWidget *mMainWidget; 00238 }; 00239 00240 class KMUrlOpenCommand : public KMCommand 00241 { 00242 Q_OBJECT 00243 00244 public: 00245 KMUrlOpenCommand( const KURL &url, KMReaderWin *readerWin ); 00246 00247 private: 00248 virtual Result execute(); 00249 00250 KURL mUrl; 00251 KMReaderWin *mReaderWin; 00252 }; 00253 00254 class KMUrlSaveCommand : public KMCommand 00255 { 00256 Q_OBJECT 00257 00258 public: 00259 KMUrlSaveCommand( const KURL &url, QWidget *parent ); 00260 00261 private slots: 00262 void slotUrlSaveResult( KIO::Job *job ); 00263 00264 private: 00265 virtual Result execute(); 00266 00267 KURL mUrl; 00268 }; 00269 00270 class KMEditMsgCommand : public KMCommand 00271 { 00272 Q_OBJECT 00273 00274 public: 00275 KMEditMsgCommand( QWidget *parent, KMMessage *msg ); 00276 00277 private: 00278 virtual Result execute(); 00279 }; 00280 00281 class KMShowMsgSrcCommand 00282 { 00283 public: 00284 KMShowMsgSrcCommand( KMMessage *msg, bool fixedFont ); 00285 00286 void start(); 00287 00288 private: 00289 bool mFixedFont; 00290 KMMessage *mMsg; 00291 }; 00292 00293 class KMSaveMsgCommand : public KMCommand 00294 { 00295 Q_OBJECT 00296 00297 public: 00298 KMSaveMsgCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList ); 00299 KMSaveMsgCommand( QWidget *parent, KMMessage * msg ); 00300 KURL url(); 00301 00302 private: 00303 virtual Result execute(); 00304 00305 private slots: 00306 void slotSaveDataReq(); 00307 void slotSaveResult(KIO::Job *job); 00309 void slotMessageRetrievedForSaving(KMMessage *msg); 00310 00311 private: 00312 static const int MAX_CHUNK_SIZE = 64*1024; 00313 KURL mUrl; 00314 QValueList<unsigned long> mMsgList; 00315 unsigned int mMsgListIndex; 00316 QByteArray mData; 00317 int mOffset; 00318 size_t mTotalSize; 00319 KIO::TransferJob *mJob; 00320 }; 00321 00322 class KMOpenMsgCommand : public KMCommand 00323 { 00324 Q_OBJECT 00325 00326 public: 00327 KMOpenMsgCommand( QWidget *parent, const KURL & url = KURL() ); 00328 00329 private: 00330 virtual Result execute(); 00331 00332 private slots: 00333 void slotDataArrived( KIO::Job *job, const QByteArray & data ); 00334 void slotResult( KIO::Job *job ); 00335 00336 private: 00337 static const int MAX_CHUNK_SIZE = 64*1024; 00338 KURL mUrl; 00339 DwString mMsgString; 00340 KIO::TransferJob *mJob; 00341 }; 00342 00343 class KMSaveAttachmentsCommand : public KMCommand 00344 { 00345 Q_OBJECT 00346 public: 00351 KMSaveAttachmentsCommand( QWidget *parent, KMMessage *msg ); 00356 KMSaveAttachmentsCommand( QWidget *parent, const QPtrList<KMMsgBase>& msgs ); 00365 KMSaveAttachmentsCommand( QWidget *parent, QPtrList<partNode> &attachments, 00366 KMMessage *msg, bool encoded = false ); 00367 00368 private slots: 00369 void slotSaveAll(); 00370 00371 private: 00372 virtual Result execute(); 00373 Result saveItem( partNode *node, const KURL& url ); 00374 00375 private: 00376 PartNodeMessageMap mAttachmentMap; 00377 bool mImplicitAttachments; 00378 bool mEncoded; 00379 }; 00380 00381 class KMReplyToCommand : public KMCommand 00382 { 00383 Q_OBJECT 00384 00385 public: 00386 KMReplyToCommand( QWidget *parent, KMMessage *msg, 00387 const QString &selection = QString::null ); 00388 00389 private: 00390 virtual Result execute(); 00391 00392 private: 00393 QString mSelection; 00394 }; 00395 00396 class KMNoQuoteReplyToCommand : public KMCommand 00397 { 00398 Q_OBJECT 00399 00400 public: 00401 KMNoQuoteReplyToCommand( QWidget *parent, KMMessage *msg ); 00402 00403 private: 00404 virtual Result execute(); 00405 }; 00406 00407 class KMReplyListCommand : public KMCommand 00408 { 00409 Q_OBJECT 00410 00411 public: 00412 KMReplyListCommand( QWidget *parent, KMMessage *msg, 00413 const QString &selection = QString::null ); 00414 00415 private: 00416 virtual Result execute(); 00417 00418 private: 00419 QString mSelection; 00420 }; 00421 00422 class KMReplyToAllCommand : public KMCommand 00423 { 00424 Q_OBJECT 00425 00426 public: 00427 KMReplyToAllCommand( QWidget *parent, KMMessage *msg, 00428 const QString &selection = QString::null ); 00429 00430 private: 00431 virtual Result execute(); 00432 00433 private: 00434 QString mSelection; 00435 }; 00436 00437 class KMReplyAuthorCommand : public KMCommand 00438 { 00439 Q_OBJECT 00440 00441 public: 00442 KMReplyAuthorCommand( QWidget *parent, KMMessage *msg, 00443 const QString &selection = QString::null ); 00444 00445 private: 00446 virtual Result execute(); 00447 00448 private: 00449 QString mSelection; 00450 }; 00451 00452 class KMForwardCommand : public KMCommand 00453 { 00454 Q_OBJECT 00455 00456 public: 00457 KMForwardCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList, 00458 uint identity = 0 ); 00459 KMForwardCommand( QWidget *parent, KMMessage * msg, 00460 uint identity = 0 ); 00461 00462 private: 00463 virtual Result execute(); 00464 00465 private: 00466 uint mIdentity; 00467 }; 00468 00469 class KMForwardAttachedCommand : public KMCommand 00470 { 00471 Q_OBJECT 00472 00473 public: 00474 KMForwardAttachedCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList, 00475 uint identity = 0, KMComposeWin *win = 0 ); 00476 KMForwardAttachedCommand( QWidget *parent, KMMessage * msg, 00477 uint identity = 0, KMComposeWin *win = 0 ); 00478 00479 private: 00480 virtual Result execute(); 00481 00482 uint mIdentity; 00483 QGuardedPtr<KMComposeWin> mWin; 00484 }; 00485 00486 class KMRedirectCommand : public KMCommand 00487 { 00488 Q_OBJECT 00489 00490 public: 00491 KMRedirectCommand( QWidget *parent, KMMessage *msg ); 00492 00493 private: 00494 virtual Result execute(); 00495 }; 00496 00497 class KMBounceCommand : public KMCommand 00498 { 00499 Q_OBJECT 00500 00501 public: 00502 KMBounceCommand( QWidget *parent, KMMessage *msg ); 00503 00504 private: 00505 virtual Result execute(); 00506 }; 00507 00508 class KMPrintCommand : public KMCommand 00509 { 00510 Q_OBJECT 00511 00512 public: 00513 KMPrintCommand( QWidget *parent, KMMessage *msg, bool htmlOverride=false ); 00514 00515 private: 00516 virtual Result execute(); 00517 00518 bool mHtmlOverride; 00519 }; 00520 00521 class KMSetStatusCommand : public KMCommand 00522 { 00523 Q_OBJECT 00524 00525 public: 00526 // Serial numbers 00527 KMSetStatusCommand( KMMsgStatus status, const QValueList<Q_UINT32> &, 00528 bool toggle=false ); 00529 00530 private: 00531 virtual Result execute(); 00532 00533 KMMsgStatus mStatus; 00534 QValueList<Q_UINT32> mSerNums; 00535 QValueList<int> mIds; 00536 bool mToggle; 00537 }; 00538 00539 class KMFilterCommand : public KMCommand 00540 { 00541 Q_OBJECT 00542 00543 public: 00544 KMFilterCommand( const QCString &field, const QString &value ); 00545 00546 private: 00547 virtual Result execute(); 00548 00549 QCString mField; 00550 QString mValue; 00551 }; 00552 00553 00554 class KMFilterActionCommand : public KMCommand 00555 { 00556 Q_OBJECT 00557 00558 public: 00559 KMFilterActionCommand( QWidget *parent, 00560 const QPtrList<KMMsgBase> &msgList, 00561 KMFilter *filter ); 00562 00563 private: 00564 virtual Result execute(); 00565 00566 KMFilter *mFilter; 00567 }; 00568 00569 00570 class KMMetaFilterActionCommand : public QObject 00571 { 00572 Q_OBJECT 00573 00574 public: 00575 KMMetaFilterActionCommand( KMFilter *filter, KMHeaders *headers, 00576 KMMainWidget *main ); 00577 00578 public slots: 00579 void start(); 00580 00581 private: 00582 KMFilter *mFilter; 00583 KMHeaders *mHeaders; 00584 KMMainWidget *mMainWidget; 00585 }; 00586 00587 00588 class KMMailingListFilterCommand : public KMCommand 00589 { 00590 Q_OBJECT 00591 00592 public: 00593 KMMailingListFilterCommand( QWidget *parent, KMMessage *msg ); 00594 00595 private: 00596 virtual Result execute(); 00597 }; 00598 00599 00607 class KMMenuCommand : public KMCommand 00608 { 00609 Q_OBJECT 00610 00611 public: 00612 static void folderToPopupMenu(bool move, QObject *receiver, 00613 KMMenuToFolder *aMenuToFolder, QPopupMenu *menu ); 00614 00615 static void makeFolderMenu(KMFolderNode* item, bool move, 00616 QObject *receiver, KMMenuToFolder *aMenuToFolder, QPopupMenu *menu ); 00617 }; 00618 00619 class KMCopyCommand : public KMMenuCommand 00620 { 00621 Q_OBJECT 00622 00623 public: 00624 KMCopyCommand( KMFolder* destFolder, 00625 const QPtrList<KMMsgBase> &msgList ); 00626 KMCopyCommand( KMFolder* destFolder, KMMessage *msg ); 00627 00628 private: 00629 virtual Result execute(); 00630 00631 KMFolder *mDestFolder; 00632 QPtrList<KMMsgBase> mMsgList; 00633 }; 00634 00635 namespace KPIM { 00636 class ProgressItem; 00637 } 00638 class KMMoveCommand : public KMMenuCommand 00639 { 00640 Q_OBJECT 00641 00642 public: 00643 KMMoveCommand( KMFolder* destFolder, const QPtrList<KMMsgBase> &msgList ); 00644 KMMoveCommand( KMFolder* destFolder, KMMessage * msg ); 00645 KMMoveCommand( KMFolder* destFolder, KMMsgBase * msgBase ); 00646 KMFolder* destFolder() const { return mDestFolder; } 00647 00648 public slots: 00649 void slotImapFolderCompleted(KMFolderImap *folder, bool success); 00650 void slotMsgAddedToDestFolder(KMFolder *folder, Q_UINT32 serNum); 00651 void slotMoveCanceled(); 00652 00653 private: 00654 virtual Result execute(); 00655 void completeMove( Result result ); 00656 00657 KMFolder *mDestFolder; 00658 QPtrList<KMMsgBase> mMsgList; 00659 // List of serial numbers that have to be transferred to a host. 00660 // Ticked off as they come in via msgAdded signals. 00661 QValueList<Q_UINT32> mLostBoys; 00662 KPIM::ProgressItem *mProgressItem; 00663 }; 00664 00665 class KMDeleteMsgCommand : public KMMoveCommand 00666 { 00667 Q_OBJECT 00668 00669 public: 00670 KMDeleteMsgCommand( KMFolder* srcFolder, const QPtrList<KMMsgBase> &msgList ); 00671 KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg ); 00672 00673 private: 00674 static KMFolder * findTrashFolder( KMFolder * srcFolder ); 00675 }; 00676 00677 class KMUrlClickedCommand : public KMCommand 00678 { 00679 Q_OBJECT 00680 00681 public: 00682 KMUrlClickedCommand( const KURL &url, uint identity, 00683 KMReaderWin *readerWin, bool mHtmlPref, KMMainWidget *mainWidget = 0 ); 00684 00685 private: 00686 virtual Result execute(); 00687 00688 KURL mUrl; 00689 uint mIdentity; 00690 KMReaderWin *mReaderWin; 00691 bool mHtmlPref; 00692 KMMainWidget *mMainWidget; 00693 }; 00694 00695 class KMLoadPartsCommand : public KMCommand 00696 { 00697 Q_OBJECT 00698 00699 public: 00700 KMLoadPartsCommand( QPtrList<partNode>& parts, KMMessage* msg ); 00701 KMLoadPartsCommand( partNode* node, KMMessage* msg ); 00702 KMLoadPartsCommand( PartNodeMessageMap& partMap ); 00703 00704 public slots: 00705 void slotPartRetrieved( KMMessage* msg, QString partSpecifier ); 00706 00707 signals: 00708 void partsRetrieved(); 00709 00710 private: 00711 // Retrieve parts then calls execute 00712 virtual void slotStart(); 00713 00714 virtual Result execute(); 00715 00716 int mNeedsRetrieval; 00717 PartNodeMessageMap mPartMap; 00718 }; 00719 00720 class KMResendMessageCommand : public KMCommand 00721 { 00722 Q_OBJECT 00723 00724 public: 00725 KMResendMessageCommand( QWidget *parent, KMMessage *msg=0 ); 00726 00727 private: 00728 virtual Result execute(); 00729 }; 00730 00731 class KMMailingListCommand : public KMCommand 00732 { 00733 Q_OBJECT 00734 public: 00735 KMMailingListCommand( QWidget *parent, KMFolder *parent ); 00736 private: 00737 virtual Result execute(); 00738 private slots: 00739 void commandCompleted( KMCommand *command ); 00740 protected: 00741 virtual KURL::List urls() const =0; 00742 protected: 00743 KMFolder *mFolder; 00744 }; 00745 00746 class KMMailingListPostCommand : public KMMailingListCommand 00747 { 00748 Q_OBJECT 00749 public: 00750 KMMailingListPostCommand( QWidget *parent, KMFolder *parent ); 00751 protected: 00752 virtual KURL::List urls() const; 00753 }; 00754 00755 class KMMailingListSubscribeCommand : public KMMailingListCommand 00756 { 00757 Q_OBJECT 00758 public: 00759 KMMailingListSubscribeCommand( QWidget *parent, KMFolder *parent ); 00760 protected: 00761 virtual KURL::List urls() const; 00762 }; 00763 00764 class KMMailingListUnsubscribeCommand : public KMMailingListCommand 00765 { 00766 Q_OBJECT 00767 public: 00768 KMMailingListUnsubscribeCommand( QWidget *parent, KMFolder *parent ); 00769 protected: 00770 virtual KURL::List urls() const; 00771 }; 00772 00773 class KMMailingListArchivesCommand : public KMMailingListCommand 00774 { 00775 Q_OBJECT 00776 public: 00777 KMMailingListArchivesCommand( QWidget *parent, KMFolder *parent ); 00778 protected: 00779 virtual KURL::List urls() const; 00780 }; 00781 00782 class KMMailingListHelpCommand : public KMMailingListCommand 00783 { 00784 Q_OBJECT 00785 public: 00786 KMMailingListHelpCommand( QWidget *parent, KMFolder *parent ); 00787 protected: 00788 virtual KURL::List urls() const; 00789 }; 00790 00791 class KMIMChatCommand : public KMCommand 00792 { 00793 Q_OBJECT 00794 00795 public: 00796 KMIMChatCommand( const KURL &url, KMMessage *msg=0 ); 00797 00798 private: 00805 virtual Result execute(); 00806 00807 KURL mUrl; 00808 KMMessage *mMessage; 00809 }; 00810 00811 00812 #endif /*KMCommands_h*/
KDE Logo
This file is part of the documentation for kmail Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Aug 27 12:52:21 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003