summaryrefslogtreecommitdiff
path: root/libopie2/opiepim/backend/ocontactaccessbackend_xml.h
authoreilers <eilers>2002-11-01 15:10:42 (UTC)
committer eilers <eilers>2002-11-01 15:10:42 (UTC)
commit28b70b2b7f8fa03ba0991fb73dccf7b46e5c3d1f (patch) (unidiff)
treed5ead4aa63aed345ce406c7857ba1ec7813272db /libopie2/opiepim/backend/ocontactaccessbackend_xml.h
parenta098735b8749ead08c658792cc31f95e73045107 (diff)
downloadopie-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.h20
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 );