--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyutils/dial/src/DIALUTIL.CPP Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,433 @@
+// Copyright (c) 1997-2009 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:
+//
+
+/**
+ @file
+ @internalComponent
+ @deprecated 9.1
+*/
+
+#include "DIALUTIL.H"
+
+/**
+@deprecated 9.1
+*/
+TInt TDialNumber::String (const TDes& aPhoneNumber, TInt aPos) const
+ {
+ while (aPhoneNumber[aPos] == KCharSpace && aPos < aPhoneNumber.Length()-1) // already on a space then move to a non-space
+ {
+ aPos++;
+ }
+
+ if (aPos > aPhoneNumber.Length())
+ {
+ return (KErrNotFound);
+ }
+
+ while (aPhoneNumber[aPos] != KCharSpace && aPos < aPhoneNumber.Length()-1)
+ {
+ aPos++;
+ }
+
+ if (aPos >= aPhoneNumber.Length()-1)
+ {
+ return (KErrNotFound);
+ }
+
+ return (aPos);
+ }
+
+/**
+@deprecated 9.1
+*/
+void TDialNumber::SpaceParser(const TDes& aPhoneNumber)
+ {
+ TInt i = aPhoneNumber.Locate(KCharPlus) ;
+ TInt j = aPhoneNumber.Locate(KCharSpace) ;
+ if (j!=-1) // there space(s)
+ j = String ( aPhoneNumber , 0) ;
+ else
+ j = -1 ;
+
+ if ( i==-1 || j==-1 )
+ {
+ iNatCode = _L("") ;
+ iAreaCode = _L("");
+ iPhoneNumber = aPhoneNumber.Right(aPhoneNumber.Length()-1 ); // from KCharPlus onward
+ return ;
+ }
+ else if (j>i)
+ {
+ if ( j-2*i-2 >= KMaxNatCode )
+ {
+ iNatCode = _L("") ;
+ iAreaCode = _L("");
+ iPhoneNumber = aPhoneNumber.Right(aPhoneNumber.Length()-1 ); // from KCharPlus onward
+ return ;
+ }
+ else
+ iNatCode = aPhoneNumber.Mid(i+1,j-i-1);
+ }
+ i=j;
+ j = String ( aPhoneNumber , i) ;
+
+ if ( i==-1 || j==-1 )
+ iAreaCode = _L("");
+ else if (j>i)
+ {
+ if ( j-2*i-2 >= KMaxAreaCode )
+ {
+ iNatCode = _L("") ;
+ iAreaCode = _L("");
+ iPhoneNumber = aPhoneNumber.Right(aPhoneNumber.Length()-1 ); // from KCharPlus onward
+ return ;
+ }
+ else
+ {
+ iAreaCode = aPhoneNumber.Mid(i+1,j-i-1);
+ DialUtil::RemoveSpace (iAreaCode) ;
+ }
+ }
+
+ if (!iNatCode.Length() &&
+ !iAreaCode.Length() )
+ iPhoneNumber = aPhoneNumber ;
+ else if ( !iAreaCode.Length() ) // no area code supplied take the remain from NatCode onward as telephone number
+ iPhoneNumber = aPhoneNumber.Mid(i+1,aPhoneNumber.Length()-i-1);
+ else
+ {
+ iPhoneNumber = aPhoneNumber.Mid(j+1,aPhoneNumber.Length()-j-1);
+ }
+ DialUtil::RemoveSpace (iPhoneNumber) ;
+ }
+
+/**
+@deprecated 9.1
+*/
+void TDialNumber::BracketParser(const TDes& aPhoneNumber)
+ {
+ TInt i = aPhoneNumber.Locate(KCharPlus) ;
+ TInt j = aPhoneNumber.Locate(KCharSpace) ;
+ if ( j == KErrNotFound ) // no space found in the string
+ j = aPhoneNumber.Locate(KCharOpenBracket) ; // It must has a (
+ else
+ j = Min (aPhoneNumber.Locate(TChar(KCharSpace)),aPhoneNumber.Locate(TChar(KCharOpenBracket)) ) ;
+
+ if ( i==-1 || j==-1 || j<=i )
+ {
+ iNatCode = _L("") ;
+ iAreaCode = _L("");
+ iPhoneNumber = aPhoneNumber.Right(aPhoneNumber.Length()-1 ); // from KCharPlus onward
+ return ;
+ }
+ else
+ {
+ if ( j-2*i-2 >= KMaxNatCode )
+ {
+ iNatCode = _L("") ;
+ iAreaCode = _L("");
+ iPhoneNumber = aPhoneNumber.Right(aPhoneNumber.Length()-1 ); // from KCharPlus onward
+ return ;
+ }
+ else
+ iNatCode = aPhoneNumber.Mid(i+1,j-i-1);
+ }
+
+ i = aPhoneNumber.Locate(KCharOpenBracket) ;
+ j = aPhoneNumber.Locate(KCharCloseBracket) ;
+
+ if ( i==-1 || j==-1 || j<=i )
+ {
+ iNatCode = _L("") ;
+ iAreaCode = _L("");
+ iPhoneNumber = aPhoneNumber.Right(aPhoneNumber.Length()-1 ); // from KCharPlus onward
+ return ;
+ }
+ else
+ {
+ if ( j-2*i-2 >= KMaxAreaCode )
+ {
+ iNatCode = _L("") ;
+ iAreaCode = _L("");
+ iPhoneNumber = aPhoneNumber.Right(aPhoneNumber.Length()-1 ); // from KCharPlus onward
+ return ;
+ }
+ else
+ iAreaCode = aPhoneNumber.Mid(i+1,j-i-1);
+ }
+ if (!iNatCode.Length() &&
+ !iAreaCode.Length() )
+ iPhoneNumber = aPhoneNumber ;
+ else
+ iPhoneNumber = aPhoneNumber.Mid(j+1,aPhoneNumber.Length()-j-1);
+
+ }
+
+/**
+@deprecated 9.1
+*/
+TDialNumber::TDialNumber (const TDes& aPhoneNumber,
+ const TDialLocation& aDialLocation ,
+ const TChargeCard & aChargeCard )
+ {
+
+ if (aPhoneNumber.Locate(KCharPlus) == KErrNotFound)
+ {
+ }
+ else
+ {
+ TInt iOpen =aPhoneNumber.Locate(KCharOpenBracket);
+ TInt iClose=aPhoneNumber.Locate(KCharCloseBracket);
+
+
+ if ( iOpen==KErrNotFound ||
+ iClose==KErrNotFound )
+ {
+ SpaceParser (aPhoneNumber) ;
+ }
+ else // found both brackets
+ {
+ if (iOpen>iClose || iClose-iOpen==1 ) // close bracket before open bracket or nothing in the brackets
+ SpaceParser (aPhoneNumber) ;
+ else
+ {
+ iClose=aPhoneNumber.Locate(KCharSpace);
+
+ if ( iClose==KErrNotFound) // no spaces found in string
+ BracketParser(aPhoneNumber);
+ else
+ {
+ if ( iClose>iOpen) // first space found after open bracket so bracket parser
+ BracketParser (aPhoneNumber) ;
+ else // spaces found before the (
+ {
+ while ( iClose < aPhoneNumber.Length()-1 &&
+ aPhoneNumber[iClose]==KCharSpace)
+ iClose++; // move on until a non-space char found
+
+ if (aPhoneNumber[iClose]==KCharOpenBracket) // is a bracket ?
+ BracketParser(aPhoneNumber); // the bracket parser
+ else
+ SpaceParser (aPhoneNumber) ;
+ }
+ }
+
+ }
+ }
+ }
+ iIntlPrefCode = aDialLocation.IntlPrefCode () ;
+ iNatPrefCode = aDialLocation.NatPrefCode () ;
+
+ if (!iNatCode.Length()) // if national code is not supplied
+ {
+ iNatCode = aDialLocation.NatCode () ; // set it to the current location
+ if (!iAreaCode.Length())
+ iAreaCode = aDialLocation.AreaCode () ;
+ }
+// else // supplied in the string
+// ; // leave the area code alone and assume user has to supplied this
+
+ CallType(aDialLocation) ;
+ if (aChargeCard.ValidateChargeCardInfo())
+ RuleToUse(aChargeCard) ;
+
+ }
+
+/**
+@deprecated 9.1
+*/
+TPtrC TDialNumber::IntlPrefCode () const
+ {
+ return TPtrC(iIntlPrefCode);
+ }
+
+/**
+@deprecated 9.1
+*/
+TPtrC TDialNumber::NatPrefCode ()const
+ {
+ return TPtrC(iNatPrefCode);
+ }
+
+/**
+@deprecated 9.1
+*/
+TPtrC TDialNumber::NatCode()const
+ {
+ return TPtrC(iNatCode);
+ }
+
+/**
+@deprecated 9.1
+*/
+TPtrC TDialNumber::AreaCode()const
+ {
+ return TPtrC(iAreaCode);
+ }
+
+/**
+@deprecated 9.1
+*/
+TPtrC TDialNumber::PhoneNumber()const
+ {
+ return TPtrC(iPhoneNumber);
+ }
+
+/**
+@deprecated 9.1
+*/
+TPtrC TDialNumber::RuleToUse()const
+ {
+ return TPtrC(iRuleToUse);
+ }
+
+/**
+@deprecated 9.1
+*/
+TCallType TDialNumber::CallType()const
+ {
+ return iCallType;
+ }
+
+/**
+@deprecated 9.1
+*/
+void TDialNumber::RuleToUse ( const TChargeCard & aChargeCard)
+ {
+ switch (iCallType)
+ {
+ case ELocalCall:
+ iRuleToUse = aChargeCard.LocalRule() ;
+ break;
+ case ELongDistanceCall:
+ iRuleToUse = aChargeCard.NatRule();
+ break;
+ case EInternationalCall:
+ iRuleToUse = aChargeCard.IntlRule() ;
+ break;
+ }
+ }
+
+/**
+@deprecated 9.1
+*/
+void TDialNumber::CallType ( const TDialLocation & aDialLocation )
+ {
+ iCallType = ELocalCall ;
+ if ( aDialLocation.AreaCode() != iAreaCode)
+ {
+ iCallType = ELongDistanceCall ;
+ }
+ if ( aDialLocation.NatCode() != iNatCode)
+ {
+ iCallType = EInternationalCall ;
+ }
+
+ }
+
+/**
+@deprecated 9.1
+*/
+TBool TDialNumber::IsNatCode() const { return iNatCode.Length(); }
+/**
+@deprecated 9.1
+*/
+TBool TDialNumber::IsAreaCode() const { return iAreaCode.Length();}
+/**
+@deprecated 9.1
+*/
+TBool TDialNumber::IsRuleToUse() const{ return iRuleToUse.Length();}
+
+
+//
+// DialUtil
+//
+
+/**
+@deprecated 9.1
+*/
+TBool DialUtil::AppendDialString(TDes& aDialStr, TPtrC aAppendStr )
+ {
+ if ( (aDialStr.Length()+aAppendStr.Length()) < aDialStr.MaxLength() )
+ {
+ aDialStr.Append (aAppendStr);
+ return ETrue ;
+ }
+ else
+ return EFalse ;
+ }
+
+/**
+@deprecated 9.1
+*/
+TBool DialUtil::AppendDialString(TDes& aDialStr, TChar aChar )
+ {
+ if ( (aDialStr.Length()+1) < aDialStr.MaxLength() )
+ {
+ aDialStr.Append (aChar);
+ return ETrue ;
+ }
+ else
+ return EFalse ;
+ }
+
+
+/**
+@deprecated 9.1
+*/
+void DialUtil::RemoveSpace (TDes& aDialString)
+ {
+ TInt pos = aDialString.Locate(KCharSpace);
+
+ while ( pos != -1 )
+ {
+ aDialString.Replace (pos,1,_L("")) ;
+ pos = aDialString.Locate(KCharSpace);
+ }
+ }
+
+#if 0
+TBool DialUtil::PhoneFormatOK( TDes& aPhoneNumber)
+ {
+ return !(
+ (aPhoneNumber.Locate(KCharOpenBracket)!=KErrNotFound && aPhoneNumber.Locate(KCharCloseBracket)==KErrNotFound)
+ || (aPhoneNumber.Locate(KCharOpenBracket)==KErrNotFound && aPhoneNumber.Locate(KCharCloseBracket)!=KErrNotFound)
+ ) ;
+ }
+#endif
+
+/**
+@deprecated 9.1
+*/
+void DialUtil::RemoveUndiallableChars (TDes& aDialString)
+ {
+ TInt pos = 0;
+ while ( pos < aDialString.Length() )
+ {
+ if ( aDialString[pos] == KCharStar ||
+ aDialString[pos] == KCharHash ||
+ aDialString[pos] == KCharComma ||
+ ( aDialString[pos] >= '0' && aDialString[pos] <='9') )
+
+ ;
+ else
+ {
+ aDialString.Replace (pos,1,_L("")) ;
+ pos--;
+ }
+ pos++ ;
+ }
+
+ }