kmail
kmfilteraction.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef kmfilteraction_h
00021 #define kmfilteraction_h
00022
00023 #include <kmime/kmime_mdn.h>
00024
00025 #include <QList>
00026 #include <QMultiHash>
00027 #include <QPointer>
00028 #include <QStringList>
00029
00030 class KMMsgBase;
00031 class KMMessage;
00032 class KMFolder;
00033 class KTemporaryFile;
00034
00035 class QWidget;
00036
00037
00038
00039
00040
00041
00042
00043
00053 class KMFilterAction
00054 {
00055 public:
00071 enum ReturnCode { ErrorNeedComplete = 0x1, GoOn = 0x2, ErrorButGoOn = 0x4,
00072 CriticalError = 0x8 };
00075 KMFilterAction(const char* aName, const QString &aLabel);
00076 virtual ~KMFilterAction();
00077
00080 const QString label() const { return mLabel; }
00081
00084 const QString name() const { return mName; }
00085
00093 virtual ReturnCode process(KMMessage* msg) const = 0;
00094
00098 virtual void processAsync(KMMessage* msg) const;
00099
00102 virtual bool requiresBody(KMMsgBase* msgBase) const;
00103
00108 virtual bool isEmpty() const { return false; }
00109
00112 virtual QWidget* createParamWidget(QWidget* parent) const;
00113
00117 virtual void applyParamWidgetValue(QWidget* paramWidget);
00118
00121 virtual void setParamWidgetValue(QWidget* paramWidget) const;
00122
00125 virtual void clearParamWidget(QWidget* paramWidget) const;
00126
00128 virtual void argsFromString(const QString &argsStr) = 0;
00129
00131 virtual const QString argsAsString() const = 0;
00132
00135 virtual const QString displayString() const = 0;
00136
00140 virtual bool folderRemoved(KMFolder* aFolder, KMFolder* aNewFolder);
00141
00143 static KMFilterAction* newAction();
00144
00147 static int tempOpenFolder(KMFolder* aFolder);
00148
00150 static void sendMDN( KMMessage * msg, KMime::MDN::DispositionType d,
00151 const QList<KMime::MDN::DispositionModifier> & m
00152 = QList<KMime::MDN::DispositionModifier>() );
00153
00154 private:
00155 QString mName;
00156 QString mLabel;
00157 };
00158
00159
00160
00161
00162
00163
00164
00165
00179 class KMFilterActionWithNone : public KMFilterAction
00180 {
00181 public:
00184 KMFilterActionWithNone(const char* aName, const QString &aLabel);
00185
00188 virtual void argsFromString(const QString &) {}
00189
00192 virtual const QString argsAsString() const { return QString(); }
00193
00196 virtual const QString displayString() const;
00197 };
00198
00199
00200
00201
00202
00203
00204
00205
00206
00220 class KMFilterActionWithString : public KMFilterAction
00221 {
00222 public:
00225 KMFilterActionWithString(const char* aName, const QString &aLabel);
00226
00231 virtual bool isEmpty() const { return mParameter.trimmed().isEmpty(); }
00232
00235 virtual QWidget* createParamWidget(QWidget* parent) const;
00236
00240 virtual void applyParamWidgetValue(QWidget* paramWidget);
00241
00244 virtual void setParamWidgetValue(QWidget* paramWidget) const;
00245
00248 virtual void clearParamWidget(QWidget* paramWidget) const;
00249
00251 virtual void argsFromString(const QString &argsStr);
00252
00254 virtual const QString argsAsString() const;
00255
00258 virtual const QString displayString() const;
00259
00260 protected:
00261 QString mParameter;
00262 };
00263
00264
00265
00266
00267
00268
00269
00270
00284 class KMFilterActionWithUOID : public KMFilterAction
00285 {
00286 public:
00289 KMFilterActionWithUOID(const char* aName, const QString &aLabel);
00290
00295 virtual bool isEmpty() const { return mParameter == 0; }
00296
00298 virtual void argsFromString(const QString &argsStr);
00299
00301 virtual const QString argsAsString() const;
00302
00305 virtual const QString displayString() const;
00306
00307 protected:
00308 uint mParameter;
00309 };
00310
00311
00312
00313
00314
00315
00316
00317
00337 class KMFilterActionWithStringList : public KMFilterActionWithString
00338 {
00339 public:
00342 KMFilterActionWithStringList(const char* aName, const QString &aLabel);
00343
00346 virtual QWidget* createParamWidget(QWidget* parent) const;
00347
00351 virtual void applyParamWidgetValue(QWidget* paramWidget);
00352
00355 virtual void setParamWidgetValue(QWidget* paramWidget) const;
00356
00359 virtual void clearParamWidget(QWidget* paramWidget) const;
00360
00362 virtual void argsFromString(const QString &argsStr);
00363
00364 protected:
00365 QStringList mParameterList;
00366 };
00367
00368
00369
00370
00371
00372
00373
00374
00375
00390 class KMFilterActionWithFolder : public KMFilterAction
00391 {
00392 public:
00395 KMFilterActionWithFolder(const char* aName, const QString &aLabel);
00396
00401 virtual bool isEmpty() const { return (mFolder.isNull() && mFolderName.isEmpty()); }
00402
00405 virtual QWidget* createParamWidget(QWidget* parent) const;
00406
00410 virtual void applyParamWidgetValue(QWidget* paramWidget);
00411
00414 virtual void setParamWidgetValue(QWidget* paramWidget) const;
00415
00418 virtual void clearParamWidget(QWidget* paramWidget) const;
00419
00421 virtual void argsFromString(const QString &argsStr);
00422
00424 virtual const QString argsAsString() const;
00425
00428 virtual const QString displayString() const;
00429
00433 virtual bool folderRemoved(KMFolder* aFolder, KMFolder* aNewFolder);
00434
00435 protected:
00436 QPointer<KMFolder> mFolder;
00437 QString mFolderName;
00438 };
00439
00440
00441
00442
00443
00444
00445
00446
00461 class KMFilterActionWithAddress : public KMFilterActionWithString
00462 {
00463 public:
00466 KMFilterActionWithAddress(const char* aName, const QString &aLabel);
00467
00470 virtual QWidget* createParamWidget(QWidget* parent) const;
00471
00475 virtual void applyParamWidgetValue(QWidget* paramWidget);
00476
00479 virtual void setParamWidgetValue(QWidget* paramWidget) const;
00480
00483 virtual void clearParamWidget(QWidget* paramWidget) const;
00484 };
00485
00486
00487
00488
00489
00490
00491
00492
00512 class KMFilterActionWithUrl : public KMFilterAction
00513 {
00514 public:
00517 KMFilterActionWithUrl(const char* aName, const QString &aLabel);
00518 ~KMFilterActionWithUrl();
00523 virtual bool isEmpty() const { return mParameter.trimmed().isEmpty(); }
00524
00527 virtual QWidget* createParamWidget(QWidget* parent) const;
00528
00532 virtual void applyParamWidgetValue(QWidget* paramWidget);
00533
00536 virtual void setParamWidgetValue(QWidget* paramWidget) const;
00537
00540 virtual void clearParamWidget(QWidget* paramWidget) const;
00541
00543 virtual void argsFromString(const QString &argsStr);
00544
00546 virtual const QString argsAsString() const;
00547
00550 virtual const QString displayString() const;
00551
00552 protected:
00553 QString mParameter;
00554 };
00555
00556
00557 class KMFilterActionWithCommand : public KMFilterActionWithUrl
00558 {
00559 public:
00562 KMFilterActionWithCommand(const char* aName, const QString &aLabel);
00563
00566 virtual QWidget* createParamWidget(QWidget* parent) const;
00567
00571 virtual void applyParamWidgetValue(QWidget* paramWidget);
00572
00575 virtual void setParamWidgetValue(QWidget* paramWidget) const;
00576
00579 virtual void clearParamWidget(QWidget* paramWidget) const;
00580
00586 virtual QString substituteCommandLineArgsFor( KMMessage *aMsg, QList<KTemporaryFile*> & aTempFileList ) const;
00587
00588 virtual ReturnCode genericProcess( KMMessage * aMsg, bool filtering ) const;
00589 };
00590
00591
00592
00593 class KMFilterActionWithTest : public KMFilterAction
00594 {
00595 public:
00598 KMFilterActionWithTest(const char* aName, const QString &aLabel);
00599 ~KMFilterActionWithTest();
00604 virtual bool isEmpty() const { return mParameter.trimmed().isEmpty(); }
00605
00608 virtual QWidget* createParamWidget(QWidget* parent) const;
00609
00613 virtual void applyParamWidgetValue(QWidget* paramWidget);
00614
00617 virtual void setParamWidgetValue(QWidget* paramWidget) const;
00618
00621 virtual void clearParamWidget(QWidget* paramWidget) const;
00622
00624 virtual void argsFromString(const QString &argsStr);
00625
00627 virtual const QString argsAsString() const;
00628
00631 virtual const QString displayString() const;
00632
00633 protected:
00634 QString mParameter;
00635 };
00636
00637
00638 typedef KMFilterAction* (*KMFilterActionNewFunc)(void);
00639
00640
00641
00643 struct KMFilterActionDesc
00644 {
00645 QString label, name;
00646 KMFilterActionNewFunc create;
00647 };
00648
00671 class KMFilterActionDict : public QMultiHash<QString, KMFilterActionDesc*>
00672 {
00673 public:
00674 KMFilterActionDict();
00675 virtual ~KMFilterActionDict();
00676
00684 void insert(KMFilterActionNewFunc aNewFunc);
00685
00688 const QList<KMFilterActionDesc*>& list() const { return mList; }
00689
00690 protected:
00693 virtual void init(void);
00694
00695 private:
00696 QList<KMFilterActionDesc*> mList;
00697 };
00698
00699 #endif