// --------------------------------------------------------------------------------- // CUpnpTmFilteredAppList::TmInfoElementMatchingL // Method is used to compare with each of the desired key-value of a particular // info element. // @param aTmInfoElement Reference to Terminal Mode Info Element object. // @return Returns the boolean value ( ETrue/EFalse ) // --------------------------------------------------------------------------------- // TBool CUpnpTmFilteredAppList::TmInfoElementMatchingL( const CUpnpTmInfoElement& aTmInfoElement, TInt aIndex )const { OstTraceFunctionEntry0( CUPNPTMFILTEREDAPPLIST_TMINFOELEMENTMATCHINGL_ENTRY ); TBool match(EFalse); RBuf8 elementName; CleanupClosePushL(elementName); RBuf8 elementValue; CleanupClosePushL(elementValue); aTmInfoElement.GetTmInfoElementL(elementName,elementValue,aIndex ); // Check for required "protocolID" element if ( elementName.Compare(KProtocolId()) == KErrNone ) { const TDesC8& filterProtocol = iFilterInfo->ProtocolId(); if ( ( filterProtocol.Length() == KErrNone) || elementValue.MatchC(filterProtocol) != KErrNotFound ) { // Either protocolID( required element )is unavailable or desired // protocolID matches match = ETrue; } } // Check for optional "format" element else if ( elementName.Compare(KFormat()) == KErrNone ) { const TDesC8& filterFormat = iFilterInfo->Format(); if ( ( filterFormat.Length() == KErrNone) || elementValue.MatchC(filterFormat) != KErrNotFound ) { // Either format ( optional element )is unavailable or desired "format" matches match = ETrue; } } // Check for optional "direction" element else if ( elementName.Compare(KRemotingDirection()) == KErrNone ) { const TDesC8& filterDirection = iFilterInfo->Direction(); if ( ( filterDirection.Length() == KErrNone) || elementValue.MatchC(filterDirection) != KErrNotFound ) { // Either direction ( optional element )is unavailable or desired "direction" matches match = ETrue; } } // Check for optional "appCategory" element else if ( elementName.Compare(KAppCategory()) == KErrNone ) { const TDesC8& filterAppCategory = iFilterInfo->AppCategory(); if ( ( filterAppCategory.Length() == KErrNone) || elementValue.MatchC(filterAppCategory) != KErrNotFound ) { // Either appCategory ( optional element )is unavailable or desired "appCategory" matches match = ETrue; } } // Check for optional "trustLevel" element for App Info Type else if ( ( elementName.Compare(KTrustLevel()) == KErrNone ) && ( aTmInfoElement.TerminalModeInfoType() == KAppInfo()) ) { const TDesC8& filterAppTrustLevel = iFilterInfo->AppTrustLevel(); if ( ( filterAppTrustLevel.Length() == KErrNone) || elementValue.MatchC(filterAppTrustLevel) != KErrNotFound ) { // Either trustLevel ( optional element )is unavailable or desired "trustLevel" matches match = ETrue; } } // Check for optional "contentCategory" element else if ( elementName.Compare(KContCategory()) == KErrNone ) { const TDesC8& filterContCategory = iFilterInfo->ContentCategory(); if ( ( filterContCategory.Length() == KErrNone) || elementValue.MatchC(filterContCategory) != KErrNotFound ) { // Either contentCategory ( optional element )is unavailable or desired // "contentCategory" matches match = ETrue; } } // Check for optional "contentRules" element else if ( elementName.Compare(KContentRules()) == KErrNone ) { const TDesC8& filterContentRules = iFilterInfo->ContentRules(); if ( ( filterContentRules.Length() == KErrNone) || elementValue.MatchC(filterContentRules) != KErrNotFound ) { // Either contentRules ( optional element )is unavailable or desired "contentRules" matches match = ETrue; } } // Check for optional "trustLevel" element for Display Info type else if ( ( elementName.Compare(KTrustLevel()) == KErrNone ) && ( aTmInfoElement.TerminalModeInfoType() == KDisplayInfo()) ) { const TDesC8& filterContTrustLevel = iFilterInfo->ContentTrustLevel(); if ( ( filterContTrustLevel.Length() == KErrNone) || elementValue.MatchC(filterContTrustLevel) != KErrNotFound ) { // Either trustLevel ( optional element )is unavailable or desired "trustLevel" matches match = ETrue; } } // Check for optional "audioType" element else if ( elementName.Compare(KAudioType()) == KErrNone ) { const TDesC8& filterAudioType = iFilterInfo->AudioType(); if ( ( filterAudioType.Length() == KErrNone) || elementValue.MatchC(filterAudioType) != KErrNotFound ) { // Either audioType ( optional element )is unavailable or desired "audioType" matches match = ETrue; } } CleanupStack::PopAndDestroy(2,&elementName); OstTraceFunctionExit0( CUPNPTMFILTEREDAPPLIST_TMINFOELEMENTMATCHINGL_EXIT ); return match; }