serviceproviders/sapi_landmarks/src/clandmarkobserver.cpp
changeset 26 5d0ec8b709be
parent 5 989d2f495d90
equal deleted inserted replaced
23:50974a8b132e 26:5d0ec8b709be
    20 #include <liwgenericparam.h>
    20 #include <liwgenericparam.h>
    21 #include <liwcommon.h>
    21 #include <liwcommon.h>
    22 #include "clandmarkobserver.h"
    22 #include "clandmarkobserver.h"
    23 #include "clandmarkiterable.h"
    23 #include "clandmarkiterable.h"
    24 #include "clandmarkcategoryiterable.h"
    24 #include "clandmarkcategoryiterable.h"
       
    25 #include "clandmarkmanagehandlers.h"
    25 #include "landmarkinterface.h"
    26 #include "landmarkinterface.h"
    26 #include "landmarkliwparams.hrh"
    27 #include "landmarkliwparams.hrh"
    27 #include "../../inc/serviceerrno.h"
    28 #include "../../inc/serviceerrno.h"
    28 
    29 
    29 // ============================ MEMBER FUNCTIONS ===============================
    30 // ============================ MEMBER FUNCTIONS ===============================
    47 CLandmarkObserver::CLandmarkObserver( CLandmarkInterface* aLmIface )
    48 CLandmarkObserver::CLandmarkObserver( CLandmarkInterface* aLmIface )
    48 									: iLmIface(aLmIface)
    49 									: iLmIface(aLmIface)
    49     {
    50     {
    50     }
    51     }
    51 
    52 
       
    53 CLandmarkObserver::~CLandmarkObserver()
       
    54 	{
       
    55 	delete iId;
       
    56 	}
    52 // -----------------------------------------------------------------------------
    57 // -----------------------------------------------------------------------------
    53 // CLandmarkObserver::HandleCategoryItems( CPosLmItemIterator* aIterator, 
    58 // CLandmarkObserver::HandleCategoryItems( CPosLmItemIterator* aIterator, 
    54 // 		TInt32 aTransactionId, TInt aError, const TDesC aDatabaseUri )
    59 // 		TInt32 aTransactionId, TInt aError, const TDesC aDatabaseUri )
    55 // Pack the outputs and call the callback function.
    60 // Pack the outputs and call the callback function.
    56 // -----------------------------------------------------------------------------
    61 // -----------------------------------------------------------------------------
    57 //
    62 //
    58 void CLandmarkObserver::HandleLandmarkItemsL( CPosLmItemIterator* aIterator, 
    63 void CLandmarkObserver::HandleLandmarkItemsL( CPosLmItemIterator* aIterator, 
    59 		TInt32 aTransactionId, TInt aError, const TDesC& aDatabaseUri )
    64 		TInt32 aTransactionId, TInt aError, CLandmarkHandler* aHandler )
    60     {
    65     {
    61     TInt SapiErr = SErrNone;
    66     TInt SapiErr = SErrNone;
    62     //retrieve callback
    67     //retrieve callback
    63     MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId);
    68     MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId);
    64     if( !callback )
    69     if( !callback )
    79         callback->HandleNotifyL(aTransactionId,KLiwEventError,*eventParamList,*inParamList);
    84         callback->HandleNotifyL(aTransactionId,KLiwEventError,*eventParamList,*inParamList);
    80         }
    85         }
    81     else
    86     else
    82     	{
    87     	{
    83     	//instantiate CLandmarkIterable
    88     	//instantiate CLandmarkIterable
    84         CLiwIterable* iterable = CLandmarkIterable::NewL(aIterator,aDatabaseUri);
    89     	TPtrC dbUri;
    85         CleanupClosePushL(*iterable);
    90     	aHandler->GetDatabaseUri (dbUri );
       
    91     	CLandmarkIterable* iterable = CLandmarkIterable::NewL(aIterator,dbUri);
       
    92         iterable->PushL();
    86         //pack to aOutParamList
    93         //pack to aOutParamList
       
    94         iterable->SetHandler(aHandler);
    87         eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr)));
    95         eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr)));
    88         eventParamList->AppendL(TLiwGenericParam(KReturnValue,TLiwVariant(iterable)));
    96         eventParamList->AppendL(TLiwGenericParam(KReturnValue,TLiwVariant(iterable)));
    89         callback->HandleNotifyL(aTransactionId,KLiwEventCompleted,*eventParamList,*inParamList);
    97         callback->HandleNotifyL(aTransactionId,KLiwEventCompleted,*eventParamList,*inParamList);
    90         CleanupStack::PopAndDestroy(iterable);
    98         CleanupStack::PopAndDestroy(iterable);
    91     	}
    99     	}
    98 // 		TInt32 aTransactionId, TInt aError, const TDesC aDatabaseUri  )
   106 // 		TInt32 aTransactionId, TInt aError, const TDesC aDatabaseUri  )
    99 // Pack the outputs and call the callback function.
   107 // Pack the outputs and call the callback function.
   100 // -----------------------------------------------------------------------------
   108 // -----------------------------------------------------------------------------
   101 //
   109 //
   102 void CLandmarkObserver::HandleCategoryItemsL( CPosLmItemIterator* aIterator, 
   110 void CLandmarkObserver::HandleCategoryItemsL( CPosLmItemIterator* aIterator, 
   103 		TInt32 aTransactionId, TInt aError, const TDesC& aDatabaseUri )
   111 		TInt32 aTransactionId, TInt aError, CLandmarkHandler* aHandler )
   104     {
   112     {
   105     TInt SapiErr = SErrNone;
   113     TInt SapiErr = SErrNone;
   106     //retrieve callback
   114     //retrieve callback
   107     MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId);
   115     MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId);
   108     if( !callback )
   116     if( !callback )
   123         callback->HandleNotifyL(aTransactionId,KLiwEventError,*eventParamList,*inParamList);
   131         callback->HandleNotifyL(aTransactionId,KLiwEventError,*eventParamList,*inParamList);
   124         }
   132         }
   125     else
   133     else
   126     	{
   134     	{
   127     	//instantiate CLandmarkIterable
   135     	//instantiate CLandmarkIterable
   128         CLiwIterable* iterable = CLandmarkCategoryIterable::NewL(aIterator,aDatabaseUri);
   136     	TPtrC dbUri;
   129         CleanupClosePushL(*iterable);
   137         aHandler->GetDatabaseUri (dbUri );
       
   138         CLandmarkCategoryIterable* iterable = CLandmarkCategoryIterable::NewL(aIterator,dbUri);
       
   139         iterable->PushL();
   130         //pack to aOutParamList
   140         //pack to aOutParamList
       
   141         iterable->SetHandler(aHandler);
   131         eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr)));
   142         eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr)));
   132         eventParamList->AppendL(TLiwGenericParam(KReturnValue,TLiwVariant(iterable)));
   143         eventParamList->AppendL(TLiwGenericParam(KReturnValue,TLiwVariant(iterable)));
   133         callback->HandleNotifyL(aTransactionId,KLiwEventCompleted,*eventParamList,*inParamList);
   144         callback->HandleNotifyL(aTransactionId,KLiwEventCompleted,*eventParamList,*inParamList);
   134         CleanupStack::PopAndDestroy(iterable);
   145         CleanupStack::PopAndDestroy(iterable);
   135     	}
   146     	}
   136     CleanupStack::PopAndDestroy(inParamList);
   147     CleanupStack::PopAndDestroy(inParamList);
   137     CleanupStack::PopAndDestroy(eventParamList);
   148     CleanupStack::PopAndDestroy(eventParamList);
   138     }
   149     }
   139 
   150 
       
   151 void CLandmarkObserver::HandleAddItemsL(TPosLmItemId aId,
       
   152 		TInt32 aTransactionId, TInt aError)
       
   153 	{
       
   154 	if (iId)
       
   155 		{
       
   156 		delete iId;
       
   157 		iId = NULL;
       
   158 		}
       
   159 	TInt SapiErr = SErrNone;
       
   160 	//retrieve callback
       
   161 	MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId);
       
   162 	if (!callback)
       
   163 		{
       
   164 		//how to flag error
       
   165 		return;
       
   166 		}
       
   167 	//Create param list
       
   168 	CLiwGenericParamList* eventParamList = CLiwGenericParamList::NewL();
       
   169 	CleanupStack::PushL(eventParamList);
       
   170 	CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
       
   171 	CleanupStack::PushL(inParamList);
       
   172 
       
   173 	if (aError != KErrNone)
       
   174 		{
       
   175 		SapiErr = iLmIface->SapiError(aError);
       
   176 		eventParamList->AppendL(TLiwGenericParam(KErrorCode, TLiwVariant(
       
   177 				(TInt32) SapiErr)));
       
   178 		callback->HandleNotifyL(aTransactionId, KLiwEventError,
       
   179 				*eventParamList, *inParamList);
       
   180 		}
       
   181 	else
       
   182 		{
       
   183 		iId = HBufC::NewL(KMaxIDStringLength);
       
   184 		iId->Des().Num(aId, EDecimal);
       
   185 		//pack to aOutParamList
       
   186 		eventParamList->AppendL(TLiwGenericParam(KErrorCode, TLiwVariant(
       
   187 				(TInt32) SapiErr)));
       
   188 		eventParamList->AppendL(TLiwGenericParam(KReturnValue, TLiwVariant(iId)));
       
   189 		callback->HandleNotifyL(aTransactionId, KLiwEventCompleted,
       
   190 				*eventParamList, *inParamList);
       
   191 		}
       
   192 	CleanupStack::PopAndDestroy(inParamList);
       
   193 	CleanupStack::PopAndDestroy(eventParamList);
       
   194 	}
       
   195 
       
   196 void CLandmarkObserver::HandleItemsL(TInt32 aTransactionId, TInt aError)
       
   197 	{
       
   198 	TInt SapiErr = SErrNone;
       
   199 	//retrieve callback
       
   200 	MLiwNotifyCallback* callback = iLmIface->Callback(aTransactionId);
       
   201 	if (!callback)
       
   202 		{
       
   203 		//how to flag error
       
   204 		return;
       
   205 		}
       
   206 	//Create param list
       
   207 	CLiwGenericParamList* eventParamList = CLiwGenericParamList::NewL();
       
   208 	CleanupStack::PushL(eventParamList);
       
   209 	CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
       
   210 	CleanupStack::PushL(inParamList);
       
   211 
       
   212 	if (aError != KErrNone)
       
   213 		{
       
   214 		SapiErr = iLmIface->SapiError(aError);
       
   215 		eventParamList->AppendL(TLiwGenericParam(KErrorCode, TLiwVariant(
       
   216 				(TInt32) SapiErr)));
       
   217 		callback->HandleNotifyL(aTransactionId, KLiwEventError,
       
   218 				*eventParamList, *inParamList);
       
   219 		}
       
   220 	else
       
   221 		{
       
   222 		//pack to aOutParamList
       
   223 		eventParamList->AppendL(TLiwGenericParam(KErrorCode, TLiwVariant(
       
   224 				(TInt32) SapiErr)));
       
   225 		callback->HandleNotifyL(aTransactionId, KLiwEventCompleted,
       
   226 				*eventParamList, *inParamList);
       
   227 		}
       
   228 	CleanupStack::PopAndDestroy(inParamList);
       
   229 	CleanupStack::PopAndDestroy(eventParamList);
       
   230 	}
   140 //End of file
   231 //End of file