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;
}