00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef afilter_h
00032 #define afilter_h
00033
00034 #include <qstring.h>
00035 #include <qvaluelist.h>
00036 #include <qdatetime.h>
00037 #include "ananasglobal.h"
00038
00039 ANANAS_EXPORT enum OperationEnum{
00040 OperationEnumEquals,
00041 OperationEnumNotEquals,
00042 OperationEnumGreaterThen,
00043 OperationEnumLessThen,
00044 OperationEnumGreaterOrEquals,
00045 OperationEnumLessOrEquals,
00046 OperationEnumLike
00047 };
00048
00049 class ANANAS_EXPORT aFilter
00050 {
00051 public:
00052 aFilter();
00053 virtual ~aFilter();
00054 void Dump() const;
00055
00056 void Add(const QString& fname, const char* value, OperationEnum op, bool AndOp = true, bool replace = true);
00057 void Add(const QString& fname, const Q_INT64 value, OperationEnum op, bool AndOp = true, bool replace = true);
00058 void Add(const QString& fname, const int value, OperationEnum op, bool AndOp = true, bool replace = true);
00059 void Add(const QString& fname, const double value, OperationEnum op, bool AndOp = true, bool replace = true);
00060
00061 void Add(const QString& fname, const QString& value, OperationEnum op, bool AndOp = true, bool replace = true);
00062 void Add(const QString& fname, const QDateTime& value, OperationEnum op, bool AndOp = true, bool replace = true);
00063 void Add(const QString& fname, const QDate& value, OperationEnum op, bool AndOp = true, bool replace = true);
00064 QString toString(bool removeFirst = true) const;
00065 void Clear();
00066 protected:
00067 void AddHelper(const QString& fname, const QString& value, OperationEnum op, bool And, bool replace);
00068 QString Escape(const QString& val);
00069 private:
00070 struct filterCondition
00071 {
00072 QString fname;
00073 QString value;
00074 QString operation;
00075 QString AndOr;
00076 }f;
00077
00078 QValueList<filterCondition> conditions;
00079 };
00080
00081 #endif