--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepIndicatorAvkon.cpp Fri Jul 23 16:49:01 2010 +0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,584 +0,0 @@
-/*
-* Copyright (c) 2002-2004 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 CAknFepIndicator methods.
-*
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-#include <eikenv.h> //CEikEnv
-#include <eikspane.h> //CEikStatusPane
-#include <avkon.hrh>
-#include <aknnavi.h> //CAknNavigationControlContainer
-#include <aknnavide.h> //CAknNavigationDecorator
-#include <AknIndicatorContainer.h> //CAknIndicatorContainer
-#include <aknEditStateIndicator.h>
-#include <AknUtils.h>
-#include "AknFepIndicatorAvkon.h"
-
-#include "AknFepGlobalEnums.h"
-
-/**
- *
- */
-CAknFepIndicator* CAknFepIndicatorAvkon::NewL()
- {
- CAknFepIndicatorAvkon* self = new(ELeave)CAknFepIndicatorAvkon();
- return self;
- }
-
-/**
- *
- */
-CAknFepIndicatorAvkon::~CAknFepIndicatorAvkon()
- {
- RemoveContainer();
- }
-
- TBool CAknFepIndicatorAvkon::QueryPredictiveState(TAknEditingState aState)
- {
- return (( aState == EIndicatorStatePinyin) ||
- ( aState == EIndicatorStatePinyinPhrase) ||
- ( aState == EIndicatorStateZhuyin) ||
- ( aState == EIndicatorStateZhuyinPhrase) ||
- ( aState == EIndicatorStateZhuyinFind) ||
- ( aState == EIndicatorStateStrokeFind) ||
- ( aState == EIndicatorStateStroke) ||
- ( aState == EIndicatorStateStrokePhrase) ||
- ( aState == EIndicatorStateCangJie) ||
- ( aState == EIndicatorStateStrokeTrad) ||
- ( aState == EIndicatorStateStrokeTradPhrase) ||
- ( aState == ET9Upper) ||
- ( aState == ET9Shifted) ||
- ( aState == ET9Lower) ||
- ( aState == ET9Arabic) ||
- ( aState == ET9Hebrew) ||
- ( aState == ET9FarsiAndUrdu) ||
- ( aState == ET9Thai) ||
- ( aState == EIndicatorStatePredictiveHindi) ||
-#ifdef RD_MARATHI
- ( aState == EIndicatorStatePredictiveMarathi) ||
-#endif // RD_MARATHI
- ( aState == EIndicatorStateJapanesePredictive) ||
- ( aState == ET9UpperVietnamese) ||
- ( aState == ET9LowerVietnamese) ||
- ( aState == ET9ShiftedVietnamese) ||
- ( aState == ET9UpperGreek) ||
- ( aState == ET9LowerGreek) ||
- ( aState == ET9ShiftedGreek) ||
- ( aState == ET9UpperCyrillic) ||
- ( aState == ET9LowerCyrillic) ||
- ( aState == ET9ShiftedCyrillic) );
- }
-
-
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- TBool CAknFepIndicatorAvkon::QueryPredictiveAutoCompleteState(TAknEditingState aState)
- {
-
- return (( aState == EAutoCompleteUpper ) ||
- ( aState == EAutoCompleteShifted ) ||
- ( aState == EAutoCompleteLower ) ||
- ( aState == EAutoCompleteHindi ) ||
- ( aState == EAutoCompleteArabic ) ||
- ( aState == EAutoCompleteHebrew ) ||
- ( aState == EAutoCompleteFarsiAndUrdu ) ||
- ( aState == EAutoCompleteThai ) ||
- ( aState == EAutoCompleteUpperVietnamese ) ||
- ( aState == EAutoCompleteLowerVietnamese ) ||
- ( aState == EAutoCompleteShiftedVietnamese ));
- }
-
-#endif
-TInt CAknFepIndicatorAvkon::EvaluateState(TAknEditingState aState)
-{
- TInt result = 0;
- switch(aState)
- {
- case EArabicIndicNumeric:
- result = EAknNaviPaneEditorIndicatorArabicIndicNumberCase;
- break;
-
- case ET9Thai:
- case EMultitapThai:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- case EAutoCompleteThai:
-#endif
- result = EAknNaviPaneEditorIndicatorThai;
- break;
-
- case EIndicatorStatePredictiveHindi:
- case EIndicatorStateMultitapHindi:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- case EAutoCompleteHindi:
-#endif
-#ifdef RD_MARATHI
- case EIndicatorStateMultitapMarathi:
- case EIndicatorStatePredictiveMarathi:
-#endif // RD_MARATHI
- result = EAknNaviPaneEditorIndicatorDevanagariCase;
- break;
-
- case ET9Arabic:
- case EMultitapArabic:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- case EAutoCompleteArabic:
-#endif
- result = EAknNaviPaneEditorIndicatorArabicCase;
- break;
-
- case ET9Hebrew:
- case EMultitapHebrew:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- case EAutoCompleteHebrew:
-#endif
- result = EAknNaviPaneEditorIndicatorHebrewCase;
- break;
-
- case ET9FarsiAndUrdu:
- case EMultitapFarsiAndUrdu:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- case EAutoCompleteFarsiAndUrdu:
-#endif
- result = EAknNaviPaneEditorIndicatorFarsiAndUrduCase;
- break;
-
-
- case ET9Upper:
- case EMultitapUpper:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- case EAutoCompleteUpper:
-#endif
- if(iCopyMode)
- {
- result = EAknNaviPaneEditorIndicatorUpperCaseSelect;
- }
- else
- {
- result = EAknNaviPaneEditorIndicatorUpperCase;
- }
-
- break;
-
- case ET9Lower:
- case EMultitapLower:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- case EAutoCompleteLower:
-#endif
- if(iCopyMode)
- {
- result = EAknNaviPaneEditorIndicatorLowerCaseSelect;
- }
- else
- {
- result = EAknNaviPaneEditorIndicatorLowerCase;
- }
- break;
-
- case ET9Shifted:
- case EMultitapShifted:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- case EAutoCompleteShifted:
-#endif
- if(iCopyMode)
- {
- result = EAknNaviPaneEditorIndicatorTextCaseSelect;
- }
- else
- {
- result = EAknNaviPaneEditorIndicatorTextCase;
- }
- break;
-
- case ENumeric:
- if(iCopyMode)
- {
- result = EAknNaviPaneEditorIndicatorNumberCaseSelect;
- }
- else
- {
- result = EAknNaviPaneEditorIndicatorNumberCase;
- }
- break;
-
-
- case EIndicatorStatePinyin:
- result = EAknNaviPaneEditorIndicatorPinyin;
- break;
- case EIndicatorStatePinyinPhrase:
- result = EAknNaviPaneEditorIndicatorPinyinPhrase;
- break;
-
- case EIndicatorStateZhuyin:
- result = EAknNaviPaneEditorIndicatorZhuyin;
- break;
- case EIndicatorStateZhuyinPhrase:
- result = EAknNaviPaneEditorIndicatorZhuyinPhrase;
- break;
-
- case EIndicatorStateZhuyinFind:
- result = EAknNaviPaneEditorIndicatorZhuyinFind;
- break;
-
- case EDevanagariIndicNumeric :
- result = EAknNaviPaneEditorIndicatorDevanagariIndicNumberCase;
- break;
-
- case EIndicatorStateHiraganaKanji:
- case EIndicatorStateJapanesePredictive:
- result = EAknNaviPaneEditorIndicatorJapaneseHiraganaKanji;
- break;
-
- case EIndicatorStateFullKatakana:
- result = EAknNaviPaneEditorIndicatorJapaneseFullKatakana;
- break;
-
- case EIndicatorStateHalfKatakana:
- result = EAknNaviPaneEditorIndicatorJapaneseHalfKatakana;
- break;
-
- case EIndicatorStateFullLatinText:
- result = EAknNaviPaneEditorIndicatorJapaneseFullTextAlphabet;
- break;
-
- case EIndicatorStateFullLatinUpper:
- result = EAknNaviPaneEditorIndicatorJapaneseFullUpperAlphabet;
- break;
-
- case EIndicatorStateFullLatinLower:
- result = EAknNaviPaneEditorIndicatorJapaneseFullLowerAlphabet;
- break;
-
- case EIndicatorStateFullNumeric:
- result = EAknNaviPaneEditorIndicatorJapaneseFullNumeric;
- break;
-
- case EIndicatorStateHiragana:
- result = EAknNaviPaneEditorIndicatorJapaneseHiragana;
- break;
-
- case EIndicatorStateStroke:
- result = EAknNaviPaneEditorIndicatorStroke;
- break;
- case EIndicatorStateStrokePhrase:
- result = EAknNaviPaneEditorIndicatorStrokePhrase;
- break;
-
- case EIndicatorStateStrokeTrad:
- result = EAknNaviPaneEditorIndicatorStrokeTrad;
- break;
- case EIndicatorStateStrokeTradPhrase:
- result = EAknNaviPaneEditorIndicatorStrokeTradPhrase;
- break;
-
- case EQwertyShift:
- result = EAknNaviPaneEditorIndicatorQwertyShift;
- break;
-
- case EIndicatorStateStrokeFind:
- result = EAknNaviPaneEditorIndicatorStrokeFind;
- break;
-
- case EIndicatorStateCangJie:
- result = EAknNaviPaneEditorIndicatorCangJie;
- break;
-
- case EIndicatorStateHangul:
- if(iCopyMode)
- {
- result = EAknNaviPaneEditorIndicatorKoreanHangulSelect;
- }
- else
- {
- result = EAknNaviPaneEditorIndicatorKoreanHangul;
- }
- break;
-
- case ET9UpperVietnamese:
- case EMultitapUpperVietnamese:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- case EAutoCompleteUpperVietnamese:
-#endif
- result = EAknNaviPaneEditorIndicatorVietnameseUpperCase;
- break;
-
- case ET9LowerVietnamese:
- case EMultitapLowerVietnamese:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- case EAutoCompleteLowerVietnamese:
-#endif
- result = EAknNaviPaneEditorIndicatorVietnameseLowerCase;
- break;
-
- case ET9ShiftedVietnamese:
- case EMultitapShiftedVietnamese:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- case EAutoCompleteShiftedVietnamese:
-#endif
- result = EAknNaviPaneEditorIndicatorVietnameseTextCase;
- break;
-#ifdef RD_HINDI_PHONETIC_INPUT
- case EIndicatorStateHindiPhoneticUpper:
- result = EAknNaviPaneEditorIndicatorDevanagariPhoneticUpperCase;
- break;
- case EIndicatorStateHindiPhoneticLower:
- result = EAknNaviPaneEditorIndicatorDevanagariPhoneticLowerCase;
- break;
-#endif
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- case EFnKeyPressed:
- result = EAknNaviPaneEditorIndicatorFnKeyPressed;
- break;
- case EFnKeyLocked:
- result = EAknNaviPaneEditorIndicatorFnKeyLocked;
- break;
-#endif
- case ET9UpperGreek:
- case EMultitapUpperGreek:
- result = EAknNaviPaneEditorIndicatorGreekUpperCase;
- break;
-
- case ET9LowerGreek:
- case EMultitapLowerGreek:
- result = EAknNaviPaneEditorIndicatorGreekLowerCase;
- break;
-
- case ET9ShiftedGreek:
- case EMultitapShiftedGreek:
- result = EAknNaviPaneEditorIndicatorGreekTextCase;
- break;
-
- case ET9UpperCyrillic:
- case EMultitapUpperCyrillic:
- result = EAknNaviPaneEditorIndicatorCyrillicUpperCase;
- break;
-
- case ET9LowerCyrillic:
- case EMultitapLowerCyrillic:
- result = EAknNaviPaneEditorIndicatorCyrillicLowerCase;
- break;
-
- case ET9ShiftedCyrillic:
- case EMultitapShiftedCyrillic:
- result = EAknNaviPaneEditorIndicatorCyrillicTextCase;
- break;
- }
- return result;
-}
-/**
- *
- */
-void CAknFepIndicatorAvkon::SetState(TAknEditingState aState)
- {
- CAknNavigationControlContainer* naviPane = 0;
- TRAPD(err, naviPane = NaviPaneL());
-
- // If the navi pane has been changed, clean up and start again.
- if (iNaviPane != naviPane)
- {
- RemoveContainer();
- iNaviPane = naviPane;
- iNaviPaneChanged = ETrue;
- }
-
- if ( (iPreviousState == aState) && !iNaviPaneChanged && !iCopyModeChanged)
- {
- // The required state already exists and navi pane has not been changed
- // by launching embedded application. Leave the contents alone.
- return;
- }
- iCopyModeChanged = EFalse;
-
- if (aState == EStateNone)
- {
- if ( iNaviDecorator && naviPane )
- {
- CCoeControl* decoratedControl = iNaviDecorator->DecoratedControl();
- if ( decoratedControl )
- {
- decoratedControl->MakeVisible(EFalse);
- }
- naviPane->Pop(iNaviDecorator);
- }
- if(iPreviousState && (iPreviousState != EStateNone))
- {
- SetIndicator(EvaluateState(iPreviousState), EAknIndicatorStateOff, EFalse);
- // Also set off predictive / query (pen) indicator.
- SetIndicator(EAknNaviPaneEditorIndicatorQuery, EAknIndicatorStateOff, EFalse);
- SetIndicator(EAknNaviPaneEditorIndicatorT9, EAknIndicatorStateOff, EFalse);
- }
- iPreviousState = aState;
- iNaviPaneChanged = EFalse;
- return;
- }
-
- if ( err == KErrNone )
- {
- iNaviPaneChanged = EFalse;
- TRAP(err,AddContainerL(naviPane));
-
-
- // selection indicator
-
- SetIndicator(EvaluateState(iPreviousState), EAknIndicatorStateOff, EFalse);
-
- // selection indicator
- if (iCopyMode)
- {
- // clear normal indicators first
- SetIndicator(EAknNaviPaneEditorIndicatorTextCase, EAknIndicatorStateOff, ETrue);
- SetIndicator(EAknNaviPaneEditorIndicatorLowerCase, EAknIndicatorStateOff, ETrue);
- SetIndicator(EAknNaviPaneEditorIndicatorUpperCase, EAknIndicatorStateOff, ETrue);
- SetIndicator(EAknNaviPaneEditorIndicatorNumberCase,EAknIndicatorStateOff, ETrue);
- SetIndicator(EAknNaviPaneEditorIndicatorKoreanHangul,EAknIndicatorStateOff, ETrue);
- }
- else
- {
- // clear selection indicators first
- SetIndicator(EAknNaviPaneEditorIndicatorTextCaseSelect, EAknIndicatorStateOff, ETrue);
- SetIndicator(EAknNaviPaneEditorIndicatorLowerCaseSelect, EAknIndicatorStateOff, ETrue);
- SetIndicator(EAknNaviPaneEditorIndicatorUpperCaseSelect, EAknIndicatorStateOff, ETrue);
- SetIndicator(EAknNaviPaneEditorIndicatorNumberCaseSelect,EAknIndicatorStateOff, ETrue);
- SetIndicator(EAknNaviPaneEditorIndicatorKoreanHangulSelect,EAknIndicatorStateOff, ETrue);
- }
-
- TBool predictiveMode = QueryPredictiveState(aState);
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- TBool predictiveAutoCompleteMode = EFalse;
- if(!predictiveMode)
- {
- predictiveAutoCompleteMode = QueryPredictiveAutoCompleteState(aState);
- }
-#endif
-
- SetIndicator(EAknNaviPaneEditorIndicatorQuery,
- ( predictiveMode || aState == EStateNone
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- || predictiveAutoCompleteMode
-#endif
- )? EAknIndicatorStateOff : EAknIndicatorStateOn, EFalse);
- SetIndicator(EAknNaviPaneEditorIndicatorT9, predictiveMode
- ? EAknIndicatorStateOn : EAknIndicatorStateOff, EFalse);
-#ifndef RD_INTELLIGENT_TEXT_INPUT
- // Indicator for Auto Word Completion Mode
- SetIndicator(EAknNaviPaneEditorIndicatorAutoComplete, predictiveAutoCompleteMode
- ? EAknIndicatorStateOn : EAknIndicatorStateOff, EFalse);
-#endif
-
- SetIndicator(EvaluateState(aState), EAknIndicatorStateOn, EFalse);
-
- // Push the state to the navi-pane
- if (naviPane && iNaviDecorator)
- {
- CCoeControl* decoratedControl = iNaviDecorator->DecoratedControl();
- if ( decoratedControl )
- {
- decoratedControl->MakeVisible(ETrue);
- }
- TRAP_IGNORE(naviPane->PushL(*iNaviDecorator));
- }
- }
- iPreviousState = aState;
- }
-
-/**
- *
- */
-CAknIndicatorContainer* CAknFepIndicatorAvkon::IndicatorContainer()
- {
- CAknNavigationControlContainer* naviPane = 0;
- TRAPD(err, naviPane = NaviPaneL());
-
- // If the navi pane have changed, clean up and start again
- if ( naviPane != iNaviPane )
- {
- RemoveContainer();
- iNaviPane = naviPane;
- iNaviPaneChanged = ETrue;
- }
- if ( !iIndicatorContainer )
- {
- TRAP(err, AddContainerL(naviPane));
- }
- return iIndicatorContainer;
- }
-
-/**
- *
- */
-CAknFepIndicatorAvkon::CAknFepIndicatorAvkon()
- :iPreviousState(EStateNone), iEikEnv(*CEikonEnv::Static())
- {
- }
-
-/**
- * Create a new indicator container and push it to the navi-pane
- */
-void CAknFepIndicatorAvkon::AddContainerL(CAknNavigationControlContainer* aNaviPane)
- {
- // Create a new indicator container and push it to the navi-pane
- if (!iIndicatorContainer && aNaviPane)
- {
- iNaviDecorator = aNaviPane->CreateEditorIndicatorContainerL();
- iIndicatorContainer = STATIC_CAST(CAknIndicatorContainer*, iNaviDecorator->DecoratedControl());
- }
- }
-
-/**
- * Pop the indicator container from the navi-pane
- */
-void CAknFepIndicatorAvkon::RemoveContainer()
- {
- // Pop the indicator container from the navi-pane
- if (iIndicatorContainer)
- {
- delete iNaviDecorator;
- iNaviDecorator = NULL;
- iIndicatorContainer = NULL;
- }
- }
-
-/**
- *
- */
-void CAknFepIndicatorAvkon::SetIndicator(TInt aIndicator, TInt aMode, TBool aDrawNow)
- {
- if ( iIndicatorContainer )
- {
- iIndicatorContainer->SetIndicatorState(TUid::Uid(aIndicator), aMode, aDrawNow);
- }
- }
-
-/**
- * get a handle to the Navi Pane
- */
-CAknNavigationControlContainer* CAknFepIndicatorAvkon::NaviPaneL()
- {
- CEikStatusPane *sp = iEikEnv.AppUiFactory()->StatusPane();
- User::LeaveIfNull(sp);
- // Fetch pointer to the default navi pane control
- return (CAknNavigationControlContainer *)sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi));
- }
-
-// End of file