diff -r 5cc91383ab1e -r 7333d7932ef7 installationservices/swcomponentregistry/source/client/scrclientsubsessions.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/installationservices/swcomponentregistry/source/client/scrclientsubsessions.cpp Tue Aug 31 15:21:33 2010 +0300 @@ -0,0 +1,663 @@ +/* +* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Implementation for the subsessions of RSoftwareComponentRegistry. +* See class and function declarations for more detail. +* +*/ + + +#include "scr.h" +#include "scrclient.inl" +#include "scrcommon.h" +#include "usiflog.h" +#include + +using namespace Usif; + +// +// RSoftwareComponentRegistryView +// + +TInt RSoftwareComponentRegistryView::SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const + { + return CallSubsessionFunction(aFunction, aArgs); + } + +EXPORT_C RSoftwareComponentRegistryView::RSoftwareComponentRegistryView() +/** + This constructor provides a single point of definition from + which the superclass constructor is called. + */ + : RScsClientSubsessionBase() + { + // empty + } + +EXPORT_C void RSoftwareComponentRegistryView::Close() + { + RScsClientSubsessionBase::Close(); + } + +EXPORT_C void RSoftwareComponentRegistryView::OpenViewL(const RSoftwareComponentRegistry& aCompReg, CComponentFilter* aFilter) + { + DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the components view.")); + + Close(); //Close the SubSession before Re-Opening the same. + TInt err = CreateSubsession(aCompReg, ESubSessCreateComponentsView, TIpcArgs()); + if(KErrNone != err) + { + DEBUG_PRINTF2(_L("Failed to create the subsession to the SCR server for the components view (Error:%d)"), err); + User::Leave(err); + } + + RBuf8 buf; + buf.CleanupClosePushL(); + ExternalizeObjectL(aFilter, buf); + + DEBUG_PRINTF(_L("Sending the request to create a component view on the server side.")); + TIpcArgs args(&buf); + User::LeaveIfError(CallSubsessionFunction(EOpenComponentsView, args)); + CleanupStack::PopAndDestroy(&buf); + } + +EXPORT_C CComponentEntry* RSoftwareComponentRegistryView::NextComponentL(TLanguage aLocale) const + { + CComponentEntry* entry = CComponentEntry::NewLC(); + if(!NextComponentL(*entry, aLocale)) + { + CleanupStack::PopAndDestroy(entry); + return NULL; + } + CleanupStack::Pop(entry); + return entry; + } + +EXPORT_C TBool RSoftwareComponentRegistryView::NextComponentL(CComponentEntry& aEntry, TLanguage aLocale) const + { + DEBUG_PRINTF(_L("Sending the request to retrieve the next component from the component view.")); + //To avoid call to NextComponentL before calling OpenViewL + CheckSubSessionHandleL(); + + TIpcArgs args(aLocale); + TInt argNum = 1; + return GetObjectL(*this, aEntry, EGetNextComponentSize, EGetNextComponentData, argNum, args); + } + +EXPORT_C void RSoftwareComponentRegistryView::NextComponentSetL(TInt aMaxCount, RPointerArray& aComponentList, TLanguage aLocale) const + { + DEBUG_PRINTF(_L("Sending the request to retrieve the next set of components from the component view.")); + //To avoid call to NextComponentSetL before calling OpenViewL + CheckSubSessionHandleL(); + + TIpcArgs args(aMaxCount, aLocale); + TInt argNum = 2; + GetObjectArrayL(*this, EGetNextComponentSetSize, EGetNextComponentSetData, argNum, args, aComponentList); + } + +void RSoftwareComponentRegistryView::CheckSubSessionHandleL() const + { + if(KNullHandle == SubSessionHandle()) + { + DEBUG_PRINTF(_L("An invalid handle has been passed.")); + User::Leave(KErrBadHandle); + } + } + +// +// RSoftwareComponentRegistryFilesList +// + +TInt RSoftwareComponentRegistryFilesList::SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const + { + return CallSubsessionFunction(aFunction, aArgs); + } + +EXPORT_C RSoftwareComponentRegistryFilesList::RSoftwareComponentRegistryFilesList() +/** + This constructor provides a single point of definition from + which the superclass constructor is called. + */ + : RScsClientSubsessionBase() + { + // empty + } + +EXPORT_C void RSoftwareComponentRegistryFilesList::OpenListL(const RSoftwareComponentRegistry& aCompReg, TComponentId aComponentId) + { + DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the file list.")); + + Close(); //Close the SubSession before Re-Opening the same. + TInt err = CreateSubsession(aCompReg, ESubSessCreateFileList, TIpcArgs()); + if(KErrNone != err) + { + DEBUG_PRINTF2(_L("Failed to create the subsession to the SCR server for the file list (Error:%d)."), err); + User::Leave(err); + } + + DEBUG_PRINTF(_L("Sending a request to create a file list on the server side.")); + TIpcArgs args(aComponentId); + User::LeaveIfError(CallSubsessionFunction(EOpenFileList, args)); + } + +EXPORT_C HBufC* RSoftwareComponentRegistryFilesList::NextFileL() const + { + //To avoid call to NextFileL before calling OpenListL + CheckSubSessionHandleL(); + + TIpcArgs args(TIpcArgs::ENothing); + TInt argNum = 0; + return GetObjectL(*this, EGetNextFileSize, EGetNextFileData, argNum, args); + } + +EXPORT_C void RSoftwareComponentRegistryFilesList::NextFileSetL(TInt aMaxCount, RPointerArray& aFileList) const + { + DEBUG_PRINTF(_L("Sending the request to retrieve the next set of components from the component view.")); + //To avoid call to NextFileSetL before calling OpenListL + CheckSubSessionHandleL(); + + TIpcArgs args(aMaxCount); + TInt argNum = 1; + GetObjectArrayL(*this, EGetNextFileSetSize, EGetNextFileSetData, argNum, args, aFileList); + } + +EXPORT_C void RSoftwareComponentRegistryFilesList::Close() + { + RScsClientSubsessionBase::Close(); + } + +void RSoftwareComponentRegistryFilesList::CheckSubSessionHandleL() const + { + if(KNullHandle == SubSessionHandle()) + { + DEBUG_PRINTF(_L("An invalid handle has been passed.")); + User::Leave(KErrBadHandle); + } + } + +// +// RApplicationInfoView +// + +TInt RApplicationInfoView::SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const + { + return CallSubsessionFunction(aFunction, aArgs); + } + +EXPORT_C RApplicationInfoView::RApplicationInfoView() +/** + This constructor provides a single point of definition from + which the superclass constructor is called. + */ + : RScsClientSubsessionBase() + { + } + +EXPORT_C void RApplicationInfoView::Close() + { + RScsClientSubsessionBase::Close(); + } + +EXPORT_C void RApplicationInfoView::OpenViewL(const RSoftwareComponentRegistry& aCompReg, CAppInfoFilter* aAppInfoFilter,TLanguage aLocale) + { + + DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the AppInfo view.")); + + Close(); //Close the SubSession before Re-Opening the same. + TInt err = CreateSubsession(aCompReg, ESubSessCreateAppInfoView, TIpcArgs()); + if(KErrNone != err) + { + DEBUG_PRINTF2(_L("Failed to create the subsession to the SCR server for the appinfo view (Error:%d)"), err); + User::Leave(err); + } + + RBuf8 buf; + buf.CleanupClosePushL(); + ExternalizeObjectL(aAppInfoFilter, buf); + + DEBUG_PRINTF(_L("Sending the request to create a component view on the server side.")); + TIpcArgs args(&buf, aLocale); + User::LeaveIfError(CallSubsessionFunction(EOpenAppInfoView, args)); + CleanupStack::PopAndDestroy(&buf); + } + + +EXPORT_C void RApplicationInfoView::GetNextAppInfoL(TInt aNoOfEntries, RPointerArray& aAppInfoList) const + { + if(0 >= aNoOfEntries) + { + DEBUG_PRINTF(_L("No of Required AppInfo entries passed should be greater than 0")); + User::Leave(KErrArgument); + } + + //To avoid call to GetNextAppInfoL before calling OpenAppInfoViewL + if(KNullHandle == SubSessionHandle()) + { + DEBUG_PRINTF(_L("An invalid handle has been passed.")); + User::Leave(KErrBadHandle); + } + + TAppRegInfo* appInfo = NULL; + TBool isAppInfoPresent = EFalse; + for(TInt i=0; i < aNoOfEntries ; ++i) + { + appInfo = new(ELeave) TAppRegInfo(); + DEBUG_PRINTF(_L("Sending the request to retrieve the next Application Info from the AppInfo view.")); + TIpcArgs args(TIpcArgs::ENothing); + TInt argNum = 1; + + TRAPD(err,isAppInfoPresent = GetObjectL(*this, *appInfo, EGetNextAppInfoSize, EGetNextAppInfoData, argNum, args)); + if(KErrNone != err) + { + delete appInfo; + User::Leave(err); + } + + if(!isAppInfoPresent) + { + DEBUG_PRINTF(_L8("Reached the end of the view.")); + delete appInfo; + break; + } + else + { + DEBUG_PRINTF2(_L("The Uid of the App received from the SCR server is 0x%x "), appInfo->Uid()); + DEBUG_PRINTF2(_L("The App filename of the App received from the SCR server is %s "), appInfo->FullName().PtrZ()); + DEBUG_PRINTF2(_L("The Short caption of the received from the SCR server App is %s "), appInfo->ShortCaption().PtrZ()); + DEBUG_PRINTF2(_L("The Caption of the App received from the SCR server is %s "), appInfo->Caption().PtrZ()); + aAppInfoList.AppendL(appInfo); + } + } + } + +// +// RRegistrationInfoForApplication + +TInt RRegistrationInfoForApplication::SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const + { + return CallSubsessionFunction(aFunction, aArgs); + } + +EXPORT_C RRegistrationInfoForApplication::RRegistrationInfoForApplication() : RScsClientSubsessionBase() + { + // empty + } + +EXPORT_C void RRegistrationInfoForApplication::OpenL(const RSoftwareComponentRegistry& aCompReg,const TUid aAppUid,TLanguage aLocale) + { + DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the App list based on AppId.")); + + Close(); //Close the SubSession before Re-Opening the same. + TInt err = CreateSubsession(aCompReg, ESubSessCreateRegInfoForApp, TIpcArgs()); + if(KErrNone != err) + { + DEBUG_PRINTF2(_L("Failed to create the subsession to the SCR server (Error:%d)."), err); + User::Leave(err); + } + + DEBUG_PRINTF(_L("Sending a request to set the AppId on the server side.")); + TIpcArgs args(aAppUid.iUid,aLocale); + User::LeaveIfError(CallSubsessionFunction(ESetAppUid, args)); + } + +EXPORT_C void RRegistrationInfoForApplication::GetAppServicesUidsL(RArray& aServiceUids) const + { + DEBUG_PRINTF(_L("Getting the Service UID array for the subsession appUid")); + //To avoid call to GetAppServicesUidsL before calling OpenL + CheckSubSessionHandleL(); + + TIpcArgs args(TIpcArgs::ENothing); + TInt argNum = 1; + + GetObjectArrayL(*this, EGetServiceUidSize,EGetServiceUidList,argNum, args, aServiceUids); + } + +EXPORT_C TLanguage RRegistrationInfoForApplication::ApplicationLanguageL() const + { + DEBUG_PRINTF(_L("Getting the Locale of the specified App that best fits the current device language")); + //To avoid call to GetApplicationLanguageL before calling OpenL + CheckSubSessionHandleL(); + + TLanguage aLanguage = ELangNone; + TPckg applicationLanguage(aLanguage); + + TIpcArgs args(&applicationLanguage); + + User::LeaveIfError(CallSubsessionFunction(EGetApplicationLanguage, args)); + return(aLanguage); + } + +EXPORT_C TInt RRegistrationInfoForApplication::DefaultScreenNumberL() const + { + DEBUG_PRINTF(_L("Getting the Default screen number from the App reg info")); + //To avoid call to GetDefaultScreenNumberL before calling OpenL + CheckSubSessionHandleL(); + + TInt aDefaultScreenNumber = 0; + TPckg uidDes(aDefaultScreenNumber); + + TIpcArgs args(&uidDes); + User::LeaveIfError(CallSubsessionFunction(EGetDefaultScreenNumber, args)); + return(aDefaultScreenNumber); + } + +EXPORT_C TInt RRegistrationInfoForApplication::NumberOfOwnDefinedIconsL() const + { + DEBUG_PRINTF(_L("Getting the number of defined icons for the associated application and locale ")); + //To avoid call to GetNumberOfOwnDefinedIconsL before calling OpenL + CheckSubSessionHandleL(); + + TInt aCount = 0; + TPckg uidDes(aCount); + TIpcArgs args(&uidDes); + + User::LeaveIfError(CallSubsessionFunction(EGetNumberOfOwnDefinedIcons, args)); + return(aCount); + } + +EXPORT_C void RRegistrationInfoForApplication::GetAppViewsL(RPointerArray& aAppViewInfoArray) const + { + DEBUG_PRINTF(_L("Getting the view details associated with subsession appUid")); + //To avoid call to GetAppViewsL before calling OpenL + CheckSubSessionHandleL(); + + TIpcArgs args(TIpcArgs::ENothing); + TInt argNum = 1; + GetObjectArrayL(*this, EGetViewSize, EGetViewData, argNum, args, aAppViewInfoArray); + } + +EXPORT_C void RRegistrationInfoForApplication::Close() + { + RScsClientSubsessionBase::Close(); + } + +EXPORT_C void RRegistrationInfoForApplication::GetAppOwnedFilesL(RPointerArray& aAppOwnedFiles) const + { + DEBUG_PRINTF(_L("Sending the request to retrieve the list of files owned by appUid associated with subsession ")); + //To avoid call to GetAppOwnedFilesL before calling OpenL + CheckSubSessionHandleL(); + + TIpcArgs args(TIpcArgs::ENothing); + TInt argNum = 1; + GetObjectArrayL(*this, EGetAppOwnedFilesSize, EGetAppOwnedFilesData, argNum, args,aAppOwnedFiles); + } + +EXPORT_C void RRegistrationInfoForApplication::GetAppCharacteristicsL(TApplicationCharacteristics &aApplicationCharacteristics) const + { + DEBUG_PRINTF(_L("Sending the request to retrieve application characteristics.")); + //To avoid call to GetAppCharacteristicsL before calling OpenL + CheckSubSessionHandleL(); + + TPckg pckg(aApplicationCharacteristics); + TIpcArgs args(&pckg); + User::LeaveIfError(CallSubsessionFunction(EGetAppCharacteristics, args)); + } + +EXPORT_C void RRegistrationInfoForApplication::GetAppIconL(HBufC*& aFullFileName) const + { + DEBUG_PRINTF(_L("Sending the request to get application icon file name .")); + //To avoid call to GetAppIconL before calling OpenL + CheckSubSessionHandleL(); + + TFileName fileName; + TPckg filenamePckg(fileName); + TIpcArgs args(&filenamePckg); + + User::LeaveIfError(CallSubsessionFunction(EGetAppIconForFileName, args)); + + aFullFileName = fileName.AllocL(); + + } + +EXPORT_C void RRegistrationInfoForApplication::GetAppViewIconL(TUid aViewUid,HBufC*& aFullFileName) const + { + DEBUG_PRINTF(_L("Sending the request to get application view icon file name .")); + //To avoid call to GetAppViewIconL before calling OpenL + CheckSubSessionHandleL(); + + TFileName fileName; + TPckg filenamePckg(fileName); + TIpcArgs args(aViewUid.iUid,&filenamePckg); + + User::LeaveIfError(CallSubsessionFunction(EGetAppViewIconFileName, args)); + + aFullFileName = fileName.AllocL(); + } + +void RRegistrationInfoForApplication::CheckSubSessionHandleL() const + { + if(KNullHandle == SubSessionHandle()) + { + DEBUG_PRINTF(_L("An invalid handle has been passed.")); + User::Leave(KErrBadHandle); + } + } + +// +// RApplicationRegistrationInfo + +TInt RApplicationRegistrationInfo::SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const + { + return CallSubsessionFunction(aFunction, aArgs); + } + +EXPORT_C RApplicationRegistrationInfo::RApplicationRegistrationInfo() : RScsClientSubsessionBase() + { + // empty + } + +EXPORT_C void RApplicationRegistrationInfo::OpenL(const RSoftwareComponentRegistry& aCompReg) + { + DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the App list.")); + + Close(); //Close the SubSession before Re-Opening the same. + TInt err = CreateSubsession(aCompReg, ESubSessCreateAppRegInfo, TIpcArgs()); + if(KErrNone != err) + { + DEBUG_PRINTF2(_L("Failed to create the subsession to the SCR server (Error:%d)."), err); + User::Leave(err); + } + } + +EXPORT_C TUid RApplicationRegistrationInfo::GetAppForDataTypeAndServiceL(const TDesC &aName,const TUid aServiceUid) const + { + DEBUG_PRINTF(_L("Get the AppUid corresponding to the mentioned Service and Type with the highest priority")); + //To avoid call to GetAppForDataTypeAndServiceL before calling OpenL + CheckSubSessionHandleL(); + + TUid appUid; + + TPckg uidDes(appUid); + TIpcArgs args(&aName, aServiceUid.iUid,&uidDes ); + + User::LeaveIfError(CallSubsessionFunction(EGetAppForDataTypeAndService, args)); + return(appUid); + } + +EXPORT_C TUid RApplicationRegistrationInfo::GetAppForDataTypeL(const TDesC &aName) const + { + DEBUG_PRINTF(_L("Getting the AppUid corresponding to the mentioned Type with the highest priority")); + //To avoid call to GetAppForDataTypeL before calling OpenL + CheckSubSessionHandleL(); + + TUid appUid; + + TPckg uidDes(appUid); + TIpcArgs args(&aName, &uidDes); + + User::LeaveIfError(CallSubsessionFunction(EGetAppForDataType, args)); + return(appUid); + + } + +EXPORT_C void RApplicationRegistrationInfo::GetServiceInfoL(CAppServiceInfoFilter* aAppServiceInfoFilter, RPointerArray& aAppServiceInfoArray, TLanguage aLocale) const + { + DEBUG_PRINTF(_L("Getting the Service Info details associated with the parameters set in the filter.")); + //To avoid call to GetServiceInfoL before calling OpenL + CheckSubSessionHandleL(); + + RBuf8 buf; + buf.CleanupClosePushL(); + ExternalizeObjectL(aAppServiceInfoFilter, buf); + + TIpcArgs args(&buf, aLocale); + TInt argNum = 2; + GetObjectArrayL(*this, EGetAppServiceInfoSize, EGetAppServiceInfoData, argNum, args, aAppServiceInfoArray); + CleanupStack::PopAndDestroy(&buf); + } + +EXPORT_C TBool RApplicationRegistrationInfo::GetAppInfoL(TUid aAppUid, TAppRegInfo& aAppInfo, TLanguage aLocale) + { + DEBUG_PRINTF2(_L("Getting information details of app 0x%x."), aAppUid.iUid); + + //To avoid call to GetAppInfoL before calling OpenL + CheckSubSessionHandleL(); + + TPckg appRegInfoPckg(aAppInfo); + + TIpcArgs args(aAppUid.iUid, aLocale, &appRegInfoPckg); + User::LeaveIfError(CallSubsessionFunction(EGetApplicationInfo, args)); + if(aAppInfo.Uid().iUid!= NULL) + { + return ETrue; + } + else + return EFalse; + } + + +EXPORT_C void RApplicationRegistrationInfo::Close() + { + RScsClientSubsessionBase::Close(); + } + +void RApplicationRegistrationInfo::CheckSubSessionHandleL() const + { + if(KNullHandle == SubSessionHandle()) + { + DEBUG_PRINTF(_L("An invalid handle has been passed.")); + User::Leave(KErrBadHandle); + } + } + + +// +// RApplicationRegistryView +// + +TInt RApplicationRegistryView::SendSyncMessage(TInt aFunction, const TIpcArgs& aArgs) const + { + return CallSubsessionFunction(aFunction, aArgs); + } + +EXPORT_C RApplicationRegistryView::RApplicationRegistryView() : RScsClientSubsessionBase() + { + } + +EXPORT_C void RApplicationRegistryView::Close() + { + RScsClientSubsessionBase::Close(); + } + +EXPORT_C void RApplicationRegistryView::OpenViewL(const RSoftwareComponentRegistry& aCompReg, TLanguage aLocale) + { + DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the Application Registration view.")); + + Close(); //Close the SubSession before Re-Opening the same. + + TInt err = CreateSubsession(aCompReg, ESubSessCreateAppRegistryView, TIpcArgs()); + if(KErrNone != err) + { + DEBUG_PRINTF2(_L("Failed to create the subsession to the SCR server for the Application Registration view (Error:%d)"), err); + User::Leave(err); + } + DEBUG_PRINTF(_L("Sending the request to create an applicaiton registry view on the server side.")); + TIpcArgs args(aLocale); + User::LeaveIfError(CallSubsessionFunction(EOpenApplicationRegistrationInfoView, args)); + } + +EXPORT_C void RApplicationRegistryView::OpenViewL(const RSoftwareComponentRegistry& aCompReg, const RArray& aAppRegAppUids, TLanguage aLocale) + { + DEBUG_PRINTF(_L("Creating a subsession to the SCR server for the Application Registration view with specified AppUids.")); + + Close(); //Close the SubSession before Re-Opening the same. + + TInt err = CreateSubsession(aCompReg, ESubSessCreateAppRegistryView, TIpcArgs()); + if(KErrNone != err) + { + DEBUG_PRINTF2(_L("Failed to create the subsession to the SCR server for the Application Registration view with specified AppUids (Error:%d)"), err); + User::Leave(err); + } + DEBUG_PRINTF(_L("Sending the request to create an applicaiton registry view on the server side.")); + + TInt32 size = aAppRegAppUids.Count(); + const TInt32 maxBufSize= sizeof(TInt32)+ size*sizeof(TInt32); // number of entries + number of entry * size of AppUid stored as TUid + + // allocate buffer for the array + HBufC8* bufForAppUids = HBufC8::NewMaxLC(maxBufSize); + TPtr8 ptrBufForAppUids = bufForAppUids->Des(); + RDesWriteStream instream(ptrBufForAppUids); + CleanupClosePushL(instream); + instream.WriteInt32L(size); + for (TInt i = 0; i < size; ++i) + { + instream.WriteInt32L(aAppRegAppUids[i].iUid); + } + + instream.CommitL(); + + TIpcArgs args(aLocale); + args.Set(1,&ptrBufForAppUids); + User::LeaveIfError(CallSubsessionFunction(EOpenApplicationRegistrationInfoForAppUidsView, args)); + + CleanupStack::PopAndDestroy(2,bufForAppUids); // bufForAppUid, instream + } + +EXPORT_C void RApplicationRegistryView::GetNextApplicationRegistrationInfoL(TInt aNoOfEntries, RPointerArray& aApplicationRegistration) const + { + if(0 >= aNoOfEntries) + { + DEBUG_PRINTF(_L("No of Required View entries passed should be greater than 0")); + User::Leave(KErrArgument); + } + //To avoid call to GetNextApplicationRegistrationInfoL before calling OpenApplicationRegistrationViewL + if(KNullHandle == SubSessionHandle()) + { + DEBUG_PRINTF(_L("An invalid handle has been passed.")); + User::Leave(KErrBadHandle); + } + + CApplicationRegistrationData* applicationRegistration = NULL; + for(TInt i = 0 ; i < aNoOfEntries ; ++i) + { + applicationRegistration = CApplicationRegistrationData::NewLC(); + TBool isApplicationRegistrationDataPresent = EFalse; + DEBUG_PRINTF(_L("Sending the request to retrieve the next application details from the Application Registration view.")); + TIpcArgs args; + TInt argNum = 1; + isApplicationRegistrationDataPresent = GetObjectL(*this, *applicationRegistration, EGetApplicationRegistrationSize, EGetApplicationRegistrationData, argNum, args); + if(!isApplicationRegistrationDataPresent) + { + DEBUG_PRINTF(_L8("Reached the end of the view.")); + CleanupStack::PopAndDestroy(applicationRegistration); + break; + } + else + { + DEBUG_PRINTF(_L("received the application registration data from the SCR Server ")); + aApplicationRegistration.AppendL(applicationRegistration); + CleanupStack::Pop(applicationRegistration); + } + } + }