diff -r 0f326f2e628e -r a7632c26d895 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/aknfepuictrlpinyineep.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/aknfepuictrlpinyineep.cpp Fri Jul 23 16:49:01 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1620 +0,0 @@ -/* -* Copyright (c) 2008 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: - * Provides the CAknFepUICtrlPinyinEEP definition - * -*/ - - - - - - - - - - - - -#include -#include -#include -#include -#include -#include - -#include "aknlayoutscalable_avkon.cdl.h" -#include "aknfepuictrlpinyineep.h" -#include "aknfepuilayoutdatamgr.h" -#include "aknfepchineseuidataconv.h" - -_LIT(KFullStop, "\x002E"); - -_LIT( KToneMark1, "\x0020"); -_LIT( KToneMark2, "\x02CA"); -_LIT( KToneMark3, "\x02C7"); -_LIT( KToneMark4, "\x02CB"); -_LIT( KToneMark5, "\x02D9"); -_LIT( KLeftBracket, "\x0028"); -const TInt KControlNum = 1; -const TInt KMaxCharNum = 200; -const TInt KMaxDispNum = 200; - -// --------------------------------------------------------- -// NewL function. -// --------------------------------------------------------- -// -CAknFepUICtrlPinyinEEP* CAknFepUICtrlPinyinEEP::NewL( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - CAknFepUICtrlPinyinEEP* self=CAknFepUICtrlPinyinEEP::NewLC( aParent, aLafDataMgr ); - CleanupStack::Pop(self); // self; - return self; - } - -// --------------------------------------------------------- -// NewLC function. -// --------------------------------------------------------- -// -CAknFepUICtrlPinyinEEP* CAknFepUICtrlPinyinEEP::NewLC( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - CAknFepUICtrlPinyinEEP* self = new(ELeave)CAknFepUICtrlPinyinEEP( aLafDataMgr ); - CleanupStack::PushL( self ); - self->ConstructL( aParent, aLafDataMgr); - return self; - } - -// --------------------------------------------------------- -// Destructor. -// --------------------------------------------------------- -// -CAknFepUICtrlPinyinEEP::~CAknFepUICtrlPinyinEEP() - { - if ( iEditableEntryPane ) - { - delete iEditableEntryPane; - iEditableEntryPane = NULL; - } -// if ( iBgContext ) -// { -// delete iBgContext; -// iBgContext = NULL; -// } - if ( iAbsoluteBuffer ) - { - delete iAbsoluteBuffer; - iAbsoluteBuffer = NULL; - } - if ( iVisualBuffer ) - { - delete iVisualBuffer; - iVisualBuffer = NULL; - } - iArray.ResetAndDestroy(); - delete iKeystrokeArray; - delete iShowKeystrokeArray; - delete iPhraseArray; - delete iPhraseShowKeyStrokeArray; - delete iTempArray; - } - -// --------------------------------------------------------- -// From CCoeControl. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::CountComponentControls() const - { - return KControlNum; - } - -// --------------------------------------------------------- -// From CCoeControl. -// --------------------------------------------------------- -// -CCoeControl* CAknFepUICtrlPinyinEEP::ComponentControl( TInt aIndex ) const - { - switch ( aIndex ) - { - case EEditableEntryPane: - return iEditableEntryPane; - default: - return NULL; - } - } - -// --------------------------------------------------------- -// From CCoeControl. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::Draw( const TRect& /*aRect*/) const - { - } - -// --------------------------------------------------------- -// From CCoeControl. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SizeChanged() - { - LayoutContainedControls(); - } - -// --------------------------------------------------------- -// Set the text buffer and posit the cursor index. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetText( const TDesC& aDes, TInt aCursorIndex, TBool aMiniQwertyZhuyin ) - { - iMiniQwertyZhuyin = aMiniQwertyZhuyin; - iAbsoluteUnderlineBeg = -1; - iAbsoluteUnderlineEnd = -1; - iAbsoluteHighlightBeg = -1; - iAbsoluteHighlightEnd = -1; - iArray.ResetAndDestroy(); - TInt absoluteBufferLen = iAbsoluteBuffer->Length(); - TInt desLen = aDes.Length(); - - if ( aCursorIndex > aDes.Length() ) - { - aCursorIndex = aDes.Length(); - } - else if ( aCursorIndex < 0 ) - { - aCursorIndex = 0; - } - - // cursor is at the end of buffer and add a character - if ( aDes.Left( iAbsoluteBuffer->Length() ) == *iAbsoluteBuffer - && iAbsoluteCursorPos == iAbsoluteBuffer->Length() && aCursorIndex - == aDes.Length() ) - { - Append( aDes.Right( aDes.Length() - iAbsoluteBuffer->Length() ) ); - } - // delete one character - else if ( iAbsoluteBuffer->Left( aCursorIndex ).Compare(aDes.Left(aCursorIndex)) == 0 - && aCursorIndex < iAbsoluteCursorPos - && iAbsoluteBuffer->Compare( aDes ) != 0 - && 0 == iAbsoluteBuffer->Right( absoluteBufferLen - iAbsoluteCursorPos ).Compare( - aDes.Right( desLen - aCursorIndex)) ) - { - Delete( iAbsoluteCursorPos - (iAbsoluteBuffer->Length() - - aDes.Length()), iAbsoluteBuffer->Length() - aDes.Length() ); - } - else if ( iAbsoluteBuffer->Length() < aDes.Length() - && iAbsoluteBuffer->Left( iAbsoluteCursorPos ) - == aDes.Left( iAbsoluteCursorPos ) - && iAbsoluteBuffer->Right( iAbsoluteBuffer->Length() - - iAbsoluteCursorPos ) == aDes.Right( iAbsoluteBuffer->Length() - - iAbsoluteCursorPos ) && aCursorIndex - iAbsoluteCursorPos - == aDes.Length() - iAbsoluteBuffer->Length() ) - { - TPtrC tmp = aDes.Mid( iAbsoluteCursorPos, aDes.Length() - - iAbsoluteBuffer->Length() ); - Insert( iAbsoluteCursorPos, tmp ); - } - else - { - SetText( aDes ); - SetCursor( aCursorIndex ); - } - } - -// --------------------------------------------------------- -// Set the text buffer and posit the cursor index for zhuyin. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetTextForZhuyin( - const TDesC& aDes, - TInt aCursor, - TInt aChineseCount, - const TDesC& aJudgeSeed, - TInt aKeystroke, - TBool aInvalid, - TBool aMiniQwertyZhuyin) - { - iMiniQwertyZhuyin = aMiniQwertyZhuyin; - TInt actionType = EZhuyinNULL; - if ( aKeystroke == 0 && aJudgeSeed.Compare(iJudgeSeed) == 0) - { - actionType = EZhuyinMoveCursor; - } - else if ( aChineseCount == iChineseCount + 1 ) - { - actionType = EZhuyinNULL; - } - else if ( aKeystroke == 0 && aJudgeSeed.Length() <= iJudgeSeed.Length() - 1) - { - actionType = EZhuyinDelete; - } - else - { - if ( aJudgeSeed.Length() == iJudgeSeed.Length()) - { - if ( aJudgeSeed.Left(aKeystroke - 1).Compare(iJudgeSeed.Left(aKeystroke - 1)) == 0 - && aJudgeSeed.Mid(aKeystroke - 1,1).Compare(iJudgeSeed.Mid(aKeystroke - 1,1)) != 0 ) - { - actionType = EZhuyinReplace; - } - else if ( aCursor == GetCursor() ) - { - actionType = EZhuyinReplace; - } - else - { - actionType = EZhuyinMoveCursor; - } - } - else if ( aJudgeSeed.Length() == iJudgeSeed.Length() + 1) - { - actionType = EZhuyinInsert; - } - else if ( aJudgeSeed.Length() == iJudgeSeed.Length() - 1) - { - actionType = EZhuyinDelete; - } - else if ( KErrNotFound != iJudgeSeed.Find( aJudgeSeed ) ) - { - actionType = EZhuyinDelete; - } - else - { - actionType = EZhuyinNULL; - } - } - iArray.ResetAndDestroy(); - iJudgeSeed = aJudgeSeed; - iChineseCount = aChineseCount; - if ( iLastValid && aInvalid ) - { - TInt newOffset = 0; - TPtrC ptr = iAbsoluteBuffer->Des(); - for ( TInt i = 0; i < iOffset; i++ ) - { - if ( ptr.Mid(i,1).Compare(KFullStop) == 0 ) - { - continue; - } - newOffset++; - } - iOffset = newOffset; - } - else if ( !iLastValid && !aInvalid ) - { - TInt newOffset = 0; - TInt i = 0; - TPtrC ptr = aDes; - for ( i = 0; i < iOffset && newOffset < ptr.Length(); ) - { - if ( ptr.Mid(newOffset,1).Compare(KFullStop) != 0 ) - { - i++; - } - newOffset++; - } - iOffset = newOffset; - } - iLastValid = !aInvalid; - switch ( actionType ) - { - case EZhuyinInsert: - { - *iAbsoluteBuffer = aDes; - iAbsoluteCursorPos = aCursor; - this->CalculateVisualTextForInsert( 0, aDes ); - this->iEditableEntryPane->SetText( *iVisualBuffer ); - this->CalculateVisualIndex(); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - - iOffset ); - } - break; - case EZhuyinReplace: - { - TRect panerect = iEditableEntryPane->Rect(); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( - textPaneTextLayout.iFont, - NULL ); - TInt lenToCursor = font->TextWidthInPixels( aDes.Mid( iOffset, - aCursor - iOffset ) ); - if ( lenToCursor < panerect.Width() - panerect.Width() - *KLROffset/KDenominator * 2 ) - { - *iAbsoluteBuffer = aDes; - iAbsoluteCursorPos = aCursor; - TInt stride = 0; - for (stride = 1;; stride ++ ) - { - if ( iOffset + stride > aDes.Length() ) - { - break; - } - TInt tmpFontLen = font->TextWidthInPixels( aDes.Mid( - iOffset, stride ) ); - if ( tmpFontLen > panerect.Width() - panerect.Width() - *KLROffset/KDenominator * 2 ) - { - break; - } - } - *iVisualBuffer = aDes.Mid( iOffset, stride - 1 ); - iEditableEntryPane->SetText( *iVisualBuffer ); - iEditableEntryPane->SetCursorPosition( aCursor-iOffset ); - } - else - { - SetText( aDes, aCursor ); - } - CalculateVisualIndex(); - break; - } - case EZhuyinDelete: - { - *iAbsoluteBuffer = aDes; - iAbsoluteCursorPos = aCursor; - this->CalculateVisualTextForDelete( 0, 0 ); - this->iEditableEntryPane->SetText( *iVisualBuffer ); - this->CalculateVisualIndex(); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - - iOffset ); - } - break; - default: - SetText( aDes, aCursor ); - } - } - -// --------------------------------------------------------- -// Set the text buffer and maintain the current cursor position. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetText( const TDesC& aDes ) - { - iAbsoluteCursorPos = 0; - iOffset = 0; - iAbsoluteBuffer->Des().Zero(); - iVisualBuffer->Des().Zero(); - *iAbsoluteBuffer = aDes; - CalculateVisualTextForMoveRight(); - iEditableEntryPane->SetText( *iVisualBuffer ); - CalculateVisualIndex(); - } - -// --------------------------------------------------------- -// Set the cursor position. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetCursor( const TInt aIndex ) - { - SetCursorForMoveRight( aIndex ); - } - -// --------------------------------------------------------- -// get the position index of cursor.The max cursor index must -// be larger than the length of text buffer by 1. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::GetCursor() - { - return iAbsoluteCursorPos; - } - -// --------------------------------------------------------- -// move cursor to the left by a 1 stride. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::MoveCursorLeft( TInt aStride ) - { - if ( iAbsoluteCursorPos - aStride < 0 ) - { - return EFalse; - } - if ( iEditableEntryPane->MoveCursorLeft( aStride ) == 0 ) - { - iAbsoluteCursorPos = iAbsoluteCursorPos - aStride; - } - else - { - iAbsoluteCursorPos = iAbsoluteCursorPos - aStride; - SetCursorForMoveLeft( iAbsoluteCursorPos ); - } - return ETrue; - } - -// --------------------------------------------------------- -// move cursor to the right by a 1 stride. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::MoveCursorRight( TInt aStride ) - { - if ( iAbsoluteCursorPos + aStride > iAbsoluteBuffer->Length() ) - { - return EFalse; - } - if ( iEditableEntryPane->MoveCursorRight( aStride ) == 0 ) - { - iAbsoluteCursorPos = iAbsoluteCursorPos + aStride; - } - else - { - iAbsoluteCursorPos = iAbsoluteCursorPos + aStride; - SetCursorForMoveRight( iAbsoluteCursorPos ); - } - return ETrue; - } - -// --------------------------------------------------------- -// active the cursor,the cursor will be black and with a wink -// this cursor state represent this control is focused. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::ActiveCursor() - { - iEditableEntryPane->ActiveCursor(); - } - -// --------------------------------------------------------- -// deactive the cursor, the cursor will be gray and no wink this cursor -// state represent this control with no focus. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::DeactiveCursor() - { - iEditableEntryPane->DeactiveCursor(); - } - -// --------------------------------------------------------- -// enable the cursor,the cursor will be drawn. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::EnableCursor() - { - iEditableEntryPane->EnableCursor(); - } - -// --------------------------------------------------------- -// deactive the cursor, the cursor will not be drawn. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::DisableCursor() - { - iEditableEntryPane->DisableCursor(); - } - -// --------------------------------------------------------- -// set the beginning and ending index for the underline text. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetUnderline( TInt aBeg, TInt aEnd ) - { - CAknFepUICtrlEEPControl::TSegment* tmp = - new CAknFepUICtrlEEPControl::TSegment ( aBeg, aEnd, CAknFepUICtrlEEPControl::EUnderline ); - iArray.Append( tmp ); - - TInt visualUnderlineBeg = aBeg - iOffset; - TInt visualUnderlineEnd = aEnd - iOffset; - - if ( - visualUnderlineBeg < 0 && - visualUnderlineEnd < 0 - || - visualUnderlineBeg> iVisualBuffer->Length() - 1 && - visualUnderlineEnd> iVisualBuffer->Length() - 1 - ) - { - visualUnderlineBeg = -1; - visualUnderlineEnd = -1; - } - else - { - if ( visualUnderlineBeg < 0 ) - { - visualUnderlineBeg = 0; - } - if ( visualUnderlineEnd> iVisualBuffer->Length() - 1 ) - { - visualUnderlineEnd = iVisualBuffer->Length() - 1; - } - } - iEditableEntryPane->SetUnderline( visualUnderlineBeg, visualUnderlineEnd ); - - iAbsoluteUnderlineBeg = aBeg; - iAbsoluteUnderlineEnd = aEnd; - } - -// --------------------------------------------------------- -// get the indexes for text with underline. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::GetUnderlineIndex( TInt& aBeg, TInt& aEnd ) - { - aBeg = iAbsoluteUnderlineBeg; - aEnd = iAbsoluteUnderlineEnd; - } - -// --------------------------------------------------------- -// set the indexes for the text with highlight -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetHighlight( TInt aBeg, TInt aEnd ) - { - CAknFepUICtrlEEPControl::TSegment* tmp = - new CAknFepUICtrlEEPControl::TSegment ( aBeg, aEnd, CAknFepUICtrlEEPControl::EHighlight ); - iArray.Append( tmp ); - - TInt visualHighlightBeg = aBeg - iOffset; - TInt visualHighlightEnd = aEnd - iOffset; - - if ( - visualHighlightBeg < 0 && - visualHighlightEnd < 0 - || - visualHighlightBeg> iVisualBuffer->Length() - 1 && - visualHighlightEnd> iVisualBuffer->Length() - 1 - ) - { - visualHighlightBeg = -1; - visualHighlightEnd = -1; - } - else - { - if ( visualHighlightBeg < 0 ) - { - visualHighlightBeg = 0; - } - if ( visualHighlightEnd> iVisualBuffer->Length() - 1 ) - { - visualHighlightEnd = iVisualBuffer->Length() - 1; - } - } - iEditableEntryPane->SetHighlight( visualHighlightBeg, visualHighlightEnd ); - - iAbsoluteHighlightBeg = aBeg; - iAbsoluteHighlightEnd = aEnd; - } - -// --------------------------------------------------------- -// get the indexes for the text with highlight -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::GetHighlightIndex( TInt& aBeg, TInt& aEnd ) - { - aBeg = iAbsoluteHighlightBeg; - aEnd = iAbsoluteHighlightEnd; - } - -// --------------------------------------------------------- -// set keystroke index. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetCursorIndexOfKeystroke( const TInt aStartIndex ) - { - iIndex = aStartIndex; - } - -// --------------------------------------------------------- -// get the keystroke index -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::GetCursorIndexOfKeystroke() - { - return iIndex; - } - -// --------------------------------------------------------- -// whether this control will be actived.ETrue represent enable -// otherwise disable. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::Enable( TBool aEnable ) - { - iEnabled = aEnable; - if ( aEnable == EFalse ) - { - Reset(); - DrawNow(); - } - iEditableEntryPane->MakeVisible( aEnable ); - MakeVisible( aEnable ); - } - -// --------------------------------------------------------- -// return whether this control is enabled. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::IsEnabled() const - { - return iEnabled; - } - -// --------------------------------------------------------- -// Get the info before cursor. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::GetText( TDes& aText ) - { - aText = *iAbsoluteBuffer; - } - -// --------------------------------------------------------- -// Get the info before cursor. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::GetDesBeforeCursor( TDes& aOut ) - { - if ( iAbsoluteCursorPos == 0 ) - { - return EFalse; - } - else - { - aOut = iAbsoluteBuffer->Mid( (iAbsoluteCursorPos - 1 ), 1 ); - return ETrue; - } - } - -// --------------------------------------------------------- -// From MAknFepUICtrlEditPane. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetToneMark( const TDesC& /*aToneMark*/) - { - } - -// --------------------------------------------------------- -// From MAknFepUICtrlEditPane. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetToneMarkValidity( TBool /*aValid*/) - { - } - -// --------------------------------------------------------- -// From MAknFepUICtrlEditPane. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetOverrideFontId( TInt /*aFontId*/) - { - } - -// --------------------------------------------------------- -// From MAknFepUICtrlEditPane. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetFlag( TInt /*aFlag*/) - { - } - -// --------------------------------------------------------- -// From MAknFepUICtrlEditPane. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::ClearFlag( TInt /*aFlag*/) - { - } - -// --------------------------------------------------------- -// From MAknFepUICtrlEditPane. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::IsFlagSet( TInt /*aFlag*/) const - { - return EFalse; - } - -// --------------------------------------------------------- -// Set the cursor index for moving to the left. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetCursorForMoveLeft( const TInt aIndex ) - { - iAbsoluteCursorPos = aIndex; - CalculateVisualTextForMoveLeft(); - iEditableEntryPane->SetText( *iVisualBuffer ); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - iOffset ); - CalculateVisualIndex(); - } - -// --------------------------------------------------------- -// Set the cursor index for moving to the right. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetCursorForMoveRight( const TInt aIndex ) - { - iAbsoluteCursorPos = aIndex; - CalculateVisualTextForMoveRight(); - iEditableEntryPane->SetText( *iVisualBuffer ); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - iOffset ); - CalculateVisualIndex(); - } - -// --------------------------------------------------------- -// Add some text at the end of buffer. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::Append( const TDesC& aDes ) - { - if ( this->iAbsoluteCursorPos != this->iAbsoluteBuffer->Length() ) - { - return EFalse; - } - else - { - if ( iAbsoluteBuffer->Length() + aDes.Length() - > iAbsoluteBuffer->Des().MaxLength() ) - { - return EFalse; - } - iAbsoluteBuffer->Des().Append( aDes ); - iAbsoluteCursorPos = iAbsoluteCursorPos + aDes.Length(); - this->CalculateVisualTextForAppend( aDes ); - this->iEditableEntryPane->SetText( *iVisualBuffer ); - this->CalculateVisualIndex(); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - iOffset ); - return ETrue; - } - } - -// --------------------------------------------------------- -// delete the content begin with aBeg index, and with an aLen length. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::Delete( TInt aBeg, TInt aLen ) - { - if ( aBeg < 0 || aLen < 0 || aBeg + aLen> iAbsoluteBuffer->Length() ) - { - return EFalse; - } - else - { - iAbsoluteBuffer->Des().Delete( aBeg, aLen ); - iAbsoluteCursorPos = aBeg; - this->CalculateVisualTextForDelete( aBeg, aLen ); - this->iEditableEntryPane->SetText( *iVisualBuffer ); - this->CalculateVisualIndex(); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - iOffset ); - return ETrue; - } - } - -// --------------------------------------------------------- -// Insert some text after aIndex character. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::Insert( TInt aIndex, const TDesC& aDes ) - { - if ( iAbsoluteBuffer->Length() + aDes.Length() > iAbsoluteBuffer->Des().MaxLength() ) - { - return EFalse; - } - iAbsoluteBuffer->Des().Insert( aIndex, aDes ); - iAbsoluteCursorPos = iAbsoluteCursorPos + aDes.Length(); - this->CalculateVisualTextForInsert( aIndex, aDes ); - this->iEditableEntryPane->SetText( *iVisualBuffer ); - this->CalculateVisualIndex(); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - iOffset ); - return ETrue; - } - -// --------------------------------------------------------- -// Replace text from aBeg index to aBeg + aLen with aDes. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::Replace( TInt /*aBeg*/, TInt /*aLen*/, - const TDesC& /*aDes*/) - { - return EFalse; - } - -// --------------------------------------------------------- -// Reset private member viariable. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::Reset() - { - iIndex = 0; - iEnabled = EFalse; - iAbsoluteCursorPos = 0; - iOffset = 0; - iAbsoluteUnderlineBeg = -1; - iAbsoluteUnderlineEnd = -1; - iAbsoluteHighlightBeg = -1; - iAbsoluteHighlightEnd = -1; - iAbsoluteBuffer->Des().Zero(); - iVisualBuffer->Des().Zero(); - iEditableEntryPane->ResetAll(); - iArray.ResetAndDestroy(); - iJudgeSeed.Zero(); - iLastValid = ETrue; - iChineseCount = 0; - } - -// --------------------------------------------------------- -// Layout contained controls. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::LayoutContainedControls() - { - TRect outerRect; - TRect innerRect; - CalculateFrameRects( outerRect, innerRect ); - TRect rect = Rect(); - iEditableEntryPane->SetRect( rect ); - } - -// --------------------------------------------------------- -// layout the background frames. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::LayoutFrames() - { - TRect outerRect; - TRect innerRect; -// CalculateFrameRects( outerRect, innerRect ); -// iBgContext->SetFrameRects( outerRect, innerRect ); -// iBgContext->SetParentPos( PositionRelativeToScreen() ); - } - -// --------------------------------------------------------- -// layout its rectangles -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::LayoutRects() - { - TRect windowRect = - CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData( EEEPWindowRect )); - TInt height = windowRect.Height(); - TInt width = windowRect.Width(); - windowRect.iTl.iY = 0; - windowRect.iTl.iX = 0; - windowRect.SetHeight( height ); - windowRect.SetWidth( width ); - iSize.SetSize( width, Rect().Height() ); - } - -// --------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------- -// -CAknFepUICtrlPinyinEEP::CAknFepUICtrlPinyinEEP( CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - iIndex = 0; - iEnabled = EFalse; - iAbsoluteCursorPos = 0; - iAbsoluteUnderlineBeg = -1; - iAbsoluteUnderlineEnd = -1; - iAbsoluteHighlightBeg = -1; - iAbsoluteHighlightEnd = -1; - iOffset = 0; - iJudgeSeed.Zero(); - iLastValid = ETrue; - iChineseCount = 0; - iChangeFlag = 0; - iAutoChangeFlag = 1; - iAllValidFlag = 1; - iInvalidKeystrokeIndex = 0; - iCandidateRefreshFlag = 0; - iDelimiterCount = 0; - iLafDataMgr = aLafDataMgr; - } - -// --------------------------------------------------------- -// Two-phrase constructor. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::ConstructL( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - SetContainerWindowL( aParent ); - iEditableEntryPane = CAknFepUICtrlEEPControl::NewL( Window(), aLafDataMgr ); - iAbsoluteBuffer = HBufC::New( KMaxCharNum ); - iVisualBuffer = HBufC::New( KMaxDispNum ); - TRect outerRect = TRect(); - TRect innerRect = TRect(); - CalculateFrameRects( outerRect, innerRect ); -// iBgContext = CAknsFrameBackgroundControlContext::NewL( -// KAknsIIDQsnFrPopupSub, outerRect, innerRect, ETrue ); - iKeystrokeArray = new(ELeave)CDesCArrayFlat(1); - iShowKeystrokeArray = new(ELeave)CDesCArrayFlat(1); - iPhraseArray = new(ELeave)CDesCArrayFlat(1); - iPhraseShowKeyStrokeArray = new(ELeave)CDesCArrayFlat(1); - iTempArray = new(ELeave)CDesCArrayFlat(1); - iMiniQwertyZhuyin = EFalse; - iNeedClearDeliberateSelection = EFalse; - } - -// --------------------------------------------------------- -// Calculate visual text for appending. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualTextForAppend( const TDesC& aDes ) - { - TRect panerect = iEditableEntryPane->Rect(); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, - NULL ); - - TInt lenToEnd = font->TextWidthInPixels( iAbsoluteBuffer->Right( iVisualBuffer->Length() - + aDes.Length() ) ); - if ( lenToEnd <= panerect.Width() - panerect.Width()*KLROffset - /KDenominator * 2 ) - { - *iVisualBuffer = iAbsoluteBuffer->Right( iVisualBuffer->Length() - + aDes.Length() ); - } - else - { - this->CalculateVisualTextForMoveRight(); - } - } - -// --------------------------------------------------------- -// Calculate visual text for deleting. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualTextForDelete( TInt /*aBeg*/, - TInt /*aLen*/) - { - TRect panerect = iEditableEntryPane->Rect(); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, - NULL ); - iOffset = iOffset > iAbsoluteBuffer->Length()?iAbsoluteBuffer->Length():iOffset; - TInt lenToEnd = font->TextWidthInPixels( iAbsoluteBuffer->Right( iAbsoluteBuffer->Length() - - iOffset ) ); - - TInt offsetLen = iAbsoluteCursorPos - iOffset; - if ( offsetLen < 0 ) - { - offsetLen = 0; - } - TInt LenOffsetToCursor = font->TextWidthInPixels( iAbsoluteBuffer->Mid( - iOffset, offsetLen ) ); - - if ( lenToEnd > 0 && iAbsoluteCursorPos >= iOffset && LenOffsetToCursor > panerect.Width()*KLROffset/KDenominator ) - { - TInt stride = 0; - for (stride = 1;; stride ++ ) - { - if ( iOffset + stride > iAbsoluteBuffer->Length() ) - { - break; - } - TInt tmpFontLen = font->TextWidthInPixels( iAbsoluteBuffer->Mid( - iOffset, stride ) ); - if ( tmpFontLen > panerect.Width() - panerect.Width() - *KLROffset/KDenominator * 2 ) - { - break; - } - } - *iVisualBuffer = iAbsoluteBuffer->Mid( iOffset, stride - 1 ); - } - else - { - this->CalculateVisualTextForMoveLeft(); - } - } - -// --------------------------------------------------------- -// Calculate visual text for inserting. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualTextForInsert( TInt /*aIndex*/, - const TDesC& /*aDes*/) - { - TRect panerect = iEditableEntryPane->Rect(); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, - NULL ); - - TInt offsetLen = iAbsoluteCursorPos - iOffset; - if ( offsetLen < 0 ) - { - offsetLen = 0; - } - - TInt lenToCursor = font->TextWidthInPixels( iAbsoluteBuffer->Mid( - iOffset, offsetLen ) ); - if ( lenToCursor < panerect.Width()* KCursorResetStartOffset / KDenominator - || iAbsoluteCursorPos == iAbsoluteBuffer->Length() - && lenToCursor <= panerect.Width() - panerect.Width()*KLROffset/KDenominator * 2) - { - TInt stride = 0; - for (stride = 1;; stride ++ ) - { - if ( iOffset + stride > iAbsoluteBuffer->Length() ) - { - break; - } - TInt tmpFontLen = font->TextWidthInPixels( iAbsoluteBuffer->Mid( - iOffset, stride ) ); - if ( tmpFontLen > panerect.Width() - panerect.Width() - *KLROffset/KDenominator * 2 ) - { - break; - } - } - *iVisualBuffer = iAbsoluteBuffer->Mid( iOffset, stride - 1 ); - } - else - { - this->CalculateVisualTextForMoveRight(); - } - } - -// --------------------------------------------------------- -// Calculate visual text for replacing. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualTextForReplace( TInt /*aBeg*/, - TInt /*aLen*/, const TDesC& /*aDes*/) - { - } - -// --------------------------------------------------------- -// Calculate visual text for moving to left. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualTextForMoveLeft() - { - TRect panerect = iEditableEntryPane->Rect(); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, - NULL ); - TInt absolutelength = font->TextWidthInPixels( *iAbsoluteBuffer ); - TInt - cursorToBegLength = - font->TextWidthInPixels( iAbsoluteBuffer->Left( iAbsoluteCursorPos ) ); - if ( iAbsoluteCursorPos > iAbsoluteBuffer->Length() + 1 ) - { - iAbsoluteCursorPos = iAbsoluteBuffer->Length() + 1; - } - TInt lenPixelToVisualBeg = panerect.Width() * KCursorResetOffset - / KDenominator; - TInt stride = 0; - TInt visualBeg = 0; - TInt visualEnd = 0; - for (stride = 1;; stride ++ ) - { - if ( 0 > iAbsoluteCursorPos - stride ) - { - visualBeg = 0; - break; - } - TInt tmpFontLen = font->TextWidthInPixels( iAbsoluteBuffer->Mid( - iAbsoluteCursorPos - stride, stride ) ); - if ( tmpFontLen > lenPixelToVisualBeg ) - { - visualBeg = iAbsoluteCursorPos - stride + 1; - break; - } - } - - //Fix for bug ESXU-7U68JT, let adjustment of visualBeg before caculation of visualEnd. - //For one, calculation always start before "(" for miniqwertyzhuyin - //For two, because characters(markers) might have different length in pixel, it's better recalculate visualEnd - // after changing visualBeg, therefore move changing visualBeg ahead of caculation take effect too. - if ( iMiniQwertyZhuyin && - iAbsoluteBuffer->Length() > 0 && - visualBeg >= iPhraseArray->Count() ) - { - while ( visualBeg > 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KLeftBracket ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark1 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark2 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark3 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark4 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark5 ) != 0 ) - { - visualBeg--; - } - } - - for (stride = 1;; stride ++ ) - { - if ( visualBeg + stride > iAbsoluteBuffer->Length() ) - { - visualEnd = visualBeg + stride - 1; - break; - } - TPtrC tempString = iAbsoluteBuffer->Mid(visualBeg, stride ); - TInt tmpFontLen = font->TextWidthInPixels( tempString ); - if ( tmpFontLen > panerect.Width() - panerect.Width() *KLROffset - /KDenominator * 2 ) - { - visualEnd = visualBeg + stride - 1; - //visualEnd = visualBeg + stride; - break; - } - } - *iVisualBuffer = iAbsoluteBuffer->Mid( visualBeg, visualEnd - visualBeg ); - this->iOffset = visualBeg; - } - -// --------------------------------------------------------- -// Calculate visual text for moving to the right. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualTextForMoveRight() - { - TRect panerect = iEditableEntryPane->Rect(); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, - NULL ); - TInt absolutelength = font->TextWidthInPixels( *iAbsoluteBuffer ); - TInt cursorToEndLength = - font->TextWidthInPixels( iAbsoluteBuffer->Mid( iAbsoluteCursorPos, - iAbsoluteBuffer->Length() - iAbsoluteCursorPos ) ); - if ( iAbsoluteCursorPos > iAbsoluteBuffer->Length() + 1 ) - { - iAbsoluteCursorPos = iAbsoluteBuffer->Length() + 1; - } - if ( absolutelength <= panerect.Width() - panerect.Width()*KLROffset - /KDenominator * 2 ) - { - *iVisualBuffer = *iAbsoluteBuffer; - } - else if ( cursorToEndLength < panerect.Width() * KCursorResetOffset - / KDenominator ) - { - TInt tmp70VisualEnd = iAbsoluteCursorPos; - TInt visualBeg = 0; - TInt visualEnd = 0; - TInt stride = 0; - visualEnd = iAbsoluteBuffer->Length(); - for (stride = 1;; stride ++ ) - { - TInt tmpFontLen = font->TextWidthInPixels( iAbsoluteBuffer->Mid( - tmp70VisualEnd - stride, stride ) ); - if ( tmpFontLen > panerect.Width() * (KDenominator - - KLROffset * 2 - KCursorResetOffset ) / KDenominator ) - { - visualBeg = tmp70VisualEnd - stride + 1; - break; - } - } - if ( iMiniQwertyZhuyin && - iAbsoluteBuffer->Length( ) > 0 && - visualBeg >= iPhraseArray->Count() ) - { - while ( iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KLeftBracket ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark1 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark2 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark3 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark4 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark5 ) != 0 ) - { - visualBeg++; - // visualEnd++; - } - } - *iVisualBuffer = iAbsoluteBuffer->Right( visualEnd - visualBeg ); - this->iOffset = visualBeg; - } - else - { - TInt absoluteOffset = font->TextWidthInPixels( - iAbsoluteBuffer->Left( iAbsoluteCursorPos ) ); - if ( absoluteOffset < panerect.Width() * - KCursorResetStartOffset / KDenominator) - { - TInt stride = 0; - for (stride = 1;; stride ++ ) - { - TInt tmpFontLen = font->TextWidthInPixels( - iAbsoluteBuffer->Left( stride ) ); - if ( tmpFontLen > panerect.Width() - panerect.Width() - *KLROffset /KDenominator * 2 ) - { - *iVisualBuffer = iAbsoluteBuffer->Left( stride - 1 ); - this->iOffset = 0; - break; - } - } - } - else - { - TInt lenPixelToVisualEnd = panerect.Width() * KCursorResetOffset - / KDenominator; - TInt stride = 0; - TInt visualBeg = 0; - TInt visualEnd = 0; - for (stride = 1;; stride ++ ) - { - if ( iAbsoluteBuffer->Length() < iAbsoluteCursorPos + stride ) - { - visualEnd = iAbsoluteBuffer->Length(); - break; - } - TInt tmpFontLen = font->TextWidthInPixels( - iAbsoluteBuffer->Mid( iAbsoluteCursorPos, stride ) ); - if ( tmpFontLen > lenPixelToVisualEnd ) - { - visualEnd = iAbsoluteCursorPos + stride - 1; - break; - } - } - for (stride = 1;; stride ++ ) - { - TInt tmpFontLen = font->TextWidthInPixels( - iAbsoluteBuffer->Mid( visualEnd - stride, stride ) ); - if ( tmpFontLen > panerect.Width() - panerect.Width() - *KLROffset /KDenominator * 2 ) - { - visualBeg = visualEnd - stride + 1; - break; - } - } - if ( iMiniQwertyZhuyin && - iAbsoluteBuffer->Length( ) > 0 && - visualBeg >= iPhraseArray->Count() ) - { - while ( iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KLeftBracket ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark1 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark2 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark3 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark4 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark5 ) != 0 ) - { - visualBeg++; - // visualEnd++; - } - } - *iVisualBuffer = iAbsoluteBuffer->Mid( visualBeg, visualEnd - - visualBeg ); - this->iOffset = visualBeg; - } - } - } - -// --------------------------------------------------------- -// Calculate the underline indexes and highlight indexes according to the -// absolute value. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualIndex() - { - for (TInt i = 0; i < iArray.Count(); i++ ) - { - TInt left = iArray[i]->iBegin - iOffset; - TInt right = iArray[i]->iEnd - iOffset; - if ( - left < 0 && - right < 0 - || - left> iVisualBuffer->Length() - 1 && - right> iVisualBuffer->Length() - 1 - ) - { - left = -1; - right = -1; - } - else - { - if ( left < 0 ) - { - left = 0; - } - if ( right> iVisualBuffer->Length() - 1 ) - { - right = iVisualBuffer->Length() - 1; - } - } - if ( iArray[i]->iStyle == CAknFepUICtrlEEPControl::EHighlight ) - { - iEditableEntryPane->SetHighlight( left, right ); - } - else if ( iArray[i]->iStyle == CAknFepUICtrlEEPControl::EUnderline ) - { - iEditableEntryPane->SetUnderline( left, right ); - } - } - } - -// --------------------------------------------------------- -// layout the background frames. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateFrameRects( TRect& aOuterRect, - TRect& aInnerRect ) const - { - TRect windowRect = CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData( EPopupRectEEP )); - TAknLayoutRect eepFirstHorizLineLayoutRect = CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( EEEPFirstHorizLine )); - TRect eepFirstHorizLineRect = eepFirstHorizLineLayoutRect.Rect(); - TInt rectHeight = eepFirstHorizLineRect.iBr.iY - windowRect.iTl.iY + 2; - TInt rectWidth = windowRect.Width( ); - windowRect.iTl.iX = 0; - windowRect.iTl.iY = 0; - windowRect.SetHeight( rectHeight ); - windowRect.SetWidth( rectWidth ); - - TAknLayoutRect topLeft; - topLeft.LayoutRect( windowRect, - SkinLayout::Submenu_skin_placing_Line_2() ); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect( windowRect, - SkinLayout::Submenu_skin_placing_Line_5() ); - - aOuterRect = TRect( topLeft.Rect().iTl, bottomRight.Rect().iBr ); - aInnerRect = TRect( topLeft.Rect().iBr, bottomRight.Rect().iTl ); - } - -// --------------------------------------------------------- -// Return kestroke array. -// --------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUICtrlPinyinEEP::KeystrokeArray() - { - return iKeystrokeArray; - } - -// --------------------------------------------------------- -// Return kescode array. -// --------------------------------------------------------- -// -RArray* CAknFepUICtrlPinyinEEP::KeycodeArray() - { - return &iKeycodeArray; - } - -// --------------------------------------------------------- -// Return kescode array. -// --------------------------------------------------------- -// -RArray* CAknFepUICtrlPinyinEEP::PhraseKeycodeArray() - { - return &iPhraseKeycodeArray; - } - -// --------------------------------------------------------- -// Return show kestroke array. -// --------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUICtrlPinyinEEP::ShowKeystrokeArray() - { - return iShowKeystrokeArray; - } - -// --------------------------------------------------------- -// Return choose chinese charater array. -// --------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUICtrlPinyinEEP::PhraseArray() - { - return iPhraseArray; - } - -// --------------------------------------------------------- -// Return choose chinese charater show keystroke array. -// --------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUICtrlPinyinEEP::PhraseShowKeyStrokeArray() - { - return iPhraseShowKeyStrokeArray; - } -// --------------------------------------------------------- -// Return temp array. -// --------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUICtrlPinyinEEP::TempArray() - { - return iTempArray; - } - -// --------------------------------------------------------- -// Reset private member viariable array. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::ResetAllArray() - { - iKeystrokeArray->Reset(); - iKeystrokeArray->Compress(); - iKeycodeArray.Reset(); - iShowKeystrokeArray->Reset(); - iShowKeystrokeArray->Compress(); - iPhraseArray->Reset(); - iPhraseArray->Compress(); - iPhraseKeycodeArray.Reset(); - iPhraseShowKeyStrokeArray->Reset(); - iPhraseShowKeyStrokeArray->Compress(); - iTempArray->Reset(); - iTempArray->Compress(); - iAllValidFlag = 1; - iInvalidKeystrokeIndex = 0; - iCandidateRefreshFlag = 0; - iDelimiterCount = 0; - } - -// --------------------------------------------------------- -// change state flag. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetChangeState( TBool aState ) - { - iChangeFlag = aState; - } - -// --------------------------------------------------------- -// check change state flag. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::IsChangeState() - { - return iChangeFlag; - } - -// --------------------------------------------------------- -// Set auto change state flag. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetAutoChangeStateFlag( TBool aState ) - { - iAutoChangeFlag = aState; - } - -// --------------------------------------------------------- -// Set auto change state flag. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::GetAutoChangeStateFlag() - - { - return iAutoChangeFlag; - } - -// --------------------------------------------------------- -// Set all the keystroke valid flag. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetAllValidFlag( TBool aState ) - { - iAllValidFlag = aState; - } - -// --------------------------------------------------------- -// Set all the keystroke valid flag. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::GetAllValidFlag() - { - return iAllValidFlag; - } - -// --------------------------------------------------------- -// Set is Phrase creation. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetPhraseCreationFlag( TBool aState ) - { - iPhraseCreation = aState; - } - -// --------------------------------------------------------- -// Is Phrase creation. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::GetPhraseCreationFlag() - { - return iPhraseCreation; - } - -// --------------------------------------------------------- -// Set the keystroke invalid index. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetInvalidIndex( TInt aInvalidIndex ) - { - iInvalidKeystrokeIndex = aInvalidIndex; - } - -// --------------------------------------------------------- -// Get all the invalid keystroke index. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::GetInvalidIndex() - { - return iInvalidKeystrokeIndex; - } - -// --------------------------------------------------------- -// Set Phrase Candidate state need refresh UI flag. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetCandidateRefreshFlag( TBool aState ) - { - iCandidateRefreshFlag = aState; - } - -// --------------------------------------------------------- -// Get Phrase Candidate state need refresh UI flag. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::GetCandidateRefreshFlag() - { - return iCandidateRefreshFlag; - } - -// --------------------------------------------------------- -// Set the delimiter count of keystroke. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetDelimiterCount( TInt aCount ) - { - iDelimiterCount = aCount; - } - -// --------------------------------------------------------- -// Get the delimiter count of keystroke. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::GetDelimiterCount() - { - return iDelimiterCount; - } - -// --------------------------------------------------------- -// Get current cba resource id. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::GetCurrentCBAResID() - { - return iCurrentCBAResId; - } - -// --------------------------------------------------------- -// Set current cba resource id. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetCurrentCBAResID( TInt aResourceId ) - { - iCurrentCBAResId = aResourceId; - } - -void CAknFepUICtrlPinyinEEP::SetEffictiveLength( TInt aLength ) - { - iEffictiveLength = aLength; - } - -TInt CAknFepUICtrlPinyinEEP::GetEffictiveLength() - { - return iEffictiveLength; - } - -void CAknFepUICtrlPinyinEEP::AddEffictiveLength() - { - iEffictiveLength++; - } - -void CAknFepUICtrlPinyinEEP::DecEffictiveLength() - { - iEffictiveLength--; - } - -void CAknFepUICtrlPinyinEEP::SetNeedClearDeliberateSelection( TBool aNeedClearDeliberateSelection ) - { - iNeedClearDeliberateSelection = aNeedClearDeliberateSelection; - } - -TBool CAknFepUICtrlPinyinEEP::NeedClearDeliberateSelection() - { - return iNeedClearDeliberateSelection; - } - -// End of file -