diff -r 73a1feb507fb -r bc78a40cd63c tsrc/musenginestub/src/musenguriparser.cpp --- a/tsrc/musenginestub/src/musenguriparser.cpp Tue Aug 31 15:12:07 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,281 +0,0 @@ -/* -* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Parser for recipient's address -* -*/ - - -#include "musenguriparser.h" -#include "mussettings.h" -#include "muslogger.h" - -#include -#include -//#include -#include -#include - - -// ============================ MEMBER FUNCTIONS =============================== - - -// ----------------------------------------------------------------------------- -// UTF7 is not working, since it converts + as +- -// ----------------------------------------------------------------------------- -// -EXPORT_C TMusEngUriParser::TMusEngUriParser( const TDesC16& aUri ) - :iUriType( ENotParsed ) - { - TBuf8 buf; - - if ( CnvUtfConverter::ConvertFromUnicodeToUtf8( buf, aUri ) == 0 ) - { - iUri = buf; - } - else - { - iUri = KNullDesC8(); - } - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -EXPORT_C TMusEngUriParser::TMusEngUriType TMusEngUriParser::UriType() - { - return iUriType; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -EXPORT_C HBufC8* TMusEngUriParser::GetUri8L() - { - MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::GetUri8L()" ) - - __ASSERT_ALWAYS( UriType() != TMusEngUriParser::ENotParsed, - User::Leave( KErrNotReady ) ); - - HBufC8* uri8 = iUri.AllocL(); - - MUS_LOG( "mus: [ENGINE] <- TMusEngUriParser::GetUri8L()" ) - - return uri8; - - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -EXPORT_C HBufC16* TMusEngUriParser::GetUri16L( TBool aPrefix ) - { - MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::GetUri16L()" ) - - __ASSERT_ALWAYS( UriType() != TMusEngUriParser::ENotParsed, - User::Leave( KErrNotReady ) ); - - HBufC16* uri16 = NULL; - - if ( aPrefix ) - { - uri16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( iUri ); - } - else - { - uri16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( - iUri.Mid( KMusEngTelPrefix().Length() ) ); - } - - MUS_LOG( "mus: [ENGINE] <- TMusEngUriParser::GetUri16L()" ) - - return uri16; - - } - - -// ----------------------------------------------------------------------------- -// -// -// ----------------------------------------------------------------------------- -// -EXPORT_C void TMusEngUriParser::ParseUriL() - { - MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL()" ) - - if ( iUri.Find( KMusEngAtSign ) >= 0 ) // Sip uri - { - HandleSipUriL(); - } - else if ( iUri.Find( KMusEngPlusSign ) >= 0 ) // Tel uri - { - HandleTelUriL(); - } - else - { - // check for variant - if ( MultimediaSharingSettings::OperatorVariantSettingL() - != MusSettingsKeys::EOperatorSpecific ) - {// basic behaviour - MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL() \ - normal behaviour" ) - User::Leave( KErrCorrupt ); - } - else - { // variant behaviour(local tel uri) - HandleLocalTelUriL(); - } - } - } - - -// ----------------------------------------------------------------------------- -// -// -// ----------------------------------------------------------------------------- -// -void TMusEngUriParser::HandleSipUriL() - { - if ( iUri.FindF( KMusEngTelPrefix() ) == 0 ) - { - // SIP uri with prefix "tel:" - User::Leave( KErrCorrupt ); - } - else if ( iUri.FindF( KMusEngSipPrefix() ) != 0 ) - { - // SIP uri without prefix - if ( iUri.Length() + KMusEngSipPrefix().Length() <= - KMaxUriLength ) - { - iUri.Insert( 0, KMusEngSipPrefix() ); - } - else - { - User::Leave( KErrCorrupt ); - } - } - else - { - // SIP uri with prefix - iUri.Replace( 0, KMusEngSipPrefix().Length(), KMusEngSipPrefix() ); - } - - TUriParser8 parser; - - User::LeaveIfError( parser.Parse( iUri ) ); - - User::LeaveIfError( parser.Validate() ); - - iUriType = TMusEngUriParser::ESip; - } - - - - -// ----------------------------------------------------------------------------- -// -// -// ----------------------------------------------------------------------------- -// -void TMusEngUriParser::HandleTelUriL() - { - if ( iUri.FindF( KMusEngTelPrefix() ) != 0 ) - { - // Tel uri without prefix - if ( iUri.Length() + KMusEngTelPrefix().Length() <= - KMaxUriLength ) - { - iUri.Insert( 0, KMusEngTelPrefix() ); - } - else - { - User::Leave( KErrCorrupt ); - } - } - else - { - //Tel uri with prefix - iUri.Replace( 0, KMusEngTelPrefix().Length(), KMusEngTelPrefix() ); - } - - TInt index = KMusEngTelPrefix().Length() + KMusEngPlusSign().Length(); - - while ( index < iUri.Length() ) - { - TChar character = iUri[ index ]; - if ( !character.IsDigit() ) - { - User::Leave( KErrCorrupt ); - } - ++index; - } - - iUriType = TMusEngUriParser::ETel; - } - - -// ----------------------------------------------------------------------------- -// -// -// ----------------------------------------------------------------------------- -// -void TMusEngUriParser::HandleLocalTelUriL() - { - MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL() \ - variant behaviour" ) - if ( iUri.FindF( KMusEngTelPrefix() ) != 0 ) - { - // local tel uri without prefix - if ( iUri.Length() + KMusEngTelPrefix().Length() <= - KMaxUriLength ) - { - iUri.Insert( 0, KMusEngTelPrefix() ); - } - else - { - User::Leave( KErrCorrupt ); - } - } - else - { - //Tel uri with prefix - iUri.Replace( - 0, - KMusEngTelPrefix().Length(), - KMusEngTelPrefix() ); - } - - TInt index = KMusEngTelPrefix().Length(); - - // check if all chars are digits - while ( index < iUri.Length() ) - { - TChar character = iUri[ index ]; - if ( !character.IsDigit() ) - { - User::Leave( KErrCorrupt ); - } - ++index; - } - - iUriType = TMusEngUriParser::ETel; - } - - -// End of file