author | eilers <eilers> | 2002-11-01 15:10:42 (UTC) |
---|---|---|
committer | eilers <eilers> | 2002-11-01 15:10:42 (UTC) |
commit | 28b70b2b7f8fa03ba0991fb73dccf7b46e5c3d1f (patch) (unidiff) | |
tree | d5ead4aa63aed345ce406c7857ba1ec7813272db /libopie2/opiepim/backend/ocontactaccessbackend_xml.h | |
parent | a098735b8749ead08c658792cc31f95e73045107 (diff) | |
download | opie-28b70b2b7f8fa03ba0991fb73dccf7b46e5c3d1f.zip opie-28b70b2b7f8fa03ba0991fb73dccf7b46e5c3d1f.tar.gz opie-28b70b2b7f8fa03ba0991fb73dccf7b46e5c3d1f.tar.bz2 |
Added regExp-search in database for all fields in a contact.
Diffstat (limited to 'libopie2/opiepim/backend/ocontactaccessbackend_xml.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opiepim/backend/ocontactaccessbackend_xml.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_xml.h b/libopie2/opiepim/backend/ocontactaccessbackend_xml.h index 12a75ba..f7e8207 100644 --- a/libopie2/opiepim/backend/ocontactaccessbackend_xml.h +++ b/libopie2/opiepim/backend/ocontactaccessbackend_xml.h | |||
@@ -1,43 +1,46 @@ | |||
1 | /* | 1 | /* |
2 | * XML Backend for the OPIE-Contact Database. | 2 | * XML Backend for the OPIE-Contact Database. |
3 | * | 3 | * |
4 | * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) | 4 | * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) |
5 | * | 5 | * |
6 | * ===================================================================== | 6 | * ===================================================================== |
7 | *This program is free software; you can redistribute it and/or | 7 | *This program is free software; you can redistribute it and/or |
8 | *modify it under the terms of the GNU Library General Public | 8 | *modify it under the terms of the GNU Library General Public |
9 | * License as published by the Free Software Foundation; either | 9 | * License as published by the Free Software Foundation; either |
10 | * version 2 of the License, or (at your option) any later version. | 10 | * version 2 of the License, or (at your option) any later version. |
11 | * ===================================================================== | 11 | * ===================================================================== |
12 | * ToDo: XML-Backend: Automatic reload if something was changed... | 12 | * ToDo: XML-Backend: Automatic reload if something was changed... |
13 | * | 13 | * |
14 | * | 14 | * |
15 | * ===================================================================== | 15 | * ===================================================================== |
16 | * Version: $Id$ | 16 | * Version: $Id$ |
17 | * ===================================================================== | 17 | * ===================================================================== |
18 | * History: | 18 | * History: |
19 | * $Log$ | 19 | * $Log$ |
20 | * Revision 1.5 2002/11/01 15:10:42 eilers | ||
21 | * Added regExp-search in database for all fields in a contact. | ||
22 | * | ||
20 | * Revision 1.4 2002/10/16 10:52:40 eilers | 23 | * Revision 1.4 2002/10/16 10:52:40 eilers |
21 | * Added some docu to the interface and now using the cache infrastucture by zecke.. :) | 24 | * Added some docu to the interface and now using the cache infrastucture by zecke.. :) |
22 | * | 25 | * |
23 | * Revision 1.3 2002/10/14 16:21:54 eilers | 26 | * Revision 1.3 2002/10/14 16:21:54 eilers |
24 | * Some minor interface updates | 27 | * Some minor interface updates |
25 | * | 28 | * |
26 | * Revision 1.2 2002/10/07 17:34:24 eilers | 29 | * Revision 1.2 2002/10/07 17:34:24 eilers |
27 | * added OBackendFactory for advanced backend access | 30 | * added OBackendFactory for advanced backend access |
28 | * | 31 | * |
29 | * Revision 1.1 2002/09/27 17:11:44 eilers | 32 | * Revision 1.1 2002/09/27 17:11:44 eilers |
30 | * Added API for accessing the Contact-Database ! It is compiling, but | 33 | * Added API for accessing the Contact-Database ! It is compiling, but |
31 | * please do not expect that anything is working ! | 34 | * please do not expect that anything is working ! |
32 | * I will debug that stuff in the next time .. | 35 | * I will debug that stuff in the next time .. |
33 | * Please read README_COMPILE for compiling ! | 36 | * Please read README_COMPILE for compiling ! |
34 | * | 37 | * |
35 | * | 38 | * |
36 | */ | 39 | */ |
37 | 40 | ||
38 | #ifndef _OContactAccessBackend_XML_ | 41 | #ifndef _OContactAccessBackend_XML_ |
39 | #define _OContactAccessBackend_XML_ | 42 | #define _OContactAccessBackend_XML_ |
40 | 43 | ||
41 | #include <qasciidict.h> | 44 | #include <qasciidict.h> |
42 | #include <qdatetime.h> | 45 | #include <qdatetime.h> |
43 | #include <qfile.h> | 46 | #include <qfile.h> |
@@ -233,48 +236,65 @@ class OContactAccessBackend_XML : public OContactAccessBackend { | |||
233 | case OContactAccess::ExactMatch:{ | 236 | case OContactAccess::ExactMatch:{ |
234 | if (settings & OContactAccess::IgnoreCase){ | 237 | if (settings & OContactAccess::IgnoreCase){ |
235 | if ( query.field(i).upper() != | 238 | if ( query.field(i).upper() != |
236 | (*it).field(i).upper() ) | 239 | (*it).field(i).upper() ) |
237 | allcorrect = false; | 240 | allcorrect = false; |
238 | }else{ | 241 | }else{ |
239 | if ( query.field(i) != (*it).field(i) ) | 242 | if ( query.field(i) != (*it).field(i) ) |
240 | allcorrect = false; | 243 | allcorrect = false; |
241 | } | 244 | } |
242 | } | 245 | } |
243 | break; | 246 | break; |
244 | } | 247 | } |
245 | } | 248 | } |
246 | } | 249 | } |
247 | if ( allcorrect ){ | 250 | if ( allcorrect ){ |
248 | m_currentQuery[arraycounter++] = (*it).uid(); | 251 | m_currentQuery[arraycounter++] = (*it).uid(); |
249 | } | 252 | } |
250 | } | 253 | } |
251 | 254 | ||
252 | // Shrink to fit.. | 255 | // Shrink to fit.. |
253 | m_currentQuery.resize(arraycounter); | 256 | m_currentQuery.resize(arraycounter); |
254 | 257 | ||
255 | return m_currentQuery; | 258 | return m_currentQuery; |
256 | } | 259 | } |
260 | |||
261 | QArray<int> matchRegexp( const QRegExp &r ) const{ | ||
262 | QArray<int> m_currentQuery( m_contactList.count() ); | ||
263 | QValueListConstIterator<OContact> it; | ||
264 | uint arraycounter = 0; | ||
265 | |||
266 | for( it = m_contactList.begin(); it != m_contactList.end(); ++it ){ | ||
267 | if ( (*it).match( r ) ){ | ||
268 | m_currentQuery[arraycounter++] = (*it).uid(); | ||
269 | } | ||
270 | |||
271 | } | ||
272 | // Shrink to fit.. | ||
273 | m_currentQuery.resize(arraycounter); | ||
274 | |||
275 | return m_currentQuery; | ||
276 | } | ||
257 | 277 | ||
258 | const uint querySettings() | 278 | const uint querySettings() |
259 | { | 279 | { |
260 | return ( OContactAccess::WildCards | 280 | return ( OContactAccess::WildCards |
261 | & OContactAccess::IgnoreCase | 281 | & OContactAccess::IgnoreCase |
262 | & OContactAccess::RegExp | 282 | & OContactAccess::RegExp |
263 | & OContactAccess::ExactMatch ); | 283 | & OContactAccess::ExactMatch ); |
264 | } | 284 | } |
265 | 285 | ||
266 | bool hasQuerySettings (uint querySettings) const | 286 | bool hasQuerySettings (uint querySettings) const |
267 | { | 287 | { |
268 | /* OContactAccess::IgnoreCase may be added with one | 288 | /* OContactAccess::IgnoreCase may be added with one |
269 | * of the other settings, but never used alone. | 289 | * of the other settings, but never used alone. |
270 | * The other settings are just valid alone... | 290 | * The other settings are just valid alone... |
271 | */ | 291 | */ |
272 | switch ( querySettings & ~OContactAccess::IgnoreCase ){ | 292 | switch ( querySettings & ~OContactAccess::IgnoreCase ){ |
273 | case OContactAccess::RegExp: | 293 | case OContactAccess::RegExp: |
274 | return ( true ); | 294 | return ( true ); |
275 | case OContactAccess::WildCards: | 295 | case OContactAccess::WildCards: |
276 | return ( true ); | 296 | return ( true ); |
277 | case OContactAccess::ExactMatch: | 297 | case OContactAccess::ExactMatch: |
278 | return ( true ); | 298 | return ( true ); |
279 | default: | 299 | default: |
280 | return ( false ); | 300 | return ( false ); |