diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/UIControls/src/TPbk2FindTextUtil.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/UIControls/src/TPbk2FindTextUtil.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,82 @@ +/* +* Copyright (c) 2007-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: Find text box util +* +*/ + + + +// INCLUDE FILES +#include "TPbk2FindTextUtil.h" +#include +#include // CAknSearchField + +#ifdef _DEBUG +enum TPanicCode + { + EPanicLogic_FindTextBufferL + }; + +void Panic(TPanicCode aReason) + { + _LIT(KPanicText, "TPbk2FindTextUtil"); + User::Panic(KPanicText, aReason); + } +#endif // _DEBUG + +// ============================ MEMBER FUNCTIONS =============================== + +void TPbk2FindTextUtil::EnsureFindTextBufSizeL( + const CAknSearchField& aFindBox, + HBufC** aFindTextBuf ) + { + // Initial minimum size for the find text buffer + const TInt KInitialBufSize = 8; + + const TInt findBoxTextLength = aFindBox.TextLength(); + if (findBoxTextLength > 0) + { + TInt bufCapacity = 0; + if ( *aFindTextBuf ) + { + bufCapacity = (*aFindTextBuf)->Des().MaxLength(); + } + if (bufCapacity < findBoxTextLength) + { + // Allocate a new buffer of at least KInitialBufSize + // characters or twice as large as the previous one + const TInt KDoubleSize = 2; + const TInt newBufSize = Max(Max(KInitialBufSize, + KDoubleSize*bufCapacity), findBoxTextLength); + HBufC* newBuf = HBufC::NewL(newBufSize); + delete *aFindTextBuf; + *aFindTextBuf = newBuf; + } + TPtr bufPtr = (*aFindTextBuf)->Des(); + __ASSERT_DEBUG + (bufPtr.MaxLength()>=KInitialBufSize && + bufPtr.MaxLength()>=findBoxTextLength, + Panic(EPanicLogic_FindTextBufferL)); + } + + // caller expect buffer to be found + if ( !(*aFindTextBuf ) ) + { + *aFindTextBuf = HBufC::NewL( KInitialBufSize ); + } + + } + + +// End of File