kmail

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 <qvaluevector.h>
00010 #include <kio/job.h>
00011 #include "kmmsgbase.h" // for KMMsgStatus
00012 #include <mimelib/string.h>
00013 #include <kdepimmacros.h>
00014 #include <kservice.h>
00015 
00016 class QPopupMenu;
00017 class KMainWindow;
00018 class KAction;
00019 class KProgressDialog;
00020 class KMFilter;
00021 class KMFolder;
00022 class KMFolderImap;
00023 class KMFolderNode;
00024 class KMHeaders;
00025 class KMMainWidget;
00026 class KMMessage;
00027 class KMMsgBase;
00028 class KMReaderWin;
00029 class partNode;
00030 namespace KIO { class Job; }
00031 namespace KMail { class Composer; }
00032 namespace GpgME { class Error; }
00033 namespace Kleo { class SpecialJob; }
00034 
00035 typedef QMap<int,KMFolder*> KMMenuToFolder;
00036 typedef QMap<partNode*, KMMessage*> PartNodeMessageMap;
00037 
00038 class KDE_EXPORT KMCommand : public QObject
00039 {
00040   Q_OBJECT
00041     friend class LaterDeleterWithCommandCompletion;
00042 
00043 public:
00044   enum Result { Undefined, OK, Canceled, Failed };
00045 
00046   // Trival constructor, don't retrieve any messages
00047   KMCommand( QWidget *parent = 0 );
00048   // Retrieve all messages in msgList when start is called.
00049   KMCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList );
00050   // Retrieve the single message msgBase when start is called.
00051   KMCommand( QWidget *parent, KMMsgBase *msgBase );
00052   // Retrieve the single message msgBase when start is called.
00053   KMCommand( QWidget *parent, KMMessage *message );
00054   virtual ~KMCommand();
00055 
00060   void keepFolderOpen( KMFolder *folder );
00061 
00065   Result result();
00066 
00067 public slots:
00068   // Retrieve messages then calls execute
00069   void start();
00070 
00071   // advance the progressbar, emitted by the folderjob
00072   void slotProgress( unsigned long done, unsigned long total );
00073 
00074 signals:
00075   void messagesTransfered( KMCommand::Result result );
00078   void completed( KMCommand *command );
00079 
00080 protected:
00081   // Returns list of messages retrieved
00082   const QPtrList<KMMessage> retrievedMsgs() const;
00083   // Returns the single message retrieved
00084   KMMessage *retrievedMessage() const;
00085   // Returns the parent widget
00086   QWidget *parentWidget() const;
00087 
00088   bool deletesItself() { return mDeletesItself; }
00094   void setDeletesItself( bool deletesItself )
00095   { mDeletesItself = deletesItself; }
00096 
00097   bool emitsCompletedItself() { return mEmitsCompletedItself; }
00104   void setEmitsCompletedItself( bool emitsCompletedItself )
00105   { mEmitsCompletedItself = emitsCompletedItself; }
00106 
00110   void setResult( Result result )
00111   { mResult = result; }
00112 
00113 private:
00114   // execute should be implemented by derived classes
00115   virtual Result execute() = 0;
00116 
00119   void transferSelectedMsgs();
00120 
00121 private slots:
00123   virtual void slotStart();
00124 
00125   void slotPostTransfer( KMCommand::Result result );
00127   void slotMsgTransfered(KMMessage* msg);
00129   void slotJobFinished();
00131   void slotTransferCancelled();
00132 
00133 private:
00134   // ProgressDialog for transferring messages
00135   KProgressDialog* mProgressDialog;
00136   //Currently only one async command allowed at a time
00137   static int mCountJobs;
00138   int mCountMsgs;
00139   Result mResult;
00140   bool mDeletesItself : 1;
00141   bool mEmitsCompletedItself : 1;
00142 
00143   QWidget *mParent;
00144   QPtrList<KMMessage> mRetrievedMsgs;
00145   QPtrList<KMMsgBase> mMsgList;
00146   QValueList<QGuardedPtr<KMFolder> > mFolders;
00147 };
00148 
00149 class KDE_EXPORT KMMailtoComposeCommand : public KMCommand
00150 {
00151   Q_OBJECT
00152 
00153 public:
00154   KMMailtoComposeCommand( const KURL &url, KMMessage *msg=0 );
00155 
00156 private:
00157   virtual Result execute();
00158 
00159   KURL mUrl;
00160   KMMessage *mMessage;
00161 };
00162 
00163 class KDE_EXPORT KMMailtoReplyCommand : public KMCommand
00164 {
00165   Q_OBJECT
00166 
00167 public:
00168   KMMailtoReplyCommand( QWidget *parent, const KURL &url,
00169             KMMessage *msg, const QString &selection );
00170 
00171 private:
00172   virtual Result execute();
00173 
00174   KURL mUrl;
00175   QString mSelection;
00176 };
00177 
00178 class KDE_EXPORT KMMailtoForwardCommand : public KMCommand
00179 {
00180   Q_OBJECT
00181 
00182 public:
00183   KMMailtoForwardCommand( QWidget *parent, const KURL &url,
00184               KMMessage *msg );
00185 
00186 private:
00187   virtual Result execute();
00188 
00189   KURL mUrl;
00190 };
00191 
00192 class KDE_EXPORT KMMailtoAddAddrBookCommand : public KMCommand
00193 {
00194   Q_OBJECT
00195 
00196 public:
00197   KMMailtoAddAddrBookCommand( const KURL &url, QWidget *parent );
00198 
00199 private:
00200   virtual Result execute();
00201 
00202   KURL mUrl;
00203 };
00204 
00205 class KDE_EXPORT KMAddBookmarksCommand : public KMCommand
00206 {
00207   Q_OBJECT
00208 
00209 public:
00210   KMAddBookmarksCommand( const KURL &url, QWidget *parent );
00211 
00212 private:
00213   virtual Result execute();
00214 
00215   KURL mUrl;
00216 };
00217 
00218 
00219 class KDE_EXPORT KMMailtoOpenAddrBookCommand : public KMCommand
00220 {
00221   Q_OBJECT
00222 
00223 public:
00224   KMMailtoOpenAddrBookCommand( const KURL &url, QWidget *parent );
00225 
00226 private:
00227   virtual Result execute();
00228 
00229   KURL mUrl;
00230 };
00231 
00232 class KDE_EXPORT KMUrlCopyCommand : public KMCommand
00233 {
00234   Q_OBJECT
00235 
00236 public:
00237   KMUrlCopyCommand( const KURL &url, KMMainWidget *mainWidget = 0 );
00238 
00239 private:
00240   virtual Result execute();
00241 
00242   KURL mUrl;
00243   KMMainWidget *mMainWidget;
00244 };
00245 
00246 class KDE_EXPORT KMUrlOpenCommand : public KMCommand
00247 {
00248   Q_OBJECT
00249 
00250 public:
00251   KMUrlOpenCommand( const KURL &url, KMReaderWin *readerWin );
00252 
00253 private:
00254   virtual Result execute();
00255 
00256   KURL mUrl;
00257   KMReaderWin *mReaderWin;
00258 };
00259 
00260 class KDE_EXPORT KMUrlSaveCommand : public KMCommand
00261 {
00262   Q_OBJECT
00263 
00264 public:
00265   KMUrlSaveCommand( const KURL &url, QWidget *parent );
00266 
00267 private slots:
00268   void slotUrlSaveResult( KIO::Job *job );
00269 
00270 private:
00271   virtual Result execute();
00272 
00273   KURL mUrl;
00274 };
00275 
00276 class KDE_EXPORT KMEditMsgCommand : public KMCommand
00277 {
00278   Q_OBJECT
00279 
00280 public:
00281   KMEditMsgCommand( QWidget *parent, KMMessage *msg );
00282 
00283 private:
00284   virtual Result execute();
00285 };
00286 
00287 class KDE_EXPORT KMShowMsgSrcCommand : public KMCommand
00288 {
00289   Q_OBJECT
00290 
00291 public:
00292   KMShowMsgSrcCommand( QWidget *parent, KMMessage *msg,
00293                bool fixedFont );
00294   virtual Result execute();
00295 
00296 private:
00297   bool mFixedFont;
00298   bool mMsgWasComplete;
00299 };
00300 
00301 class KDE_EXPORT KMSaveMsgCommand : public KMCommand
00302 {
00303   Q_OBJECT
00304 
00305 public:
00306   KMSaveMsgCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList );
00307   KMSaveMsgCommand( QWidget *parent, KMMessage * msg );
00308   KURL url();
00309 
00310 private:
00311   virtual Result execute();
00312 
00313 private slots:
00314   void slotSaveDataReq();
00315   void slotSaveResult(KIO::Job *job);
00317   void slotMessageRetrievedForSaving(KMMessage *msg);
00318 
00319 private:
00320   static const int MAX_CHUNK_SIZE = 64*1024;
00321   KURL mUrl;
00322   QValueList<unsigned long> mMsgList;
00323   unsigned int mMsgListIndex;
00324   KMMessage *mStandAloneMessage;
00325   QByteArray mData;
00326   int mOffset;
00327   size_t mTotalSize;
00328   KIO::TransferJob *mJob;
00329 };
00330 
00331 class KDE_EXPORT KMOpenMsgCommand : public KMCommand
00332 {
00333   Q_OBJECT
00334 
00335 public:
00336   KMOpenMsgCommand( QWidget *parent, const KURL & url = KURL(),
00337                     const QString & encoding = QString() );
00338 
00339 private:
00340   virtual Result execute();
00341 
00342 private slots:
00343   void slotDataArrived( KIO::Job *job, const QByteArray & data );
00344   void slotResult( KIO::Job *job );
00345 
00346 private:
00347   static const int MAX_CHUNK_SIZE = 64*1024;
00348   KURL mUrl;
00349   DwString mMsgString;
00350   KIO::TransferJob *mJob;
00351   const QString mEncoding;
00352 };
00353 
00354 class KDE_EXPORT KMSaveAttachmentsCommand : public KMCommand
00355 {
00356   Q_OBJECT
00357 public:
00362   KMSaveAttachmentsCommand( QWidget *parent, KMMessage *msg  );
00367   KMSaveAttachmentsCommand( QWidget *parent, const QPtrList<KMMsgBase>& msgs );
00376   KMSaveAttachmentsCommand( QWidget *parent, QPtrList<partNode> &attachments,
00377                             KMMessage *msg, bool encoded = false  );
00378 
00379 private slots:
00380   void slotSaveAll();
00381 
00382 private:
00383   virtual Result execute();
00384   Result saveItem( partNode *node, const KURL& url );
00385 
00386 private:
00387   PartNodeMessageMap mAttachmentMap;
00388   bool mImplicitAttachments;
00389   bool mEncoded;
00390 };
00391 
00392 class KDE_EXPORT KMReplyToCommand : public KMCommand
00393 {
00394   Q_OBJECT
00395 
00396 public:
00397   KMReplyToCommand( QWidget *parent, KMMessage *msg,
00398                     const QString &selection = QString::null );
00399 
00400 private:
00401   virtual Result execute();
00402 
00403 private:
00404   QString mSelection;
00405 };
00406 
00407 class KDE_EXPORT KMNoQuoteReplyToCommand : public KMCommand
00408 {
00409   Q_OBJECT
00410 
00411 public:
00412   KMNoQuoteReplyToCommand( QWidget *parent, KMMessage *msg );
00413 
00414 private:
00415   virtual Result execute();
00416 };
00417 
00418 class KMReplyListCommand : public KMCommand
00419 {
00420   Q_OBJECT
00421 
00422 public:
00423   KMReplyListCommand( 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 KMReplyToAllCommand : public KMCommand
00434 {
00435   Q_OBJECT
00436 
00437 public:
00438   KMReplyToAllCommand( QWidget *parent, KMMessage *msg,
00439                const QString &selection = QString::null );
00440 
00441 private:
00442   virtual Result execute();
00443 
00444 private:
00445   QString mSelection;
00446 };
00447 
00448 class KDE_EXPORT KMReplyAuthorCommand : public KMCommand
00449 {
00450   Q_OBJECT
00451 
00452 public:
00453   KMReplyAuthorCommand( QWidget *parent, KMMessage *msg,
00454                         const QString &selection = QString::null );
00455 
00456 private:
00457   virtual Result execute();
00458 
00459 private:
00460   QString mSelection;
00461 };
00462 
00463 class KDE_EXPORT KMForwardInlineCommand : public KMCommand
00464 {
00465   Q_OBJECT
00466 
00467 public:
00468   KMForwardInlineCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00469                           uint identity = 0 );
00470   KMForwardInlineCommand( QWidget *parent, KMMessage * msg,
00471                           uint identity = 0 );
00472 
00473 private:
00474   virtual Result execute();
00475 
00476 private:
00477   uint mIdentity;
00478 };
00479 
00480 class KDE_EXPORT KMForwardAttachedCommand : public KMCommand
00481 {
00482   Q_OBJECT
00483 
00484 public:
00485   KMForwardAttachedCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00486                 uint identity = 0, KMail::Composer *win = 0 );
00487   KMForwardAttachedCommand( QWidget *parent, KMMessage * msg,
00488                 uint identity = 0, KMail::Composer *win = 0 );
00489 
00490 private:
00491   virtual Result execute();
00492 
00493   uint mIdentity;
00494   QGuardedPtr<KMail::Composer> mWin;
00495 };
00496 
00497 class KDE_EXPORT KMForwardDigestCommand : public KMCommand
00498 {
00499   Q_OBJECT
00500 
00501 public:
00502   KMForwardDigestCommand( QWidget *parent, const QPtrList<KMMsgBase> &msgList,
00503                 uint identity = 0, KMail::Composer *win = 0 );
00504   KMForwardDigestCommand( QWidget *parent, KMMessage * msg,
00505                 uint identity = 0, KMail::Composer *win = 0 );
00506 
00507 private:
00508   virtual Result execute();
00509 
00510   uint mIdentity;
00511   QGuardedPtr<KMail::Composer> mWin;
00512 };
00513 
00514 class KDE_EXPORT KMRedirectCommand : public KMCommand
00515 {
00516   Q_OBJECT
00517 
00518 public:
00519   KMRedirectCommand( QWidget *parent, KMMessage *msg );
00520 
00521 private:
00522   virtual Result execute();
00523 };
00524 
00525 class KDE_EXPORT KMPrintCommand : public KMCommand
00526 {
00527   Q_OBJECT
00528 
00529 public:
00530   KMPrintCommand( QWidget *parent, KMMessage *msg,
00531                   bool htmlOverride=false,
00532                   bool htmlLoadExtOverride=false,
00533                   bool useFixedFont = false,
00534                   const QString & encoding = QString() );
00535 
00536 private:
00537   virtual Result execute();
00538 
00539   bool mHtmlOverride;
00540   bool mHtmlLoadExtOverride;
00541   bool mUseFixedFont;
00542   QString mEncoding;
00543 };
00544 
00545 class KDE_EXPORT KMSetStatusCommand : public KMCommand
00546 {
00547   Q_OBJECT
00548 
00549 public:
00550   // Serial numbers
00551   KMSetStatusCommand( KMMsgStatus status, const QValueList<Q_UINT32> &,
00552                       bool toggle=false );
00553 
00554 private:
00555   virtual Result execute();
00556 
00557   KMMsgStatus mStatus;
00558   QValueList<Q_UINT32> mSerNums;
00559   QValueList<int> mIds;
00560   bool mToggle;
00561 };
00562 
00563 class KDE_EXPORT KMFilterCommand : public KMCommand
00564 {
00565   Q_OBJECT
00566 
00567 public:
00568   KMFilterCommand( const QCString &field, const QString &value );
00569 
00570 private:
00571   virtual Result execute();
00572 
00573   QCString mField;
00574   QString mValue;
00575 };
00576 
00577 
00578 class KDE_EXPORT KMFilterActionCommand : public KMCommand
00579 {
00580   Q_OBJECT
00581 
00582 public:
00583   KMFilterActionCommand( QWidget *parent,
00584              const QPtrList<KMMsgBase> &msgList,
00585              KMFilter *filter );
00586 
00587 private:
00588   virtual Result execute();
00589 
00590   KMFilter *mFilter;
00591 };
00592 
00593 
00594 class KDE_EXPORT KMMetaFilterActionCommand : public QObject
00595 {
00596   Q_OBJECT
00597 
00598 public:
00599   KMMetaFilterActionCommand( KMFilter *filter, KMHeaders *headers,
00600                  KMMainWidget *main );
00601 
00602 public slots:
00603   void start();
00604 
00605 private:
00606   KMFilter *mFilter;
00607   KMHeaders *mHeaders;
00608   KMMainWidget *mMainWidget;
00609 };
00610 
00611 class KDE_EXPORT FolderShortcutCommand : public QObject
00612 {
00613   Q_OBJECT
00614 
00615 public:
00616   FolderShortcutCommand( KMMainWidget* mainwidget, KMFolder *folder );
00617   ~FolderShortcutCommand();
00618 
00619 public slots:
00620   void start();
00624   void setAction( KAction* );
00625 
00626 private:
00627   KMMainWidget *mMainWidget;
00628   KMFolder *mFolder;
00629   KAction *mAction;
00630 };
00631 
00632 
00633 class KDE_EXPORT KMMailingListFilterCommand : public KMCommand
00634 {
00635   Q_OBJECT
00636 
00637 public:
00638   KMMailingListFilterCommand( QWidget *parent, KMMessage *msg );
00639 
00640 private:
00641   virtual Result execute();
00642 };
00643 
00644 
00652 class KDE_EXPORT KMMenuCommand : public KMCommand
00653 {
00654   Q_OBJECT
00655 
00656 public:
00657   static void folderToPopupMenu(bool move, QObject *receiver,
00658     KMMenuToFolder *aMenuToFolder, QPopupMenu *menu );
00659 
00660   static void makeFolderMenu(KMFolderNode* item, bool move,
00661     QObject *receiver, KMMenuToFolder *aMenuToFolder, QPopupMenu *menu );
00662 };
00663 
00664 class KDE_EXPORT KMCopyCommand : public KMMenuCommand
00665 {
00666   Q_OBJECT
00667 
00668 public:
00669   KMCopyCommand( KMFolder* destFolder,
00670          const QPtrList<KMMsgBase> &msgList );
00671   KMCopyCommand( KMFolder* destFolder, KMMessage *msg );
00672 
00673 protected slots:
00674   void slotMsgAdded( KMFolder*, Q_UINT32 );
00675 
00676   void slotFolderComplete();
00677 
00678 private:
00679   virtual Result execute();
00680 
00681   KMFolder *mDestFolder;
00682   QPtrList<KMMsgBase> mMsgList;
00683   // List of serial numbers that need to be loaded
00684   // Ticked off as they come in via msgAdded signals.
00685   QValueList<Q_UINT32> mWaitingForMsgs;
00686 };
00687 
00688 namespace KPIM {
00689   class ProgressItem;
00690 }
00691 class KDE_EXPORT KMMoveCommand : public KMMenuCommand
00692 {
00693   Q_OBJECT
00694 
00695 public:
00696   KMMoveCommand( KMFolder* destFolder, const QPtrList<KMMsgBase> &msgList );
00697   KMMoveCommand( KMFolder* destFolder, KMMessage * msg );
00698   KMMoveCommand( KMFolder* destFolder, KMMsgBase * msgBase );
00699   KMFolder* destFolder() const { return mDestFolder; }
00700 
00701 public slots:
00702   void slotImapFolderCompleted(KMFolderImap *folder, bool success);
00703   void slotMsgAddedToDestFolder(KMFolder *folder, Q_UINT32 serNum);
00704   void slotMoveCanceled();
00705 
00706 protected:
00707   // Needed for KMDeleteCommand for "move to trash"
00708   KMMoveCommand( Q_UINT32 sernum );
00709   void setDestFolder( KMFolder* folder ) { mDestFolder = folder; }
00710   void addMsg( KMMsgBase *msg ) { mMsgList.append( msg ); }
00711   QValueVector<KMFolder*> mOpenedFolders;
00712 
00713 private:
00714   virtual Result execute();
00715   void completeMove( Result result );
00716 
00717   KMFolder *mDestFolder;
00718   QPtrList<KMMsgBase> mMsgList;
00719   // List of serial numbers that have to be transferred to a host.
00720   // Ticked off as they come in via msgAdded signals.
00721   QValueList<Q_UINT32> mLostBoys;
00722   KPIM::ProgressItem *mProgressItem;
00723   bool mCompleteWithAddedMsg;
00724 };
00725 
00726 class KDE_EXPORT KMDeleteMsgCommand : public KMMoveCommand
00727 {
00728   Q_OBJECT
00729 
00730 public:
00731   KMDeleteMsgCommand( KMFolder* srcFolder, const QPtrList<KMMsgBase> &msgList );
00732   KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg );
00733   KMDeleteMsgCommand( Q_UINT32 sernum );
00734 
00735 private:
00736   static KMFolder * findTrashFolder( KMFolder * srcFolder );
00737 
00738 };
00739 
00740 class KDE_EXPORT KMUrlClickedCommand : public KMCommand
00741 {
00742   Q_OBJECT
00743 
00744 public:
00745   KMUrlClickedCommand( const KURL &url, uint identity,
00746     KMReaderWin *readerWin, bool mHtmlPref, KMMainWidget *mainWidget = 0 );
00747 
00748 private:
00749   virtual Result execute();
00750 
00751   KURL mUrl;
00752   uint mIdentity;
00753   KMReaderWin *mReaderWin;
00754   bool mHtmlPref;
00755   KMMainWidget *mMainWidget;
00756 };
00757 
00758 class KDE_EXPORT KMLoadPartsCommand : public KMCommand
00759 {
00760   Q_OBJECT
00761 
00762 public:
00763   KMLoadPartsCommand( QPtrList<partNode>& parts, KMMessage* msg );
00764   KMLoadPartsCommand( partNode* node, KMMessage* msg );
00765   KMLoadPartsCommand( PartNodeMessageMap& partMap );
00766 
00767 public slots:
00768   void slotPartRetrieved( KMMessage* msg, QString partSpecifier );
00769 
00770 signals:
00771   void partsRetrieved();
00772 
00773 private:
00774   // Retrieve parts then calls execute
00775   virtual void slotStart();
00776 
00777   virtual Result execute();
00778 
00779   int mNeedsRetrieval;
00780   PartNodeMessageMap mPartMap;
00781 };
00782 
00783 class KDE_EXPORT KMResendMessageCommand : public KMCommand
00784 {
00785   Q_OBJECT
00786 
00787 public:
00788   KMResendMessageCommand( QWidget *parent, KMMessage *msg=0 );
00789 
00790 private:
00791   virtual Result execute();
00792 };
00793 
00794 class KDE_EXPORT KMMailingListCommand : public KMCommand
00795 {
00796   Q_OBJECT
00797 public:
00798   KMMailingListCommand( QWidget *parent, KMFolder *parent );
00799 private:
00800   virtual Result execute();
00801 private slots:
00802   void commandCompleted( KMCommand *command );
00803 protected:
00804   virtual KURL::List urls() const =0;
00805 protected:
00806   KMFolder *mFolder;
00807 };
00808 
00809 class KDE_EXPORT KMMailingListPostCommand : public KMMailingListCommand
00810 {
00811   Q_OBJECT
00812 public:
00813   KMMailingListPostCommand( QWidget *parent, KMFolder *parent );
00814 protected:
00815   virtual KURL::List urls() const;
00816 };
00817 
00818 class KDE_EXPORT KMMailingListSubscribeCommand : public KMMailingListCommand
00819 {
00820   Q_OBJECT
00821 public:
00822   KMMailingListSubscribeCommand( QWidget *parent, KMFolder *parent );
00823 protected:
00824   virtual KURL::List urls() const;
00825 };
00826 
00827 class KDE_EXPORT KMMailingListUnsubscribeCommand : public KMMailingListCommand
00828 {
00829   Q_OBJECT
00830 public:
00831   KMMailingListUnsubscribeCommand( QWidget *parent, KMFolder *parent );
00832 protected:
00833   virtual KURL::List urls() const;
00834 };
00835 
00836 class KDE_EXPORT KMMailingListArchivesCommand : public KMMailingListCommand
00837 {
00838   Q_OBJECT
00839 public:
00840   KMMailingListArchivesCommand( QWidget *parent, KMFolder *parent );
00841 protected:
00842   virtual KURL::List urls() const;
00843 };
00844 
00845 class KDE_EXPORT KMMailingListHelpCommand : public KMMailingListCommand
00846 {
00847   Q_OBJECT
00848 public:
00849   KMMailingListHelpCommand( QWidget *parent, KMFolder *parent );
00850 protected:
00851   virtual KURL::List urls() const;
00852 };
00853 
00854 class KDE_EXPORT KMIMChatCommand : public KMCommand
00855 {
00856   Q_OBJECT
00857 
00858 public:
00859   KMIMChatCommand( const KURL &url, KMMessage *msg=0 );
00860 
00861 private:
00868   virtual Result execute();
00869 
00870   KURL mUrl;
00871   KMMessage *mMessage;
00872 };
00873 
00874 class KDE_EXPORT KMHandleAttachmentCommand : public KMCommand
00875 {
00876   Q_OBJECT
00877 
00878 public:
00880   enum AttachmentAction
00881   {
00882     Open = 1,
00883     OpenWith = 2,
00884     View = 3,
00885     Save = 4,
00886     Properties = 5,
00887     ChiasmusEncrypt = 6
00888   };
00898   KMHandleAttachmentCommand( partNode* node, KMMessage* msg, int atmId,
00899       const QString& atmName, AttachmentAction action, KService::Ptr offer, QWidget* parent );
00900 
00901 
00902 signals:
00903   void showAttachment( int id, const QString& name );
00904 
00905 private:
00906   virtual Result execute();
00907 
00908   QString createAtmFileLink() const;
00909 
00911   KService::Ptr getServiceOffer();
00912 
00914   void atmOpen();
00915 
00917   void atmOpenWith();
00918 
00923   void atmView();
00924 
00926   void atmSave();
00927 
00929   void atmProperties();
00930 
00932   void atmEncryptWithChiasmus();
00933 
00934 private slots:
00936   virtual void slotStart();
00937 
00942   void slotPartComplete();
00943 
00944   void slotAtmDecryptWithChiasmusResult( const GpgME::Error &, const QVariant & );
00945   void slotAtmDecryptWithChiasmusUploadResult( KIO::Job * );
00946 
00947 private:
00948   partNode* mNode;
00949   KMMessage* mMsg;
00950   int mAtmId;
00951   const QString& mAtmName;
00952   AttachmentAction mAction;
00953   KService::Ptr mOffer;
00954   Kleo::SpecialJob *mJob;
00955 
00956 };
00957 
00958 #endif /*KMCommands_h*/
KDE Home | KDE Accessibility Home | Description of Access Keys