![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2005 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: selectionFilters.h,v $ $Revision: 1.9 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef SELECTIONFITLERS_H_ 00013 #define SELECTIONFITLERS_H_ 00014 00015 #include "ngutil/entityMapperKey.h" 00016 #include "ngutil/dtqlist.h" 00017 #include "symbolMapper/modelData.h" 00018 00019 #include <QtCore/QVector> 00020 00021 class DtTMMapArea; 00022 00023 #include "tmqt/tmqtDefines.h" 00024 class DT_DLL_tmqt DtFilter 00025 { 00026 public: 00027 DtFilter(); 00028 DtFilter(const QString& name); 00029 DtFilter(const DtFilter& filter); 00030 virtual ~DtFilter(); 00031 00032 virtual DtFilter* clone() const = 0; 00033 virtual bool isValid(const DtModelData*) = 0; 00034 00035 virtual const QString& name() const; 00036 void setName(const QString&); 00037 00039 virtual int indexOf(const DtModelData*) { return -1; }; 00040 00043 virtual bool checkIfChanged(int flags) const { return false; }; 00044 00045 protected: 00046 QString myName; 00047 }; 00048 00049 class DT_DLL_tmqt DtModelKeyFilter : public DtFilter 00050 { 00051 public: 00052 DtModelKeyFilter(const QString& name, const QVector<DtModelKey>&); 00053 DtModelKeyFilter(const DtModelKeyFilter& filter); 00054 virtual ~DtModelKeyFilter(); 00055 00056 virtual DtFilter* clone() const; 00057 virtual bool isValid(const DtModelData*); 00058 00059 const QVector<DtModelKey>& keys() const { return myKeys; }; 00060 void setModelKeys(const QVector<DtModelKey>& k) { myKeys = k; }; 00061 00062 virtual int indexOf(const DtModelData*); 00063 00064 protected: 00065 QVector<DtModelKey> myKeys; 00066 }; 00067 00068 class DT_DLL_tmqt DtObjectFilter : public DtFilter 00069 { 00070 public: 00071 DtObjectFilter(); 00072 DtObjectFilter(const DtEntityMapperKey& key); 00073 DtObjectFilter(const QString& name, const DtEntityMapperKey& key); 00074 DtObjectFilter(const DtObjectFilter& filter); 00075 virtual ~DtObjectFilter(); 00076 00077 const DtEntityMapperKey& key() const; 00078 void setKey(const DtEntityMapperKey&); 00079 00080 protected: 00081 virtual DtFilter* clone() const; 00082 virtual bool isValid(const DtModelData*); 00083 virtual bool checkIfChanged(int flags) const; 00084 00085 protected: 00086 DtEntityMapperKey myKey; 00087 }; 00088 00089 class DT_DLL_tmqt DtNotObjectFilter : public DtObjectFilter 00090 { 00091 public: 00092 DtNotObjectFilter(); 00093 DtNotObjectFilter(const DtEntityMapperKey& key); 00094 DtNotObjectFilter(const QString& name, const DtEntityMapperKey& key); 00095 DtNotObjectFilter(const DtNotObjectFilter& filter); 00096 00097 virtual ~DtNotObjectFilter(); 00098 00099 void setNotFilter(const DtFilter& f); 00100 void clearNotFilter(); 00101 00102 protected: 00103 virtual DtFilter* clone() const; 00104 virtual bool isValid(const DtModelData*); 00105 virtual bool checkIfChanged(int flags) const; 00106 00107 protected: 00108 DtEntityMapperKey myKey; 00109 DtFilter* myNotFilter; 00110 }; 00111 00112 class DT_DLL_tmqt DtKindLessThanFilter : public DtObjectFilter 00113 { 00114 public: 00115 DtKindLessThanFilter(const DtEntityMapperKey& key); 00116 DtKindLessThanFilter(const QString& name, const DtEntityMapperKey& key); 00117 DtKindLessThanFilter(const DtKindLessThanFilter& filter); 00118 virtual ~DtKindLessThanFilter(); 00119 00120 protected: 00121 virtual DtFilter* clone() const; 00122 virtual bool isValid(const DtModelData*); 00123 }; 00124 00125 class DT_DLL_tmqt DtMatchAnyFilter : public DtFilter 00126 { 00127 public: 00128 DtMatchAnyFilter(); 00129 DtMatchAnyFilter(const QString& name); 00130 DtMatchAnyFilter(const DtMatchAnyFilter& filter); 00131 virtual ~DtMatchAnyFilter(); 00132 00133 virtual void addKey(const DtEntityMapperKey& key); 00134 00135 protected: 00136 virtual DtFilter* clone() const; 00137 virtual bool isValid(const DtModelData*); 00138 virtual bool checkIfChanged(int flags) const; 00139 00140 protected: 00141 QList<DtEntityMapperKey> myMatches; 00142 }; 00143 00144 class DT_DLL_tmqt DtOrFilter : public DtFilter 00145 { 00146 public: 00147 DtOrFilter(); 00148 DtOrFilter(const QString& name); 00149 DtOrFilter(const DtOrFilter& filter); 00150 virtual ~DtOrFilter(); 00151 00152 virtual void addFilter(DtFilter* filter); 00153 virtual void addFilter(const DtFilter& filter); 00154 00155 void clearFilters(); 00156 virtual bool checkIfChanged(int flags) const; 00157 00158 protected: 00159 virtual DtFilter* clone() const; 00160 virtual bool isValid(const DtModelData*); 00161 00162 protected: 00163 DtPtrQList<DtFilter*> myFilters; 00164 }; 00165 00166 class DT_DLL_tmqt DtAndFilter : public DtOrFilter 00167 { 00168 public: 00169 DtAndFilter(); 00170 DtAndFilter(const QString& name); 00171 DtAndFilter(const DtAndFilter& filter); 00172 virtual ~DtAndFilter(); 00173 00174 protected: 00175 virtual DtFilter* clone() const; 00176 virtual bool isValid(const DtModelData*); 00177 }; 00178 00180 class DT_DLL_tmqt DtMapSelectionFilter : public DtFilter 00181 { 00182 public: 00183 DtMapSelectionFilter(const QString& name, const DtTMMapArea* map); 00184 DtMapSelectionFilter(const DtMapSelectionFilter& filter); 00185 virtual ~DtMapSelectionFilter(); 00186 00187 virtual DtFilter* clone() const; 00188 virtual bool isValid(const DtModelData*); 00189 00190 protected: 00191 const DtTMMapArea* myMapArea; 00192 }; 00193 00194 inline const DtEntityMapperKey& DtObjectFilter::key() const 00195 { 00196 return myKey; 00197 } 00198 00199 inline void DtObjectFilter::setKey(const DtEntityMapperKey& key) 00200 { 00201 myKey = key; 00202 } 00203 00204 inline void DtFilter::setName(const QString& name) 00205 { 00206 myName = name; 00207 } 00208 00209 inline void DtOrFilter::clearFilters() 00210 { 00211 myFilters.clear(); 00212 } 00213 00214 #endif