phonebookengines/contactsmodel/cntsrv/src/CCntFileManagerMsgHandler.cpp
changeset 31 2a11b5b00470
parent 24 0ba2181d7c28
child 46 efe85016a067
equal deleted inserted replaced
27:de1630741fbe 31:2a11b5b00470
    54 	ECntDatabaseExists,
    54 	ECntDatabaseExists,
    55 	ECntListDatabases,
    55 	ECntListDatabases,
    56 	ECntGetDatabaseReady,
    56 	ECntGetDatabaseReady,
    57 	ECntFetchTemplateIds,
    57 	ECntFetchTemplateIds,
    58 	ECntFetchGroupIdLists,
    58 	ECntFetchGroupIdLists,
    59 	ECntSearchResultIdLists,
    59 	ECntSearchResultList,
    60 	ECntFilesSize,
    60 	ECntFilesSize,
    61 	ECntGetDefinitionsForExistingView
    61 	ECntGetDefinitionsForExistingView
    62 	};
    62 	};
    63 
    63 
    64 CCntFileManagerMsgHandler* CCntFileManagerMsgHandler::NewLC(CCntSession& aSession)
    64 CCntFileManagerMsgHandler* CCntFileManagerMsgHandler::NewLC(CCntSession& aSession)
   395     HBufC* searchQuery = HBufC::NewLC(KSqlQueryMaxLen);
   395     HBufC* searchQuery = HBufC::NewLC(KSqlQueryMaxLen);
   396     TPtr searchQueryPtr(searchQuery->Des());
   396     TPtr searchQueryPtr(searchQuery->Des());
   397     aMessage.ReadL(1, searchQueryPtr);
   397     aMessage.ReadL(1, searchQueryPtr);
   398     
   398     
   399     CheckForManagerL();
   399     CheckForManagerL();
   400     CContactIdArray* arrayPtr = iManager->GetPersistenceLayer().ContactProperties().SearchIdListL(searchQuery->Des());
   400 
   401     CleanupStack::PushL(arrayPtr);
   401     CBufSeg* buffer = iManager->GetPersistenceLayer().ContactProperties().DetailsListL(searchQuery->Des());
   402 	TPtr8 cntIDBuff = iPackager.PackL(*arrayPtr); 
   402     if (aMessage.GetDesMaxLength(0) >= buffer->Size())
   403     TInt length = cntIDBuff.Length();
   403         {
   404 	CleanupStack::PopAndDestroy(); //arrayPtr
   404         TInt offset = 0;
   405     CleanupStack::PopAndDestroy(); //searchQuery
   405         while (offset < buffer->Size())
   406 	
   406             {
   407     // Write data if client buffer is large enough otherwise return the
   407             TPtr8 ptr = buffer->Ptr(offset);
   408     // required buffer size.
   408             aMessage.WriteL(0, ptr, offset);
   409     if(aMessage.GetDesMaxLength(0) >= length)
   409             offset += ptr.Size();
   410         { 
   410             }
   411         aMessage.WriteL(0, cntIDBuff); 
       
   412         aMessage.Complete(KErrNone);
   411         aMessage.Complete(KErrNone);
   413         }
   412         }
   414     else
   413     else
   415         { 
   414         {
   416         aMessage.Complete(length);  
   415         aMessage.Complete(buffer->Size());
   417         }
   416         }
   418 	
   417 
   419 	
   418     delete buffer;
       
   419     CleanupStack::PopAndDestroy(); //searchQuery
   420     }
   420     }
   421     
   421     
   422 
   422 
   423 void CCntFileManagerMsgHandler::GetDefinitionsForExistingViewL(const RMessage2& aMessage)
   423 void CCntFileManagerMsgHandler::GetDefinitionsForExistingViewL(const RMessage2& aMessage)
   424 	{
   424 	{
   425 	DefinitionsOfExistingViewsL(aMessage);
   425 	DefinitionsOfExistingViewsL(aMessage);
   426 	}
   426 	}
   427 
   427 
       
   428 
   428 void CCntFileManagerMsgHandler::FilesSizeL(const RMessage2& aMessage)
   429 void CCntFileManagerMsgHandler::FilesSizeL(const RMessage2& aMessage)
   429 	{
   430 	{
   430 	CheckForManagerL();
   431 	CheckForManagerL();
   431 	aMessage.Complete(iManager->FileSizeL());
   432 	aMessage.Complete(iManager->FileSizeL());
   432 	}
   433 	}