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
33class KMMsgBase;
34class KMMessage;
35class TQWidget;
36class KMFolder;
37class KTempFile;
38
39//=========================================================
40//
41// class KMFilterAction
42//
43//=========================================================
44
45
56{
57public:
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
156private:
157 TQString mName;
158 TQString mLabel;
159};
160
161//=========================================================
162//
163// class KMFilterActionWithNone
164//
165//=========================================================
166
167
182{
183public:
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{
224public:
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
262protected:
263 TQString mParameter;
264};
265
266//=========================================================
267//
268// class KMFilterActionWithUOID
269//
270//=========================================================
271
272
287{
288public:
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
309protected:
310 uint mParameter;
311};
312
313//=========================================================
314//
315// class KMFilterActionWithStringList
316//
317//=========================================================
318
319
340{
341public:
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
366protected:
367 TQStringList mParameterList;
368};
369
370
371//=========================================================
372//
373// class KMFilterActionWithFolder
374//
375//=========================================================
376
377
393{
394public:
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
437protected:
438 TQGuardedPtr<KMFolder> mFolder;
439 TQString mFolderName;
440};
441
442//=========================================================
443//
444// class KMFilterActionWithAddress
445//
446//=========================================================
447
448
464{
465public:
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{
516public:
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
554protected:
555 TQString mParameter;
556};
557
558
559class KMFilterActionWithCommand : public KMFilterActionWithUrl
560{
561public:
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
595class KMFilterActionWithTest : public KMFilterAction
596{
597public:
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
635protected:
636 TQString mParameter;
637};
638
639
640typedef KMFilterAction* (*KMFilterActionNewFunc)(void);
641
642
643//-----------------------------------------------------------------------------
646{
647 TQString label, name;
648 KMFilterActionNewFunc create;
649};
650
673class KMFilterActionDict: public TQDict<KMFilterActionDesc>
674{
675public:
677
685 void insert(KMFilterActionNewFunc aNewFunc);
686
689 const TQPtrList<KMFilterActionDesc>& list() const { return mList; }
690
691protected:
694 virtual void init(void);
695
696private:
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.