kmail

kmfilteraction.h
1 /*
2  * kmail: KDE mail client
3  * Copyright (c) 1996-1998 Stefan Taferner <taferner@kde.org>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  *
19  */
20 #ifndef kmfilteraction_h
21 #define kmfilteraction_h
22 
23 #include <kmime_mdn.h>
24 
25 #include <tqstring.h>
26 #include <tqstringlist.h>
27 #include <tqdict.h>
28 #include <tqptrlist.h>
29 #include <tqvaluelist.h>
30 #include <tqguardedptr.h>
31 #include <tqwidget.h>
32 
33 class KMMsgBase;
34 class KMMessage;
35 class TQWidget;
36 class KMFolder;
37 class KTempFile;
38 
39 //=========================================================
40 //
41 // class KMFilterAction
42 //
43 //=========================================================
44 
45 
56 {
57 public:
73  enum ReturnCode { ErrorNeedComplete = 0x1, GoOn = 0x2, ErrorButGoOn = 0x4,
74  CriticalError = 0x8 };
77  KMFilterAction(const char* aName, const TQString aLabel);
78  virtual ~KMFilterAction();
79 
82  const TQString label() const { return mLabel; }
83 
86  const TQString name() const { return mName; }
87 
95  virtual ReturnCode process(KMMessage* msg) const = 0;
96 
100  virtual void processAsync(KMMessage* msg) const;
101 
104  virtual bool requiresBody(KMMsgBase* msgBase) const;
105 
110  virtual bool isEmpty() const { return FALSE; }
111 
114  virtual TQWidget* createParamWidget(TQWidget* parent) const;
115 
119  virtual void applyParamWidgetValue(TQWidget* paramWidget);
120 
123  virtual void setParamWidgetValue(TQWidget* paramWidget) const;
124 
127  virtual void clearParamWidget(TQWidget* paramWidget) const;
128 
130  virtual void argsFromString(const TQString argsStr) = 0;
131 
133  virtual const TQString argsAsString() const = 0;
134 
137  virtual const TQString displayString() const = 0;
138 
142  virtual bool folderRemoved(KMFolder* aFolder, KMFolder* aNewFolder);
143 
145  static KMFilterAction* newAction();
146 
149  static int tempOpenFolder(KMFolder* aFolder);
150 
152  static void sendMDN( KMMessage * msg, KMime::MDN::DispositionType d,
153  const TQValueList<KMime::MDN::DispositionModifier> & m
154  =TQValueList<KMime::MDN::DispositionModifier>() );
155 
156 private:
157  TQString mName;
158  TQString mLabel;
159 };
160 
161 //=========================================================
162 //
163 // class KMFilterActionWithNone
164 //
165 //=========================================================
166 
167 
182 {
183 public:
186  KMFilterActionWithNone(const char* aName, const TQString aLabel);
187 
190  virtual void argsFromString(const TQString) {};
191 
194  virtual const TQString argsAsString() const { return TQString(); }
195 
198  virtual const TQString displayString() const;
199 };
200 
201 
202 //=========================================================
203 //
204 // class KMFilterActionWithString
205 //
206 //=========================================================
207 
208 
223 {
224 public:
227  KMFilterActionWithString(const char* aName, const TQString aLabel);
228 
233  virtual bool isEmpty() const { return mParameter.stripWhiteSpace().isEmpty(); }
234 
237  virtual TQWidget* createParamWidget(TQWidget* parent) const;
238 
242  virtual void applyParamWidgetValue(TQWidget* paramWidget);
243 
246  virtual void setParamWidgetValue(TQWidget* paramWidget) const;
247 
250  virtual void clearParamWidget(TQWidget* paramWidget) const;
251 
253  virtual void argsFromString(const TQString argsStr);
254 
256  virtual const TQString argsAsString() const;
257 
260  virtual const TQString displayString() const;
261 
262 protected:
263  TQString mParameter;
264 };
265 
266 //=========================================================
267 //
268 // class KMFilterActionWithUOID
269 //
270 //=========================================================
271 
272 
287 {
288 public:
291  KMFilterActionWithUOID(const char* aName, const TQString aLabel);
292 
297  virtual bool isEmpty() const { return mParameter == 0; }
298 
300  virtual void argsFromString(const TQString argsStr);
301 
303  virtual const TQString argsAsString() const;
304 
307  virtual const TQString displayString() const;
308 
309 protected:
310  uint mParameter;
311 };
312 
313 //=========================================================
314 //
315 // class KMFilterActionWithStringList
316 //
317 //=========================================================
318 
319 
340 {
341 public:
344  KMFilterActionWithStringList(const char* aName, const TQString aLabel);
345 
348  virtual TQWidget* createParamWidget(TQWidget* parent) const;
349 
353  virtual void applyParamWidgetValue(TQWidget* paramWidget);
354 
357  virtual void setParamWidgetValue(TQWidget* paramWidget) const;
358 
361  virtual void clearParamWidget(TQWidget* paramWidget) const;
362 
364  virtual void argsFromString(const TQString argsStr);
365 
366 protected:
367  TQStringList mParameterList;
368 };
369 
370 
371 //=========================================================
372 //
373 // class KMFilterActionWithFolder
374 //
375 //=========================================================
376 
377 
393 {
394 public:
397  KMFilterActionWithFolder(const char* aName, const TQString aLabel);
398 
403  virtual bool isEmpty() const { return (!mFolder && mFolderName.isEmpty()); }
404 
407  virtual TQWidget* createParamWidget(TQWidget* parent) const;
408 
412  virtual void applyParamWidgetValue(TQWidget* paramWidget);
413 
416  virtual void setParamWidgetValue(TQWidget* paramWidget) const;
417 
420  virtual void clearParamWidget(TQWidget* paramWidget) const;
421 
423  virtual void argsFromString(const TQString argsStr);
424 
426  virtual const TQString argsAsString() const;
427 
430  virtual const TQString displayString() const;
431 
435  virtual bool folderRemoved(KMFolder* aFolder, KMFolder* aNewFolder);
436 
437 protected:
438  TQGuardedPtr<KMFolder> mFolder;
439  TQString mFolderName;
440 };
441 
442 //=========================================================
443 //
444 // class KMFilterActionWithAddress
445 //
446 //=========================================================
447 
448 
464 {
465 public:
468  KMFilterActionWithAddress(const char* aName, const TQString aLabel);
469 
472  virtual TQWidget* createParamWidget(TQWidget* parent) const;
473 
477  virtual void applyParamWidgetValue(TQWidget* paramWidget);
478 
481  virtual void setParamWidgetValue(TQWidget* paramWidget) const;
482 
485  virtual void clearParamWidget(TQWidget* paramWidget) const;
486 };
487 
488 //=========================================================
489 //
490 // class KMFilterActionWithCommand
491 //
492 //=========================================================
493 
494 
515 {
516 public:
519  KMFilterActionWithUrl(const char* aName, const TQString aLabel);
525  virtual bool isEmpty() const { return mParameter.stripWhiteSpace().isEmpty(); }
526 
529  virtual TQWidget* createParamWidget(TQWidget* parent) const;
530 
534  virtual void applyParamWidgetValue(TQWidget* paramWidget);
535 
538  virtual void setParamWidgetValue(TQWidget* paramWidget) const;
539 
542  virtual void clearParamWidget(TQWidget* paramWidget) const;
543 
545  virtual void argsFromString(const TQString argsStr);
546 
548  virtual const TQString argsAsString() const;
549 
552  virtual const TQString displayString() const;
553 
554 protected:
555  TQString mParameter;
556 };
557 
558 
559 class KMFilterActionWithCommand : public KMFilterActionWithUrl
560 {
561 public:
564  KMFilterActionWithCommand(const char* aName, const TQString aLabel);
565 
568  virtual TQWidget* createParamWidget(TQWidget* parent) const;
569 
573  virtual void applyParamWidgetValue(TQWidget* paramWidget);
574 
577  virtual void setParamWidgetValue(TQWidget* paramWidget) const;
578 
581  virtual void clearParamWidget(TQWidget* paramWidget) const;
582 
588  virtual TQString substituteCommandLineArgsFor( KMMessage *aMsg, TQPtrList<KTempFile> & aTempFileList ) const;
589 
590  virtual ReturnCode genericProcess( KMMessage * aMsg, bool filtering ) const;
591 };
592 
593 
594 
595 class KMFilterActionWithTest : public KMFilterAction
596 {
597 public:
600  KMFilterActionWithTest(const char* aName, const TQString aLabel);
601  ~KMFilterActionWithTest();
606  virtual bool isEmpty() const { return mParameter.stripWhiteSpace().isEmpty(); }
607 
610  virtual TQWidget* createParamWidget(TQWidget* parent) const;
611 
615  virtual void applyParamWidgetValue(TQWidget* paramWidget);
616 
619  virtual void setParamWidgetValue(TQWidget* paramWidget) const;
620 
623  virtual void clearParamWidget(TQWidget* paramWidget) const;
624 
626  virtual void argsFromString(const TQString argsStr);
627 
629  virtual const TQString argsAsString() const;
630 
633  virtual const TQString displayString() const;
634 
635 protected:
636  TQString mParameter;
637 };
638 
639 
640 typedef KMFilterAction* (*KMFilterActionNewFunc)(void);
641 
642 
643 //-----------------------------------------------------------------------------
646 {
647  TQString label, name;
648  KMFilterActionNewFunc create;
649 };
650 
673 class KMFilterActionDict: public TQDict<KMFilterActionDesc>
674 {
675 public:
677 
685  void insert(KMFilterActionNewFunc aNewFunc);
686 
689  const TQPtrList<KMFilterActionDesc>& list() const { return mList; }
690 
691 protected:
694  virtual void init(void);
695 
696 private:
697  TQPtrList<KMFilterActionDesc> mList;
698 };
699 
700 #endif /*kmfilteraction_h*/