void CPostProcessorInfo::ConstructL(const TDesC& aManufacturer,
									const TDesC& aIdentifier,
									const TArray<TUncompressedVideoFormat>& aSupportedFormats,
									const TArray<TUint32>& aSupportedCombinations,
									const TArray<TScaleFactor>& aSupportedScaleFactors,
									const TDesC8& aImplementationSpecificInfo)
	{
	iManufacturer = aManufacturer.AllocL();
	iIdentifier = aIdentifier.AllocL();
	iImplementationSpecificInfo = aImplementationSpecificInfo.AllocL();

	TInt i=0;
	TInt supportedFormatsCount = aSupportedFormats.Count();
	for (i=0; i<supportedFormatsCount; i++)
		{
		User::LeaveIfError(iSupportedFormats.Append(aSupportedFormats[i]));
		}

	TInt supportedCombinationsCount = aSupportedCombinations.Count();
	for (i=0; i<supportedCombinationsCount; i++)
		{
		User::LeaveIfError(iSupportedCombinations.Append(aSupportedCombinations[i]));
		}

	TInt supportedScaleFactors = aSupportedScaleFactors.Count();
	for (i=0; i<supportedScaleFactors; i++)
		{
		User::LeaveIfError(iSupportedScaleFactors.Append(aSupportedScaleFactors[i]));
		}
	}
void CVideoDecoderInfo::ConstructL(const TDesC& aManufacturer,
								   const TDesC& aIdentifier,
								   const TArray<CCompressedVideoFormat*>& aSupportedFormats,
								   const TArray<TPictureRateAndSize>& aMaxPictureRates,
								   const TDesC8& aCodingStandardSpecificInfo,
								   const TDesC8& aImplementationSpecificInfo)
	{
	iManufacturer = aManufacturer.AllocL();
	iIdentifier = aIdentifier.AllocL();
	iCodingStandardSpecificInfo = aCodingStandardSpecificInfo.AllocL();
	iImplementationSpecificInfo = aImplementationSpecificInfo.AllocL();

	TInt i=0;
	TInt count = aSupportedFormats.Count();
	for (i=0; i<count; i++)
		{
		CCompressedVideoFormat* f = CCompressedVideoFormat::NewL(*(aSupportedFormats[i]));
		CleanupStack::PushL(f);
		User::LeaveIfError(iSupportedFormats.Append(f));
		CleanupStack::Pop(f);
		}

	count = aMaxPictureRates.Count();
	for (i=0; i<count; i++)
		{
		User::LeaveIfError(iMaxPictureRates.Append(aMaxPictureRates[i]));
		}
	}
