kmail

kmcommands.h
1 // -*- mode: C++; c-file-style: "gnu" -*-
2 
3 #ifndef KMCommands_h
4 #define KMCommands_h
5 
6 #include <tqdatetime.h>
7 #include <tqguardedptr.h>
8 #include <tqptrlist.h>
9 #include <tqvaluelist.h>
10 #include <tqvaluevector.h>
11 #include <tqtimer.h>
12 #include <tqfont.h>
13 #include <tdeio/job.h>
14 #include "kmmsgbase.h" // for KMMsgStatus
15 #include <mimelib/string.h>
16 #include <tdepimmacros.h>
17 #include <kservice.h>
18 #include <tdetempfile.h>
19 
20 class TQPopupMenu;
21 class TDEMainWindow;
22 class TDEAction;
23 class KProgressDialog;
24 class TDEProcess;
25 class KMFilter;
26 class KMFolder;
27 class KMFolderImap;
28 class KMFolderNode;
29 class KMHeaders;
30 class KMMainWidget;
31 class KMMessage;
32 class KMMsgBase;
33 class KMReaderWin;
34 class partNode;
35 class DwBodyPart;
36 class DwEntity;
37 namespace TDEIO { class Job; }
38 namespace KMail {
39  class Composer;
40  class FolderJob;
41  class EditorWatcher;
42  class HeaderStyle;
43  class HeaderStrategy;
44 }
45 namespace GpgME { class Error; }
46 namespace Kleo { class SpecialJob; }
47 
48 typedef TQMap<int,KMFolder*> KMMenuToFolder;
49 typedef TQMap<partNode*, KMMessage*> PartNodeMessageMap;
50 
51 class KDE_EXPORT KMCommand : public TQObject
52 {
53  Q_OBJECT
54 
55  friend class LaterDeleterWithCommandCompletion;
56 
57 public:
58  enum Result { Undefined, OK, Canceled, Failed };
59 
60  // Trival constructor, don't retrieve any messages
61  KMCommand( TQWidget *parent = 0 );
62  // Retrieve all messages in msgList when start is called.
63  KMCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList );
64  // Retrieve the single message msgBase when start is called.
65  KMCommand( TQWidget *parent, KMMsgBase *msgBase );
66  // Retrieve the single message msgBase when start is called.
67  KMCommand( TQWidget *parent, KMMessage *message );
68  virtual ~KMCommand();
69 
74  void keepFolderOpen( KMFolder *folder );
75 
79  Result result();
80 
81 public slots:
82  // Retrieve messages then calls execute
83  void start();
84 
85  // advance the progressbar, emitted by the folderjob
86  void slotProgress( unsigned long done, unsigned long total );
87 
88 signals:
89 
91  void messagesTransfered( KMCommand::Result result );
92 
94  void completed( KMCommand *command );
95 
96 protected:
97  // Returns list of messages retrieved
98  const TQPtrList<KMMessage> retrievedMsgs() const;
99  // Returns the single message retrieved
100  KMMessage *retrievedMessage() const;
101  // Returns the parent widget
102  TQWidget *parentWidget() const;
103 
104  bool deletesItself() { return mDeletesItself; }
110  void setDeletesItself( bool deletesItself )
111  { mDeletesItself = deletesItself; }
112 
113  bool emitsCompletedItself() { return mEmitsCompletedItself; }
120  void setEmitsCompletedItself( bool emitsCompletedItself )
121  { mEmitsCompletedItself = emitsCompletedItself; }
122 
126  void setResult( Result result )
127  { mResult = result; }
128 
129 private:
130  // execute should be implemented by derived classes
131  virtual Result execute() = 0;
132 
135  void transferSelectedMsgs();
136 
137 private slots:
139  virtual void slotStart();
140 
141  void slotPostTransfer( KMCommand::Result result );
143  void slotMsgTransfered(KMMessage* msg);
145  void slotJobFinished();
147  void slotTransferCancelled();
148 
149 private:
150  // ProgressDialog for transferring messages
151  KProgressDialog* mProgressDialog;
152  //Currently only one async command allowed at a time
153  static int mCountJobs;
154  int mCountMsgs;
155  Result mResult;
156  bool mDeletesItself : 1;
157  bool mEmitsCompletedItself : 1;
158 
159  TQWidget *mParent;
160  TQPtrList<KMMessage> mRetrievedMsgs;
161  TQPtrList<KMMsgBase> mMsgList;
162  TQValueList<TQGuardedPtr<KMFolder> > mFolders;
163 };
164 
165 class KDE_EXPORT KMMailtoComposeCommand : public KMCommand
166 {
167  Q_OBJECT
168 
169 
170 public:
171  KMMailtoComposeCommand( const KURL &url, KMMessage *msg=0 );
172 
173 private:
174  virtual Result execute();
175 
176  KURL mUrl;
177  KMMessage *mMessage;
178 };
179 
180 class KDE_EXPORT KMMailtoReplyCommand : public KMCommand
181 {
182  Q_OBJECT
183 
184 
185 public:
186  KMMailtoReplyCommand( TQWidget *parent, const KURL &url,
187  KMMessage *msg, const TQString &selection );
188 
189 private:
190  virtual Result execute();
191 
192  KURL mUrl;
193  TQString mSelection;
194 };
195 
196 class KDE_EXPORT KMMailtoForwardCommand : public KMCommand
197 {
198  Q_OBJECT
199 
200 
201 public:
202  KMMailtoForwardCommand( TQWidget *parent, const KURL &url,
203  KMMessage *msg );
204 
205 private:
206  virtual Result execute();
207 
208  KURL mUrl;
209 };
210 
211 class KDE_EXPORT KMMailtoAddAddrBookCommand : public KMCommand
212 {
213  Q_OBJECT
214 
215 
216 public:
217  KMMailtoAddAddrBookCommand( const KURL &url, TQWidget *parent );
218 
219 private:
220  virtual Result execute();
221 
222  KURL mUrl;
223 };
224 
225 class KDE_EXPORT KMAddBookmarksCommand : public KMCommand
226 {
227  Q_OBJECT
228 
229 
230 public:
231  KMAddBookmarksCommand( const KURL &url, TQWidget *parent );
232 
233 private:
234  virtual Result execute();
235 
236  KURL mUrl;
237 };
238 
239 
240 class KDE_EXPORT KMMailtoOpenAddrBookCommand : public KMCommand
241 {
242  Q_OBJECT
243 
244 
245 public:
246  KMMailtoOpenAddrBookCommand( const KURL &url, TQWidget *parent );
247 
248 private:
249  virtual Result execute();
250 
251  KURL mUrl;
252 };
253 
254 class KDE_EXPORT KMUrlCopyCommand : public KMCommand
255 {
256  Q_OBJECT
257 
258 
259 public:
260  KMUrlCopyCommand( const KURL &url, KMMainWidget *mainWidget = 0 );
261 
262 private:
263  virtual Result execute();
264 
265  KURL mUrl;
266  KMMainWidget *mMainWidget;
267 };
268 
269 class KDE_EXPORT KMUrlOpenCommand : public KMCommand
270 {
271  Q_OBJECT
272 
273 
274 public:
275  KMUrlOpenCommand( const KURL &url, KMReaderWin *readerWin );
276 
277 private:
278  virtual Result execute();
279 
280  KURL mUrl;
281  KMReaderWin *mReaderWin;
282 };
283 
284 class KDE_EXPORT KMUrlSaveCommand : public KMCommand
285 {
286  Q_OBJECT
287 
288 
289 public:
290  KMUrlSaveCommand( const KURL &url, TQWidget *parent );
291 
292 private slots:
293  void slotUrlSaveResult( TDEIO::Job *job );
294 
295 private:
296  virtual Result execute();
297 
298  KURL mUrl;
299 };
300 
301 class KDE_EXPORT KMEditMsgCommand : public KMCommand
302 {
303  Q_OBJECT
304 
305 
306 public:
307  KMEditMsgCommand( TQWidget *parent, KMMessage *msg );
308 
309 private:
310  virtual Result execute();
311 };
312 
313 class KDE_EXPORT KMUseTemplateCommand : public KMCommand
314 {
315  Q_OBJECT
316 
317 
318 public:
319  KMUseTemplateCommand( TQWidget *parent, KMMessage *msg );
320 
321 private:
322  virtual Result execute();
323 };
324 
325 class KDE_EXPORT KMShowMsgSrcCommand : public KMCommand
326 {
327  Q_OBJECT
328 
329 
330 public:
331  KMShowMsgSrcCommand( TQWidget *parent, KMMessage *msg,
332  bool fixedFont );
333  virtual Result execute();
334 
335 private:
336  bool mFixedFont;
337  bool mMsgWasComplete;
338 };
339 
340 class KDE_EXPORT KMSaveMsgCommand : public KMCommand
341 {
342  Q_OBJECT
343 
344 
345 public:
346  KMSaveMsgCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList );
347  KMSaveMsgCommand( TQWidget *parent, KMMessage * msg );
348  KURL url();
349 
350 private:
351  virtual Result execute();
352 
353 private slots:
354  void slotSaveDataReq();
355  void slotSaveResult(TDEIO::Job *job);
357  void slotMessageRetrievedForSaving(KMMessage *msg);
358 
359 private:
360  static const int MAX_CHUNK_SIZE = 64*1024;
361  KURL mUrl;
362  TQValueList<unsigned long> mMsgList;
363  TQValueList<KMMsgBase *> mUngetMsgs;
364  unsigned int mMsgListIndex;
365  KMMessage *mStandAloneMessage;
366  TQByteArray mData;
367  int mOffset;
368  size_t mTotalSize;
369  TDEIO::TransferJob *mJob;
370 };
371 
372 class KDE_EXPORT KMOpenMsgCommand : public KMCommand
373 {
374  Q_OBJECT
375 
376 
377 public:
378  KMOpenMsgCommand( TQWidget *parent, const KURL & url = KURL(),
379  const TQString & encoding = TQString() );
380 
381 private:
382  virtual Result execute();
383 
384 private slots:
385  void slotDataArrived( TDEIO::Job *job, const TQByteArray & data );
386  void slotResult( TDEIO::Job *job );
387 
388 private:
389  static const int MAX_CHUNK_SIZE = 64*1024;
390  KURL mUrl;
391  DwString mMsgString;
392  TDEIO::TransferJob *mJob;
393  const TQString mEncoding;
394 };
395 
396 class KDE_EXPORT KMSaveAttachmentsCommand : public KMCommand
397 {
398  Q_OBJECT
399 
400 public:
405  KMSaveAttachmentsCommand( TQWidget *parent, KMMessage *msg );
410  KMSaveAttachmentsCommand( TQWidget *parent, const TQPtrList<KMMsgBase>& msgs );
419  KMSaveAttachmentsCommand( TQWidget *parent, TQPtrList<partNode> &attachments,
420  KMMessage *msg, bool encoded = false );
421 
422 private slots:
423  void slotSaveAll();
424 
425 private:
426  virtual Result execute();
427  Result saveItem( partNode *node, const KURL& url );
428 
429 private:
430  PartNodeMessageMap mAttachmentMap;
431  bool mImplicitAttachments;
432  bool mEncoded;
433 };
434 
435 class KDE_EXPORT KMReplyToCommand : public KMCommand
436 {
437  Q_OBJECT
438 
439 
440 public:
441  KMReplyToCommand( TQWidget *parent, KMMessage *msg,
442  const TQString &selection = TQString() );
443 
444 private:
445  virtual Result execute();
446 
447 private:
448  TQString mSelection;
449 };
450 
451 class KDE_EXPORT KMNoQuoteReplyToCommand : public KMCommand
452 {
453  Q_OBJECT
454 
455 
456 public:
457  KMNoQuoteReplyToCommand( TQWidget *parent, KMMessage *msg );
458 
459 private:
460  virtual Result execute();
461 };
462 
463 class KMReplyListCommand : public KMCommand
464 {
465  Q_OBJECT
466 
467 
468 public:
469  KMReplyListCommand( TQWidget *parent, KMMessage *msg,
470  const TQString &selection = TQString() );
471 
472 private:
473  virtual Result execute();
474 
475 private:
476  TQString mSelection;
477 };
478 
479 class KDE_EXPORT KMReplyToAllCommand : public KMCommand
480 {
481  Q_OBJECT
482 
483 
484 public:
485  KMReplyToAllCommand( TQWidget *parent, KMMessage *msg,
486  const TQString &selection = TQString() );
487 
488 private:
489  virtual Result execute();
490 
491 private:
492  TQString mSelection;
493 };
494 
495 class KDE_EXPORT KMReplyAuthorCommand : public KMCommand
496 {
497  Q_OBJECT
498 
499 
500 public:
501  KMReplyAuthorCommand( TQWidget *parent, KMMessage *msg,
502  const TQString &selection = TQString() );
503 
504 private:
505  virtual Result execute();
506 
507 private:
508  TQString mSelection;
509 };
510 
511 class KDE_EXPORT KMForwardInlineCommand : public KMCommand
512 {
513  Q_OBJECT
514 
515 
516 public:
517  KMForwardInlineCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList,
518  uint identity = 0 );
519  KMForwardInlineCommand( TQWidget *parent, KMMessage * msg,
520  uint identity = 0 );
521 
522 private:
523  virtual Result execute();
524 
525 private:
526  uint mIdentity;
527 };
528 
529 class KDE_EXPORT KMForwardAttachedCommand : public KMCommand
530 {
531  Q_OBJECT
532 
533 
534 public:
535  KMForwardAttachedCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList,
536  uint identity = 0, KMail::Composer *win = 0 );
537  KMForwardAttachedCommand( TQWidget *parent, KMMessage * msg,
538  uint identity = 0, KMail::Composer *win = 0 );
539 
540 private:
541  virtual Result execute();
542 
543  uint mIdentity;
544  TQGuardedPtr<KMail::Composer> mWin;
545 };
546 
547 class KDE_EXPORT KMForwardDigestCommand : public KMCommand
548 {
549  Q_OBJECT
550 
551 
552 public:
553  KMForwardDigestCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList,
554  uint identity = 0, KMail::Composer *win = 0 );
555  KMForwardDigestCommand( TQWidget *parent, KMMessage * msg,
556  uint identity = 0, KMail::Composer *win = 0 );
557 
558 private:
559  virtual Result execute();
560 
561  uint mIdentity;
562  TQGuardedPtr<KMail::Composer> mWin;
563 };
564 
565 class KDE_EXPORT KMRedirectCommand : public KMCommand
566 {
567  Q_OBJECT
568 
569 
570 public:
571  KMRedirectCommand( TQWidget *parent, KMMessage *msg );
572 
573 private:
574  virtual Result execute();
575 };
576 
577 class KDE_EXPORT KMCustomReplyToCommand : public KMCommand
578 {
579  Q_OBJECT
580 
581 
582 public:
583  KMCustomReplyToCommand( TQWidget *parent, KMMessage *msg,
584  const TQString &selection,
585  const TQString &tmpl );
586 
587 private:
588  virtual Result execute();
589 
590 private:
591  TQString mSelection;
592  TQString mTemplate;
593 };
594 
595 class KDE_EXPORT KMCustomReplyAllToCommand : public KMCommand
596 {
597  Q_OBJECT
598 
599 
600 public:
601  KMCustomReplyAllToCommand( TQWidget *parent, KMMessage *msg,
602  const TQString &selection,
603  const TQString &tmpl );
604 
605 private:
606  virtual Result execute();
607 
608 private:
609  TQString mSelection;
610  TQString mTemplate;
611 };
612 
613 class KDE_EXPORT KMCustomForwardCommand : public KMCommand
614 {
615  Q_OBJECT
616 
617 
618 public:
619  KMCustomForwardCommand( TQWidget *parent, const TQPtrList<KMMsgBase> &msgList,
620  uint identity, const TQString &tmpl );
621  KMCustomForwardCommand( TQWidget *parent, KMMessage * msg,
622  uint identity, const TQString &tmpl );
623 
624 private:
625  virtual Result execute();
626 
627  uint mIdentity;
628  TQString mTemplate;
629 };
630 
631 class KDE_EXPORT KMPrintCommand : public KMCommand
632 {
633  Q_OBJECT
634 
635 
636 public:
637  KMPrintCommand( TQWidget *parent, KMMessage *msg,
638  const KMail::HeaderStyle *headerStyle = 0,
639  const KMail::HeaderStrategy *headerStrategy = 0,
640  bool htmlOverride = false,
641  bool htmlLoadExtOverride = false,
642  bool useFixedFont = false,
643  const TQString & encoding = TQString() );
644 
645  void setOverrideFont( const TQFont& );
646 
647 private:
648  virtual Result execute();
649 
650  const KMail::HeaderStyle *mHeaderStyle;
651  const KMail::HeaderStrategy *mHeaderStrategy;
652  bool mHtmlOverride;
653  bool mHtmlLoadExtOverride;
654  bool mUseFixedFont;
655  TQFont mOverrideFont;
656  TQString mEncoding;
657 };
658 
659 class KDE_EXPORT KMSeStatusCommand : public KMCommand
660 {
661  Q_OBJECT
662 
663 
664 public:
665  // Serial numbers
666  KMSeStatusCommand( KMMsgStatus status, const TQValueList<TQ_UINT32> &,
667  bool toggle=false );
668 
669 private:
670  virtual Result execute();
671 
672  KMMsgStatus mStatus;
673  TQValueList<TQ_UINT32> mSerNums;
674  TQValueList<int> mIds;
675  bool mToggle;
676 };
677 
678 class KDE_EXPORT KMFilterCommand : public KMCommand
679 {
680  Q_OBJECT
681 
682 
683 public:
684  KMFilterCommand( const TQCString &field, const TQString &value );
685 
686 private:
687  virtual Result execute();
688 
689  TQCString mField;
690  TQString mValue;
691 };
692 
693 
694 class KDE_EXPORT KMFilterActionCommand : public KMCommand
695 {
696  Q_OBJECT
697 
698 
699 public:
700  KMFilterActionCommand( TQWidget *parent,
701  const TQPtrList<KMMsgBase> &msgList,
702  KMFilter *filter );
703 
704 private:
705  virtual Result execute();
706  TQValueList<TQ_UINT32> serNumList;
707  KMFilter *mFilter;
708 };
709 
710 
711 class KDE_EXPORT KMMetaFilterActionCommand : public TQObject
712 {
713  Q_OBJECT
714 
715 
716 public:
717  KMMetaFilterActionCommand( KMFilter *filter, KMHeaders *headers,
718  KMMainWidget *main );
719 
720 public slots:
721  void start();
722 
723 private:
724  KMFilter *mFilter;
725  KMHeaders *mHeaders;
726  KMMainWidget *mMainWidget;
727 };
728 
729 class KDE_EXPORT FolderShortcutCommand : public TQObject
730 {
731  Q_OBJECT
732 
733 
734 public:
735  FolderShortcutCommand( KMMainWidget* mainwidget, KMFolder *folder );
736  ~FolderShortcutCommand();
737 
738 public slots:
739  void start();
743  void setAction( TDEAction* );
744 
745 private:
746  KMMainWidget *mMainWidget;
747  KMFolder *mFolder;
748  TDEAction *mAction;
749 };
750 
751 
752 class KDE_EXPORT KMMailingListFilterCommand : public KMCommand
753 {
754  Q_OBJECT
755 
756 
757 public:
758  KMMailingListFilterCommand( TQWidget *parent, KMMessage *msg );
759 
760 private:
761  virtual Result execute();
762 };
763 
764 
772 class KDE_EXPORT KMMenuCommand : public KMCommand
773 {
774  Q_OBJECT
775 
776 
777 public:
778  static void folderToPopupMenu(bool move, TQObject *receiver,
779  KMMenuToFolder *aMenuToFolder, TQPopupMenu *menu );
780 
781  static void makeFolderMenu(KMFolderNode* item, bool move,
782  TQObject *receiver, KMMenuToFolder *aMenuToFolder, TQPopupMenu *menu );
783 };
784 
785 class KDE_EXPORT KMCopyCommand : public KMMenuCommand
786 {
787  Q_OBJECT
788 
789 
790 public:
791  KMCopyCommand( KMFolder* destFolder,
792  const TQPtrList<KMMsgBase> &msgList );
793  KMCopyCommand( KMFolder* destFolder, KMMessage *msg );
794 
795 protected slots:
796  void slotJobFinished( KMail::FolderJob *job );
797 
798  void slotFolderComplete( KMFolderImap*, bool success );
799 
800 private:
801  virtual Result execute();
802 
803  KMFolder *mDestFolder;
804  TQPtrList<KMMsgBase> mMsgList;
805  TQValueList<KMail::FolderJob*> mPendingJobs;
806 };
807 
808 namespace KPIM {
809  class ProgressItem;
810 }
811 class KDE_EXPORT KMMoveCommand : public KMMenuCommand
812 {
813  Q_OBJECT
814 
815 
816 public:
817  KMMoveCommand( KMFolder* destFolder, const TQPtrList<KMMsgBase> &msgList );
818  KMMoveCommand( KMFolder* destFolder, KMMessage * msg );
819  KMMoveCommand( KMFolder* destFolder, KMMsgBase * msgBase );
820  KMFolder* destFolder() const { return mDestFolder; }
821 
822 public slots:
823  void slotImapFolderCompleted(KMFolderImap *folder, bool success);
824  void slotMsgAddedToDestFolder(KMFolder *folder, TQ_UINT32 serNum);
825  void slotMoveCanceled();
826 
827 protected:
828  // Needed for KMDeleteCommand for "move to trash"
829  KMMoveCommand( TQ_UINT32 sernum );
830  void setDestFolder( KMFolder* folder ) { mDestFolder = folder; }
831  void addMsg( KMMsgBase *msg ) { mSerNumList.append( msg->getMsgSerNum() ); }
832  TQValueVector<KMFolder*> mOpenedFolders;
833 
834 private:
835  virtual Result execute();
836  void completeMove( Result result );
837 
838  KMFolder *mDestFolder;
839  TQValueList<TQ_UINT32> mSerNumList;
840  // List of serial numbers that have to be transferred to a host.
841  // Ticked off as they come in via msgAdded signals.
842  TQValueList<TQ_UINT32> mLostBoys;
843  KPIM::ProgressItem *mProgressItem;
844  bool mCompleteWithAddedMsg;
845 };
846 
847 class KDE_EXPORT KMDeleteMsgCommand : public KMMoveCommand
848 {
849  Q_OBJECT
850 
851 
852 public:
853  KMDeleteMsgCommand( KMFolder* srcFolder, const TQPtrList<KMMsgBase> &msgList );
854  KMDeleteMsgCommand( KMFolder* srcFolder, KMMessage * msg );
855  KMDeleteMsgCommand( TQ_UINT32 sernum );
856 
857 private:
858  static KMFolder * findTrashFolder( KMFolder * srcFolder );
859 
860 };
861 
862 class KDE_EXPORT KMUrlClickedCommand : public KMCommand
863 {
864  Q_OBJECT
865 
866 
867 public:
868  KMUrlClickedCommand( const KURL &url, uint identity,
869  KMReaderWin *readerWin, bool mHtmlPref, KMMainWidget *mainWidget = 0 );
870 
871 private:
872  virtual Result execute();
873 
874  KURL mUrl;
875  uint mIdentity;
876  KMReaderWin *mReaderWin;
877  bool mHtmlPref;
878  KMMainWidget *mMainWidget;
879 };
880 
881 class KDE_EXPORT KMLoadPartsCommand : public KMCommand
882 {
883  Q_OBJECT
884 
885 
886 public:
887  KMLoadPartsCommand( TQPtrList<partNode>& parts, KMMessage* msg );
888  KMLoadPartsCommand( partNode* node, KMMessage* msg );
889  KMLoadPartsCommand( PartNodeMessageMap& partMap );
890 
891 public slots:
892  void slotPartRetrieved( KMMessage* msg, TQString partSpecifier );
893 
894 signals:
895  void partsRetrieved();
896 
897 private:
898  // Retrieve parts then calls execute
899  virtual void slotStart();
900 
901  virtual Result execute();
902 
903  int mNeedsRetrieval;
904  PartNodeMessageMap mPartMap;
905 };
906 
907 class KDE_EXPORT KMResendMessageCommand : public KMCommand
908 {
909  Q_OBJECT
910 
911 
912 public:
913  KMResendMessageCommand( TQWidget *parent, KMMessage *msg=0 );
914 
915 private:
916  virtual Result execute();
917 };
918 
919 class KDE_EXPORT KMMailingListCommand : public KMCommand
920 {
921  Q_OBJECT
922 
923 public:
924  KMMailingListCommand( TQWidget *parent, KMFolder *folder );
925 private:
926  virtual Result execute();
927 private slots:
928  void commandCompleted( KMCommand *command );
929 protected:
930  virtual KURL::List urls() const =0;
931 protected:
932  KMFolder *mFolder;
933 };
934 
935 class KDE_EXPORT KMMailingListPostCommand : public KMMailingListCommand
936 {
937  Q_OBJECT
938 
939 public:
940  KMMailingListPostCommand( TQWidget *parent, KMFolder *folder );
941 protected:
942  virtual KURL::List urls() const;
943 };
944 
945 class KDE_EXPORT KMMailingListSubscribeCommand : public KMMailingListCommand
946 {
947  Q_OBJECT
948 
949 public:
950  KMMailingListSubscribeCommand( TQWidget *parent, KMFolder *folder );
951 protected:
952  virtual KURL::List urls() const;
953 };
954 
955 class KDE_EXPORT KMMailingListUnsubscribeCommand : public KMMailingListCommand
956 {
957  Q_OBJECT
958 
959 public:
960  KMMailingListUnsubscribeCommand( TQWidget *parent, KMFolder *folder );
961 protected:
962  virtual KURL::List urls() const;
963 };
964 
965 class KDE_EXPORT KMMailingListArchivesCommand : public KMMailingListCommand
966 {
967  Q_OBJECT
968 
969 public:
970  KMMailingListArchivesCommand( TQWidget *parent, KMFolder *folder );
971 protected:
972  virtual KURL::List urls() const;
973 };
974 
975 class KDE_EXPORT KMMailingListHelpCommand : public KMMailingListCommand
976 {
977  Q_OBJECT
978 
979 public:
980  KMMailingListHelpCommand( TQWidget *parent, KMFolder *folder );
981 protected:
982  virtual KURL::List urls() const;
983 };
984 
985 class KDE_EXPORT KMIMChatCommand : public KMCommand
986 {
987  Q_OBJECT
988 
989 
990 public:
991  KMIMChatCommand( const KURL &url, KMMessage *msg=0 );
992 
993 private:
1000  virtual Result execute();
1001 
1002  KURL mUrl;
1003  KMMessage *mMessage;
1004 };
1005 
1006 class KDE_EXPORT KMHandleAttachmentCommand : public KMCommand
1007 {
1008  Q_OBJECT
1009 
1010 
1011 public:
1013  enum AttachmentAction
1014  {
1015  Open = 1,
1016  OpenWith = 2,
1017  View = 3,
1018  Save = 4,
1019  Properties = 5,
1020  ChiasmusEncrypt = 6
1021  };
1031  KMHandleAttachmentCommand( partNode* node, KMMessage* msg, int atmId,
1032  const TQString& atmName, AttachmentAction action, KService::Ptr offer, TQWidget* parent );
1033 
1034 
1035 signals:
1036  void showAttachment( int id, const TQString& name );
1037 
1038 private:
1039  virtual Result execute();
1040 
1041  TQString createAtmFileLink() const;
1042 
1044  KService::Ptr getServiceOffer();
1045 
1047  void atmOpen();
1048 
1050  void atmOpenWith();
1051 
1056  void atmView();
1057 
1059  void atmSave();
1060 
1062  void atmProperties();
1063 
1065  void atmEncryptWithChiasmus();
1066 
1067 private slots:
1069  virtual void slotStart();
1070 
1075  void slotPartComplete();
1076 
1077  void slotAtmDecryptWithChiasmusResult( const GpgME::Error &, const TQVariant & );
1078  void slotAtmDecryptWithChiasmusUploadResult( TDEIO::Job * );
1079 
1080 private:
1081  partNode* mNode;
1082  KMMessage* mMsg;
1083  int mAtmId;
1084  TQString mAtmName;
1085  AttachmentAction mAction;
1086  KService::Ptr mOffer;
1087  Kleo::SpecialJob *mJob;
1088 
1089 };
1090 
1091 
1093 class KDE_EXPORT AttachmentModifyCommand : public KMCommand
1094 {
1095  Q_OBJECT
1096 
1097  public:
1098  AttachmentModifyCommand( partNode *node, KMMessage *msg, TQWidget *parent );
1099  AttachmentModifyCommand( int nodeId, KMMessage *msg, TQWidget *parent );
1101 
1102  protected:
1103  void storeChangedMessage( KMMessage* msg );
1104  virtual Result doAttachmentModify() = 0;
1105 
1106  protected:
1107  int mPartIndex;
1108  TQ_UINT32 mSernum;
1109 
1110  private:
1111  Result execute();
1112 
1113  private slots:
1114  void messageStoreResult( KMFolderImap* folder, bool success );
1115  void messageDeleteResult( KMCommand *cmd );
1116 
1117  private:
1118  TQGuardedPtr<KMFolder> mFolder;
1119 };
1120 
1121 class KDE_EXPORT KMDeleteAttachmentCommand : public AttachmentModifyCommand
1122 {
1123  Q_OBJECT
1124 
1125  public:
1126  KMDeleteAttachmentCommand( partNode *node, KMMessage *msg, TQWidget *parent );
1127  KMDeleteAttachmentCommand( int nodeId, KMMessage *msg, TQWidget *parent );
1128  ~KMDeleteAttachmentCommand();
1129 
1130  protected:
1131  Result doAttachmentModify();
1132 };
1133 
1134 
1135 class KDE_EXPORT KMEditAttachmentCommand : public AttachmentModifyCommand
1136 {
1137  Q_OBJECT
1138 
1139  public:
1140  KMEditAttachmentCommand( partNode *node, KMMessage *msg, TQWidget *parent );
1141  KMEditAttachmentCommand( int nodeId, KMMessage *msg, TQWidget *parent );
1142  ~KMEditAttachmentCommand();
1143 
1144  protected:
1145  Result doAttachmentModify();
1146 
1147  private slots:
1148  void editDone( KMail::EditorWatcher *watcher );
1149 
1150  private:
1151  KTempFile mTempFile;
1152 };
1153 
1154 class KDE_EXPORT CreateTodoCommand : public KMCommand
1155 {
1156  Q_OBJECT
1157 
1158  public:
1159  CreateTodoCommand( TQWidget *parent, KMMessage *msg );
1160 
1161  private:
1162  Result execute();
1163 };
1164 
1165 #endif /*KMCommands_h*/