serviceproviders/sapi_landmarks/src/clandmarkobserver.cpp
changeset 26 5d0ec8b709be
parent 5 989d2f495d90
--- a/serviceproviders/sapi_landmarks/src/clandmarkobserver.cpp	Tue Nov 24 08:56:33 2009 +0200
+++ b/serviceproviders/sapi_landmarks/src/clandmarkobserver.cpp	Thu Dec 17 09:09:50 2009 +0200
@@ -22,6 +22,7 @@
 #include "clandmarkobserver.h"
 #include "clandmarkiterable.h"
 #include "clandmarkcategoryiterable.h"
+#include "clandmarkmanagehandlers.h"
 #include "landmarkinterface.h"
 #include "landmarkliwparams.hrh"
 #include "../../inc/serviceerrno.h"
@@ -49,6 +50,10 @@
     {
     }
 
+CLandmarkObserver::~CLandmarkObserver()
+	{
+	delete iId;
+	}
 // -----------------------------------------------------------------------------
 // CLandmarkObserver::HandleCategoryItems( CPosLmItemIterator* aIterator, 
 // 		TInt32 aTransactionId, TInt aError, const TDesC aDatabaseUri )
@@ -56,7 +61,54 @@
 // -----------------------------------------------------------------------------
 //
 void CLandmarkObserver::HandleLandmarkItemsL( CPosLmItemIterator* aIterator, 
-		TInt32 aTransactionId, TInt aError, const TDesC& aDatabaseUri )
+		TInt32 aTransactionId, TInt aError, CLandmarkHandler* aHandler )
+    {
+    TInt SapiErr = SErrNone;
+    //retrieve callback
+    MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId);
+    if( !callback )
+    	{
+    	//how to flag error
+    	return;
+    	}
+    //Create param list
+    CLiwGenericParamList* eventParamList = CLiwGenericParamList::NewL();
+    CleanupStack::PushL(eventParamList);
+    CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
+    CleanupStack::PushL(inParamList);
+    
+    if ( aError != KErrNone )
+        {
+        SapiErr = iLmIface->SapiError(aError);
+        eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr)));
+        callback->HandleNotifyL(aTransactionId,KLiwEventError,*eventParamList,*inParamList);
+        }
+    else
+    	{
+    	//instantiate CLandmarkIterable
+    	TPtrC dbUri;
+    	aHandler->GetDatabaseUri (dbUri );
+    	CLandmarkIterable* iterable = CLandmarkIterable::NewL(aIterator,dbUri);
+        iterable->PushL();
+        //pack to aOutParamList
+        iterable->SetHandler(aHandler);
+        eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr)));
+        eventParamList->AppendL(TLiwGenericParam(KReturnValue,TLiwVariant(iterable)));
+        callback->HandleNotifyL(aTransactionId,KLiwEventCompleted,*eventParamList,*inParamList);
+        CleanupStack::PopAndDestroy(iterable);
+    	}
+    CleanupStack::PopAndDestroy(inParamList);
+    CleanupStack::PopAndDestroy(eventParamList);
+    }
+
+// -----------------------------------------------------------------------------
+// CLandmarkObserver::HandleCategoryItems( CPosLmItemIterator* aIterator, 
+// 		TInt32 aTransactionId, TInt aError, const TDesC aDatabaseUri  )
+// Pack the outputs and call the callback function.
+// -----------------------------------------------------------------------------
+//
+void CLandmarkObserver::HandleCategoryItemsL( CPosLmItemIterator* aIterator, 
+		TInt32 aTransactionId, TInt aError, CLandmarkHandler* aHandler )
     {
     TInt SapiErr = SErrNone;
     //retrieve callback
@@ -81,9 +133,12 @@
     else
     	{
     	//instantiate CLandmarkIterable
-        CLiwIterable* iterable = CLandmarkIterable::NewL(aIterator,aDatabaseUri);
-        CleanupClosePushL(*iterable);
+    	TPtrC dbUri;
+        aHandler->GetDatabaseUri (dbUri );
+        CLandmarkCategoryIterable* iterable = CLandmarkCategoryIterable::NewL(aIterator,dbUri);
+        iterable->PushL();
         //pack to aOutParamList
+        iterable->SetHandler(aHandler);
         eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr)));
         eventParamList->AppendL(TLiwGenericParam(KReturnValue,TLiwVariant(iterable)));
         callback->HandleNotifyL(aTransactionId,KLiwEventCompleted,*eventParamList,*inParamList);
@@ -93,48 +148,84 @@
     CleanupStack::PopAndDestroy(eventParamList);
     }
 