// ----------------------------------------------------------------------------------------------------------
// Find the items matching the media specifications
// ----------------------------------------------------------------------------------------------------------
//
void CTestCollectionPlugin::FindAllL(const CMPXMedia& aCriteria, const TArray<TMPXAttribute>& aAttrs)
{
    LOG1(_L("CTestCollectionPlugin::FindAllL"));
    const TDesC& title = aCriteria.ValueText( KMPXMediaGeneralTitle );
    if(title == _L("CollectionPluginTest0128") ||
            title == _L("CollectionPluginTest0129") )
    {
        // Return exact copy
        CMPXMedia* media = CMPXMedia::NewL();
        (*media) = aCriteria;
        CleanupStack::PushL( media );
        media->SetTObjectValueL<TInt>(KMPXMediaGeneralSize, aAttrs.Count());
        iObs->HandleFindAll(media, KErrNone);
        CleanupStack::PopAndDestroy( media );
    }
    else if(title == _L("CollectionPluginTest0130") )
    {
        // Return error
        CMPXMedia* media = CMPXMedia::NewL();
        (*media) = aCriteria;
        CleanupStack::PushL( media );
        media->SetTObjectValueL<TInt>(KMPXMediaGeneralSize, aAttrs.Count());
        iObs->HandleFindAll(media, KErrArgument);
        CleanupStack::PopAndDestroy( media );
    }
    else
    {
        User::Panic(_L("CTestCollectionPlugin::FindAllL panic"), 1); // magic number
    }
}
// -----------------------------------------------------------------------------
// MakeSortingItemsL
// Add/Make items to sorting item array and undefined items to
// undefined item array
// -----------------------------------------------------------------------------
//
void MakeSortingItemsL( RArray<TCLFSortingItem>& aSortingItemArray,
                        RPointerArray<MCLFItem>& aUndefinedItemArray,
                        const TArray<MCLFItem*>& aItemArray,
                        const TArray<TCLFFieldId> aSortFields,
                        TCLFItemDataType aSortingDataType )
{
    const TInt sortingFieldsCount( aSortFields.Count() );
    const TInt count( aItemArray.Count() );
    for( TInt i = 0 ; i < count ; ++i )
    {
        MCLFItem* seItem = aItemArray[i];
        TCLFSortingItem sortingItem;
        TInt fieldIdIndex( -1 );
        TInt error( KErrNone );
        do
        {
            ++fieldIdIndex;
            TCLFFieldId fieldId( aSortFields[fieldIdIndex] );
            switch( aSortingDataType )
            {
            case ECLFItemDataTypeDesC:
            {
                error = seItem->GetField( fieldId, sortingItem.iData );
                break;
            }
            case ECLFItemDataTypeTInt32:
            {
                error = seItem->GetField( fieldId, sortingItem.iIntData );
                break;
            }
            case ECLFItemDataTypeTTime:
            default:
            {
                error = seItem->GetField( fieldId, sortingItem.iTimeData );
                break;
            }
            }
        } while( ( error != KErrNone ) &&
                 ( fieldIdIndex < ( sortingFieldsCount - 1 ) ) );
        if( error == KErrNone )
        {
            sortingItem.iItem = seItem;
            aSortingItemArray.AppendL( sortingItem );
        }
        else
        {   // field not found -> undefined item
            aUndefinedItemArray.AppendL( seItem );
        }
    }
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
//
void CMnrpNaviControl::HandleModelUpdateL()
    {
    TArray< CMnrpNaviModel::CListItem* > items = iModel->ListItemsL();
    
    const TInt KGranularity = 8;
    CDesCArraySeg* array = new (ELeave) CDesCArraySeg( KGranularity );
    CleanupStack::PushL( array );
    
    _LIT( KItemFormat, "%S\t%S\t\t" );
    for ( TInt i = 0; i < items.Count(); i++ )
        {
        CMnrpNaviModel::CListItem* item = items[i];

        const TInt KNumTabsAndOther = 10;
        HBufC* text = HBufC::NewLC(
            item->Header().Length() + item->Value().Length() + KNumTabsAndOther);

        text->Des().Format( KItemFormat, &(item->Header()), &(item->Value()) );
        
        array->AppendL( *text );
        CleanupStack::PopAndDestroy( text );
        }
        
    CleanupStack::Pop( array );

    CTextListBoxModel* model = iListBox->Model();
    model->SetItemTextArray( array );
    model->SetOwnershipType( ELbmOwnsItemArray );
    iListBox->HandleItemAdditionL();
    }
// ---------------------------------------------------------------------------
// CXIMPContextEventFilter::CombineFilterL()
// ---------------------------------------------------------------------------
//
void CXIMPContextEventFilter::CombineFilterL(
    const TArray< CXIMPContextEventFilter* >& aFilters )
    {
    const TInt filterCount = aFilters.Count();

    CArrayFix< TInt32 >* combinedEvents = new (ELeave) CArrayFixFlat< TInt32 >( KXIMPEventListGranurality );
    CleanupStack::PushL( combinedEvents );

    for( TInt ix = 0; ix < filterCount; ix++ )
        {
        const CXIMPContextEventFilter* sourceFilter = aFilters[ ix ];
        if( sourceFilter->iAcceptedEvents )
            {
            CopyUniqueEventsL( sourceFilter->iAcceptedEvents->Array(),
                               *combinedEvents );            
            }

        else
            {
            //Set all accepted
            delete combinedEvents;
            combinedEvents = NULL;
            break;
            }
        }


    delete iAcceptedEvents;
    iAcceptedEvents = combinedEvents;

    CleanupStack::Pop(); //combinedEvents
    }
// -----------------------------------------------------------------------------
// CTelephonyAudioRoutingProxy::ConstructL
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CTelephonyAudioRoutingProxy::ConstructL()
{
    TELAUDRTNG_RDEBUG1(_L("[TELAUDRTNG]\t CTelephonyAudioRoutingProxy[%x]::ConstructL"),this);
    User::LeaveIfError(iSession.ConnectL(*this, iObserver));

    // Make sure session is set up with default values from server for its local variables:
    iSession.GetDefaultValuesL();

    CTelephonyAudioRouting::TAudioOutput audioOutput = Output();

    // Get stored values for audio output and array and store values in local variables:
    TELAUDRTNG_RDEBUG1(_L("[TELAUDRTNG]\t CTelephonyAudioRoutingProxy::ConstructL, current iAudioOutput retrieved from server: %d"), audioOutput);

    TArray<CTelephonyAudioRouting::TAudioOutput> availableOutputArray = AvailableOutputs();
    TInt count = availableOutputArray.Count();
    TELAUDRTNG_RDEBUG1(_L("[TELAUDRTNG]\t ConstructL: Count = %d "), count);
    for(TInt i = 0; i < count; i++)
    {
        TELAUDRTNG_RDEBUG1(_L("[TELAUDRTNG]\t ConstructL: availableOutputs[i] = %d "),availableOutputArray[i]);
    }

    iSession.NotifyIfOutputChanged();
    iSession.NotifyIfAvailableOutputsChanged();

}
// ----------------------------------------------------------------------------------------------------------
// Add specify attribute to Media
// ----------------------------------------------------------------------------------------------------------
//
void CTestCollectionPlugin::AddAttrbuteL(CMPXMedia& aMedia,
        const TInt aId,
        const TDesC& aTitle,
        const TDesC& aUri,
        const TArray<TMPXAttribute>& aAttrs)
{
    TInt attrCnt = aAttrs.Count();
    for(TInt i = 0; i < attrCnt; i++)
    {
        if(aAttrs[i].ContentId() == KMPXMediaIdGeneral)
        {
            TInt attrId = aAttrs[i].AttributeId();
            if(attrId &  EMPXMediaGeneralId)
            {
                aMedia.SetTObjectValueL<TMPXItemId>(KMPXMediaGeneralId, aId);
            }
            if(attrId &  EMPXMediaGeneralTitle)
            {
                aMedia.SetTextValueL(KMPXMediaGeneralTitle, aTitle);

            }
            if(attrId &  EMPXMediaGeneralUri)
            {
                aMedia.SetTextValueL(KMPXMediaGeneralUri, aUri);
            }
        }
    }
}
Example #9
0
void T_MProfile::GetAlertForTestL()
    {
    __UHEAP_MARK;
    TArray<TContactItemId> array = iProfile->AlertForL();
    __UHEAP_MARKEND;

    EUNIT_ASSERT( array.Count() == 0 );
    }
// -----------------------------------------------------------------------------
// AppendItemsArrayL
// -----------------------------------------------------------------------------
//
void AppendItemsToArrayL( const TArray<MCLFItem*>& aSourceArray,
                          RPointerArray<MCLFItem>& aDestArray )
{
    for( TInt i = aSourceArray.Count() - 1; i >=0; i--)
    {
        aDestArray.AppendL( aSourceArray[ i ] );
    }
}
// -----------------------------------------------------------------------------
// AppendSortingItemsArrayReverseL
// -----------------------------------------------------------------------------
//
void AppendSortingItemsToArrayReverseL(
    const TArray<TCLFSortingItem>& aSourceArray,
    RPointerArray<MCLFItem>& aDestArray )
{
    for( TInt i = aSourceArray.Count() - 1 ; i > -1 ; --i )
    {
        aDestArray.AppendL( aSourceArray[i].iItem );
    }
}
// -----------------------------------------------------------------------------
// AppendSortingItemsArrayL
// -----------------------------------------------------------------------------
//
void AppendSortingItemsToArrayL( const TArray<TCLFSortingItem>& aSourceArray,
                                 RPointerArray<MCLFItem>& aDestArray )
{
    const TInt count( aSourceArray.Count() );
    for( TInt i = 0 ; i < count ; ++i )
    {
        aDestArray.AppendL( aSourceArray[i].iItem );
    }
}
Example #13
0
// ----------------------------------------------------------------------------
// Externalize an array of itemids to stream
// ----------------------------------------------------------------------------
//
EXPORT_C void MPXUser::ExternalizeL(const TArray<TMPXItemId>& aArray, RWriteStream& aStream)
    {
    TInt n=aArray.Count();
    aStream.WriteInt32L(n);
    for (TInt i=0;i<n;++i)
        {
        aStream.WriteUint32L(aArray[i].iId1);
        aStream.WriteUint32L(aArray[i].iId2);
        }
    }
Example #14
0
LOCAL_C void testReadAny(const TArray<TBufC<0x20> > anArray)
//
// Test with fixed length arrays.
//
	{

	test(anArray.Count()==KMaxStrings);
	for (TInt i=0;i<KMaxStrings;i++)
		test(anArray[i]==(*strSorted[i]));
	}
// -----------------------------------------------------------------------------
// CAMMSEMCReverbEnvironmentalPresetUtility::GetPresetNamesL
// Gets list of preset names available.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
void CAMMSEMCReverbEnvironmentalPresetUtility::GetPresetNamesL(
    CDesCArray& aPresetNames)
{
    LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbEnvironmentalPresetUtility::GetPresetNamesL +");
    TArray< TEfEnvironmentalReverbUtilityPreset > presetNames =
        iEmptyEnvironmentalReverbUtility->Presets();
    TInt presetCount = presetNames.Count();
    for (TInt i = 0; i < presetCount; i++)
    {
        aPresetNames.AppendL(presetNames[ i ].iPresetName);
    }
    LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbEnvironmentalPresetUtility::GetPresetNamesL -");
}
// ----------------------------------------------------------------------------------------------------------
// Add specify attribute to Media specific for Playback framework
// test cases
// ----------------------------------------------------------------------------------------------------------
//
void CTestCollectionPlugin::AddAttributePlaybackFwTestL(CMPXMedia& aMedia,
        const TInt aId,
        const TArray<TMPXAttribute>& aAttrs)
{
    TInt attrCnt = aAttrs.Count();
    for(TInt i = 0; i < attrCnt; i++)
    {
        TInt attrId = aAttrs[i].AttributeId();
        if(aAttrs[i].ContentId() == KMPXMediaIdGeneral)
        {
            if(attrId & EMPXMediaGeneralType)
            {
                AddAttributeGeneralTypeL(aMedia, aId);
            }
            if(attrId & EMPXMediaGeneralCategory)
            {
                AddAttributeGeneralCategoryL(aMedia, aId);
            }
            if(attrId & EMPXMediaGeneralDuration)
            {
                AddAttributeGeneralDurationL(aMedia, aId);
            }
            if(attrId & EMPXMediaGeneralLastPlaybackPosition)
            {
                AddAttributeGeneralLastPlaybackPositionL(aMedia, aId);
            }
        }
        else if(aAttrs[i].ContentId() == KMPXMediaIdMusic)
        {
            if(attrId & EMPXMediaMusicArtist)
            {
                AddAttributeMusicArtistL(aMedia, aId);
            }
        }
        else if(aAttrs[i].ContentId() == KMPXMediaIdDrm)
        {
            if(attrId & EMPXMediaDrmType)
            {
                AddAttributeDrmTypeL(aMedia, aId);
            }
            if(attrId & EMPXMediaDrmProtected)
            {
                AddAttributeDrmProtectedL(aMedia, aId);
            }
            if(attrId & EMPXMediaDrmRightsStatus)
            {
                AddAttributeDrmRightsStatusL(aMedia, aId);
            }
        }
    }
}
Example #17
0
// ----------------------------------------------------------------------------
// Compare two sorted arrays of uids
// ----------------------------------------------------------------------------
//
EXPORT_C TInt MPXUser::CompareOrderedUidArrays(
    const TArray<TUid>& aArray1,
    const TArray<TUid>& aArray2)
    {
    TInt ret(-1);
    TInt count1 = aArray1.Count();
    TInt count2 = aArray2.Count();
    if (count1 >= count2)
        {
        TInt s1(0); // start point of array 1
        TBool found(ETrue);
        for (TInt i=0; i<count2 && found; ++i)
            {
            found = EFalse;
            for (TInt j=s1; j<count1; ++j)
                {
                if (aArray1[j].iUid == aArray2[i].iUid)
                    {
                    s1=j+1; // compare from next item
                    found = ETrue;
                    break;
                    }
                }
            }
        if (found)
            {
            if (count1==count2)
                {
                ret=0;
                }
            else
                {
                ret=1;
                }
            }
        }
    return ret;
    }
// -----------------------------------------------------------------------------
// CAMMSEqualizerControl::PresetNamesL
// Gets the available preset names.
// -----------------------------------------------------------------------------
//
const CDesCArray& CAMMSEqualizerControl::PresetNamesL()
{
    // Returns an array of all preset names (pre-defined and user-defined).
    // The pre-defined presets are in the beginning of the list.

    TArray< TEfAudioEqualizerUtilityPreset > presetNames =
        iEqualizerUtility->Presets();

    // Before appending the preset names, reset the member array
    iPresetNames->Reset();
    for (TInt i = 0; i < presetNames.Count(); i++)
    {
        iPresetNames->AppendL(presetNames[ i ].iPresetName);
    }

    return *iPresetNames;
}
// ---------------------------------------------------------------------------
// CXIMPContextEventFilter::CopyUniqueEventsL()
// ---------------------------------------------------------------------------
//
void CXIMPContextEventFilter::CopyUniqueEventsL(
    const TArray< TInt32 >& aSource, 
    CArrayFix< TInt32 >& aTarget )
    {

    const TInt eventCount = aSource.Count();

    for( TInt ix = 0; ix < eventCount; ix++ )
        {
        const TInt32 event = aSource[ ix ];
        TInt pos;
        if( !FindEventPosition( event, aTarget, pos ) )
            {
            aTarget.InsertL( pos, event );
            }
        }
    }
// -----------------------------------------------------------------------------
// CCLFDefaultOperation::DoMusicAlbumGroupingL
// -----------------------------------------------------------------------------
//
void CCLFDefaultOperation::DoMusicAlbumGroupingL(
    const TArray<MCLFItem*>& aSourceList,
    RPointerArray<MCLFItem>& aGroupedList )
{
    CleanupResetAndDestroyPushL( aGroupedList );

    CDesCArray* tempAlbumNameArray =
        new (ELeave) CDesCArraySeg( KCLFGroupedItemArrayGranularity );
    CleanupStack::PushL( tempAlbumNameArray );

    const TInt count( aSourceList.Count() );
    for( TInt i = 0 ; i < count ; ++i )
    {
        const MCLFItem* item = aSourceList[i];
        TPtrC albumName;
        if( item->GetField( ECLFFieldIdAlbum, albumName ) == KErrNone )
        {
            TInt pos( 0 );
            if( tempAlbumNameArray->FindIsq( albumName, pos ) )
            {
                // not found
                tempAlbumNameArray->InsertIsqL( albumName );

                // make new item
                MCLFModifiableItem* newItem =
                    ContentListingFactory::NewModifiableItemLC();
                newItem->AddFieldL( ECLFFieldIdAlbum, albumName );
                iGroupedItemList.AppendL( newItem );    // takes ownership
                CleanupStack::Pop(); // newItem

                TPtrC artistName;
                if( item->GetField( ECLFFieldIdArtist, artistName ) == KErrNone )
                {
                    newItem->AddFieldL( ECLFFieldIdArtist, artistName );
                }

                // add new item to grouper list
                aGroupedList.AppendL( newItem );
            }
        }
    }
    CleanupStack::PopAndDestroy( tempAlbumNameArray );

    CleanupStack::Pop( &aGroupedList );
}
// -----------------------------------------------------------------------------
// AppendItemsToArrayL
// append aSourceArray items to aDestArray
// -----------------------------------------------------------------------------
//
void AppendItemsToArrayL( const TArray<MCLFItem*>& aSourceArray,
                          RPointerArray<MCLFItem>& aDestArray,
                          TCLFUndefinedItemPosition aPosition,
                          TInt& aItemIndex,
                          TInt& aLastAddedItemCount )
{
    if( aPosition == ECLFSortingStyleUndefinedFirst )
    {
        aItemIndex = aItemIndex - aLastAddedItemCount;
    }

    aLastAddedItemCount = aSourceArray.Count();
    for( TInt i = 0 ; i < aLastAddedItemCount ; ++i )
    {
        aDestArray.InsertL( aSourceArray[i], aItemIndex );
        ++aItemIndex;
    }
}
void CGlxCollectionPluginAlbums::HandleCpiAttributeResponseL(CMPXMedia* aResponse, TArray<TMPXAttribute> aCpiAttributes, TArray<TGlxMediaId> aMediaIds)
    {
    TRACER("CGlxCollectionPluginAlbums::HandleCpiAttributeResponseL");
    const TInt mediaIdCount = aMediaIds.Count();
    
    switch (mediaIdCount)
        {
    case 0:
        User::Leave(KErrNotSupported);
        break;
    case 1:
        HandleCpiAttributeResponseL(aResponse, aCpiAttributes, aMediaIds[0]);
        break;
    default:
            {
            // We have an array of CMPXMedia items
            
            if (TGlxMediaId(KGlxCollectionRootId) == aMediaIds[0])
                {
                User::Leave(KErrNotSupported);
                }
                
            CMPXMediaArray* mediaArray = aResponse->ValueCObjectL<CMPXMediaArray>(KMPXMediaArrayContents);
            CleanupStack::PushL(mediaArray);

            const TInt arrayCount = mediaArray->Count();
            
            // Sanity check
            if (arrayCount != mediaIdCount)
                {
                User::Leave(KErrArgument);
                }
            
            for (TInt index = 0; index < arrayCount; index++)
                {
                HandleCpiAttributeResponseL((*mediaArray)[index], aCpiAttributes, aMediaIds[index]);
                }

            aResponse->SetCObjectValueL(KMPXMediaArrayContents, mediaArray);
            CleanupStack::PopAndDestroy(mediaArray);
            }
        break;
        }
    }
TBool CTelephonyAudioRoutingProxy::ValidateOutputRequest(TAudioOutput aOutput)
{
    TELAUDRTNG_RDEBUG1(_L("[TELAUDRTNG]\t CTelephonyAudioRoutingProxy[%x]::ValidateOutputRequest"),this);
    TELAUDRTNG_RDEBUG1(_L("[TELAUDRTNG]\t CTelephonyAudioRoutingProxy::ValidateOutputRequest for: %d"),aOutput);

    TArray<CTelephonyAudioRouting::TAudioOutput> availableOutputs = (iSession.AvailableOutputs()).Array();

    TBool found = EFalse;
    TInt count = availableOutputs.Count();
    for(TInt i = 0; i < count; i++)
    {
        if (aOutput == availableOutputs[i])
        {
            found = ETrue;
            break;
        }
    }
    return found;
}
// -----------------------------------------------------------------------------
TInt TsEntryKeyGeneraror::Generate(TTsEntryKey& returnKey, TInt windowGroupId, 
    const TArray<RWsSession::TWindowGroupChainInfo>& groupChain)
{
    for (TInt iter(0); iter < groupChain.Count(); ++iter) {
        if (groupChain[iter].iId == windowGroupId) {
            returnKey = TTsEntryKey(windowGroupId);
            if (groupChain[iter].iId == groupChain[iter].iParentId) {
                return KErrBadHandle;
            }
            else if (0 >= groupChain[iter].iParentId) {
                return KErrNone;
            }
            else {
                return TsEntryKeyGeneraror::Generate(returnKey, groupChain[iter].iParentId, groupChain);
            }
        }
    }
    return KErrNotFound;
}
/**
Helper function to run a command and test the expected results
*/
void CCmdTestMultipleWait::CreateCmdAndExecuteL(TArray<TDeferredCmdConfiguration> aDeferredCmds, TInt aExpectedErr, TBool aCancel, TInt32 aMultipleWaitTimeout)
	{
	iTestList = CCmdTestList::NewL(StopSchedulerCallBack, this);
	// add all deferred commands
	TInt count = aDeferredCmds.Count();
	for (TInt i = 0; i < count; i++)
		{
		AddDeferredCommandsInListL(aDeferredCmds[i]);
		}
	iTestList->AddMultipleWaitCommandL(aMultipleWaitTimeout);

	if (aCancel)
		{
		CreateCancelOnCommands(iTestList);
		}
	StartScheduler();
	TInt err = iTestList->Errorcode();
	INFO_PRINTF3(_L("Test completed with err : %d. expected err : %d"), err, aExpectedErr);
	TEST(err == aExpectedErr);
	Reset();
	}
// -----------------------------------------------------------------------------
// PopulateMediaWithItemL
// -----------------------------------------------------------------------------
TInt CGlxMediaListsTestCollectionPlugin::PopulateMediaWithItemL(CMPXMedia*& aMedia, const CItem* aItem, const TArray<TMPXAttribute>& aAttrs)
	{
	TInt bitmapHandle(0);
	if ( aItem )
	        {
		for ( TInt i = 0; i < aAttrs.Count(); i++ )
			{
			if ( aAttrs[i] == KMPXMediaGeneralId )
				{
				aMedia->SetTObjectValueL(KMPXMediaGeneralId, aItem->iId);
				}
			else if ( aAttrs[i] == KMPXMediaGeneralUri )
				{
				aMedia->SetTextValueL(KMPXMediaGeneralUri, *aItem->iFilename);
				}
			else if ( aAttrs[i] == KMPXMediaGeneralTitle )
				{
				aMedia->SetTextValueL(KMPXMediaGeneralTitle, *aItem->iTitle);
				}
			else if ( aAttrs[i] == KMPXMediaGeneralDate )
				{
				aMedia->SetTObjectValueL(KMPXMediaGeneralDate, aItem->iDateTime);
				}
			else if ( aAttrs[i] == KMPXMediaGeneralSize )
				{
				aMedia->SetTObjectValueL(KMPXMediaGeneralSize, aItem->iFileSize);
				}
			else if ( aAttrs[i] == KMPXMediaGeneralDrive )
				{
				aMedia->SetTextValueL(KMPXMediaGeneralDrive, *aItem->iDrive);
				}
			else if ( KGlxMediaIdBitmapHandle == aAttrs[i].ContentId() )
				{
				bitmapHandle = aAttrs[i].AttributeId();
				}
			}
		}

	return bitmapHandle;
	}
// ----------------------------------------------------------------------------------------------------------
// Filter out media in aMediaArray which match aFilter
// ----------------------------------------------------------------------------------------------------------
//
void CTestCollectionPlugin::FilterMediaArray(CMPXMediaArray& aMediaArray, CMPXFilter* aFilter)
{
    if(aFilter )
    {
        TArray<TMPXAttribute> filterAttr = aFilter->Attributes();
        TInt arrCnt = aMediaArray.Count();
        for(TInt i = arrCnt-1; i >= 0; i--) // Remove from the back
        {
            CMPXMedia* media = aMediaArray[i];
            for(TInt ii = 0; ii < filterAttr.Count(); ii++)
            {
                TMPXAttribute attr = filterAttr[ii];
                if( media->IsSupported( attr ) )
                {
                    TBool match = EFalse;
                    if(attr == KMPXMediaGeneralId)
                    {
                        TInt filterId = *aFilter->Value<TInt>( attr );
                        TInt mediaId = *media->Value<TInt>( attr );
                        if(filterId == mediaId)
                            match = ETrue;
                    }
                    else if(attr == KMPXMediaGeneralTitle || attr == KMPXMediaGeneralUri)
                    {
                        const TDesC& filterText = aFilter->ValueText( attr );
                        const TDesC& mediaText = media->ValueText( attr );
                        if(filterText == mediaText)
                            match = ETrue;
                    }
                    if( match )
                    {
                        aMediaArray.Remove( i );
                        break;
                    }
                }
            }
        }
    }
}
Example #28
0
// ----------------------------------------------------------------------------
// Group attributes belonging to one content into an item in the array
// ----------------------------------------------------------------------------
//
EXPORT_C void MPXUser::MergeAttributeL(
    const TArray<TMPXAttribute>& aSrc,
    RArray<TMPXAttribute>& aDest)
    {
    CleanupClosePushL(aDest);
    aDest.Reset();
    for (TInt i = 0; i < aSrc.Count(); i++)
        {
        const TMPXAttribute& s = aSrc[i];
        TInt index = aDest.Find(s, TMPXAttribute::MatchContentId);
        if ( KErrNotFound == index )
            {
            aDest.AppendL(s);
            }
        else
            {
            TMPXAttribute& d = aDest[index];
            d = TMPXAttribute(d.ContentId(), d.AttributeId() | s.AttributeId());
            }
        }
    CleanupStack::Pop();
    }
// -----------------------------------------------------------------------------
// CMPXClientList::IsMsgSubscribedL
// -----------------------------------------------------------------------------
//
TBool CMPXClientList::IsMsgSubscribedL(TInt aIndex, const CMPXMessage* aMsg)
    {
    // check the subscriptions
    TBool IsSubScribed(EFalse);
    TInt subCount(iClients[aIndex]->iSubscriptions.Count());

    if (subCount)
        {
        const CMPXMediaArray* subscriptionItems =
                                 iClients[aIndex]->iSubscriptions[0]->ItemsL();
        if (1==subCount && (0== subscriptionItems->Count()))
            {// one empty subscription - send everything
            IsSubScribed = ETrue;
            }
        else
            {// have to check the message against the subscriptions.
            MPX_ASSERT(aMsg);
            const TArray<TMPXAttribute> msgAttrs = aMsg->Attributes();
            TInt msgAttrCount(msgAttrs.Count());
            // iterate subscriptions
            for (TInt subIndex = 0; subIndex<subCount && !IsSubScribed; ++subIndex)
                {
                // iterate items for the current subscription
                subscriptionItems =
                            iClients[aIndex]->iSubscriptions[subIndex]->ItemsL();
                TInt itemCount(subscriptionItems->Count());
                for (TInt itemIndex = 0; itemIndex < itemCount; ++itemIndex)
                    {
                    // check the message attributes for the current subscription item
                    TBool subMatch(ETrue);
                    TInt attrMatchCount(0);
                    CMPXSubscriptionItem* subItem(subscriptionItems->AtL(itemIndex));

                    for (TInt msgAttrIndex = 0; msgAttrIndex < msgAttrCount; ++msgAttrIndex)
                        {
                        TBool attrExists(EFalse);
                        TBool attrMatch(EFalse);
                        const TMPXAttribute& msgAttr( msgAttrs[msgAttrIndex] );

                        if ( subItem->IsSupported(msgAttr))
                            {
                            attrExists = ETrue;

                            if ( subItem->Match( *aMsg, msgAttr ))
                                {
                                attrMatch = ETrue;
                                attrMatchCount++;
                                }
                            }

                        if (attrExists && !attrMatch)
                            {
                            subMatch = EFalse;
                            break;
                            }
                        }

                    // send the message if all attributes that exist in both the message and the subscription
                    // have the same values and all subscription attributes match
                    if ( subMatch && ( attrMatchCount == subItem->Count()) )
                        {
                        IsSubScribed = ETrue;
                        break;
                        }
                    }
                }
            }
        } // else subCount = 0, IsSubScribed = EFalse (default)
    return IsSubScribed;
    }
// ----------------------------------------------------------------------------
// Extended properties of the current file (async)
// ----------------------------------------------------------------------------
//
void CGlxMediaListsTestCollectionPlugin::MediaL(const CMPXCollectionPath& aPath,
		const TArray<TMPXAttribute>& aAttrs,
                        const TArray<TCapability>& /*aCaps*/,
                        CMPXAttributeSpecs* /*aSpecs*/)
    {
    __ASSERT_ALWAYS(!iMedia, Panic(EGlxPanicIllegalState));

    TInt error = KErrNone;
    CItem* item = NULL;
    TInt bitmapHandle = 0;

    RArray<TInt> supportedIds;
    CleanupClosePushL(supportedIds);
    iMedia = CMPXMedia::NewL(supportedIds.Array());
    CleanupStack::PopAndDestroy(&supportedIds);

    TArray<TInt> selection = aPath.Selection();
    TInt selectionCount = selection.Count();
    if (selectionCount > 1)
        {
        CMPXMediaArray* mediaArray = CMPXMediaArray::NewL();
        CleanupStack::PushL(mediaArray);

        for (TInt count = 0; count < selectionCount; ++count)
            {
            item = ItemL(aPath, selection[count]);

            if (item)
                {
                RArray<TInt> supportedIds;
                CleanupClosePushL(supportedIds);
                CMPXMedia* media = CMPXMedia::NewL(supportedIds.Array());
                CleanupStack::PopAndDestroy(&supportedIds);

                CleanupStack::PushL(media);

                (void)PopulateMediaWithItemL(media, item, aAttrs);

                mediaArray->AppendL(*media);

                CleanupStack::PopAndDestroy(media);
                }
            else
                {
                error = KErrNotFound;
                break;
                }
            }

        PopulateMediaWithArrayL(iMedia, mediaArray);

        CleanupStack::PopAndDestroy(mediaArray);
        }
    else
        {
	item = ItemL(aPath, aPath.Index());

        if (item)
            {
            bitmapHandle = PopulateMediaWithItemL(iMedia, item, aAttrs);
            }
        else
            {
            error = KErrNotFound;
            }
        }

    if ( (KErrNone == error) && bitmapHandle )
        {
        // Get thumbnail for the item
        TGlxThumbnailRequest request;
        request.iId = item->iId;
    	request.iSizeClass = TSize(60, 45);
    	request.iPriorityMode = TGlxThumbnailRequest::EPrioritizeSpeed;
    	request.iBitmapHandle = bitmapHandle;

       	iThumbnailCreator->FetchThumbnailL(request, *this);
        }
    else
        {
        /*****************************************************
        * Old synchronous code
        ******************************************************/
        // No thumbnail requested - send response now
        //iObs->HandleMedia(*iMedia, error);
        //delete iMedia;
        //iMedia = NULL;
        
        /*****************************************************
        * New Async Code. Instantiate callback mechanism
        ******************************************************/
        
    	AsyncNotifyL(iMedia, error, CGlxAsyncNotifier::EMedia);  
        }
    }