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.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Aug 27 12:52:30 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003