kmail Library API Documentation

kmsearchpattern.h

00001 // kmsearchpattern.h 00002 // Author: Marc Mutz <Marc@Mutz.com> 00003 // This code is under GPL! 00004 00005 #ifndef _kmsearchpattern_h_ 00006 #define _kmsearchpattern_h_ 00007 00008 #include <qptrlist.h> 00009 #include <qstring.h> 00010 #include <qcstring.h> 00011 #include "kmmsgbase.h" // for KMMsgStatus 00012 00013 class KMMessage; 00014 class KConfig; 00015 class DwBoyerMoore; 00016 class DwString; 00017 00018 00019 // maximum number of filter rules per filter 00020 const int FILTER_MAX_RULES=8; 00021 00029 class KMSearchRule 00030 { 00031 public: 00039 enum Function { FuncContains=0, FuncContainsNot, 00040 FuncEquals, FuncNotEqual, 00041 FuncRegExp, FuncNotRegExp, 00042 FuncIsGreater, FuncIsLessOrEqual, 00043 FuncIsLess, FuncIsGreaterOrEqual }; 00044 KMSearchRule ( const QCString & field=0, Function=FuncContains, 00045 const QString &contents=QString::null ); 00046 KMSearchRule ( const KMSearchRule &other ); 00047 00048 const KMSearchRule & operator=( const KMSearchRule & other ); 00049 00052 static KMSearchRule* createInstance( const QCString & field=0, 00053 Function function=FuncContains, 00054 const QString & contents=QString::null ); 00055 00056 static KMSearchRule* createInstance( const QCString & field, 00057 const char * function, 00058 const QString & contents ); 00059 00060 static KMSearchRule * createInstance( const KMSearchRule & other ); 00061 00067 static KMSearchRule* createInstanceFromConfig( const KConfig * config, int aIdx ); 00068 00069 virtual ~KMSearchRule() {}; 00070 00075 virtual bool matches( const KMMessage * msg ) const = 0; 00076 00081 virtual bool matches( const DwString & str, KMMessage & msg, 00082 const DwBoyerMoore * headerField=0, 00083 int headerLen=-1 ) const; 00084 00089 virtual bool isEmpty() const = 0; 00090 00093 virtual bool requiresBody() const { return true; } 00094 00095 00101 void writeConfig( KConfig * config, int aIdx ) const; 00102 00105 Function function() const { return mFunction; } 00106 00108 void setFunction( Function aFunction ) { mFunction = aFunction; } 00109 00120 QCString field() const { return mField; } 00121 00124 void setField( const QCString & field ) { mField = field; } 00125 00128 QString contents() const { return mContents; } 00130 void setContents( const QString & aContents ) { mContents = aContents; } 00131 00133 #ifndef NDEBUG 00134 const QString asString() const; 00135 #endif 00136 00137 private: 00138 static Function configValueToFunc( const char * str ); 00139 QCString mField; 00140 Function mFunction; 00141 QString mContents; 00142 }; 00143 00144 00145 // subclasses representing the different kinds of searches 00146 00153 class KMSearchRuleString : public KMSearchRule 00154 { 00155 public: 00156 KMSearchRuleString( const QCString & field=0, Function function=FuncContains, 00157 const QString & contents=QString::null ); 00158 KMSearchRuleString( const KMSearchRuleString & other ); 00159 const KMSearchRuleString & operator=( const KMSearchRuleString & other ); 00160 00161 virtual ~KMSearchRuleString(); 00162 virtual bool isEmpty() const ; 00163 virtual bool requiresBody() const; 00164 00165 virtual bool matches( const KMMessage * msg ) const; 00166 00170 virtual bool matches( const DwString & str, KMMessage & msg, 00171 const DwBoyerMoore * headerField=0, 00172 int headerLen=-1 ) const; 00173 00175 bool matchesInternal( const QString & msgContents ) const; 00176 00177 private: 00178 const DwBoyerMoore *mBmHeaderField; 00179 }; 00180 00181 00188 class KMSearchRuleNumerical : public KMSearchRule 00189 { 00190 public: 00191 KMSearchRuleNumerical( const QCString & field=0, Function function=FuncContains, 00192 const QString & contents=QString::null ); 00193 virtual bool isEmpty() const ; 00194 00195 virtual bool matches( const KMMessage * msg ) const; 00196 00198 bool matchesInternal( unsigned long numericalValue, 00199 unsigned long numericalMsgContents, 00200 const QString & msgContents ) const; 00201 }; 00202 00203 00210 class KMSearchRuleStatus : public KMSearchRule 00211 { 00212 public: 00213 KMSearchRuleStatus( const QCString & field=0, Function function=FuncContains, 00214 const QString & contents=QString::null ); 00215 virtual bool isEmpty() const ; 00216 virtual bool matches( const KMMessage * msg ) const; 00217 //Not possible to implement this form for status searching 00218 virtual bool matches( const DwString &, KMMessage &, 00219 const DwBoyerMoore *, 00220 int ) const; 00221 private: 00222 KMMsgStatus mStatus; 00223 }; 00224 00225 // ------------------------------------------------------------------------ 00226 00246 class KMSearchPattern : public QPtrList<KMSearchRule> 00247 { 00248 00249 public: 00254 enum Operator { OpAnd, OpOr }; 00263 KMSearchPattern( const KConfig * config=0 ); 00264 00266 ~KMSearchPattern(); 00267 00277 bool matches( const KMMessage * msg ) const; 00278 bool matches( const DwString & str ) const; 00279 bool matches( Q_UINT32 sernum ) const; 00280 00283 bool requiresBody() const; 00284 00290 void purify(); 00291 00305 void readConfig( const KConfig * config ); 00312 void writeConfig( KConfig * config ) const; 00313 00315 QString name() const { return mName; } 00318 void setName( const QString & newName ) { mName = newName ; } 00319 00321 KMSearchPattern::Operator op() const { return mOperator; } 00323 void setOp( KMSearchPattern::Operator aOp ) { mOperator = aOp; } 00324 00326 #ifndef NDEBUG 00327 QString asString() const; 00328 #endif 00329 00331 const KMSearchPattern & operator=( const KMSearchPattern & aPattern ); 00332 00333 private: 00340 void importLegacyConfig( const KConfig * config ); 00343 void init(); 00344 00345 QString mName; 00346 Operator mOperator; 00347 }; 00348 00349 #endif /* _kmsearchpattern_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 Wed Jul 28 23:58:03 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003