diff -r ebd48d2de13c -r ecbabf52600f fep/aknfep/src/AknFepUiInputStateEntryWesternPredictiveJp.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fep/aknfep/src/AknFepUiInputStateEntryWesternPredictiveJp.cpp Wed Sep 01 12:23:33 2010 +0100 @@ -0,0 +1,118 @@ +/* +* Copyright (c) 2002-2006 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 TAknFepInputStateEntryWesternPredictiveJp methods. +* +*/ + + + + + + + + + + + + +#include "AknFepUiInputStateEntryWesternPredictiveJp.h" +#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface +#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface +#include "AknFepManager.h" +#include "AknFepPanic.h" +#include "AknFepCaseManager.h" + +#include //CPtiEngine +#include //keys +#include //FeatureManager +#include +#include + +TAknFepInputStateEntryWesternPredictiveJp:: +TAknFepInputStateEntryWesternPredictiveJp(MAknFepUIManagerStateInterface* aOwner) + :TAknFepInputStateEntryWesternPredictive(aOwner) + { + } + +// --------------------------------------------------------------------------- +// Handle Star-key event +// --------------------------------------------------------------------------- +// +TBool TAknFepInputStateEntryWesternPredictiveJp::HandleStarKeyL(TKeyPressLength aLength) + { + if (aLength == ELongKeyPress) + { + // Call the parent function + return TAknFepInputStateEntryWesternPredictive::HandleStarKeyL(aLength); + } + + // Check whether it is possible to change other cases. + if (!iOwner->CaseMan()->IsAbleChangeCase()) + { + return ETrue; + } + + // Change next case mode (Lower->Upper->Text->Lower) + TInt oldCase = iOwner->CaseMan()->CurrentCase(); + TInt newCase; + switch (oldCase) + { + default: + case EAknEditorLowerCase: + newCase = EAknEditorUpperCase; + break; + case EAknEditorUpperCase: + newCase = EAknEditorTextCase; + break; + case EAknEditorTextCase: + newCase = EAknEditorLowerCase; + break; + } + iOwner->CaseMan()->SetCurrentCase(newCase); + newCase = iOwner->CaseMan()->CurrentCase(); + if (oldCase != newCase) + { + MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); + CPtiEngine* ptiengine = iOwner->PtiEngine(); + TPtiTextCase caseMode = ptiengine->Case(); + TPtrC text = ptiengine->CurrentWord(); + HBufC* newText = HBufC::NewLC(text.Length()); + TPtr newPtr(newText->Des()); + newPtr.Copy(text); + switch (newCase) + { + default: + case EAknEditorLowerCase: // For Japanese, T9 lower mode(abc) + newPtr.LowerCase(); + caseMode = EPtiCaseLower; + break; + case EAknEditorUpperCase: // For Japanese, T9 upper mode(ABC) + newPtr.UpperCase(); + caseMode = EPtiCaseUpper; + break; + case EAknEditorTextCase: // For Japanese, T9 capitalize mode(Abc) + newPtr.Capitalize(); + caseMode = (newPtr.Length() > 1)? + EPtiCaseUpper : EPtiCaseLower; + break; + } + fepMan->UpdateInlineEditL(newPtr, newPtr.Length()); + ptiengine->SetCurrentWord(newPtr); + ptiengine->SetCase(caseMode); + CleanupStack::PopAndDestroy(newText); // newText + } + return ETrue; + } + +// End of file