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, 00514 bool htmlOverride=false, const QTextCodec *codec = 0 ); 00515 00516 private: 00517 virtual Result execute(); 00518 00519 bool mHtmlOverride; 00520 const QTextCodec *mCodec; 00521 }; 00522 00523 class KMSetStatusCommand : public KMCommand 00524 { 00525 Q_OBJECT 00526 00527 public: 00528 // Serial numbers 00529 KMSetStatusCommand( KMMsgStatus status, const QValueList<Q_UINT32> &, 00530 bool toggle=false ); 00531 00532 private: 00533 virtual Result execute(); 00534 00535 KMMsgStatus mStatus; 00536 QValueList<Q_UINT32> mSerNums; 00537 QValueList<int> mIds; 00538 bool mToggle; 00539 }; 00540 00541 class KMFilterCommand : public KMCommand 00542 { 00543 Q_OBJECT 00544 00545 public: 00546 KMFilterCommand( const QCString &field, const QString &value ); 00547 00548 private: 00549 virtual Result execute(); 00550 00551 QCString mField; 00552 QString mValue; 00553 }; 00554 00555 00556 class KMFilterActionCommand : public KMCommand 00557 { 00558 Q_OBJECT 00559 00560 public: 00561 KMFilterActionCommand( QWidget *parent, 00562 const QPtrList<KMMsgBase> &msgList, 00563 KMFilter *filter ); 00564 00565 private: 00566 virtual Result execute(); 00567 00568 KMFilter *mFilter; 00569 }; 00570 00571 00572 class KMMetaFilterActionCommand : public QObject 00573 { 00574 Q_OBJECT 00575 00576 public: 00577 KMMetaFilterActionCommand( KMFilter *filter, KMHeaders *headers, 00578 KMMainWidget *main ); 00579 00580 public slots: 00581 void start(); 00582 00583 private: 00584 KMFilter *mFilter; 00585 KMHeaders *mHeaders; 00586 KMMainWidget *mMainWidget; 00587 }; 00588 00589 00590 class KMMailingListFilterCommand : public KMCommand 00591 { 00592 Q_OBJECT 00593 00594 public: 00595 KMMailingListFilterCommand( QWidget *parent, KMMessage *msg ); 00596 00597 private: 00598 virtual Result execute(); 00599 }; 00600 00601 00609 class KMMenuCommand : public KMCommand 00610 { 00611 Q_OBJECT 00612 00613 public: 00614 static void folderToPopupMenu(bool move, QObject *receiver, 00615 KMMenuToFolder *aMenuToFolder, QPopupMenu *menu ); 00616 00617 static void makeFolderMenu(KMFolderNode* item, bool move, 00618 QObject *receiver, KMMenuToFolder *aMenuToFolder, QPopupMenu *menu ); 00619 }; 00620 00621 class KMCopyCommand : public KMMenuCommand 00622 { 00623 Q_OBJECT 00624 00625 public: 00626 KMCopyCommand( KMFolder* destFolder, 00627 const QPtrList<KMMsgBase> &msgList ); 00628 KMCopyCommand( KMFolder* destFolder, KMMessage *msg ); 00629 00630 private: 00631 virtual Result execute(); 00632 00633 KMFolder *mDestFolder; 00634 QPtrList<KMMsgBase> mMsgList; 00635 }; 00636 00637 namespace KPIM { 00638 class ProgressItem; 00639 } 00640 class KMMoveCommand : public KMMenuCommand 00641 { 00642 Q_OBJECT 00643 00644 public: 00645 KMMoveCommand( KMFolder* destFolder, const QPtrList<KMMsgBase> &msgList ); 00646 KMMoveCommand( KMFolder* destFolder, KMMessage * msg ); 00647 KMMoveCommand( KMFolder* destFolder, KMMsgBase * msgBase ); 00648 KMFolder* destFolder() const { return mDestFolder; } 00649 00650 public slots: 00651 void slotImapFolderCompleted(KMFolderImap *folder, bool success); 00652 void slotMsgAddedToDestFolder(KMFolder *folder, Q_UINT32 serNum); 00653 void slotMoveCanceled(); 00654 00655 private: 00656 virtual Result execute(); 00657 void completeMove( Result result ); 00658 00659 KMFolder *mDestFolder; 00660 QPtrList<KMMsgBase> mMsgList; 00661 // List of serial numbers that have to be transferred to a host. 00662 // Ticked off as they come in via msgAdded signals. 00663 QValueList<Q_UINT32> mLostBoys; 00664 KPIM::ProgressItem *mProgressItem; 00665 }; 00666 00667 class KMDeleteMsgCommand : public KMMoveCommand 00668 { 00669 Q_OBJECT 00670 00671 public: 00672 KMDeleteMsgCommand( KMFolder* srcFolder, const QPtrList<KMMsgBase> &msgList ); 00673 KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg ); 00674 00675 private: 00676 static KMFolder * findTrashFolder( KMFolder * srcFolder ); 00677 }; 00678 00679 class KMUrlClickedCommand : public KMCommand 00680 { 00681 Q_OBJECT 00682 00683 public: 00684 KMUrlClickedCommand( const KURL &url, uint identity, 00685 KMReaderWin *readerWin, bool mHtmlPref, KMMainWidget *mainWidget = 0 ); 00686 00687 private: 00688 virtual Result execute(); 00689 00690 KURL mUrl; 00691 uint mIdentity; 00692 KMReaderWin *mReaderWin; 00693 bool mHtmlPref; 00694 KMMainWidget *mMainWidget; 00695 }; 00696 00697 class KMLoadPartsCommand : public KMCommand 00698 { 00699 Q_OBJECT 00700 00701 public: 00702 KMLoadPartsCommand( QPtrList<partNode>& parts, KMMessage* msg ); 00703 KMLoadPartsCommand( partNode* node, KMMessage* msg ); 00704 KMLoadPartsCommand( PartNodeMessageMap& partMap ); 00705 00706 public slots: 00707 void slotPartRetrieved( KMMessage* msg, QString partSpecifier ); 00708 00709 signals: 00710 void partsRetrieved(); 00711 00712 private: 00713 // Retrieve parts then calls execute 00714 virtual void slotStart(); 00715 00716 virtual Result execute(); 00717 00718 int mNeedsRetrieval; 00719 PartNodeMessageMap mPartMap; 00720 }; 00721 00722 class KMResendMessageCommand : public KMCommand 00723 { 00724 Q_OBJECT 00725 00726 public: 00727 KMResendMessageCommand( QWidget *parent, KMMessage *msg=0 ); 00728 00729 private: 00730 virtual Result execute(); 00731 }; 00732 00733 class KMMailingListCommand : public KMCommand 00734 { 00735 Q_OBJECT 00736 public: 00737 KMMailingListCommand( QWidget *parent, KMFolder *parent ); 00738 private: 00739 virtual Result execute(); 00740 private slots: 00741 void commandCompleted( KMCommand *command ); 00742 protected: 00743 virtual KURL::List urls() const =0; 00744 protected: 00745 KMFolder *mFolder; 00746 }; 00747 00748 class KMMailingListPostCommand : public KMMailingListCommand 00749 { 00750 Q_OBJECT 00751 public: 00752 KMMailingListPostCommand( QWidget *parent, KMFolder *parent ); 00753 protected: 00754 virtual KURL::List urls() const; 00755 }; 00756 00757 class KMMailingListSubscribeCommand : public KMMailingListCommand 00758 { 00759 Q_OBJECT 00760 public: 00761 KMMailingListSubscribeCommand( QWidget *parent, KMFolder *parent ); 00762 protected: 00763 virtual KURL::List urls() const; 00764 }; 00765 00766 class KMMailingListUnsubscribeCommand : public KMMailingListCommand 00767 { 00768 Q_OBJECT 00769 public: 00770 KMMailingListUnsubscribeCommand( QWidget *parent, KMFolder *parent ); 00771 protected: 00772 virtual KURL::List urls() const; 00773 }; 00774 00775 class KMMailingListArchivesCommand : public KMMailingListCommand 00776 { 00777 Q_OBJECT 00778 public: 00779 KMMailingListArchivesCommand( QWidget *parent, KMFolder *parent ); 00780 protected: 00781 virtual KURL::List urls() const; 00782 }; 00783 00784 class KMMailingListHelpCommand : public KMMailingListCommand 00785 { 00786 Q_OBJECT 00787 public: 00788 KMMailingListHelpCommand( QWidget *parent, KMFolder *parent ); 00789 protected: 00790 virtual KURL::List urls() const; 00791 }; 00792 00793 class KMIMChatCommand : public KMCommand 00794 { 00795 Q_OBJECT 00796 00797 public: 00798 KMIMChatCommand( const KURL &url, KMMessage *msg=0 ); 00799 00800 private: 00807 virtual Result execute(); 00808 00809 KURL mUrl; 00810 KMMessage *mMessage; 00811 }; 00812 00813 00814 #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 Thu Oct 21 19:46:46 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003