--- a/serviceproviders/sapi_landmarks/src/landmarkinterface.cpp Tue Nov 24 08:56:33 2009 +0200
+++ b/serviceproviders/sapi_landmarks/src/landmarkinterface.cpp Thu Dec 17 09:09:50 2009 +0200
@@ -295,66 +295,53 @@
User::Leave (SErrInvalidServiceArgument );
}
- if ( !aCmdName.CompareF(KCancel) && (KLiwOptCancel & aCmdOptions) )
- {
- Cancel (aInParamList, aOutParamList, aCmdOptions, aCallback );
- }
- else
- if ( !aCmdName.CompareF(KGetList) )
- {
- GetListL (aInParamList, aOutParamList, aCmdOptions, aCallback );
- }
- else
- //since no other APIs support async return error if callback is
- //provide
- if ( aCallback )
- {
- iErrMsg = KAsyncNotSupported().AllocL ( );
- User::Leave (SErrInvalidServiceArgument );
- }
- else
- if ( !aCmdName.CompareF(KAdd) )
- {
- AddL (aInParamList, aOutParamList, aCmdOptions, aCallback );
- }
- else
- if ( !aCmdName.CompareF(KRemove) )
- {
- RemoveL (aInParamList, aOutParamList, aCmdOptions,
- aCallback );
- }
- else
- if ( !aCmdName.CompareF(KOrganise) )
- {
- OrganiseL (aInParamList, aOutParamList,
- aCmdOptions, aCallback );
- }
- else
- if ( !aCmdName.CompareF(KImport) )
- {
- ImportL (aInParamList, aOutParamList,
- aCmdOptions, aCallback );
- }
- else
- if ( !aCmdName.CompareF(KExport) )
- {
- ExportL (aInParamList, aOutParamList,
- aCmdOptions, aCallback );
- }
- else
- if ( !aCmdName.CompareF(KNew) )
- {
- NewTemplateL (aInParamList,
- aOutParamList, aCmdOptions,
- aCallback );
- }
- else
- {
- // invalid command return error in outparam list
- iErrMsg = KInvalidServiceCmd().AllocL ( );
- User::Leave (SErrInvalidServiceArgument );
- }
- }
+ if (!aCmdName.CompareF(KCancel) && (KLiwOptCancel & aCmdOptions))
+ {
+ Cancel(aInParamList, aOutParamList, aCmdOptions, aCallback);
+ }
+ else if (!aCmdName.CompareF(KGetList))
+ {
+ GetListL(aInParamList, aOutParamList, aCmdOptions, aCallback);
+ }
+ else if (!aCmdName.CompareF(KAdd))
+ {
+ AddL(aInParamList, aOutParamList, aCmdOptions, aCallback);
+ }
+ else if (!aCmdName.CompareF(KRemove))
+ {
+ RemoveL(aInParamList, aOutParamList, aCmdOptions, aCallback);
+ }
+ else if (!aCmdName.CompareF(KOrganise))
+ {
+ OrganiseL(aInParamList, aOutParamList, aCmdOptions, aCallback);
+ }
+ else if (!aCmdName.CompareF(KImport))
+ {
+ ImportL(aInParamList, aOutParamList, aCmdOptions, aCallback);
+ }
+ else if (!aCmdName.CompareF(KExport))
+ {
+ ExportL(aInParamList, aOutParamList, aCmdOptions, aCallback);
+ }
+ else
+ //since no other APIs support async return error if callback is
+ //provide
+ if (aCallback)
+ {
+ iErrMsg = KAsyncNotSupported().AllocL();
+ User::Leave(SErrInvalidServiceArgument);
+ }
+ else if (!aCmdName.CompareF(KNew))
+ {
+ NewTemplateL(aInParamList, aOutParamList, aCmdOptions, aCallback);
+ }
+ else
+ {
+ // invalid command return error in outparam list
+ iErrMsg = KInvalidServiceCmd().AllocL();
+ User::Leave(SErrInvalidServiceArgument);
+ }
+ }
// ---------------------------------------------------------------------------
// CLandmarkInterface::GetListL(const CLiwGenericParamList& aInParamList,
@@ -437,18 +424,18 @@
// This function calls the appropriate functions based on the content type.
// ---------------------------------------------------------------------------
//
-void CLandmarkInterface::AddL( const CLiwGenericParamList& aInParamList,
- CLiwGenericParamList& aOutParamList, TUint /*aCmdOptions*/,
- MLiwNotifyCallback* /*aCallback*/)
+void CLandmarkInterface::AddL(const CLiwGenericParamList& aInParamList,
+ CLiwGenericParamList& aOutParamList, TUint aCmdOptions,
+ MLiwNotifyCallback* aCallback)
{
- //Input param List must have contentType and data specified
- if ( aInParamList.Count ( )< EIndex2 )
- {
- ErrorMessageL (KAdd, KArgsMissing );
- iErrMsg->Des().Append (KMissing );
- //leave since argument is improper
- User::Leave (SErrMissingArgument );
- }
+ //Input param List must have contentType and data specified
+ if (aInParamList.Count() < EIndex2)
+ {
+ ErrorMessageL(KAdd, KArgsMissing);
+ iErrMsg->Des().Append(KMissing);
+ //leave since argument is improper
+ User::Leave(SErrMissingArgument);
+ }
//position to start search in input params
TInt index = 0;
@@ -471,25 +458,24 @@
ValidateParamL (KAdd, KContentType, variant, LIW::EVariantTypeDesC );
TPtrC contentType(variant.AsDes ( ));
- //Content type is Landmark
- if ( contentType == KLandmark )
- {
- AddLandmarksL (aInParamList,aOutParamList );
- }
- //Content type is Category.
- else
- if ( contentType == KCategory )
- {
- AddCategoryL (aInParamList,aOutParamList );
- }
- else
- {
- ErrorMessageL (KAdd, KContentType );
- iErrMsg->Des().Append (KInvalid );
- //leave since argument is improper
- User::Leave (SErrInvalidServiceArgument );
- }
- }
+ //Content type is Landmark
+ if (contentType == KLandmark)
+ {
+ AddLandmarksL(aInParamList, aOutParamList, aCmdOptions, aCallback);
+ }
+ //Content type is Category.
+ else if (contentType == KCategory)
+ {
+ AddCategoryL(aInParamList, aOutParamList, aCmdOptions, aCallback);
+ }
+ else
+ {
+ ErrorMessageL(KAdd, KContentType);
+ iErrMsg->Des().Append(KInvalid);
+ //leave since argument is improper
+ User::Leave(SErrInvalidServiceArgument);
+ }
+ }
// ---------------------------------------------------------------------------
// CLandmarkInterface::RemoveL(const CLiwGenericParamList& aInParamList,
@@ -499,12 +485,12 @@
// This calls the appropriate service function based on the content type.
// ---------------------------------------------------------------------------
//
-void CLandmarkInterface::RemoveL( const CLiwGenericParamList& aInParamList,
- CLiwGenericParamList& /*aOutParamList*/, TUint /*aCmdOptions*/,
- MLiwNotifyCallback* /*aCallback*/)
- {
+void CLandmarkInterface::RemoveL(const CLiwGenericParamList& aInParamList,
+ CLiwGenericParamList& aOutParamList, TUint /*aCmdOptions*/,
+ MLiwNotifyCallback* aCallback)
+ {
//Input param List must have contentType and data specified
- if ( aInParamList.Count ( )< EIndex2 )
+ if (aInParamList.Count() < EIndex2)
{
ErrorMessageL (KAdd, KArgsMissing );
iErrMsg->Des().Append (KMissing );
@@ -562,14 +548,13 @@
variant = param->Value ( );
ValidateParamL (KRemove, KDataFields, variant, LIW::EVariantTypeMap );
const CLiwMap* landmarkMap = variant.AsMap ( );
- CleanupStack::PushL(
- TCleanupItem( TLiwVariant::VariantCleanup, &variant ) );
- ValidateParamL (KRemove, KId, landmarkMap,
- LIW::EVariantTypeDesC, ETrue, variant );
- TPtrC lmPtr(variant.AsDes ( ));
- TLex lmparseString(lmPtr); //Get Id as string and convert to TUint32
- TPosLmItemId lmid;
- TInt parseErr = lmparseString.Val (lmid, EDecimal );
+ CleanupStack::PushL(TCleanupItem(TLiwVariant::VariantCleanup, &variant));
+ ValidateParamL(KRemove, KId, landmarkMap, LIW::EVariantTypeDesC, ETrue,
+ variant);
+ TPtrC lmPtr(variant.AsDes());
+ TLex lmparseString(lmPtr); //Get Id as string and convert to TUint32
+ TPosLmItemId lmid;
+ TInt parseErr = lmparseString.Val(lmid, EDecimal);
TBuf<KMaxIDStringLength> lmIdString(KNullDesC ( ));
if ( !parseErr )
{
@@ -587,37 +572,53 @@
{
dbUri.Set (variant.AsDes ( ) );
}
- iService->RemoveItemL (lmid, CLandmarkService::ELandmark, dbUri );
+ //Async Call
+ if (aCallback)
+ {
+ //Get the transaction ID
+ TInt32 transactionId(aCallback->GetTransactionID());
+ CLandmarkCallbackMap* map = new (ELeave) CLandmarkCallbackMap(
+ transactionId, aCallback);
+ CleanupStack::PushL(map);
+ iCallbackMap.AppendL(map);
+ CleanupStack::Pop(map);
+ iService->RemoveItemL(transactionId, lmid,
+ CLandmarkService::ELandmark, dbUri);
+ aOutParamList.AppendL(TLiwGenericParam(KTransactionId, TLiwVariant(
+ TInt32(transactionId))));
+ }
+ else //sync call
+ {
+ iService->RemoveItemL(lmid, CLandmarkService::ELandmark, dbUri);
+ }
CleanupStack::PopAndDestroy(&variant);
}
//Content type is Category.
- else
- if ( contentType == KCategory )
- {
- index = 0;
- if ( posBased )
- {
- param = &aInParamList[EIndex1];
- }
- else
- {
- param = aInParamList.FindFirst (index, KDataFields );
- if ( !param )
- {
- ErrorMessageL (KRemove, KDataFields );
- iErrMsg->Des().Append (KMissing );
- //leave since argument is improper
- User::Leave (SErrMissingArgument );
- }
- }
- variant = param->Value ( );
- ValidateParamL (KRemove, KDataFields, variant, LIW::EVariantTypeMap );
- const CLiwMap* categoryMap = variant.AsMap ( );
- CleanupStack::PushL(
- TCleanupItem( TLiwVariant::VariantCleanup, &variant ) );
- ValidateParamL (KRemove, KId, categoryMap,
- LIW::EVariantTypeDesC, ETrue, variant );
- TPtrC catPtr(variant.AsDes ( ));
+ else if (contentType == KCategory)
+ {
+ index = 0;
+ if (posBased)
+ {
+ param = &aInParamList[EIndex1];
+ }
+ else
+ {
+ param = aInParamList.FindFirst(index, KDataFields);
+ if (!param)
+ {
+ ErrorMessageL(KRemove, KDataFields);
+ iErrMsg->Des().Append(KMissing);
+ //leave since argument is improper
+ User::Leave(SErrMissingArgument);
+ }
+ }
+ variant = param->Value();
+ ValidateParamL(KRemove, KDataFields, variant, LIW::EVariantTypeMap);
+ const CLiwMap* categoryMap = variant.AsMap();
+ CleanupStack::PushL(TCleanupItem(TLiwVariant::VariantCleanup, &variant));
+ ValidateParamL(KRemove, KId, categoryMap, LIW::EVariantTypeDesC, ETrue,
+ variant);
+ TPtrC catPtr(variant.AsDes());
TLex catparseString(catPtr); //Get Id as string and convert to TUint32
TPosLmItemId catid;
TInt parseErr = catparseString.Val (catid, EDecimal );
@@ -638,7 +639,25 @@
{
dbUri.Set (variant.AsDes ( ) );
}
- iService->RemoveItemL (catid, CLandmarkService::ECategory, dbUri );
+ //Async Call
+ if (aCallback)
+ {
+ //Get the transaction ID
+ TInt32 transactionId(aCallback->GetTransactionID());
+ CLandmarkCallbackMap* map = new (ELeave) CLandmarkCallbackMap(
+ transactionId, aCallback);
+ CleanupStack::PushL(map);
+ iCallbackMap.AppendL(map);
+ CleanupStack::Pop(map);
+ iService->RemoveItemL(transactionId, catid,
+ CLandmarkService::ECategory, dbUri);
+ aOutParamList.AppendL(TLiwGenericParam(KTransactionId, TLiwVariant(
+ TInt32(transactionId))));
+ }
+ else //sync call
+ {
+ iService->RemoveItemL(catid, CLandmarkService::ECategory, dbUri);
+ }
CleanupStack::PopAndDestroy(&variant);
}
else
@@ -660,7 +679,7 @@
//
void CLandmarkInterface::ImportL( const CLiwGenericParamList& aInParamList,
CLiwGenericParamList& aOutParamList, TUint /*aCmdOptions*/,
- MLiwNotifyCallback* /*aCallback*/)
+ MLiwNotifyCallback* aCallback)
{
//Input param List must have contentType and importData specified
if ( aInParamList.Count ( )< EIndex2 )
@@ -758,24 +777,44 @@
{
dbUri.Set (variant.AsDes ( ) );
}
- CPosLmItemIterator* iterator= NULL;
- //call the service function for import
- iService->ImportL (iterator, *parser, dbUri );
- CleanupStack::PopAndDestroy (parser );
+ //Async Call
+ if (aCallback)
+ {
+ //Get the transaction ID
+ TInt32 transactionId(aCallback->GetTransactionID());
+ CLandmarkCallbackMap* map = new (ELeave) CLandmarkCallbackMap(
+ transactionId, aCallback);
+ CleanupStack::PushL(map);
+ iCallbackMap.AppendL(map);
+ CleanupStack::Pop(map);
+ iService->ImportL(transactionId, *parser, dbUri);
+ aOutParamList.AppendL(TLiwGenericParam(KTransactionId, TLiwVariant(
+ TInt32(transactionId))));
+ CleanupStack::Pop (parser );
+ }
+ else //sync call
+ {
+ CPosLmItemIterator* iterator= NULL;
+ //call the service function for import
+ iService->ImportL (iterator, *parser, dbUri );
+ CleanupStack::PushL(iterator);
+ // if dbURI is not specified retrieve default databse URI
+ if ( dbUri == KNullDesC )
+ {
+ iService->GetDefaultDbUriL (dbUri );
+ }
+ //instantiate CLandmarkIterable
+ CLiwIterable* iterable = CLandmarkIterable::NewL (iterator, dbUri );
+ CleanupStack::Pop(iterator);
+ CleanupClosePushL(*iterable);
+ aOutParamList.AppendL (TLiwGenericParam (KReturnValue,
+ TLiwVariant (iterable ) ) );
+ CleanupStack::PopAndDestroy(iterable);
+ CleanupStack::PopAndDestroy (parser );
+ }
+
+
CleanupStack::PopAndDestroy (mimeType8 );
- CleanupStack::PushL(iterator);
- // if dbURI is not specified retrieve default databse URI
- if ( dbUri == KNullDesC )
- {
- iService->GetDefaultDbUriL (dbUri );
- }
- //instantiate CLandmarkIterable
- CLiwIterable* iterable = CLandmarkIterable::NewL (iterator, dbUri );
- CleanupStack::Pop(iterator);
- CleanupClosePushL(*iterable);
- aOutParamList.AppendL (TLiwGenericParam (KReturnValue,
- TLiwVariant (iterable ) ) );
- CleanupStack::PopAndDestroy(iterable);
CleanupStack::PopAndDestroy(&variant);
}
else
@@ -796,8 +835,8 @@
// ---------------------------------------------------------------------------
//
void CLandmarkInterface::ExportL( const CLiwGenericParamList& aInParamList,
- CLiwGenericParamList& /*aOutParamList*/, TUint /*aCmdOptions*/,
- MLiwNotifyCallback* /*aCallback*/)
+ CLiwGenericParamList& aOutParamList, TUint /*aCmdOptions*/,
+ MLiwNotifyCallback* aCallback)
{
//Input param List must have contentType and exportData specified
if ( aInParamList.Count ( )< EIndex2 )
@@ -867,23 +906,7 @@
//leave since argument is improper
User::Leave (SErrInvalidServiceArgument );
}
- ValidateParamL (KExport, KMimeType, exportData, LIW::EVariantTypeDesC,
- ETrue, variant );
- if( variant.AsDes() == KNullDesC )
- {
- ErrorMessageL (KExport, KMimeType );
- iErrMsg->Des().Append (KInvalid );
- //leave since argument is improper
- User::Leave (SErrInvalidServiceArgument );
- }
- //instantiate CPosLandmarkEncoder based on mime type.
- HBufC8* mimeType8 =
- CnvUtfConverter::ConvertFromUnicodeToUtf8L ( variant.AsDes ( ) );
- CleanupStack::PushL( mimeType8 );
- CPosLandmarkEncoder* encoder = CPosLandmarkEncoder::NewL ( *mimeType8 );
- CleanupStack::PushL (encoder );
- CBufBase* exportBuffer = encoder->SetUseOutputBufferL();
- CleanupStack::PushL(exportBuffer);
+
ValidateParamL (KExport, KIdList, exportData,
LIW::EVariantTypeList, ETrue, variant );
const CLiwList* lmList = variant.AsList ( );
@@ -929,29 +952,69 @@
{
dbUri.Set (variant.AsDes ( ) );
}
- iService->ExportL (*encoder, landmarkIdArray, dbUri );
- ExecuteAndDeleteLD (encoder->FinalizeEncodingL ( ) );
- //Write to file
+ ValidateParamL (KExport, KMimeType, exportData, LIW::EVariantTypeDesC,
+ ETrue, variant );
+ if( variant.AsDes() == KNullDesC )
+ {
+ ErrorMessageL (KExport, KMimeType );
+ iErrMsg->Des().Append (KInvalid );
+ //leave since argument is improper
+ User::Leave (SErrInvalidServiceArgument );
+ }
+ //instantiate CPosLandmarkEncoder based on mime type.
+ HBufC8* mimeType8 =
+ CnvUtfConverter::ConvertFromUnicodeToUtf8L ( variant.AsDes ( ) );
+ CleanupStack::PushL( mimeType8 );
+ CPosLandmarkEncoder* encoder = CPosLandmarkEncoder::NewL ( *mimeType8 );
+ CleanupStack::PushL (encoder );
ValidateParamL (KExport, KDestinationFile, exportData,
- LIW::EVariantTypeDesC, ETrue, variant );
- RFs fs;
- User::LeaveIfError(fs.Connect());
- CleanupClosePushL(fs);
- RFile file;
- CleanupClosePushL(file);
- User::LeaveIfError(file.Create(fs, variant.AsDes(),
- EFileShareExclusive | EFileStreamText | EFileWrite));
- TInt size = exportBuffer->Size();
- for( TInt i = 0; i < size; ++i )
- {
- file.Write(i,exportBuffer->Ptr(i));
- }
- CleanupStack::PopAndDestroy(&file);
- CleanupStack::PopAndDestroy(&fs);
- CleanupStack::PopAndDestroy (&landmarkIdArray );
- CleanupStack::PopAndDestroy (exportBuffer);
- CleanupStack::PopAndDestroy (encoder );
- CleanupStack::PopAndDestroy (mimeType8 );
+ LIW::EVariantTypeDesC, ETrue, variant );
+
+
+
+ //Async Call
+ if (aCallback)
+ {
+ //Get the transaction ID
+ TInt32 transactionId(aCallback->GetTransactionID());
+ CLandmarkCallbackMap* map = new (ELeave) CLandmarkCallbackMap(
+ transactionId, aCallback);
+ CleanupStack::PushL(map);
+ iCallbackMap.AppendL(map);
+ CleanupStack::Pop(map);
+ iService->ExportL(transactionId, *encoder, landmarkIdArray,
+ variant.AsDes(), dbUri);
+ CleanupStack::Pop(encoder );
+ aOutParamList.AppendL(TLiwGenericParam(KTransactionId, TLiwVariant(
+ TInt32(transactionId))));
+ }
+ else //sync call
+ {
+ CBufBase* exportBuffer = encoder->SetUseOutputBufferL();
+ CleanupStack::PushL(exportBuffer);
+ iService->ExportL (*encoder, landmarkIdArray, dbUri );
+ ExecuteAndDeleteLD (encoder->FinalizeEncodingL ( ) );
+ //Write to file
+ RFs fs;
+ User::LeaveIfError(fs.Connect());
+ CleanupClosePushL(fs);
+ RFile file;
+ CleanupClosePushL(file);
+ User::LeaveIfError(file.Create(fs, variant.AsDes(),
+ EFileShareExclusive | EFileStreamText | EFileWrite));
+ TInt size = exportBuffer->Size();
+ for( TInt i = 0; i < size; ++i )
+ {
+ file.Write(i,exportBuffer->Ptr(i));
+ }
+ CleanupStack::PopAndDestroy(&file);
+ CleanupStack::PopAndDestroy(&fs);
+ CleanupStack::PopAndDestroy (exportBuffer);
+ CleanupStack::PopAndDestroy (encoder );
+ }
+
+ CleanupStack::PopAndDestroy (mimeType8 );
+ CleanupStack::PopAndDestroy (&landmarkIdArray );
CleanupStack::PopAndDestroy(&variant);
}
else
@@ -971,9 +1034,9 @@
// This calls the appropriate service function for organising landmarks.
// ---------------------------------------------------------------------------
//
-void CLandmarkInterface::OrganiseL( const CLiwGenericParamList& aInParamList,
- CLiwGenericParamList& /*aOutParamList*/, TUint /*aCmdOptions*/,
- MLiwNotifyCallback* /*aCallback*/)
+void CLandmarkInterface::OrganiseL(const CLiwGenericParamList& aInParamList,
+ CLiwGenericParamList& aOutParamList, TUint /*aCmdOptions*/,
+ MLiwNotifyCallback* aCallback)
{
//Input param List must have contentType, filter and operationType specified
if ( aInParamList.Count ( )< EIndex3 )
@@ -1121,23 +1184,50 @@
ValidateParamL (KOrganise, KOperationType, variant,
LIW::EVariantTypeDesC );
TPtrC operationType = variant.AsDes ( );
- if ( operationType == KAssociate )
- {
- iService->LinkCategoryToLandmarksL (catid, landmarkIdArray, dbUri );
- }
- else
- if ( operationType == KDisassociate )
- {
- iService->UnlinkCategoryToLandmarksL (catid, landmarkIdArray,
- dbUri );
- }
- else
- {
- ErrorMessageL (KOrganise, KOperationType );
- iErrMsg->Des().Append (KInvalid );
- //leave since argument is improper
- User::Leave (SErrInvalidServiceArgument );
- }
+ if (operationType != KAssociate && operationType != KDisassociate)
+ {
+ ErrorMessageL(KOrganise, KOperationType);
+ iErrMsg->Des().Append(KInvalid);
+ //leave since argument is improper
+ User::Leave(SErrInvalidServiceArgument);
+ }
+ //Async Call
+ if (aCallback)
+ {
+ //Get the transaction ID
+ TInt32 transactionId(aCallback->GetTransactionID());
+ CLandmarkCallbackMap* map = new (ELeave) CLandmarkCallbackMap(
+ transactionId, aCallback);
+ CleanupStack::PushL(map);
+ iCallbackMap.AppendL(map);
+ CleanupStack::Pop(map);
+ if (operationType == KAssociate)
+ {
+ iService->LinkCategoryToLandmarksL(transactionId, catid,
+ landmarkIdArray, dbUri);
+ }
+ else
+ {
+ iService->UnlinkCategoryToLandmarksL(transactionId, catid,
+ landmarkIdArray, dbUri);
+ }
+ aOutParamList.AppendL(TLiwGenericParam(KTransactionId, TLiwVariant(
+ TInt32(transactionId))));
+ }
+ else //sync call
+ {
+ if (operationType == KAssociate)
+ {
+ iService->LinkCategoryToLandmarksL(catid, landmarkIdArray,
+ dbUri);
+ }
+ else
+ {
+ iService->UnlinkCategoryToLandmarksL(catid, landmarkIdArray,
+ dbUri);
+ }
+ }
+
CleanupStack::PopAndDestroy(&variantDb);
CleanupStack::PopAndDestroy (&landmarkIdArray );
CleanupStack::PopAndDestroy(&variant);
@@ -1395,6 +1485,35 @@
//Do whatever is default
}
}
+ //changes for implementing CJSE 2.1 spec :categoryId
+ if ( ValidateParamL (KGetList, KCategoryIdChanged, filter,
+ LIW::EVariantTypeDesC, EFalse, variant ) )
+ {
+ TPtrC catPtr(variant.AsDes());
+
+ TPosLmItemId catid;
+ TLex catparseString(catPtr); //Get Id as string and convert to TUint32
+ TInt parseErr = catparseString.Val (catid, EDecimal );
+ if (parseErr) {
+ ErrorMessageL (KGetList, KMaximumDistance );
+ iErrMsg->Des().Append (KInvalid );
+ User::Leave (KErrArgument );
+ }
+
+ TBuf<KMaxIDStringLength> catIdString(KNullDesC ( ));
+ if ( !parseErr )
+ {
+ catIdString.Num(catid);
+ }
+ CPosLmCategoryCriteria* crit = CPosLmCategoryCriteria::NewLC();
+ crit->SetCategoryItemId(catid);
+ //add to the criteria
+ //Adding successfully to the criteria will pass the ownership
+ User::LeaveIfError (criteria->AddArgument (crit));
+ CleanupStack::Pop (crit);
+ }
+
+ //CJSE Changes done
if ( ValidateParamL (KGetList, KCategoryName, filter,
LIW::EVariantTypeDesC, EFalse, variant ) )
{
@@ -1932,8 +2051,10 @@
// This calls the appropriate service function for adding landmarks.
// ---------------------------------------------------------------------------
//
-void CLandmarkInterface::AddLandmarksL( const CLiwGenericParamList& aInParamList,
- CLiwGenericParamList& aOutParamList )
+void CLandmarkInterface::AddLandmarksL(
+ const CLiwGenericParamList& aInParamList,
+ CLiwGenericParamList& aOutParamList, TUint /*aCmdOptions*/,
+ MLiwNotifyCallback* aCallback)
{
//position to start search in input params
TInt index = 0;
@@ -2179,25 +2300,49 @@
variant.AsDes ( ) );
}
}
- //checks if the landmark passed is to update an existing lanmark or add a
- //new landmark.
- if ( update )
- {
- iService->UpdateItemL (*landmark, dbUri );
- }
- else
- {
- lmid = iService->AddItemL (*landmark, dbUri );
- }
- CleanupStack::PopAndDestroy (landmark );
- CleanupStack::PopAndDestroy(&variant);
- CleanupStack::PopAndDestroy(&variantDb);
-
- iId = HBufC::NewL(KMaxIDStringLength);
- iId->Des().Num(lmid,EDecimal);
- aOutParamList.AppendL (TLiwGenericParam (KReturnValue,
- TLiwVariant (iId ) ) );
- }
+ //Async Call
+ if (aCallback)
+ {
+ //Get the transaction ID
+ TInt32 transactionId(aCallback->GetTransactionID());
+ CLandmarkCallbackMap* map = new (ELeave) CLandmarkCallbackMap(
+ transactionId, aCallback);
+ CleanupStack::PushL(map);
+ iCallbackMap.AppendL(map);
+ CleanupStack::Pop(map);
+ //checks if the landmark passed is to update an existing lanmark or add a
+ //new landmark.
+ if (update)
+ {
+ iService->UpdateItemL(transactionId, *landmark, dbUri);
+ }
+ else
+ {
+ iService->AddItemL(transactionId, *landmark, dbUri);
+ }
+ aOutParamList.AppendL(TLiwGenericParam(KTransactionId, TLiwVariant(
+ TInt32(transactionId))));
+ }
+ else //sync call
+ {
+ //checks if the landmark passed is to update an existing lanmark or add a
+ //new landmark.
+ if (update)
+ {
+ iService->UpdateItemL(*landmark, dbUri);
+ }
+ else
+ {
+ lmid = iService->AddItemL(*landmark, dbUri);
+ }
+ iId = HBufC::NewL(KMaxIDStringLength);
+ iId->Des().Num(lmid, EDecimal);
+ aOutParamList.AppendL(TLiwGenericParam(KReturnValue, TLiwVariant(iId)));
+ }
+ CleanupStack::PopAndDestroy(landmark);
+ CleanupStack::PopAndDestroy(&variant);
+ CleanupStack::PopAndDestroy(&variantDb);
+ }
// ---------------------------------------------------------------------------
// CLandmarkInterface::AddCategoryL(const CLiwGenericParamList& aInParamList)
@@ -2205,7 +2350,8 @@
// ---------------------------------------------------------------------------
//
void CLandmarkInterface::AddCategoryL(const CLiwGenericParamList& aInParamList,
- CLiwGenericParamList& aOutParamList )
+ CLiwGenericParamList& aOutParamList, TUint /*aCmdOptions*/,
+ MLiwNotifyCallback* aCallback)
{
//position to start search in input params
TInt index = 0;
@@ -2318,6 +2464,31 @@
CleanupStack::PopAndDestroy(&iconVariant);
}
+ //Async Call
+ if (aCallback)
+ {
+ //Get the transaction ID
+ TInt32 transactionId(aCallback->GetTransactionID());
+ CLandmarkCallbackMap* map = new (ELeave) CLandmarkCallbackMap(
+ transactionId, aCallback);
+ CleanupStack::PushL(map);
+ iCallbackMap.AppendL(map);
+ CleanupStack::Pop(map);
+ //checks if the landmark passed is to update an existing lanmark or add a
+ //new landmark.
+ if (update)
+ {
+ iService->UpdateItemL(transactionId, *category, dbUri);
+ }
+ else
+ {
+ iService->AddItemL(transactionId, *category, dbUri);
+ }
+ aOutParamList.AppendL(TLiwGenericParam(KTransactionId, TLiwVariant(
+ TInt32(transactionId))));
+ }
+ else //sync call
+ {
if ( update )
{
iService->UpdateItemL (*category, dbUri );
@@ -2326,15 +2497,15 @@
{
catid = iService->AddItemL (*category, dbUri );
}
+ iId = HBufC::NewL(KMaxIDStringLength);
+ iId->Des().Num(catid, EDecimal);
+ aOutParamList.AppendL(TLiwGenericParam(KReturnValue, TLiwVariant(iId)));
+ }
CleanupStack::PopAndDestroy (category );
CleanupStack::PopAndDestroy(&variant);
CleanupStack::PopAndDestroy(&variantDb);
- iId = HBufC::NewL(KMaxIDStringLength);
- iId->Des().Num(catid,EDecimal);
- aOutParamList.AppendL (TLiwGenericParam (KReturnValue,
- TLiwVariant (iId ) ) );
}
// ---------------------------------------------------------------------------