/** All instance iterator ConstructL() for when a starting instance is provided. Set the find instance settings that are provided. @internalComponent */ void CCalInstanceIteratorAll::ConstructL(const CCalFindInstanceSettings& aSettings, TCalLocalUid aLocalUid, const TCalTime& aInstanceTime, TCalCollectionId aCollectionId) { iInstanceIdCache = new(ELeave) CArrayFixSeg<TAgnInstance> (KNumInstances / 4); SetFindInstanceSettingsL(aSettings); CAgnSimpleEntry* simpleEntry = iInstanceViewImpl.GetServ().GetSimpleEntryL(aCollectionId, aLocalUid); TCleanSimpleEntry cleanSimpleEntry(*simpleEntry, iInstanceViewImpl.GetServ().SimpleEntryAllocator()); TCleanupItem cleanupItem(TCleanSimpleEntry::DestroySimpleEntry, &cleanSimpleEntry); CleanupStack::PushL(cleanupItem); // The entry should exist __ASSERT_ALWAYS(simpleEntry, User::Leave(KErrNotFound)); // Check that the instance is a valid instance of the entry __ASSERT_ALWAYS(iInstanceViewImpl.IsValidInstanceL(*simpleEntry, aInstanceTime), User::Leave(KErrNotFound)); // Create and put the starting instance as the first in the array TAgnInstance instance; instance.iCollectionId = aCollectionId; if (simpleEntry->EndTime().IsSet()) { // for an undated todo we do not set the instance time instance.iId.SetDate(CalUtils::TCalTimeToTAgnCalendarTimeL(aInstanceTime)); } instance.iId.SetEntryId(simpleEntry->EntryId()); iInstanceIdCache->AppendL(instance); iCurrentIndex = 0; CleanupStack::PopAndDestroy(); // simpleEntry }
// Clean-up unused file items. void qtractorFileListView::cleanupItem ( QTreeWidgetItem *pItem ) { if (pItem == NULL) return; switch (pItem->type()) { case GroupItem: { const int iChildCount = pItem->childCount(); for (int i = 0; i < iChildCount; ++i) cleanupItem(pItem->child(i)); break; } case FileItem: { qtractorSession *pSession = qtractorSession::getInstance(); qtractorFileListItem *pFileItem = static_cast<qtractorFileListItem *> (pItem); if (pSession && pFileItem) { const QString& sPath = pFileItem->path(); qtractorFileList::Item *pFileListItem = pSession->files()->findItem(m_iFileType, sPath); if (pFileListItem && pFileListItem->clipRefCount() < 1) pItem->setSelected(true); } break; } default: break; } }
void qtractorFileListView::cleanup (void) { QTreeWidget::setCurrentItem(NULL); QTreeWidget::selectionModel()->clearSelection(); const int iItemCount = QTreeWidget::topLevelItemCount(); for (int i = 0; i < iItemCount; ++i) cleanupItem(QTreeWidget::topLevelItem(i)); removeItem(); }
//Opening a repository and closing the repository LOCAL_C void CreateDeleteL(TBool /*aOOMMode*/) { CServerRepository* serverRepo=new (ELeave)CServerRepository(); TCleanupItem cleanupItem(&ReleaseRepository, serverRepo); CleanupStack::PushL(cleanupItem); CSessionNotifier* sessNotif=new (ELeave)CSessionNotifier(); CleanupStack::PushL(sessNotif); // test access to a valid repository serverRepo->OpenL(KCurrentTestUid,*sessNotif); serverRepo->Close(); CleanupStack::PopAndDestroy(sessNotif); CleanupStack::PopAndDestroy(1); }
LOCAL_C void CreateDeleteCorruptL(TBool /*aOOMMode*/) { CServerRepository* serverRepo=new (ELeave)CServerRepository(); TCleanupItem cleanupItem(&ReleaseRepository, serverRepo); CleanupStack::PushL(cleanupItem); CSessionNotifier* sessNotif=new (ELeave)CSessionNotifier(); CleanupStack::PushL(sessNotif); // test access to a corrupt repository // trap KErrCorrupt TRAPD(err, serverRepo->OpenL(KCorruptRepositoryUid,*sessNotif)); // leave if not KErrCorrupt User::LeaveIfError((err == KErrCorrupt) ? KErrNone : err); serverRepo->Close(); CleanupStack::PopAndDestroy(sessNotif); CleanupStack::PopAndDestroy(1); }
// ---------------------------------------------------------------------------- // CSipAcceptContactStrategy::CreateFeatureSetsL // ---------------------------------------------------------------------------- // RPointerArray<CSIPFeatureSet> CSipAcceptContactStrategy::CreateFeatureSetsL( CSIPRequest& aRequest) { RPointerArray<CSIPFeatureSet> featureSets; TCleanupItem cleanupItem(DestroyFeatureSets,&featureSets); CleanupStack::PushL(cleanupItem); TSglQueIter<CSIPHeaderBase> iter = aRequest.Headers(iAcceptContactHeaderName); while (iter) { CSIPHeaderBase* tmp = iter++; CSIPAcceptContactHeader* acceptContact = static_cast<CSIPAcceptContactHeader*>(tmp); CSIPFeatureSet* featureSet = CSIPFeatureSet::NewLC(*acceptContact); featureSets.AppendL(featureSet); CleanupStack::Pop(featureSet); } CleanupStack::Pop(1); // cleanupItem return featureSets; }
// ----------------------------------------------------------------------------- // CSIPSubscribeDialogAssoc::DoSendUnsubscribeL // Sending (un)SUBSCRIBE does not terminate the dialog. (un)SUBSCRIBE is not a // dialog creating request. // ----------------------------------------------------------------------------- // CSIPClientTransaction* CSIPSubscribeDialogAssoc::DoSendUnsubscribeL(CSIPMessageElements* aElements) { CSIPMessageElements* elem = aElements; if (!aElements) { elem = CSIPMessageElements::NewLC(); } TMessageHeaderCleanup headerCleanup(*elem); TCleanupItem cleanupItem(TMessageHeaderCleanup::Cleanup, &headerCleanup); if (aElements) { CleanupStack::PushL(cleanupItem); } CSIPDialogAssocImplementation::CopyHeaderL(*iEvent, *elem, headerCleanup); RPointerArray<CSIPHeaderBase> expireHeaders = elem->UserHeadersL( SIPStrings::StringF(SipStrConsts::EExpiresHeader)); CleanupClosePushL(expireHeaders); TBool hasExpiresZero = EFalse; TInt expiresHeaderCount = expireHeaders.Count(); __ASSERT_ALWAYS(expiresHeaderCount <= 1, User::Leave(KErrArgument)); if (expiresHeaderCount == 1) { CSIPExpiresHeader* expires = static_cast<CSIPExpiresHeader*>(expireHeaders[0]); __ASSERT_ALWAYS(expires->Value() == 0, User::Leave(KErrArgument)); hasExpiresZero = ETrue; } CleanupStack::PopAndDestroy(); //expireHeaders if (!hasExpiresZero) { CSIPExpiresHeader* expires = new (ELeave) CSIPExpiresHeader(0); CleanupStack::PushL(expires); CSIPDialogAssocImplementation::CopyHeaderL(*expires, *elem, headerCleanup); CleanupStack::PopAndDestroy(expires); } CSIPClientTransaction* ta = CSIPClientTransaction::NewLC(Type(), Implementation(), iRefresh); TUint32 requestId(0); if (iRefresh) { //Terminates an existing refreshed subscription Implementation().ClientConnectionL().SendRequestWithinDialogL( Dialog().Implementation().DialogId(), iRefresh->RefreshId(), requestId, elem); } else { TUint32 refreshId(0); Implementation().ClientConnectionL().SendRequestWithinDialogL( Dialog().Implementation().DialogId(), requestId, refreshId, Type(), elem, CSIPTransactionBase::IsTargetRefresh(Type())); } CleanupStack::Pop(ta); ta->SetRequestId(requestId); //Take ownership of aElements when leave can't occur delete elem; CleanupStack::Pop(); //TCleanupItem or elem return ta; }
// ----------------------------------------------------------------------------- // CSIPSubscribeDialogAssoc::DoSendSubscribeL // If subscription is already being refreshed, leaves with KErrAlreadyExists // ----------------------------------------------------------------------------- // CSIPClientTransaction* CSIPSubscribeDialogAssoc::DoSendSubscribeL(CSIPMessageElements* aElements, CSIPRefresh* aRefresh, TBool aWithinDialog) { __ASSERT_ALWAYS(!(aRefresh && iRefresh), User::Leave(KErrAlreadyExists)); CSIPMessageElements* elem = aElements; if (!aElements) { elem = CSIPMessageElements::NewLC(); } TMessageHeaderCleanup headerCleanup(*elem); TCleanupItem cleanupItem(TMessageHeaderCleanup::Cleanup, &headerCleanup); if (aElements) { CleanupStack::PushL(cleanupItem); } CSIPDialogAssocImplementation::CopyHeaderL(*iEvent, *elem, headerCleanup); CSIPClientTransaction* ta = NULL; if (aWithinDialog) { ta = CSIPClientTransaction::NewLC(Type(), Implementation(), aRefresh ? aRefresh : iRefresh); TUint32 requestId(0); TUint32 refreshId(0); if (iRefresh) { //Updates an existing refreshed subscription Implementation().ClientConnectionL().SendRequestWithinDialogL( Dialog().Implementation().DialogId(), iRefresh->RefreshId(), requestId, elem); } else { Implementation().ClientConnectionL().SendRequestWithinDialogL( Dialog().Implementation().DialogId(), requestId, refreshId, Type(), elem, CSIPTransactionBase::IsTargetRefresh(Type()), (aRefresh != NULL)); } if (aRefresh) { aRefresh->SetRefreshIdIfEmpty(refreshId); } CleanupStack::Pop(ta); ta->SetRequestId(requestId); //Take ownership of aElements when leave can't occur delete elem; } else { const CSIPContactHeader* contact = Dialog().Implementation().ContactHeader(); if (contact) { CSIPDialogAssocImplementation::CopyHeaderL(*contact, *elem, headerCleanup); } ta = Dialog().Implementation().SendDialogCreatingRequestL( Implementation(), elem, aRefresh); } CleanupStack::Pop(); //TCleanupItem or elem if (aRefresh) { aRefresh->SetRequestType(Type()); iRefresh = aRefresh; iRefresh->SetRefreshOwner(Implementation()); } return ta; }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- // EXPORT_C void CSymbianUnitTestRunner::ExecuteTestsL( const MDesCArray& aTestDllNames, TBool aMemoryAllocationFailureSimulation, const TDesC& aOutputFileName, const TDesC& aOutputFormat, const CDesCArray& aTestCaseNames, TInt aTimeout ) { //init logger TBuf<50> version; version.Format(KLogVersion, SUT_MAJOR_VERSION, SUT_MINOR_VERSION, SUT_BUILD_VERSION); SUT_LOG_START(version); iTestCount = 0; MSymbianUnitTestInterface::TFailureSimulation failureSimulation = MSymbianUnitTestInterface::ENoFailureSimulation; if ( aMemoryAllocationFailureSimulation ) { failureSimulation = MSymbianUnitTestInterface::EMemAllocFailureSimulation; } for ( TInt i = 0; i < aTestDllNames.MdcaCount(); i++ ) { TPtrC16 testDllName( aTestDllNames.MdcaPoint( i ) ); RLibrary library; TInt ret; ret = library.Load( testDllName ); if ( ret != KErrNone ) { iUiCallBack.InfoMsg( KFailedToFindDll, testDllName ); SUT_LOG_FORMAT(KFailedToFindDll, &testDllName); //User::Leave( KErrNotFound ); User::Leave( ret ); } CleanupClosePushL( library ); // The second UID of the dll to be used must be compatible if ( library.Type()[ 1 ] != KSymbianUnitTestDllUid ) { iUiCallBack.InfoMsg( KNonCompatibleUIDs ); User::Leave( KErrNotFound ); } TLibraryFunction entryFunction = library.Lookup( 1 ); if ( !entryFunction ) { iUiCallBack.InfoMsg( KExportFuncNotFound ); User::Leave( KErrNotFound ); } MSymbianUnitTestInterface* test = reinterpret_cast< MSymbianUnitTestInterface* >( entryFunction() ); TCleanupItem cleanupItem( DeleteTest, test ); CleanupStack::PushL( cleanupItem ); iTestCount += test->TestCaseCount(); test->ExecuteL( *this, *iResult, failureSimulation, aTestCaseNames, aTimeout); CleanupStack::PopAndDestroy(); // cleanupItem CleanupStack::PopAndDestroy( &library ); } CSymbianUnitTestOutputFormatter* outputFormatter = SymbianUnitTestOutputFactory::CreateOutputLC( aOutputFileName, aOutputFormat ); outputFormatter->PrintL( *iResult ); CleanupStack::PopAndDestroy( outputFormatter ); SUT_LOG_INFO(KLogFinish); }
void FmBkupEnginePrivate::GetRestoreInfoArray( QList<FmBkupDrivesAndOperation* > drivesAndOperationList, QList< FmRestoreInfo > &restoreInfoList, const QString& aDrive ) { int targetDrive = DriverNameToNumber( aDrive ); restoreInfoList.clear(); /////// iDrvAndOpList->Reset(); iBkupCategoryList->ResetAndDestroy(); for( QList<FmBkupDrivesAndOperation* >::iterator it = drivesAndOperationList.begin(); it != drivesAndOperationList.end(); ++it ) { FmBkupDrivesAndOperation* fmDrvAndOp = *it; TBkupDrivesAndOperation drvAndOp; drvAndOp.setOwnerDataType( fmDrvAndOp->ownerDataType() ); drvAndOp.setDrvCategories( fmDrvAndOp->drvCategories() ); iDrvAndOpList->AppendL( drvAndOp ); } //////// CMMCScBkupOpParamsRestoreFull* params = CMMCScBkupOpParamsRestoreFull::NewL( iDrvAndOpList, FmBkupEngine::EBUCatAllSeparately ); CleanupStack::PushL( params ); // Get list of all archives RPointerArray< CMMCScBkupArchiveInfo > archives; TCleanupItem cleanupItem( ResetAndDestroyArchives, &archives ); CleanupStack::PushL( cleanupItem ); iBkupEngine->ListArchivesL( archives, params, AllowedDriveAttMatchMask(), targetDrive ); // Fill restore info TInt count( archives.Count() ); // restoreInfoList.ReserveL( count ); for( TInt i( 0 ); i < count; ++i ) { // Content CMMCScBkupArchiveInfo& archiveInfo( *archives[ i ] ); TUint32 iContent = BkupToFmgrMask( archiveInfo.Category().iFlags ); TTime iTime = archiveInfo.DateTime(); TInt iDrive = archiveInfo.Drive(); TDateTime iDateTime = iTime.DateTime(); int h = iDateTime.Hour(); int m = iDateTime.Minute(); int s = iDateTime.Second(); int year = iDateTime.Year(); int month = iDateTime.Month() + 1; int day = iDateTime.Day()+1; QTime time( h, m, s); QDate date( year, month, day ); QDateTime dateTime( date, time ); dateTime = dateTime.toLocalTime(); FmRestoreInfo restoreInfo( iContent, dateTime, NumberToDriverName( iDrive ) ); restoreInfoList.append( restoreInfo ); } CleanupStack::PopAndDestroy( &archives ); CleanupStack::PopAndDestroy( params ); }
bool FmBkupEnginePrivate::StartRestoreL( QList<FmBkupDrivesAndOperation* > drivesAndOperationList ) { TBool diskFull( SysUtil::DiskSpaceBelowCriticalLevelL( &iFs, 0, KFmgrSystemDrive ) ); if ( diskFull ) { mProcess = FmBkupEngine::ProcessRestore; notifyStartInternal( KMaxTInt ); iError = KErrDiskFull; notifyFinishInternal(); mProcess = FmBkupEngine::ProcessNone; return false; } /////// iDrvAndOpList->Reset(); iBkupCategoryList->ResetAndDestroy(); for( QList<FmBkupDrivesAndOperation* >::iterator it = drivesAndOperationList.begin(); it != drivesAndOperationList.end(); ++it ) { FmBkupDrivesAndOperation* fmDrvAndOp = *it; TBkupDrivesAndOperation drvAndOp; drvAndOp.setOwnerDataType( fmDrvAndOp->ownerDataType() ); drvAndOp.setDrvCategories( fmDrvAndOp->drvCategories() ); iDrvAndOpList->AppendL( drvAndOp ); } //////// // Create restore params - ownership is transferred to // secure backup engine #ifdef RD_FILE_MANAGER_BACKUP CMMCScBkupOpParamsRestoreFull* params = CMMCScBkupOpParamsRestoreFull::NewL( iDrvAndOpList, FmBkupEngine::EBUCatAllSeparately ); // CleanupStack::PopAndDestroy(); // driveReader CleanupStack::PushL( params ); // Get list of all archives RPointerArray< CMMCScBkupArchiveInfo > archives; TCleanupItem cleanupItem( ResetAndDestroyArchives, &archives ); CleanupStack::PushL( cleanupItem ); iBkupEngine->ListArchivesL( archives, params, AllowedDriveAttMatchMask() ); // Get user set restore selection QList< FmRestoreInfo > selection; // CleanupClosePushL( selection ); FmRestoreSettings& rstSettings( *( q->RestoreSettingsL() ) ); rstSettings.GetSelectionL( selection ); // Remove non user selected archives TInt i( 0 ); while ( i < archives.Count() ) { TBool remove( ETrue ); // Compare archives category and drive CMMCScBkupArchiveInfo* archiveInfo = archives[ i ]; TUint32 fmgrContent( BkupToFmgrMask( archiveInfo->Category().iFlags ) ); TInt drive( archiveInfo->Drive() ); TInt count( selection.count() ); for( TInt j( 0 ); j < count; ++j ) { const FmRestoreInfo& info( selection[ j ] ); if ( ( drive == DriverNameToNumber( info.drive() ) ) && ( fmgrContent & info.content() ) ) { // Found user selected archive // Do not check this archive again selection.removeAt( j ); remove = EFalse; break; } } if ( remove ) { // Remove non selected archive archives.Remove( i ); delete archiveInfo; } else { // Move to next archive ++i; } } // CleanupStack::PopAndDestroy( &selection ); params->SetArchiveInfosL( archives ); CleanupStack::Pop( &archives ); archives.Close(); CleanupStack::Pop( params ); #else // RD_FILE_MANAGER_BACKUP CMMCScBkupOpParamsRestoreFull* params = CMMCScBkupOpParamsRestoreFull::NewL( driveReader, EBUCatAllInOne ); CleanupStack::PopAndDestroy(); // driveReader FmBackupSettings& bkupSettings( *( q->BackupSettingsL() ) ); // Get list of all archives RPointerArray< CMMCScBkupArchiveInfo > archives; TCleanupItem cleanupItem( ResetAndDestroyArchives, &archives ); CleanupStack::PushL( cleanupItem ); iBkupEngine->ListArchivesL( archives, params, bkupSettings.AllowedDriveAttMatchMask() ); params->SetArchiveInfosL( archives ); CleanupStack::Pop( &archives ); #endif // RD_FILE_MANAGER_BACKUP // Start the process - engine owns the parameters immediately mProcess = FmBkupEngine::ProcessRestore; PublishBurStatus( EFileManagerBkupStatusRestore ); CCoeEnv* coeEnv = CCoeEnv::Static(); CEikonEnv* eikonEnv = (STATIC_CAST(CEikonEnv*,coeEnv)); eikonEnv->SetSystem(ETrue); TRAPD( err, iBkupEngine->StartOperationL( EMMCScBkupOperationTypeFullRestore, *this, params ) ); if ( err != KErrNone ) { PublishBurStatus( EFileManagerBkupStatusUnset ); mProcess = FmBkupEngine::ProcessNone; User::Leave( err ); } return true; }
int FmBkupEnginePrivate::deleteBackup( QList<FmBkupDrivesAndOperation* > drivesAndOperationList ) { iError = FmErrNone; QList< FmRestoreInfo > selection; FmRestoreSettings& rstSettings( *( q->RestoreSettingsL() ) ); rstSettings.GetSelectionL( selection ); iBkupCategoryList->ResetAndDestroy(); for( QList<FmBkupDrivesAndOperation* >::iterator it = drivesAndOperationList.begin(); it != drivesAndOperationList.end(); ++it ) { FmBkupDrivesAndOperation* fmDrvAndOp = *it; TBkupDrivesAndOperation drvAndOp; drvAndOp.setOwnerDataType( fmDrvAndOp->ownerDataType() ); drvAndOp.setDrvCategories( fmDrvAndOp->drvCategories() ); iDrvAndOpList->AppendL( drvAndOp ); } //////// CMMCScBkupOpParamsRestoreFull* params = CMMCScBkupOpParamsRestoreFull::NewL( iDrvAndOpList, FmBkupEngine::EBUCatAllSeparately ); CleanupStack::PushL( params ); // Get list of all archives RPointerArray< CMMCScBkupArchiveInfo > archives; TCleanupItem cleanupItem( ResetAndDestroyArchives, &archives ); CleanupStack::PushL( cleanupItem ); iBkupEngine->ListArchivesL( archives, params, AllowedDriveAttMatchMask()); TInt i( 0 ); while ( i < archives.Count() ) { TBool remove( ETrue ); // Compare archives category and drive CMMCScBkupArchiveInfo* archiveInfo = archives[ i ]; TUint32 fmgrContent( BkupToFmgrMask( archiveInfo->Category().iFlags ) ); TInt drive( archiveInfo->Drive() ); TInt count( selection.count() ); for( TInt j( 0 ); j < count; ++j ) { const FmRestoreInfo& info( selection[ j ] ); if ( ( drive == DriverNameToNumber( info.drive() ) ) && ( fmgrContent & info.content() ) ) { // Found user selected archive // Do not check this archive again selection.removeAt( j ); remove = EFalse; break; } } if ( remove ) { // Remove non selected archive archives.Remove( i ); delete archiveInfo; } else { // Move to next archive ++i; } } iBkupEngine->DeleteArchivesL( archives ); CleanupStack::Pop( &archives ); archives.Close(); CleanupStack::PopAndDestroy( params ); return iError; }
// ---------------------------------------------------------------------------- // CSipAcceptContactStrategy::ApplyL // ---------------------------------------------------------------------------- // CSIPResponse* CSipAcceptContactStrategy::ApplyL( CSIPRequest& aRequest, RArray<TUid>& aUids, TBool& aContinueSearch, CSIPClientResolver2& aClientResolver2 ) { SIP_CR_LOG("CSipAcceptContactStrategy::ApplyL") CSIPResponse* response = NULL; // The strategy is applied only for requests that contain Accept-Contact if (aRequest.HasHeader(iAcceptContactHeaderName)) { RArray<TSIPClientScore> scores(1); CleanupClosePushL(scores); RPointerArray<CSIPFeatureSet> requestFeatureSets = CreateFeatureSetsL(aRequest); TCleanupItem cleanupItem(DestroyFeatureSets,&requestFeatureSets); CleanupStack::PushL(cleanupItem); for (TInt i=0; i < aUids.Count(); i++) { TUid uid(aUids[i]); MSipClient* client = iSipClients.GetByUID(uid); if (client) { TInt score = CalculateScore(*client,requestFeatureSets); if (score > 0) { TSIPClientScore clientScore(score,uid); // The score is used as a key scores.InsertInSignedKeyOrderAllowRepeatsL(clientScore); } } } CleanupStack::PopAndDestroy(1); // cleanupItem TInt clientCount = scores.Count(); aUids.Reset(); // empties the array if (clientCount > 0) { // The scores are in increasing order. // The last is the best match. Reverse the order. for (TInt i=scores.Count()-1; i>=0; i--) { // In the resulting array the first is the best match aUids.AppendL(scores[i].iUid); } if (iNextStrategy && clientCount > 1) { // Apply the next strategy only if // there are still more than one matching clients. response = iNextStrategy->ApplyL(aRequest,aUids, aContinueSearch, aClientResolver2); } } else { if ( iNextStrategy2 ) { response = iNextStrategy2->ApplyL(aRequest,aUids, aContinueSearch, aClientResolver2); } else { response = CreateResponseL(); } } CleanupStack::PopAndDestroy(1); // scores } else { if (iNextStrategy) { response = iNextStrategy->ApplyL(aRequest,aUids,aContinueSearch, aClientResolver2); } } return response; }
// ----------------------------------------------------------------------------- // CContextEnginePluginTest::LoadPluginL // ----------------------------------------------------------------------------- // TInt CContextEnginePluginTest::LoadPluginL( CStifItemParser& /* aItem */ ) { _LIT( KMsg1, "Enter LoadPlugins" ); iLog->Log( KMsg1 ); RDebug::Print( KMsg1 ); iInitTarget = 2; TUid calendarContextUID = { 0x102823CB }; // calendar context plugin uid TUid locationContextUID = { 0x200071D0 }; // location context plugin uid RImplInfoPtrArray infoArray; TCleanupItem cleanupItem( MdsUtils::CleanupEComArray, &infoArray ); CleanupStack::PushL( cleanupItem ); CContextPlugin::ListImplementationsL( infoArray ); TInt count( 0 ); count = infoArray.Count(); TBool locationPluginFound( EFalse ); TBool calendarPluginFound( EFalse ); for ( TInt i=0; i < count; i++ ) { TUid uid = infoArray[i]->ImplementationUid(); // context plugin found if( uid == locationContextUID ) { iLocationPlugin = CContextPlugin::NewL( uid ); iLocationPlugin->SetMdeSession(*iMdEClient); iLocationPlugin->Init(*this); locationPluginFound = ETrue; iPlugin = iLocationPlugin; iPluginSet = ETrue; } else if( uid == calendarContextUID ) { iCalendarPlugin = CContextPlugin::NewL( uid ); iCalendarPlugin->SetMdeSession(*iMdEClient); iCalendarPlugin->Init(*this); calendarPluginFound = ETrue; } } CleanupStack::PopAndDestroy( &infoArray ); // infoArray, results in a call to CleanupEComArray if( !locationPluginFound ) { _LIT( KLocation, "Location context plugin not found" ); iLog->Log( KLocation ); RDebug::Print( KLocation ); return KErrNotFound; } if( !calendarPluginFound ) { _LIT( KCalendar, "Calendar context plugin not found" ); iLog->Log( KCalendar ); RDebug::Print( KCalendar ); return KErrNotFound; } _LIT( KMsg2, "Exit LoadPlugins" ); iLog->Log( KMsg2 ); RDebug::Print( KMsg2 ); return KErrNone; }