--- 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