TBool TUriShortcutParser16::HasScheme( const TDesC16& aUri ) { int posSchemeComponentDelimiter = aUri.Locate( KSchemeComponentDelimiter ); if ( posSchemeComponentDelimiter > 0 ) { int posOpeningSquareBracket = aUri.Locate( KOpeningSquareBracket ); if ( posOpeningSquareBracket == KErrNotFound || posOpeningSquareBracket > posSchemeComponentDelimiter ) { //scheme present return ETrue; } } return EFalse; }
/** Gets a matching scheme for the prefix contained in the URI. @param aUri descriptor to URI @return Scheme @panic KErrBadName URI should contain a '.' */ const TPtrC16 TUriShortcutParser16::MatchingScheme( const TDesC16& aUri ) const { TInt pos = aUri.Locate( KSeparatorDot ); //make sure it contains at least one '.' __ASSERT_DEBUG( pos > 0 ,User::Panic( KPanicDescriptor,KErrBadName ) ); TPtrC16 prefix( aUri.Left( pos ) ); TPtrC16 scheme ( DefaultScheme() ); if ( KWww().CompareF( prefix ) == 0 ) { scheme.Set( KHttp() ); } else if ( KFtp().CompareF( prefix ) == 0 ) { scheme.Set( KFtp() ); } else if( CheckUncommonSchemes() ) { if ( KGopher().CompareF( prefix ) == 0 ) { scheme.Set( KGopher() ); } else if ( KTelnet().CompareF( prefix ) == 0 ) { scheme.Set( KTelnet() ); } else if ( KWais().CompareF( prefix ) == 0 ) { scheme.Set( KWais() ); } else if ( KProspero().CompareF( prefix ) == 0 ) { scheme.Set( KProspero() ); } else if ( KNews().CompareF( prefix ) == 0 || KNntp().CompareF( prefix ) == 0 ) { scheme.Set( KNntp() ); } } return scheme; }