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*/
Dictionary that contains a list of all registered filter actions with their creation functions.
void insert(KMFilterActionNewFunc aNewFunc)
Overloaded member function, provided for convenience.
virtual void init(void)
Populate the dictionary with all known KMFilterAction types.
const TQPtrList< KMFilterActionDesc > & list() const
Provides read-only access to a list of all known filter actions.
Abstract base class for KMail's filter actions that need a mail address as parameter,...
virtual void clearParamWidget(TQWidget *paramWidget) const
The filter action shall clear it's parameter widget's contents.
virtual void applyParamWidgetValue(TQWidget *paramWidget)
The filter action shall set it's parameter from the widget's contents.
virtual TQWidget * createParamWidget(TQWidget *parent) const
Creates a widget for setting the filter action parameter.
KMFilterActionWithAddress(const char *aName, const TQString aLabel)
Initialize filter action with (english) name aName.
virtual void setParamWidgetValue(TQWidget *paramWidget) const
The filter action shall set it's widget's contents from it's parameter.
Abstract base class for KMail's filter actions that need a mail folder as parameter,...
virtual bool isEmpty() const
Determines whether this action is valid.
virtual TQWidget * createParamWidget(TQWidget *parent) const
Creates a widget for setting the filter action parameter.
virtual void argsFromString(const TQString argsStr)
Read extra arguments from given string.
KMFilterActionWithFolder(const char *aName, const TQString aLabel)
Initialize filter action with (english) name aName.
virtual const TQString displayString() const
Returns a translated string describing this filter for visualization purposes, e.g.
virtual void setParamWidgetValue(TQWidget *paramWidget) const
The filter action shall set it's widget's contents from it's parameter.
virtual const TQString argsAsString() const
Return extra arguments as string.
virtual bool folderRemoved(KMFolder *aFolder, KMFolder *aNewFolder)
Called from the filter when a folder is removed.
virtual void clearParamWidget(TQWidget *paramWidget) const
The filter action shall clear it's parameter widget's contents.
virtual void applyParamWidgetValue(TQWidget *paramWidget)
The filter action shall set it's parameter from the widget's contents.
Abstract base class for KMail's filter actions that need no parameter, e.g.
virtual const TQString displayString() const
Returns a translated string describing this filter for visualization purposes, e.g.
virtual void argsFromString(const TQString)
Read extra arguments from given string.
KMFilterActionWithNone(const char *aName, const TQString aLabel)
Initialize filter action with (english) name aName.
virtual const TQString argsAsString() const
Return extra arguments as string.
Abstract base class for KMail's filter actions that need a parameter which can be chosen from a fixed...
virtual void applyParamWidgetValue(TQWidget *paramWidget)
The filter action shall set it's parameter from the widget's contents.
virtual void setParamWidgetValue(TQWidget *paramWidget) const
The filter action shall set it's widget's contents from it's parameter.
virtual void argsFromString(const TQString argsStr)
Read extra arguments from given string.
virtual TQWidget * createParamWidget(TQWidget *parent) const
Creates a widget for setting the filter action parameter.
KMFilterActionWithStringList(const char *aName, const TQString aLabel)
Initialize filter action with (english) name aName.
virtual void clearParamWidget(TQWidget *paramWidget) const
The filter action shall clear it's parameter widget's contents.
Abstract base class for KMail's filter actions that need a free-form parameter, e....
virtual void setParamWidgetValue(TQWidget *paramWidget) const
The filter action shall set it's widget's contents from it's parameter.
virtual TQWidget * createParamWidget(TQWidget *parent) const
Creates a widget for setting the filter action parameter.
virtual void clearParamWidget(TQWidget *paramWidget) const
The filter action shall clear it's parameter widget's contents.
virtual bool isEmpty() const
Determines whether this action is valid.
virtual const TQString displayString() const
Returns a translated string describing this filter for visualization purposes, e.g.
virtual const TQString argsAsString() const
Return extra arguments as string.
KMFilterActionWithString(const char *aName, const TQString aLabel)
Initialize filter action with (english) name aName.
virtual void applyParamWidgetValue(TQWidget *paramWidget)
The filter action shall set it's parameter from the widget's contents.
virtual void argsFromString(const TQString argsStr)
Read extra arguments from given string.
Abstract base class for KMail's filter actions that need a parameter that has a UOID,...
virtual const TQString argsAsString() const
Return extra arguments as string.
virtual bool isEmpty() const
Determines whether this action is valid.
virtual const TQString displayString() const
Returns a translated string describing this filter for visualization purposes, e.g.
KMFilterActionWithUOID(const char *aName, const TQString aLabel)
Initialize filter action with (english) name aName.
virtual void argsFromString(const TQString argsStr)
Read extra arguments from given string.
Abstract base class for KMail's filter actions that need a command line as parameter,...
virtual void setParamWidgetValue(TQWidget *paramWidget) const
The filter action shall set it's widget's contents from it's parameter.
virtual const TQString displayString() const
Returns a translated string describing this filter for visualization purposes, e.g.
virtual TQWidget * createParamWidget(TQWidget *parent) const
Creates a widget for setting the filter action parameter.
virtual const TQString argsAsString() const
Return extra arguments as string.
virtual void applyParamWidgetValue(TQWidget *paramWidget)
The filter action shall set it's parameter from the widget's contents.
virtual void argsFromString(const TQString argsStr)
Read extra arguments from given string.
KMFilterActionWithUrl(const char *aName, const TQString aLabel)
Initialize filter action with (english) name aName.
virtual bool isEmpty() const
Determines whether this action is valid.
virtual void clearParamWidget(TQWidget *paramWidget) const
The filter action shall clear it's parameter widget's contents.
Abstract base class for KMail's filter actions.
virtual TQWidget * createParamWidget(TQWidget *parent) const
Creates a widget for setting the filter action parameter.
virtual void setParamWidgetValue(TQWidget *paramWidget) const
The filter action shall set it's widget's contents from it's parameter.
ReturnCode
Possible return codes of process:
static KMFilterAction * newAction()
Static function that creates a filter action of this type.
virtual void clearParamWidget(TQWidget *paramWidget) const
The filter action shall clear it's parameter widget's contents.
virtual ReturnCode process(KMMessage *msg) const =0
Execute action on given message.
const TQString name() const
Returns english name, ie.
virtual void applyParamWidgetValue(TQWidget *paramWidget)
The filter action shall set it's parameter from the widget's contents.
virtual bool folderRemoved(KMFolder *aFolder, KMFolder *aNewFolder)
Called from the filter when a folder is removed.
KMFilterAction(const char *aName, const TQString aLabel)
Initialize filter action with (english) name aName and (internationalized) label aLabel.
virtual const TQString displayString() const =0
Returns a translated string describing this filter for visualization purposes, e.g.
virtual const TQString argsAsString() const =0
Return extra arguments as string.
static void sendMDN(KMMessage *msg, KMime::MDN::DispositionType d, const TQValueList< KMime::MDN::DispositionModifier > &m=TQValueList< KMime::MDN::DispositionModifier >())
Automates the sending of MDNs from filter actions.
virtual bool requiresBody(KMMsgBase *msgBase) const
Determines if the action depends on the body of the message.
virtual bool isEmpty() const
Determines whether this action is valid.
virtual void processAsync(KMMessage *msg) const
Execute an action on given message asynchronously.
const TQString label() const
Returns nationalized label, ie.
static int tempOpenFolder(KMFolder *aFolder)
Temporarily open folder.
virtual void argsFromString(const TQString argsStr)=0
Read extra arguments from given string.
Mail folder.
Definition: kmfolder.h:69
This is a Mime Message.
Definition: kmmessage.h:68
Auxiliary struct to KMFilterActionDict.