summaryrefslogtreecommitdiff
path: root/libopie2/opiepim
Unidiff
Diffstat (limited to 'libopie2/opiepim') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend.h7
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_xml.h20
-rw-r--r--libopie2/opiepim/core/ocontactaccess.cpp8
-rw-r--r--libopie2/opiepim/core/ocontactaccess.h8
-rw-r--r--libopie2/opiepim/ocontact.h4
5 files changed, 43 insertions, 4 deletions
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend.h b/libopie2/opiepim/backend/ocontactaccessbackend.h
index a651477..c898f61 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend.h
+++ b/libopie2/opiepim/backend/ocontactaccessbackend.h
@@ -19,6 +19,9 @@
19 * ===================================================================== 19 * =====================================================================
20 * History: 20 * History:
21 * $Log$ 21 * $Log$
22 * Revision 1.3 2002/11/01 15:10:42 eilers
23 * Added regExp-search in database for all fields in a contact.
24 *
22 * Revision 1.2 2002/10/07 17:34:24 eilers 25 * Revision 1.2 2002/10/07 17:34:24 eilers
23 * added OBackendFactory for advanced backend access 26 * added OBackendFactory for advanced backend access
24 * 27 *
@@ -38,6 +41,8 @@
38#include "ocontact.h" 41#include "ocontact.h"
39#include "opimaccessbackend.h" 42#include "opimaccessbackend.h"
40 43
44#include "qregexp.h"
45
41class OContactAccessBackend: public OPimAccessBackend<OContact> { 46class OContactAccessBackend: public OPimAccessBackend<OContact> {
42 public: 47 public:
43 OContactAccessBackend() {} 48 OContactAccessBackend() {}
@@ -58,6 +63,8 @@ class OContactAccessBackend: public OPimAccessBackend<OContact> {
58 */ 63 */
59 virtual bool wasChangedExternally() = 0; 64 virtual bool wasChangedExternally() = 0;
60 65
66 virtual QArray<int> matchRegexp( const QRegExp &r ) const = 0;
67
61 /** Return all possible settings. 68 /** Return all possible settings.
62 * @return All settings provided by the current backend 69 * @return All settings provided by the current backend
63 * (i.e.: query_WildCards & query_IgnoreCase) 70 * (i.e.: query_WildCards & query_IgnoreCase)
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
@@ -17,6 +17,9 @@
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 *
@@ -254,6 +257,23 @@ class OContactAccessBackend_XML : public OContactAccessBackend {
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 {
diff --git a/libopie2/opiepim/core/ocontactaccess.cpp b/libopie2/opiepim/core/ocontactaccess.cpp
index 2ca0283..f868b53 100644
--- a/libopie2/opiepim/core/ocontactaccess.cpp
+++ b/libopie2/opiepim/core/ocontactaccess.cpp
@@ -21,6 +21,9 @@
21 * ===================================================================== 21 * =====================================================================
22 * History: 22 * History:
23 * $Log$ 23 * $Log$
24 * Revision 1.6 2002/11/01 15:10:42 eilers
25 * Added regExp-search in database for all fields in a contact.
26 *
24 * Revision 1.5 2002/10/16 10:52:40 eilers 27 * Revision 1.5 2002/10/16 10:52:40 eilers
25 * Added some docu to the interface and now using the cache infrastucture by zecke.. :) 28 * Added some docu to the interface and now using the cache infrastucture by zecke.. :)
26 * 29 *
@@ -120,6 +123,11 @@ bool OContactAccess::save ()
120 return true; 123 return true;
121} 124}
122 125
126ORecordList<OContact> OContactAccess::matchRegexp( const QRegExp &r ) const{
127 QArray<int> matchingContacts = m_backEnd -> matchRegexp( r );
128 return ( ORecordList<OContact>(matchingContacts, this) );
129}
130
123const uint OContactAccess::querySettings() 131const uint OContactAccess::querySettings()
124{ 132{
125 return ( m_backEnd->querySettings() ); 133 return ( m_backEnd->querySettings() );
diff --git a/libopie2/opiepim/core/ocontactaccess.h b/libopie2/opiepim/core/ocontactaccess.h
index da9c942..b4921d5 100644
--- a/libopie2/opiepim/core/ocontactaccess.h
+++ b/libopie2/opiepim/core/ocontactaccess.h
@@ -17,6 +17,9 @@
17 * ===================================================================== 17 * =====================================================================
18 * History: 18 * History:
19 * $Log$ 19 * $Log$
20 * Revision 1.4 2002/11/01 15:10:42 eilers
21 * Added regExp-search in database for all fields in a contact.
22 *
20 * Revision 1.3 2002/10/16 10:52:40 eilers 23 * Revision 1.3 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 *
@@ -48,6 +51,7 @@
48/** Class to access the contacts database. 51/** Class to access the contacts database.
49 * This is just a frontend for the real database handling which is 52 * This is just a frontend for the real database handling which is
50 * done by the backend. 53 * done by the backend.
54 * @see OPimAccessTemplate
51 */ 55 */
52class OContactAccess: public QObject, public OPimAccessTemplate<OContact> 56class OContactAccess: public QObject, public OPimAccessTemplate<OContact>
53{ 57{
@@ -81,8 +85,12 @@ class OContactAccess: public QObject, public OPimAccessTemplate<OContact>
81 IgnoreCase = 0x0002, 85 IgnoreCase = 0x0002,
82 RegExp = 0x0004, 86 RegExp = 0x0004,
83 ExactMatch = 0x0008, 87 ExactMatch = 0x0008,
88 MatchOne = 0x0010 // Only one Entry must match
84 }; 89 };
85 90
91
92 ORecordList<OContact> matchRegexp( const QRegExp &r )const;
93
86 /** Return all possible settings. 94 /** Return all possible settings.
87 * @return All settings provided by the current backend 95 * @return All settings provided by the current backend
88 * (i.e.: query_WildCards & query_IgnoreCase) 96 * (i.e.: query_WildCards & query_IgnoreCase)
diff --git a/libopie2/opiepim/ocontact.h b/libopie2/opiepim/ocontact.h
index 382ab94..038a59f 100644
--- a/libopie2/opiepim/ocontact.h
+++ b/libopie2/opiepim/ocontact.h
@@ -107,11 +107,7 @@ public:
107 void setNotes( const QString &v ) { replace( Qtopia::Notes, v); } 107 void setNotes( const QString &v ) { replace( Qtopia::Notes, v); }
108 108
109 bool match( const QString &regexp ) const; 109 bool match( const QString &regexp ) const;
110
111// DON'T ATTEMPT TO USE THIS
112#ifdef QTOPIA_INTERNAL_CONTACT_MRE
113 bool match( const QRegExp &regexp ) const; 110 bool match( const QRegExp &regexp ) const;
114#endif
115 111
116// // custom 112// // custom
117// void setCustomField( const QString &key, const QString &v ) 113// void setCustomField( const QString &key, const QString &v )