-// -----------------------------------------------------------------------------
-// CLandmarkObserver::HandleCategoryItems( CPosLmItemIterator* aIterator, 
-// 		TInt32 aTransactionId, TInt aError, const TDesC aDatabaseUri  )
-// Pack the outputs and call the callback function.
-// -----------------------------------------------------------------------------
-//
-void CLandmarkObserver::HandleCategoryItemsL( CPosLmItemIterator* aIterator, 
-		TInt32 aTransactionId, TInt aError, const TDesC& aDatabaseUri )
-    {
-    TInt SapiErr = SErrNone;
-    //retrieve callback
-    MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId);
-    if( !callback )
-    	{
-    	//how to flag error
-    	return;
-    	}
-    //Create param list
-    CLiwGenericParamList* eventParamList = CLiwGenericParamList::NewL();
-    CleanupStack::PushL(eventParamList);
-    CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
-    CleanupStack::PushL(inParamList);
-    
-    if ( aError != KErrNone )
-        {
-        SapiErr = iLmIface->SapiError(aError);
-        eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr)));
-        callback->HandleNotifyL(aTransactionId,KLiwEventError,*eventParamList,*inParamList);
-        }
-    else
-    	{
-    	//instantiate CLandmarkIterable
-        CLiwIterable* iterable = CLandmarkCategoryIterable::NewL(aIterator,aDatabaseUri);
-        CleanupClosePushL(*iterable);
-        //pack to aOutParamList
-        eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr)));
-        eventParamList->AppendL(TLiwGenericParam(KReturnValue,TLiwVariant(iterable)));
-        callback->HandleNotifyL(aTransactionId,KLiwEventCompleted,*eventParamList,*inParamList);
-        CleanupStack::PopAndDestroy(iterable);
-    	}
-    CleanupStack::PopAndDestroy(inParamList);
-    CleanupStack::PopAndDestroy(eventParamList);
-    }
+void CLandmarkObserver::HandleAddItemsL(TPosLmItemId aId,
+		TInt32 aTransactionId, TInt aError)
+	{
+	if (iId)
+		{
+		delete iId;
+		iId = NULL;
+		}
+	TInt SapiErr = SErrNone;
+	//retrieve callback
+	MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId);
+	if (!callback)
+		{
+		//how to flag error
+		return;
+		}
+	//Create param list
+	CLiwGenericParamList* eventParamList = CLiwGenericParamList::NewL();
+	CleanupStack::PushL(eventParamList);
+	CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
+	CleanupStack::PushL(inParamList);
 
+	if (aError != KErrNone)
+		{
+		SapiErr = iLmIface->SapiError(aError);
+		eventParamList->AppendL(TLiwGenericParam(KErrorCode, TLiwVariant(
+				(TInt32) SapiErr)));
+		callback->HandleNotifyL(aTransactionId, KLiwEventError,
+				*eventParamList, *inParamList);
+		}
+	else
+		{
+		iId = HBufC::NewL(KMaxIDStringLength);
+		iId->Des().Num(aId, EDecimal);
+		//pack to aOutParamList
+		eventParamList->AppendL(TLiwGenericParam(KErrorCode, TLiwVariant(
+				(TInt32) SapiErr)));
+		eventParamList->AppendL(TLiwGenericParam(KReturnValue, TLiwVariant(iId)));
+		callback->HandleNotifyL(aTransactionId, KLiwEventCompleted,
+				*eventParamList, *inParamList);
+		}
+	CleanupStack::PopAndDestroy(inParamList);
+	CleanupStack::PopAndDestroy(eventParamList);
+	}
+
+void CLandmarkObserver::HandleItemsL(TInt32 aTransactionId, TInt aError)
+	{
+	TInt SapiErr = SErrNone;
+	//retrieve callback
+	MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId);
+	if (!callback)
+		{
+		//how to flag error
+		return;
+		}
+	//Create param list
+	CLiwGenericParamList* eventParamList = CLiwGenericParamList::NewL();
+	CleanupStack::PushL(eventParamList);
+	CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
+	CleanupStack::PushL(inParamList);
+
+	if (aError != KErrNone)
+		{
+		SapiErr = iLmIface->SapiError(aError);
+		eventParamList->AppendL(TLiwGenericParam(KErrorCode, TLiwVariant(
+				(TInt32) SapiErr)));
+		callback->HandleNotifyL(aTransactionId, KLiwEventError,
+				*eventParamList, *inParamList);
+		}
+	else
+		{
+		//pack to aOutParamList
+		eventParamList->AppendL(TLiwGenericParam(KErrorCode, TLiwVariant(
+				(TInt32) SapiErr)));
+		callback->HandleNotifyL(aTransactionId, KLiwEventCompleted,
+				*eventParamList, *inParamList);
+		}
+	CleanupStack::PopAndDestroy(inParamList);
+	CleanupStack::PopAndDestroy(eventParamList);
+	}
 //End of file