• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • kdepim
  • Sitemap
  • Contact Us
 

kmail

kmcommands.h

Go to the documentation of this file.
00001 // -*- mode: C++; c-file-style: "gnu" -*-
00002 
00003 #ifndef KMCommands_h
00004 #define KMCommands_h
00005 
00006 #include "kmail_export.h"
00007 #include "kmmsgbase.h"
00008 
00009 #include <mimelib/string.h>
00010 #include <messagestatus.h>
00011 using KPIM::MessageStatus;
00012 #include <kservice.h>
00013 #include <ktemporaryfile.h>
00014 #include <kio/job.h>
00015 
00016 #include <QPointer>
00017 #include <QList>
00018 #include <QMenu>
00019 
00020 class KProgressDialog;
00021 class KMFilter;
00022 class KMFolder;
00023 class KMFolderImap;
00024 class KMHeaders;
00025 class KMMainWidget;
00026 class KMMessage;
00027 class KMMsgBase;
00028 class KMReaderWin;
00029 class partNode;
00030 class DwBodyPart;
00031 class DwEntity;
00032 
00033 namespace KIO { class Job; }
00034 namespace KMail {
00035   class Composer;
00036   class FolderJob;
00037   class EditorWatcher;
00038   class HeaderStyle;
00039   class HeaderStrategy;
00040 }
00041 namespace GpgME { class Error; }
00042 namespace Kleo { class SpecialJob; }
00043 
00044 typedef QMap<QAction*,KMFolder*> KMMenuToFolder;
00045 typedef QMap<partNode*, KMMessage*> PartNodeMessageMap;
00046 
00047 class KMAIL_EXPORT KMCommand : public QObject
00048 {
00049   Q_OBJECT
00050     friend class LaterDeleterWithCommandCompletion;
00051 
00052 public:
00053   enum Result { Undefined, OK, Canceled, Failed };
00054 
00055   // Trival constructor, don't retrieve any messages
00056   KMCommand( QWidget *parent = 0 );
00057   // Retrieve all messages in msgList when start is called.
00058   KMCommand( QWidget *parent, const QList<KMMsgBase*> &msgList );
00059   // Retrieve the single message msgBase when start is called.
00060   KMCommand( QWidget *parent, KMMsgBase *msgBase );
00061   // Retrieve the single message msgBase when start is called.
00062   KMCommand( QWidget *parent, KMMessage *message );
00063   virtual ~KMCommand();
00064 
00069   void keepFolderOpen( KMFolder *folder );
00070 
00074   Result result() const;
00075 
00076 public slots:
00077   // Retrieve messages then calls execute
00078   void start();
00079 
00080   // advance the progressbar, emitted by the folderjob
00081   void slotProgress( unsigned long done, unsigned long total );
00082 
00083 signals:
00084   void messagesTransfered( KMCommand::Result result );
00087   void completed( KMCommand *command );
00088 
00089 protected:
00090   // Returns list of messages retrieved
00091   const QList<KMMessage*> retrievedMsgs() const;
00092   // Returns the single message retrieved
00093   KMMessage *retrievedMessage() const;
00094   // Returns the parent widget
00095   QWidget *parentWidget() const;
00096 
00097   bool deletesItself() const { return mDeletesItself; }
00103   void setDeletesItself( bool deletesItself )
00104   { mDeletesItself = deletesItself; }
00105 
00106   bool emitsCompletedItself() const { return mEmitsCompletedItself; }
00113   void setEmitsCompletedItself( bool emitsCompletedItself )
00114   { mEmitsCompletedItself = emitsCompletedItself; }
00115 
00119   void setResult( Result result )
00120   { mResult = result; }
00121 
00122 private:
00123   // execute should be implemented by derived classes
00124   virtual Result execute() = 0;
00125 
00128   void transferSelectedMsgs();
00129 
00130 private slots:
00132   virtual void slotStart();
00133 
00134   void slotPostTransfer( KMCommand::Result result );
00136   void slotMsgTransfered(KMMessage* msg);
00138   void slotJobFinished();
00140   void slotTransferCancelled();
00141 
00142 private:
00143   // ProgressDialog for transferring messages
00144   KProgressDialog* mProgressDialog;
00145   //Currently only one async command allowed at a time
00146   static int mCountJobs;
00147   int mCountMsgs;
00148   Result mResult;
00149   bool mDeletesItself : 1;
00150   bool mEmitsCompletedItself : 1;
00151 
00152   QWidget *mParent;
00153   QList<KMMessage*> mRetrievedMsgs;
00154   QList<KMMsgBase*> mMsgList;
00155   QList<QPointer<KMFolder> > mFolders;
00156 };
00157 
00158 class KMAIL_EXPORT KMMailtoComposeCommand : public KMCommand
00159 {
00160   Q_OBJECT
00161 
00162 public:
00163   explicit KMMailtoComposeCommand( const KUrl &url, KMMessage *msg=0 );
00164 
00165 private:
00166   virtual Result execute();
00167 
00168   KUrl mUrl;
00169   KMMessage *mMessage;
00170 };
00171 
00172 class KMAIL_EXPORT KMMailtoReplyCommand : public KMCommand
00173 {
00174   Q_OBJECT
00175 
00176 public:
00177   KMMailtoReplyCommand( QWidget *parent, const KUrl &url,
00178                         KMMessage *msg, const QString &selection );
00179 
00180 private:
00181   virtual Result execute();
00182 
00183   KUrl mUrl;
00184   QString mSelection;
00185 };
00186 
00187 class KMAIL_EXPORT KMMailtoForwardCommand : public KMCommand
00188 {
00189   Q_OBJECT
00190 
00191 public:
00192   KMMailtoForwardCommand( QWidget *parent, const KUrl &url, KMMessage *msg );
00193 
00194 private:
00195   virtual Result execute();
00196 
00197   KUrl mUrl;
00198 };
00199 
00200 class KMAIL_EXPORT KMMailtoAddAddrBookCommand : public KMCommand
00201 {
00202   Q_OBJECT
00203 
00204 public:
00205   KMMailtoAddAddrBookCommand( const KUrl &url, QWidget *parent );
00206 
00207 private:
00208   virtual Result execute();
00209 
00210   KUrl mUrl;
00211 };
00212 
00213 class KMAIL_EXPORT KMAddBookmarksCommand : public KMCommand
00214 {
00215   Q_OBJECT
00216 
00217 public:
00218   KMAddBookmarksCommand( const KUrl &url, QWidget *parent );
00219 
00220 private:
00221   virtual Result execute();
00222 
00223   KUrl mUrl;
00224 };
00225 
00226 
00227 class KMAIL_EXPORT KMMailtoOpenAddrBookCommand : public KMCommand
00228 {
00229   Q_OBJECT
00230 
00231 public:
00232   KMMailtoOpenAddrBookCommand( const KUrl &url, QWidget *parent );
00233 
00234 private:
00235   virtual Result execute();
00236 
00237   KUrl mUrl;
00238 };
00239 
00240 class KMAIL_EXPORT KMUrlCopyCommand : public KMCommand
00241 {
00242   Q_OBJECT
00243 
00244 public:
00245   explicit KMUrlCopyCommand( const KUrl &url, KMMainWidget *mainWidget = 0 );
00246 
00247 private:
00248   virtual Result execute();
00249 
00250   KUrl mUrl;
00251   KMMainWidget *mMainWidget;
00252 };
00253 
00254 class KMAIL_EXPORT KMUrlOpenCommand : public KMCommand
00255 {
00256   Q_OBJECT
00257 
00258 public:
00259   KMUrlOpenCommand( const KUrl &url, KMReaderWin *readerWin );
00260 
00261 private:
00262   virtual Result execute();
00263 
00264   KUrl mUrl;
00265   KMReaderWin *mReaderWin;
00266 };
00267 
00268 class KMAIL_EXPORT KMUrlSaveCommand : public KMCommand
00269 {
00270   Q_OBJECT
00271 
00272 public:
00273   KMUrlSaveCommand( const KUrl &url, QWidget *parent );
00274 
00275 private slots:
00276   void slotUrlSaveResult( KJob *job );
00277 
00278 private:
00279   virtual Result execute();
00280 
00281   KUrl mUrl;
00282 };
00283 
00284 class KMAIL_EXPORT KMEditMsgCommand : public KMCommand
00285 {
00286   Q_OBJECT
00287 
00288 public:
00289   KMEditMsgCommand( QWidget *parent, KMMessage *msg );
00290 
00291 private:
00292   virtual Result execute();
00293 };
00294 
00295 class KMAIL_EXPORT KMUseTemplateCommand : public KMCommand
00296 {
00297   Q_OBJECT
00298 
00299 public:
00300   KMUseTemplateCommand( QWidget *parent, KMMessage *msg );
00301 
00302 private:
00303   virtual Result execute();
00304 };
00305 
00306 class KMAIL_EXPORT KMShowMsgSrcCommand : public KMCommand
00307 {
00308   Q_OBJECT
00309 
00310 public:
00311   KMShowMsgSrcCommand( QWidget *parent, KMMessage *msg, bool fixedFont );
00312   virtual Result execute();
00313 
00314 private:
00315   bool mFixedFont;
00316   bool mMsgWasComplete;
00317 };
00318 
00319 class KMAIL_EXPORT KMSaveMsgCommand : public KMCommand
00320 {
00321   Q_OBJECT
00322 
00323 public:
00324   KMSaveMsgCommand( QWidget *parent, const QList<KMMsgBase*> &msgList );
00325   KMSaveMsgCommand( QWidget *parent, KMMessage * msg );
00326   KUrl url();
00327 
00328 private:
00329   virtual Result execute();
00330 
00331 private slots:
00332   void slotSaveDataReq();
00333   void slotSaveResult(KJob *job);
00335   void slotMessageRetrievedForSaving(KMMessage *msg);
00336 
00337 private:
00338   static const int MAX_CHUNK_SIZE = 64*1024;
00339   KUrl mUrl;
00340   QList<unsigned long> mMsgList;
00341   unsigned int mMsgListIndex;
00342   KMMessage *mStandAloneMessage;
00343   QByteArray mData;
00344   int mOffset;
00345   size_t mTotalSize;
00346   KIO::TransferJob *mJob;
00347 };
00348 
00349 class KMAIL_EXPORT KMOpenMsgCommand : public KMCommand
00350 {
00351   Q_OBJECT
00352 
00353 public:
00354   explicit KMOpenMsgCommand( QWidget *parent, const KUrl & url = KUrl(),
00355                              const QString & encoding = QString() );
00356 
00357 private:
00358   virtual Result execute();
00359 
00360 private slots:
00361   void slotDataArrived( KIO::Job *job, const QByteArray & data );
00362   void slotResult( KJob *job );
00363 
00364 private:
00365   static const int MAX_CHUNK_SIZE = 64*1024;
00366   KUrl mUrl;
00367   DwString mMsgString;
00368   KIO::TransferJob *mJob;
00369   const QString mEncoding;
00370 };
00371 
00372 class KMAIL_EXPORT KMSaveAttachmentsCommand : public KMCommand
00373 {
00374   Q_OBJECT
00375 public:
00380   KMSaveAttachmentsCommand( QWidget *parent, KMMessage *msg  );
00385   KMSaveAttachmentsCommand( QWidget *parent, const QList<KMMsgBase*>& msgs );
00394   KMSaveAttachmentsCommand( QWidget *parent, QList<partNode*> &attachments,
00395                             KMMessage *msg, bool encoded = false  );
00396 
00397 private slots:
00398   void slotSaveAll();
00399 
00400 private:
00401   virtual Result execute();
00402   Result saveItem( partNode *node, const KUrl& url );
00403 
00404 private:
00405   PartNodeMessageMap mAttachmentMap;
00406   bool mImplicitAttachments;
00407   bool mEncoded;
00408 };
00409 
00410 class KMAIL_EXPORT KMReplyToCommand : public KMCommand
00411 {
00412   Q_OBJECT
00413 
00414 public:
00415   KMReplyToCommand( QWidget *parent, KMMessage *msg,
00416                     const QString &selection = QString() );
00417 
00418 private:
00419   virtual Result execute();
00420 
00421 private:
00422   QString mSelection;
00423 };
00424 
00425 class KMAIL_EXPORT KMNoQuoteReplyToCommand : public KMCommand
00426 {
00427   Q_OBJECT
00428 
00429 public:
00430   KMNoQuoteReplyToCommand( QWidget *parent, KMMessage *msg );
00431 
00432 private:
00433   virtual Result execute();
00434 };
00435 
00436 class KMReplyListCommand : public KMCommand
00437 {
00438   Q_OBJECT
00439 
00440 public:
00441   KMReplyListCommand( QWidget *parent, KMMessage *msg,
00442                       const QString &selection = QString() );
00443 
00444 private:
00445   virtual Result execute();
00446 
00447 private:
00448   QString mSelection;
00449 };
00450 
00451 class KMAIL_EXPORT KMReplyToAllCommand : public KMCommand
00452 {
00453   Q_OBJECT
00454 
00455 public:
00456   KMReplyToAllCommand( QWidget *parent, KMMessage *msg,
00457                        const QString &selection = QString() );
00458 
00459 private:
00460   virtual Result execute();
00461 
00462 private:
00463   QString mSelection;
00464 };
00465 
00466 class KMAIL_EXPORT KMReplyAuthorCommand : public KMCommand
00467 {
00468   Q_OBJECT
00469 
00470 public:
00471   KMReplyAuthorCommand( QWidget *parent, KMMessage *msg,
00472                         const QString &selection = QString() );
00473 
00474 private:
00475   virtual Result execute();
00476 
00477 private:
00478   QString mSelection;
00479 };
00480 
00481 class KMAIL_EXPORT KMForwardCommand : public KMCommand
00482 {
00483   Q_OBJECT
00484 
00485 public:
00486   KMForwardCommand( QWidget *parent, const QList<KMMsgBase*> &msgList,
00487                     uint identity = 0 );
00488   KMForwardCommand( QWidget *parent, KMMessage * msg,
00489                     uint identity = 0 );
00490 
00491 private:
00492   virtual Result execute();
00493 
00494 private:
00495   uint mIdentity;
00496 };
00497 
00498 class KMAIL_EXPORT KMForwardAttachedCommand : public KMCommand
00499 {
00500   Q_OBJECT
00501 
00502 public:
00503   KMForwardAttachedCommand( QWidget *parent, const QList<KMMsgBase*> &msgList,
00504                             uint identity = 0, KMail::Composer *win = 0 );
00505   KMForwardAttachedCommand( QWidget *parent, KMMessage * msg,
00506                             uint identity = 0, KMail::Composer *win = 0 );
00507 
00508 private:
00509   virtual Result execute();
00510 
00511   uint mIdentity;
00512   QPointer<KMail::Composer> mWin;
00513 };
00514 
00515 class KMAIL_EXPORT KMRedirectCommand : public KMCommand
00516 {
00517   Q_OBJECT
00518 
00519 public:
00520   KMRedirectCommand( QWidget *parent, KMMessage *msg );
00521 
00522 private:
00523   virtual Result execute();
00524 };
00525 
00526 class KMAIL_EXPORT KMCustomReplyToCommand : public KMCommand
00527 {
00528   Q_OBJECT
00529 
00530 public:
00531   KMCustomReplyToCommand( QWidget *parent, KMMessage *msg,
00532                           const QString &selection,
00533                           const QString &tmpl );
00534 
00535 private:
00536   virtual Result execute();
00537 
00538 private:
00539   QString mSelection;
00540   QString mTemplate;
00541 };
00542 
00543 class KMAIL_EXPORT KMCustomReplyAllToCommand : public KMCommand
00544 {
00545   Q_OBJECT
00546 
00547 public:
00548   KMCustomReplyAllToCommand( QWidget *parent, KMMessage *msg,
00549                           const QString &selection,
00550                           const QString &tmpl );
00551 
00552 private:
00553   virtual Result execute();
00554 
00555 private:
00556   QString mSelection;
00557   QString mTemplate;
00558 };
00559 
00560 class KMAIL_EXPORT KMCustomForwardCommand : public KMCommand
00561 {
00562   Q_OBJECT
00563 
00564 public:
00565   KMCustomForwardCommand( QWidget *parent, const QList<KMMsgBase *> &msgList,
00566                           uint identity, const QString &tmpl );
00567   KMCustomForwardCommand( QWidget *parent, KMMessage * msg,
00568                           uint identity, const QString &tmpl );
00569 
00570 private:
00571   virtual Result execute();
00572 
00573   uint mIdentity;
00574   QString mTemplate;
00575 };
00576 
00577 class KMAIL_EXPORT KMPrintCommand : public KMCommand
00578 {
00579   Q_OBJECT
00580 
00581 public:
00582   KMPrintCommand( QWidget *parent, KMMessage *msg,
00583                   const KMail::HeaderStyle *headerStyle = 0,
00584                   const KMail::HeaderStrategy *headerStrategy = 0,
00585                   bool htmlOverride = false,
00586                   bool htmlLoadExtOverride = false,
00587                   bool useFixedFont = false,
00588                   const QString & encoding = QString() );
00589 
00590   void setOverrideFont( const QFont& );
00591 
00592 private:
00593   virtual Result execute();
00594 
00595   const KMail::HeaderStyle *mHeaderStyle;
00596   const KMail::HeaderStrategy *mHeaderStrategy;
00597   bool mHtmlOverride;
00598   bool mHtmlLoadExtOverride;
00599   bool mUseFixedFont;
00600   QFont mOverrideFont;
00601   QString mEncoding;
00602 };
00603 
00604 class KMAIL_EXPORT KMSetStatusCommand : public KMCommand
00605 {
00606   Q_OBJECT
00607 
00608 public:
00609   // Serial numbers
00610   KMSetStatusCommand( const MessageStatus& status, const QList<quint32> &,
00611                       bool toggle=false );
00612 
00613 private:
00614   virtual Result execute();
00615 
00616   MessageStatus mStatus;
00617   QList<quint32> mSerNums;
00618   QList<int> mIds;
00619   bool mToggle;
00620 };
00621 
00622 
00623 /* This command is used to create a filter based on the user's
00624     decision, e.g. filter by From header */
00625 class KMAIL_EXPORT KMFilterCommand : public KMCommand
00626 {
00627   Q_OBJECT
00628 
00629 public:
00630   KMFilterCommand( const QByteArray &field, const QString &value );
00631 
00632 private:
00633   virtual Result execute();
00634 
00635   QByteArray mField;
00636   QString mValue;
00637 };
00638 
00639 
00640 /* This command is used to apply a single filter (AKA ad-hoc filter)
00641     to a set of messages */
00642 class KMAIL_EXPORT KMFilterActionCommand : public KMCommand
00643 {
00644   Q_OBJECT
00645 
00646 public:
00647   KMFilterActionCommand( QWidget *parent,
00648                          const QList<KMMsgBase*> &msgList, KMFilter *filter );
00649 
00650 private:
00651   virtual Result execute();
00652   QList<quint32> serNumList;
00653   KMFilter *mFilter;
00654 };
00655 
00656 
00657 class KMAIL_EXPORT KMMetaFilterActionCommand : public QObject
00658 {
00659   Q_OBJECT
00660 
00661 public:
00662   KMMetaFilterActionCommand( KMFilter *filter, KMHeaders *headers,
00663                              KMMainWidget *main );
00664 
00665 public slots:
00666   void start();
00667 
00668 private:
00669   KMFilter *mFilter;
00670   KMHeaders *mHeaders;
00671   KMMainWidget *mMainWidget;
00672 };
00673 
00674 class KMAIL_EXPORT FolderShortcutCommand : public QObject
00675 {
00676   Q_OBJECT
00677 
00678 public:
00679   FolderShortcutCommand( KMMainWidget* mainwidget, KMFolder *folder );
00680   ~FolderShortcutCommand();
00681 
00682 public slots:
00683   void start();
00687   void setAction( QAction* );
00688 
00689 private:
00690   KMMainWidget *mMainWidget;
00691   KMFolder *mFolder;
00692   QAction *mAction;
00693 };
00694 
00695 
00696 class KMAIL_EXPORT KMMailingListFilterCommand : public KMCommand
00697 {
00698   Q_OBJECT
00699 
00700 public:
00701   KMMailingListFilterCommand( QWidget *parent, KMMessage *msg );
00702 
00703 private:
00704   virtual Result execute();
00705 };
00706 
00707 
00708 class KMAIL_EXPORT KMCopyCommand : public KMCommand
00709 {
00710   Q_OBJECT
00711 
00712 public:
00713   KMCopyCommand( KMFolder* destFolder, const QList<KMMsgBase*> &msgList );
00714   KMCopyCommand( KMFolder* destFolder, KMMessage *msg );
00715 
00716 protected slots:
00717   void slotJobFinished( KMail::FolderJob *job );
00718 
00719   void slotFolderComplete( KMFolderImap*, bool success );
00720 
00721 private:
00722   virtual Result execute();
00723 
00724   KMFolder *mDestFolder;
00725   QList<KMMsgBase*> mMsgList;
00726   QList<KMail::FolderJob*> mPendingJobs;
00727 };
00728 
00729 namespace KPIM {
00730   class ProgressItem;
00731 }
00732 class KMAIL_EXPORT KMMoveCommand : public KMCommand
00733 {
00734   Q_OBJECT
00735 
00736 public:
00737   KMMoveCommand( KMFolder* destFolder, const QList<KMMsgBase*> &msgList );
00738   KMMoveCommand( KMFolder* destFolder, KMMessage * msg );
00739   KMMoveCommand( KMFolder* destFolder, KMMsgBase * msgBase );
00740   KMFolder* destFolder() const { return mDestFolder; }
00741 
00742 public slots:
00743   void slotImapFolderCompleted(KMFolderImap *folder, bool success);
00744   void slotMsgAddedToDestFolder(KMFolder *folder, quint32 serNum);
00745   void slotMoveCanceled();
00746 
00747 protected:
00748   // Needed for KMDeleteCommand for "move to trash"
00749   KMMoveCommand( quint32 sernum );
00750   void setDestFolder( KMFolder* folder ) { mDestFolder = folder; }
00751   void addMsg( KMMsgBase *msg ) { mSerNumList.append( msg->getMsgSerNum() ); }
00752   QVector<KMFolder*> mOpenedFolders;
00753 
00754 private:
00755   virtual Result execute();
00756   void completeMove( Result result );
00757 
00758   KMFolder *mDestFolder;
00759   QList<quint32> mSerNumList;
00760   // List of serial numbers that have to be transferred to a host.
00761   // Ticked off as they come in via msgAdded signals.
00762   QList<quint32> mLostBoys;
00763   KPIM::ProgressItem *mProgressItem;
00764   bool mCompleteWithAddedMsg;
00765 };
00766 
00767 class KMAIL_EXPORT KMDeleteMsgCommand : public KMMoveCommand
00768 {
00769   Q_OBJECT
00770 
00771 public:
00772   KMDeleteMsgCommand( KMFolder* srcFolder, const QList<KMMsgBase*> &msgList );
00773   KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg );
00774   KMDeleteMsgCommand( quint32 sernum );
00775 
00776 private:
00777   static KMFolder * findTrashFolder( KMFolder * srcFolder );
00778 
00779 };
00780 
00781 class KMAIL_EXPORT KMUrlClickedCommand : public KMCommand
00782 {
00783   Q_OBJECT
00784 
00785 public:
00786   KMUrlClickedCommand( const KUrl &url, uint identity,
00787     KMReaderWin *readerWin, bool mHtmlPref, KMMainWidget *mainWidget = 0 );
00788 
00789 private:
00790   virtual Result execute();
00791 
00792   KUrl mUrl;
00793   uint mIdentity;
00794   KMReaderWin *mReaderWin;
00795   bool mHtmlPref;
00796   KMMainWidget *mMainWidget;
00797 };
00798 
00799 class KMAIL_EXPORT KMLoadPartsCommand : public KMCommand
00800 {
00801   Q_OBJECT
00802 
00803 public:
00804   KMLoadPartsCommand( QList<partNode*>& parts, KMMessage* msg );
00805   KMLoadPartsCommand( partNode* node, KMMessage* msg );
00806   KMLoadPartsCommand( PartNodeMessageMap& partMap );
00807 
00808 public slots:
00809   void slotPartRetrieved( KMMessage* msg, const QString &partSpecifier );
00810 
00811 signals:
00812   void partsRetrieved();
00813 
00814 private:
00815   // Retrieve parts then calls execute
00816   virtual void slotStart();
00817 
00818   virtual Result execute();
00819 
00820   int mNeedsRetrieval;
00821   PartNodeMessageMap mPartMap;
00822 };
00823 
00824 class KMAIL_EXPORT KMResendMessageCommand : public KMCommand
00825 {
00826   Q_OBJECT
00827 
00828 public:
00829   explicit KMResendMessageCommand( QWidget *parent, KMMessage *msg=0 );
00830 
00831 private:
00832   virtual Result execute();
00833 };
00834 
00835 class KMAIL_EXPORT KMMailingListCommand : public KMCommand
00836 {
00837   Q_OBJECT
00838 public:
00839   KMMailingListCommand( QWidget *parent, KMFolder *parentFolder );
00840 private:
00841   virtual Result execute();
00842 private slots:
00843   void commandCompleted( KMCommand *command );
00844 protected:
00845   virtual KUrl::List urls() const =0;
00846 protected:
00847   KMFolder *mFolder;
00848 };
00849 
00850 class KMAIL_EXPORT KMMailingListPostCommand : public KMMailingListCommand
00851 {
00852   Q_OBJECT
00853 public:
00854   KMMailingListPostCommand( QWidget *parent, KMFolder *parentFolder );
00855 protected:
00856   virtual KUrl::List urls() const;
00857 };
00858 
00859 class KMAIL_EXPORT KMMailingListSubscribeCommand : public KMMailingListCommand
00860 {
00861   Q_OBJECT
00862 public:
00863   KMMailingListSubscribeCommand( QWidget *parent, KMFolder *parentFolder );
00864 protected:
00865   virtual KUrl::List urls() const;
00866 };
00867 
00868 class KMAIL_EXPORT KMMailingListUnsubscribeCommand : public KMMailingListCommand
00869 {
00870   Q_OBJECT
00871 public:
00872   KMMailingListUnsubscribeCommand( QWidget *parent, KMFolder *parentFolder );
00873 protected:
00874   virtual KUrl::List urls() const;
00875 };
00876 
00877 class KMAIL_EXPORT KMMailingListArchivesCommand : public KMMailingListCommand
00878 {
00879   Q_OBJECT
00880 public:
00881   KMMailingListArchivesCommand( QWidget *parent, KMFolder *parentFolder );
00882 protected:
00883   virtual KUrl::List urls() const;
00884 };
00885 
00886 class KMAIL_EXPORT KMMailingListHelpCommand : public KMMailingListCommand
00887 {
00888   Q_OBJECT
00889 public:
00890   KMMailingListHelpCommand( QWidget *parent, KMFolder *parentFolder );
00891 protected:
00892   virtual KUrl::List urls() const;
00893 };
00894 
00895 class KMAIL_EXPORT KMHandleAttachmentCommand : public KMCommand
00896 {
00897   Q_OBJECT
00898 
00899 public:
00901   enum AttachmentAction
00902   {
00903     Open = 1,
00904     OpenWith = 2,
00905     View = 3,
00906     Save = 4,
00907     Properties = 5,
00908     ChiasmusEncrypt = 6,
00909     Delete = 7,
00910     Edit = 8,
00911     Copy = 9
00912   };
00922   KMHandleAttachmentCommand( partNode* node, KMMessage* msg, int atmId,
00923       const QString& atmName, AttachmentAction action, KService::Ptr offer, QWidget* parent );
00924 
00925 
00926 signals:
00927   void showAttachment( int id, const QString& name );
00928 
00929 private:
00930   virtual Result execute();
00931 
00932   QString createAtmFileLink() const;
00933 
00935   KService::Ptr getServiceOffer();
00936 
00938   void atmOpen();
00939 
00941   void atmOpenWith();
00942 
00947   void atmView();
00948 
00950   void atmSave();
00951 
00953   void atmProperties();
00954 
00956   void atmEncryptWithChiasmus();
00957 
00958 private slots:
00960   virtual void slotStart();
00961 
00966   void slotPartComplete();
00967 
00968   void slotAtmDecryptWithChiasmusResult( const GpgME::Error &, const QVariant & );
00969   void slotAtmDecryptWithChiasmusUploadResult( KJob * );
00970 
00971 private:
00972   partNode* mNode;
00973   KMMessage* mMsg;
00974   int mAtmId;
00975   QString mAtmName;
00976   AttachmentAction mAction;
00977   KService::Ptr mOffer;
00978   Kleo::SpecialJob *mJob;
00979 
00980 };
00981 
00982 
00984 class KMAIL_EXPORT AttachmentModifyCommand : public KMCommand
00985 {
00986   Q_OBJECT
00987   public:
00988     AttachmentModifyCommand( partNode *node, KMMessage *msg, QWidget *parent );
00989     ~AttachmentModifyCommand();
00990 
00991   protected:
00992     void storeChangedMessage( KMMessage* msg );
00993     DwBodyPart* findPart( KMMessage* msg, int index );
00994     virtual Result doAttachmentModify() = 0;
00995 
00996   protected:
00997     int mPartIndex;
00998     quint32 mSernum;
00999 
01000   private:
01001     Result execute();
01002     DwBodyPart* findPartInternal( DwEntity* root, int index, int &accu );
01003 
01004   private slots:
01005     void messageStoreResult( KMFolderImap* folder, bool success );
01006     void messageDeleteResult( KMCommand *cmd );
01007 
01008   private:
01009     QPointer<KMFolder> mFolder;
01010 };
01011 
01012 class KMAIL_EXPORT KMDeleteAttachmentCommand : public AttachmentModifyCommand
01013 {
01014   Q_OBJECT
01015   public:
01016     KMDeleteAttachmentCommand( partNode *node, KMMessage *msg, QWidget *parent );
01017     ~KMDeleteAttachmentCommand();
01018 
01019   protected:
01020     Result doAttachmentModify();
01021 };
01022 
01023 
01024 class KMAIL_EXPORT KMEditAttachmentCommand : public AttachmentModifyCommand
01025 {
01026   Q_OBJECT
01027   public:
01028     KMEditAttachmentCommand( partNode *node, KMMessage *msg, QWidget *parent );
01029     ~KMEditAttachmentCommand();
01030 
01031   protected:
01032     Result doAttachmentModify();
01033 
01034   private slots:
01035     void editDone( KMail::EditorWatcher *watcher );
01036 
01037   private:
01038     KTemporaryFile mTempFile;
01039 };
01040 
01041 class KMAIL_EXPORT CreateTodoCommand : public KMCommand
01042 {
01043   Q_OBJECT
01044   public:
01045     CreateTodoCommand( QWidget *parent, KMMessage *msg );
01046 
01047   private:
01048     Result execute();
01049 };
01050 
01051 #endif /*KMCommands_h*/

kmail

Skip menu "kmail"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages