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 
00401   virtual bool folderRemoved(KMFolder* aFolder, KMFolder* aNewFolder);
00402 
00403 protected:
00404   QGuardedPtr<KMFolder> mFolder;
00405   QString mFolderName;
00406 };
00407 
00408 //=========================================================
00409 //
00410 // class KMFilterActionWithAddress
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 // class KMFilterActionWithCommand
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 /*kmfilteraction_h*/
KDE Logo
This file is part of the documentation for kmail Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat May 1 11:37:25 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003