--- /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 <MPbk2ContactNameFormatter.h>
+#include <badesca.h>
+
+
+//----------------------------------------------------------------------------
+// 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;
+ }