diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/UIControls/src/CPbk2FindStringSplitter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/UIControls/src/CPbk2FindStringSplitter.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,98 @@ +/* +* Copyright (c) 2002-2007 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: Utility class for splitting find string into separate words +* +*/ + + +// INCLUDES +#include "CPbk2FindStringSplitter.h" +#include +#include + + +//---------------------------------------------------------------------------- +// CPbk2FindStringSplitter::CPbk2FindStringSplitter +//---------------------------------------------------------------------------- +// +inline CPbk2FindStringSplitter::CPbk2FindStringSplitter( + MPbk2ContactNameFormatter& aNameFormatter ): + iNameFormatter( aNameFormatter ) + { + } + + +//---------------------------------------------------------------------------- +// CPbk2FindStringSplitter::~CPbk2FindStringSplitter +//---------------------------------------------------------------------------- +// +CPbk2FindStringSplitter::~CPbk2FindStringSplitter() + { + } + + +//---------------------------------------------------------------------------- +// CPbk2FindStringSplitter::NewL +//---------------------------------------------------------------------------- +// +CPbk2FindStringSplitter* CPbk2FindStringSplitter::NewL( + MPbk2ContactNameFormatter& aNameFormatter ) + { + CPbk2FindStringSplitter* self = new ( ELeave ) CPbk2FindStringSplitter( + aNameFormatter ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + + +//---------------------------------------------------------------------------- +// CPbk2FindStringSplitter::ConstructL +//---------------------------------------------------------------------------- +// +void CPbk2FindStringSplitter::ConstructL() + { + } + +//---------------------------------------------------------------------------- +// CPbk2FindStringSplitter::SplitTextIntoArrayL +//---------------------------------------------------------------------------- +// +MDesCArray* CPbk2FindStringSplitter::SplitTextIntoArrayL( const TDesC& aText ) + { + const TInt KGranularity = 2; + CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat( KGranularity ); + const TInt textLength = aText.Length(); + for ( TInt beg = 0; beg < textLength; ++beg ) + { + // Skip separators before next word + if ( !iNameFormatter.IsFindSeparatorChar( aText[beg] ) ) + { + // Scan the end of the word + TInt end = beg; + for (; end < textLength && + !iNameFormatter.IsFindSeparatorChar( aText[end] ); + ++end ) + { + } + const TInt len = end - beg; + // Append found word to the array + array->AppendL( aText.Mid( beg,len ) ); + // Scan for next word + beg = end; + } + } + return array; + }