kmail Library API Documentation

kmfilteraction.h

00001 /* Mail Filter Action: a filter action has one method that processes the
00002  * given mail message.
00003  *
00004  * Author: Stefan Taferner <taferner@kde.org>
00005  * This code is under GPL
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 // class KMFilterAction
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 // class KMFilterActionWithNone
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 // class KMFilterActionWithString
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 // class KMFilterActionWithUOID
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 // class KMFilterActionWithStringList
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 // class KMFilterActionWithFolder
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 
00400   virtual const QString displayString() const;
00401 
00402 
00406   virtual bool folderRemoved(KMFolder* aFolder, KMFolder* aNewFolder);
00407 
00408 protected:
00409   QGuardedPtr<KMFolder> mFolder;
00410   QString mFolderName;
00411 };
00412 
00413 //=========================================================
00414 //
00415 // class KMFilterActionWithAddress
00416 //
00417 //=========================================================
00418 
00419 
00434 class KMFilterActionWithAddress : public KMFilterActionWithString
00435 {
00436 public:
00439   KMFilterActionWithAddress(const char* aName, const QString aLabel);
00440 
00443   virtual QWidget* createParamWidget(QWidget* parent) const;
00444 
00448   virtual void applyParamWidgetValue(QWidget* paramWidget);
00449 
00452   virtual void setParamWidgetValue(QWidget* paramWidget) const;
00453 
00456   virtual void clearParamWidget(QWidget* paramWidget) const;
00457 };
00458 
00459 //=========================================================
00460 //
00461 // class KMFilterActionWithCommand
00462 //
00463 //=========================================================
00464 
00465 
00485 class KMFilterActionWithUrl : public KMFilterAction
00486 {
00487 public:
00490     KMFilterActionWithUrl(const char* aName, const QString aLabel);
00491     ~KMFilterActionWithUrl();
00496   virtual bool isEmpty() const { return mParameter.stripWhiteSpace().isEmpty(); }
00497 
00500   virtual QWidget* createParamWidget(QWidget* parent) const;
00501 
00505   virtual void applyParamWidgetValue(QWidget* paramWidget);
00506 
00509   virtual void setParamWidgetValue(QWidget* paramWidget) const;
00510 
00513   virtual void clearParamWidget(QWidget* paramWidget) const;
00514 
00516   virtual void argsFromString(const QString argsStr);
00517 
00519   virtual const QString argsAsString() const;
00520 
00521 protected:
00522   QString mParameter;
00523 };
00524 
00525 
00526 class KMFilterActionWithCommand : public KMFilterActionWithUrl
00527 {
00528 public:
00531   KMFilterActionWithCommand(const char* aName, const QString aLabel);
00532 
00535   virtual QWidget* createParamWidget(QWidget* parent) const;
00536 
00540   virtual void applyParamWidgetValue(QWidget* paramWidget);
00541 
00544   virtual void setParamWidgetValue(QWidget* paramWidget) const;
00545 
00548   virtual void clearParamWidget(QWidget* paramWidget) const;
00549 
00555   virtual QString substituteCommandLineArgsFor( KMMessage *aMsg, QPtrList<KTempFile> & aTempFileList  ) const;
00556 
00557   virtual ReturnCode genericProcess( KMMessage * aMsg, bool filtering ) const;
00558 };
00559 
00560 
00561 
00562 class KMFilterActionWithTest : public KMFilterAction
00563 {
00564 public:
00567   KMFilterActionWithTest(const char* aName, const QString aLabel);
00568     ~KMFilterActionWithTest();
00573   virtual bool isEmpty() const { return mParameter.stripWhiteSpace().isEmpty(); }
00574 
00577   virtual QWidget* createParamWidget(QWidget* parent) const;
00578 
00582   virtual void applyParamWidgetValue(QWidget* paramWidget);
00583 
00586   virtual void setParamWidgetValue(QWidget* paramWidget) const;
00587 
00590   virtual void clearParamWidget(QWidget* paramWidget) const;
00591 
00593   virtual void argsFromString(const QString argsStr);
00594 
00596   virtual const QString argsAsString() const;
00597 
00598 protected:
00599   QString mParameter;
00600 };
00601 
00602 
00603 typedef KMFilterAction* (*KMFilterActionNewFunc)(void);
00604 
00605 
00606 //-----------------------------------------------------------------------------
00608 struct KMFilterActionDesc
00609 {
00610   QString label, name;
00611   KMFilterActionNewFunc create;
00612 };
00613 
00636 class KMFilterActionDict: public QDict<KMFilterActionDesc>
00637 {
00638 public:
00639   KMFilterActionDict();
00640 
00648   void insert(KMFilterActionNewFunc aNewFunc);
00649 
00652   const QPtrList<KMFilterActionDesc>& list() const { return mList; }
00653 
00654 protected:
00657   virtual void init(void);
00658 
00659 private:
00660   QPtrList<KMFilterActionDesc> mList;
00661 };
00662 
00663 #endif /*kmfilteraction_h*/
KDE Logo
This file is part of the documentation for kmail Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Aug 2 09:55:11 2007 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003