qtcontactsmobility/plugins/contacts/symbian/src/filtering/cntsymbiansrvconnection.cpp
changeset 46 efe85016a067
parent 31 2a11b5b00470
--- a/qtcontactsmobility/plugins/contacts/symbian/src/filtering/cntsymbiansrvconnection.cpp	Fri Jun 11 13:29:23 2010 +0300
+++ b/qtcontactsmobility/plugins/contacts/symbian/src/filtering/cntsymbiansrvconnection.cpp	Wed Jun 23 18:02:44 2010 +0300
@@ -51,7 +51,7 @@
 
 // Constants
 // To be removed. Should be defined in a header file
-#define KCntSearchResultList 99
+
 #define KCntOpenDataBase 100 // = KCapabilityReadUserData
 
 _LIT(KCntServerExe,"CNTSRV.EXE");   // Name of the exe for the Contacts server.
@@ -101,12 +101,30 @@
 {
     QList<QContactLocalId> list;
     TPtrC queryPtr(reinterpret_cast<const TUint16*>(sqlQuery.utf16()));
-    TRAPD(err, list = searchContactIdsL(queryPtr));
+    TRAPD(err, list = searchContactIdsL(queryPtr, CntSymbianSrvConnection::CntSearchResultList));
     CntSymbianTransformError::transformError(err, error);
     return list;
 }
 
 /*!
+ * Query the SQL database
+ * 
+ * \a sqlQuery An SQL query
+ * a QueryType query type
+ * \a error On return, contains the possible error.
+ * \return the list of matched contact ids
+ */
+QList<QContactLocalId> CntSymbianSrvConnection::searchOnServer(const QString& sqlQuery,
+                                                                QueryType aQueryType,
+                                                                QContactManager::Error* error)
+{
+    QList<QContactLocalId> list;
+    TPtrC queryPtr(reinterpret_cast<const TUint16*>(sqlQuery.utf16()));
+    TRAPD(err, list = searchContactIdsL(queryPtr, aQueryType));
+        CntSymbianTransformError::transformError(err, error);
+    return list;
+}
+/*!
  * Fetches all contact names from the database. If there are more than 3000 contacts,
  * only the first (by id) 3000 contacts will be fetched due to RAM restrictions.
  * 
@@ -153,9 +171,9 @@
  * \a aSqlQuery An SQL query
  * \return the list of matched contact ids
  */
-QList<QContactLocalId> CntSymbianSrvConnection::searchContactIdsL(const TDesC& aSqlQuery)
+QList<QContactLocalId> CntSymbianSrvConnection::searchContactIdsL(const TDesC& aSqlQuery, QueryType aQueryType)
 {
-    readContactsToBufferL(aSqlQuery);
+    readContactsToBufferL(aSqlQuery, aQueryType);
 
     RBufReadStream readStream;
     QList<QContactLocalId> list;
@@ -177,7 +195,7 @@
  */
 QList<QContact> CntSymbianSrvConnection::searchContactNamesL(const TDesC& aSqlQuery)
 {
-    readContactsToBufferL(aSqlQuery);
+    readContactsToBufferL(aSqlQuery, CntSymbianSrvConnection::CntSearchResultList);
 
     RBufReadStream readStream;
     QList<QContact> contacts;
@@ -230,7 +248,7 @@
  * \a id database id of the contact
  * \return the list of matched contact names
  */
-void CntSymbianSrvConnection::readContactsToBufferL(const TDesC& sqlQuery)
+void CntSymbianSrvConnection::readContactsToBufferL(const TDesC& sqlQuery, QueryType aQueryType)
 {
     // Initialize connection if it is not initialized yet.
     if (!m_isInitialized) {
@@ -242,12 +260,12 @@
     TIpcArgs args;
     args.Set(0, &GetReceivingBufferL());
     args.Set(1, &sqlQuery);
-    TInt newBuffSize = SendReceive(KCntSearchResultList, args);
+    TInt newBuffSize = SendReceive(aQueryType, args);
     User::LeaveIfError(newBuffSize);
     if (newBuffSize > 0) {
         args.Set(0, &GetReceivingBufferL(newBuffSize));
         args.Set(1, &sqlQuery);
-        User::LeaveIfError(SendReceive(KCntSearchResultList, args));
+        User::LeaveIfError(SendReceive(aQueryType, args));
     }
 }