00001
00002
00003
00004
00005
00006
00007
#ifndef kmfilteraction_h
00008
#define kmfilteraction_h
00009
00010
#include <kmime_mdn.h>
00011
00012
#include <qstring.h>
00013
#include <qstringlist.h>
00014
#include <qdict.h>
00015
#include <qptrlist.h>
00016
#include <qvaluelist.h>
00017
#include <qguardedptr.h>
00018
#include <qwidget.h>
00019
00020
class KMMsgBase;
00021
class KMMessage;
00022
class QWidget;
00023
class KMFolder;
00024
class KTempFile;
00025
00026
00027
00028
00029
00030
00031
00032
00042 class KMFilterAction
00043 {
00044
public:
00060 enum ReturnCode { ErrorNeedComplete = 0x1, GoOn = 0x2, ErrorButGoOn = 0x4,
00061 CriticalError = 0x8 };
00064
KMFilterAction(
const char* aName,
const QString aLabel);
00065
virtual ~
KMFilterAction();
00066
00069 const QString label()
const {
return mLabel; }
00070
00073 const QString name()
const {
return mName; }
00074
00082
virtual ReturnCode
process(KMMessage* msg)
const = 0;
00083
00087
virtual void processAsync(KMMessage* msg)
const;
00088
00091
virtual bool requiresBody(KMMsgBase* msgBase)
const;
00092
00097 virtual bool isEmpty()
const {
return FALSE; }
00098
00101
virtual QWidget*
createParamWidget(
QWidget* parent)
const;
00102
00106
virtual void applyParamWidgetValue(
QWidget* paramWidget);
00107
00110
virtual void setParamWidgetValue(
QWidget* paramWidget)
const;
00111
00114
virtual void clearParamWidget(
QWidget* paramWidget)
const;
00115
00117
virtual void argsFromString(
const QString argsStr) = 0;
00118
00120
virtual const QString argsAsString() const = 0;
00121
00125 virtual
bool folderRemoved(
KMFolder* aFolder,
KMFolder* aNewFolder);
00126
00128 static
KMFilterAction* newAction();
00129
00132 static
int tempOpenFolder(
KMFolder* aFolder);
00133
00135 static
void sendMDN( KMMessage * msg, KMime::MDN::DispositionType d,
00136 const
QValueList<KMime::MDN::DispositionModifier> & m
00137 =
QValueList<KMime::MDN::DispositionModifier>() );
00138
00139 private:
00140
QString mName;
00141
QString mLabel;
00142 };
00143
00144
00145
00146
00147
00148
00149
00150
00164 class
KMFilterActionWithNone : public
KMFilterAction
00165 {
00166
public:
00169
KMFilterActionWithNone(
const char* aName,
const QString aLabel);
00170
00173 virtual void argsFromString(
const QString) {};
00174
00177 virtual const QString argsAsString()
const {
return QString::null; }
00178 };
00179
00180
00181
00182
00183
00184
00185
00186
00200 class KMFilterActionWithString :
public KMFilterAction
00201 {
00202
public:
00205
KMFilterActionWithString(
const char* aName,
const QString aLabel);
00206
00211 virtual bool isEmpty()
const {
return mParameter.stripWhiteSpace().isEmpty(); }
00212
00215
virtual QWidget*
createParamWidget(
QWidget* parent)
const;
00216
00220
virtual void applyParamWidgetValue(
QWidget* paramWidget);
00221
00224
virtual void setParamWidgetValue(
QWidget* paramWidget)
const;
00225
00228
virtual void clearParamWidget(
QWidget* paramWidget)
const;
00229
00231
virtual void argsFromString(
const QString argsStr);
00232
00234
virtual const QString argsAsString() const;
00235
00236 protected:
00237
QString mParameter;
00238 };
00239
00240
00241
00242
00243
00244
00245
00246
00260 class
KMFilterActionWithUOID : public
KMFilterAction
00261 {
00262
public:
00265
KMFilterActionWithUOID(
const char* aName,
const QString aLabel);
00266
00271 virtual bool isEmpty()
const {
return mParameter == 0; }
00272
00274
virtual void argsFromString(
const QString argsStr);
00275
00277
virtual const QString argsAsString() const;
00278
00279 protected:
00280 uint mParameter;
00281 };
00282
00283
00284
00285
00286
00287
00288
00289
00309 class
KMFilterActionWithStringList : public
KMFilterActionWithString
00310 {
00311
public:
00314
KMFilterActionWithStringList(
const char* aName,
const QString aLabel);
00315
00318
virtual QWidget*
createParamWidget(
QWidget* parent)
const;
00319
00323
virtual void applyParamWidgetValue(
QWidget* paramWidget);
00324
00327
virtual void setParamWidgetValue(
QWidget* paramWidget)
const;
00328
00331
virtual void clearParamWidget(
QWidget* paramWidget)
const;
00332
00334
virtual void argsFromString(
const QString argsStr);
00335
00336
protected:
00337
QStringList mParameterList;
00338 };
00339
00340
00341
00342
00343
00344
00345
00346
00347
00362 class KMFilterActionWithFolder :
public KMFilterAction
00363 {
00364
public:
00367
KMFilterActionWithFolder(
const char* aName,
const QString aLabel);
00368
00373 virtual bool isEmpty()
const {
return (!mFolder && mFolderName.isEmpty()); }
00374
00377
virtual QWidget*
createParamWidget(
QWidget* parent)
const;
00378
00382
virtual void applyParamWidgetValue(
QWidget* paramWidget);
00383
00386
virtual void setParamWidgetValue(
QWidget* paramWidget)
const;
00387
00390
virtual void clearParamWidget(
QWidget* paramWidget)
const;
00391
00393
virtual void argsFromString(
const QString argsStr);
00394
00396
virtual const QString argsAsString() const;
00397
00401 virtual
bool folderRemoved(
KMFolder* aFolder,
KMFolder* aNewFolder);
00402
00403 protected:
00404
QGuardedPtr<
KMFolder> mFolder;
00405
QString mFolderName;
00406 };
00407
00408
00409
00410
00411
00412
00413
00414
00429 class
KMFilterActionWithAddress : public
KMFilterActionWithString
00430 {
00431
public:
00434
KMFilterActionWithAddress(
const char* aName,
const QString aLabel);
00435
00438
virtual QWidget*
createParamWidget(
QWidget* parent)
const;
00439
00443
virtual void applyParamWidgetValue(
QWidget* paramWidget);
00444
00447
virtual void setParamWidgetValue(
QWidget* paramWidget)
const;
00448
00451
virtual void clearParamWidget(
QWidget* paramWidget)
const;
00452 };
00453
00454
00455
00456
00457
00458
00459
00460
00480 class KMFilterActionWithUrl :
public KMFilterAction
00481 {
00482
public:
00485
KMFilterActionWithUrl(
const char* aName,
const QString aLabel);
00486 ~
KMFilterActionWithUrl();
00491 virtual bool isEmpty()
const {
return mParameter.stripWhiteSpace().isEmpty(); }
00492
00495
virtual QWidget*
createParamWidget(
QWidget* parent)
const;
00496
00500
virtual void applyParamWidgetValue(
QWidget* paramWidget);
00501
00504
virtual void setParamWidgetValue(
QWidget* paramWidget)
const;
00505
00508
virtual void clearParamWidget(
QWidget* paramWidget)
const;
00509
00511
virtual void argsFromString(
const QString argsStr);
00512
00514
virtual const QString argsAsString() const;
00515
00516 protected:
00517
QString mParameter;
00518 };
00519
00520
00521 class KMFilterActionWithCommand : public
KMFilterActionWithUrl
00522 {
00523
public:
00526 KMFilterActionWithCommand(
const char* aName,
const QString aLabel);
00527
00530
virtual QWidget*
createParamWidget(
QWidget* parent)
const;
00531
00535
virtual void applyParamWidgetValue(
QWidget* paramWidget);
00536
00539
virtual void setParamWidgetValue(
QWidget* paramWidget)
const;
00540
00543
virtual void clearParamWidget(
QWidget* paramWidget)
const;
00544
00550
virtual QString substituteCommandLineArgsFor( KMMessage *aMsg,
QPtrList<KTempFile> & aTempFileList )
const;
00551
00552
virtual ReturnCode genericProcess( KMMessage * aMsg,
bool filtering )
const;
00553 };
00554
00555
00556
00557
class KMFilterActionWithTest :
public KMFilterAction
00558 {
00559
public:
00562 KMFilterActionWithTest(
const char* aName,
const QString aLabel);
00563 ~KMFilterActionWithTest();
00568
virtual bool isEmpty()
const {
return mParameter.stripWhiteSpace().isEmpty(); }
00569
00572
virtual QWidget*
createParamWidget(
QWidget* parent)
const;
00573
00577
virtual void applyParamWidgetValue(
QWidget* paramWidget);
00578
00581
virtual void setParamWidgetValue(
QWidget* paramWidget)
const;
00582
00585
virtual void clearParamWidget(
QWidget* paramWidget)
const;
00586
00588
virtual void argsFromString(
const QString argsStr);
00589
00591
virtual const QString argsAsString() const;
00592
00593 protected:
00594
QString mParameter;
00595 };
00596
00597
00598 typedef KMFilterAction* (*KMFilterActionNewFunc)(
void);
00599
00600
00601
00603 struct
KMFilterActionDesc
00604 {
00605
QString label, name;
00606 KMFilterActionNewFunc create;
00607 };
00608
00631 class KMFilterActionDict:
public QDict<KMFilterActionDesc>
00632 {
00633
public:
00634
KMFilterActionDict();
00635
00643
void insert(KMFilterActionNewFunc aNewFunc);
00644
00647 const QPtrList<KMFilterActionDesc>& list()
const {
return mList; }
00648
00649
protected:
00652
virtual void init(
void);
00653
00654
private:
00655
QPtrList<KMFilterActionDesc> mList;
00656 };
00657
00658
#endif