diff -r 000000000000 -r eb1f2e154e89 textinput/peninputgenerichwr/src/peninputgenerichwrdatamgr.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputgenerichwr/src/peninputgenerichwrdatamgr.cpp Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,379 @@ +/* +* Copyright (c) 2002-2005 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: peninput hwr data manager +* +*/ + + +// System includes +#include +#include +#include +#include +#include + +// User includes +#include "peninputgenerichwr.hrh" +#include "peninputgenerichwrdatamgr.h" +#include "peninputgenericrecognizer.h" +#include "AknsUtils.h" +#include "peninputpluginutils.h" + +// Constants +const TInt KGuideLineOn = 1; +enum + { + EHwrWritingSpeedVeryFast = 300 * 1000, + EHwrWritingSpeedFast = 400 * 1000, + EHwrWritingSpeedNormal = 550 * 1000, + EHwrWritingSpeedSlow = 700 * 1000, + EHwrWritingSpeedVerySlow = 1000 * 1000 + }; + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrDataMgr::NewL +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +CPeninputGenericHwrDataMgr* CPeninputGenericHwrDataMgr::NewL( + MPeninputLayoutContext* aContext ,CPtiEngine* aPtiEngine) + { + CPeninputGenericHwrDataMgr* self = NewLC( aContext ,aPtiEngine ); + CleanupStack::Pop( self ); + + return self; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrDataMgr::NewLC +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +CPeninputGenericHwrDataMgr* CPeninputGenericHwrDataMgr::NewLC( + MPeninputLayoutContext* aContext ,CPtiEngine* aPtiEngine) + { + CPeninputGenericHwrDataMgr* self = + new ( ELeave ) CPeninputGenericHwrDataMgr( aContext ); + self->iPtiEngine = aPtiEngine; + CleanupStack::PushL( self ); + self->ConstructL(); + + return self; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrDataMgr::CPeninputGenericHwrDataMgr +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +CPeninputGenericHwrDataMgr::CPeninputGenericHwrDataMgr( + MPeninputLayoutContext* aContext ) + : CPeninputDataMgr( aContext ) + { + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrDataMgr::~CPeninputGenericHwrDataMgr +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +CPeninputGenericHwrDataMgr::~CPeninputGenericHwrDataMgr() + { + if( iOwnPtiEngine ) + { + delete iPtiEngine; + } + delete iPenData.iRecognizer; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrDataMgr::GetPenTrailColor +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +TRgb CPeninputGenericHwrDataMgr::GetPenTrailColor() + { + TInt newValue = 0; + + iGSRepository->Get( KSettingsPenColor, newValue ); + + if (!AknPenInputTrailColorUtils::CheckColorInColorTable(newValue)) + { + newValue = AknPenInputTrailColorUtils::GetTrailColorByTheme(); + } + return TRgb(newValue); + } +// --------------------------------------------------------------------------- +// CPeninputGenericHwrDataMgr::InitMore +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CPeninputGenericHwrDataMgr::InitMore() + { + // Read pen data + if ( iGSRepository ) + { + TInt newValue; + // Read guide line on/off flag, don't remove these code + newValue = KGuideLineOn; + iPenData.iGuideLineOn = iGSRepository->Get( KSettingsPenInputGuideLine, newValue ); + iPenData.iGuideLineOn = newValue; + + iPenData.iPenColor = GetPenTrailColor(); + + newValue = 1; + iGSRepository->Get( KSettingsPenWidth, newValue ); + iPenData.iPenSize = TSize( newValue, newValue ); + + newValue = 2; + iGSRepository->Get( KSettingsWritingSpeed, newValue ); + iPenData.iFadingSpeed = newValue; + iPenData.iWritingSpeed = TransferWritingSpeed( newValue ); + } + + if( !iPtiEngine ) + { + TRAP_IGNORE( iPtiEngine = CPtiEngine::NewL( ETrue )); + iOwnPtiEngine = ETrue; + } + + TRAP_IGNORE( iPenData.iRecognizer = CPeninputGenericRecognizer::NewL(iPtiEngine) ); + iPenData.iRecognizer->EnableWordRecognition( ETrue ); + iReserve_1 = &iPenData; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrDataMgr::HandleGSRepositoryChange +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CPeninputGenericHwrDataMgr::HandleGSRepositoryChange( TInt aChangedKey ) + { + TInt newValue = 0; + + switch ( aChangedKey ) + { + case KSettingsPenColor: + { + iGSRepository->Get( KSettingsPenColor, newValue ); + iPenData.iPenColor = newValue; + iContext->SendEventToWindow( EPeninputLayoutHwrEventPenColorChange, + NULL ); + } + break; + case KSettingsPenWidth: + { + iGSRepository->Get( KSettingsPenWidth, newValue ); + iPenData.iPenSize = TSize( newValue, newValue ); + iContext->SendEventToWindow( EPeninputLayoutHwrEventPenSizeChange, + NULL ); + } + break; + case KSettingsWritingSpeed: + { + iGSRepository->Get( KSettingsWritingSpeed, newValue ); + iPenData.iFadingSpeed = newValue; + iPenData.iWritingSpeed = TransferWritingSpeed( newValue ); + iContext->SendEventToWindow + ( EPeninputLayoutHwrEventWritingSpeedChange, NULL ); + } + break; + case KSettingsPenInputGuideLine: + { + iGSRepository->Get( KSettingsPenInputGuideLine, newValue ); + if ( newValue != iPenData.iGuideLineOn ) + { + iPenData.iGuideLineOn = newValue; + iContext->SendEventToWindow + ( EPeninputLayoutHwrEventGuideLineChanged, NULL ); + } + //inform engine about then change in guideline. + if(iPenData.iRecognizer != NULL) + { + iPenData.iRecognizer->EnableGuideline(iPenData.iGuideLineOn == 1? ETrue : EFalse); + } + } + break; + default: + break; + } + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrDataMgr::Reset +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CPeninputGenericHwrDataMgr::Reset() + { + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrDataMgr::TransferWritingSpeed +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +TInt CPeninputGenericHwrDataMgr::TransferWritingSpeed( TInt aWritingSpeed ) + { + TInt speed; + + switch ( aWritingSpeed ) + { + case 1: + { + speed = EHwrWritingSpeedVeryFast; + } + break; + case 2: + { + speed = EHwrWritingSpeedFast; + } + break; + case 3: + { + speed = EHwrWritingSpeedNormal; + } + break; + case 4: + { + speed = EHwrWritingSpeedSlow; + } + break; + case 5: + { + speed = EHwrWritingSpeedVerySlow; + } + break; + default: + { + speed = EHwrWritingSpeedNormal; + } + break; + } + + return speed; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrDataMgr::SetData +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CPeninputGenericHwrDataMgr::SetData( TPeninputDataType aDataType, + TAny* aData ) + { + switch ( aDataType ) + { + case EAkninputDataTypeInputArea: + { + iInputArea = *(TSize*)aData; + } + break; + default: + { + CPeninputDataMgr::SetData( aDataType, aData ); + } + } + NotifyEngine( aDataType, aData ) ; + } + + + // --------------------------------------------------------------------------- +// CPeninputGenericHwrDataMgr::NotifyEngine +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +TAny* CPeninputGenericHwrDataMgr::RequestData( TPeninputDataType aDataType ) + { + switch ( aDataType ) + { + case EAkninputDataTypeGuideLineTop: + { + iPenData.iRecognizer->GetTopGuideLinePos( iHelpLine ); + return &iHelpLine; + } + case EAkninputDataTypeGuideLineBottom: + { + iPenData.iRecognizer->GetBottomGuideLinePos( iBaseLine ); + return &iBaseLine; + } + case EPeninputDataTypePenTailColor: + { + iPenData.iPenColor = GetPenTrailColor(); + return &iPenData.iPenColor; + } + + default: + { + return CPeninputDataMgr::RequestData( aDataType ); + } + } + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrDataMgr::NotifyEngine +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CPeninputGenericHwrDataMgr::NotifyEngine( TPeninputDataType aType, + TAny* aData ) + { + // Call the function in base class, which will store data to CenRep + CPeninputDataMgr::NotifyEngine( aType, aData ); + + TInt* data = ( TInt* ) aData; + + // Notify engine, when language, range, case changed + switch ( aType ) + { + case EPeninputDataTypeCase: + { + iPenData.iRecognizer->SetCase( *data ); + } + break; + case EPeninputDataTypeInputLanguage: + { + iPenData.iRecognizer->SetLanguage( *data ); + } + break; + case EPeninputDataTypeCurrentRange: + { + iPenData.iRecognizer->SetMode( *data ); + } + break; + case EPeninputDataTypeNumericKeymap: + { + iPenData.iRecognizer->SetNumberMode + ( ( TAknEditorNumericKeymap )*data ); + } + break; + case EAknFepDataTypeUseDefinedResource: + { + HBufC* res = (HBufC*)RequestData(EAknFepDataTypeUseDefinedResource); + iPenData.iRecognizer->SetPermittedCharSet(*res); + } + break; + case EAkninputDataTypeInputArea: + { + iPenData.iRecognizer->SetInputAreaSize( *(TSize*)data ); + } + break; + default: + break; + } + } +//End of file