fep/aknfep/src/AknFepLanguageManager.cpp
changeset 40 2cb9bae34d17
parent 31 f1bdd6b078d1
child 49 37f5d84451bd
--- a/fep/aknfep/src/AknFepLanguageManager.cpp	Tue Jul 06 14:38:41 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,466 +0,0 @@
-/*
-* Copyright (c) 2002-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:            Implementation of CAknFepLanguageManager class.
-*
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-// INCLUDE FILES
-#include "AknFepGlobalEnums.h"
-#include "AknFepPanic.h"
-#include "AknFepManager.h"                  // CAknFepManager
-#include "AknFepManagerInterface.h"
-#include "AknFepUIManagerStateInterface.h"  // MAknFepUIManagerStateInterface
-#include "AknFepUiInputStateBase.h"         // TAknFepInputStateBase
-#include "AknFepUiManagerBase.h"            // CAknFepUIManagerBase
-#include "AknFepUIManagerJapanese.h"        // CAknFepUIManagerJapanese
-#include "AknFepUiManagerWestern.h"         // CAknFepUIManagerWestern
-#include "AknFepUiManagerChinese.h"         // CAknFepUIManagerChinese
-#include "AknFepLanguageManager.h"          // this class
-
-#include "AknFepUiManagerKorean.h"        	// CAknFepUIManagerKorean
-#include <uikon.hrh>                        // TAknEditorNumericKeymap
-#include <AknUtils.h>
-
-#include <aknfeppeninputimeplugin.h>
-#include  "AknFepPluginManager.h"
-#include <peninputcmd.h>
-#include <peninputclient.h>
-
-void Cleanup( TAny* aAny )
-	{
-	RImplInfoPtrArray* implArray = 
-		reinterpret_cast< RImplInfoPtrArray*> ( aAny );
-	implArray->ResetAndDestroy();
-	implArray->Close();
-	}
-
-/**
- * CAknFepLanguageManager
- *
- */
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CAknFepLanguageManager()
-// first phase construction.
-// -----------------------------------------------------------------------------
-//
-CAknFepLanguageManager* CAknFepLanguageManager::NewL(MAknFepManagerUIInterface* aFepMan, 
-                                                     CAknFepCaseManager* aCaseMan)
-    {
-    CAknFepLanguageManager* self = new(ELeave) CAknFepLanguageManager(aFepMan, aCaseMan);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(); // self
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// ~CAknFepLanguageManager()
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CAknFepLanguageManager::~CAknFepLanguageManager()
-    {
-    if (iUiManArray)
-        {
-        iUiManArray->ResetAndDestroy();
-        }
-    delete iUiManArray;
-    delete iCurImePlugin;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepLanguageManager::GetFepUI()
-// get ui manager object
-// -----------------------------------------------------------------------------
-//
-MAknFepManagerInterface* CAknFepLanguageManager::GetFepUI(TInt aMode, TWidthChar /*aCharacterWidth*/, TBool aPredictive)
-    {
-    MAknFepManagerInterface* uiMan = NULL;
-    switch (aMode)
-        {
-        case EPinyin:
-        case EZhuyin:
-        case EStroke:
-        case ECangJie:
-        case EZhuyinFind:
-        case EStrokeFind:
-            uiMan = iUiManArray->At(EUiManChinese);
-            break;
-        case ELatin:
-        case EHindi:
-            if (iInputLanguage == ELangJapanese)
-                {
-                uiMan = iUiManArray->At((aPredictive)? EUiManWestern : EUiManJapanese);
-                }
-        	else if(iInputLanguage == ELangKorean)
-        		{
-        		uiMan = iUiManArray->At(EUiManKorean);
-        		}
-            else
-                {
-                uiMan = iUiManArray->At(EUiManWestern);
-                }
-            break;
-        case ENumber:
-        case ENativeNumber:
-            if (iInputLanguage == ELangJapanese)
-                {
-                uiMan = iUiManArray->At(EUiManJapanese);
-                }
-            else if(iInputLanguage == ELangKorean)
-                {
-                uiMan = iUiManArray->At(EUiManKorean);
-                }
-            else
-                {
-                uiMan = iUiManArray->At(EUiManWestern);
-                }
-            break;
-        case EHiragana:
-        case EHiraganaKanji:
-        case EKatakana:
-            uiMan = iUiManArray->At(EUiManJapanese);
-            break;
-        case EHangul:
-        	uiMan = iUiManArray->At(EUiManKorean);
- 			break;
-        default:
-            AknFepPanic(EAknFepPanicNoUiManager);
-            break;
-        }
-    return uiMan;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CAknFepLanguageManager::SetInputLanguageL()
-// Set new input language.
-// -----------------------------------------------------------------------------
-//
-void CAknFepLanguageManager::SetInputLanguageL(TInt aInputLanguage)
-    {
-    iInputLanguage = aInputLanguage;
-    MAknFepManagerInterface* uiManager = NULL;
-    TInt uiManagerId = UiManagerId();
-    uiManager = iUiManArray->At(uiManagerId);
-    
-    if ( !uiManager )
-        {
-        // Ui manager does not exist for this language yet. We create it.
-        ConstructUiManagerL();
-        uiManager = iUiManArray->At(uiManagerId);
-        }
-    
-    uiManager->SetInputLanguageL((TLanguage)iInputLanguage);
-    
-    if (uiManagerId != EUiManWestern)
-        {
-        // Western UI manager needs to know current input language also when 
-        // Chinese or Japanese Ui manager is used.
-        // Western UI manager needs to use English language if the 
-        // input language is Chinese or Japanese.
-        uiManager = iUiManArray->At(EUiManWestern);
-        if (uiManager)
-            {
-            uiManager->SetInputLanguageL((TLanguage)iInputLanguage);
-            }
-        }
-        
-    }
-
-
-// -----------------------------------------------------------------------------
-// CAknFepLanguageManager()
-// Constructor.
-// -----------------------------------------------------------------------------
-//
-CAknFepLanguageManager::CAknFepLanguageManager(MAknFepManagerUIInterface* aFepManager, 
-                                               CAknFepCaseManager* aCaseManager) 
-
-:iInputLanguage(ELangEnglish), 
- iFepManager(aFepManager), 
- iCaseManager(aCaseManager),
- iPluginManager(NULL)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepLanguageManager::ConstructL()
-// Second phase construction
-// -----------------------------------------------------------------------------
-//
-void CAknFepLanguageManager::ConstructL()
-    {
-    iUiManArray = new(ELeave)CArrayPtrFlat<MAknFepManagerInterface>(EUiManMax);
-
-    for ( TInt ii = 0; ii < EUiManMax; ii++)
-        {
-        iUiManArray->AppendL(NULL);
-        }
-
-    // Create UI manager for English language. English exists in all variants and
-    // it is default language in CAknFepLanguageManager.
-    ConstructUiManagerL();
-    }
-
-void CAknFepLanguageManager::ConstructUiManagerL()
-    {
-    MAknFepManagerInterface* uiMan = NULL;
-    TInt uiManagerId = UiManagerId();
-    iUiManArray->Delete(uiManagerId);
-    switch (uiManagerId)
-        {
-        case EUiManWestern:
-            uiMan = CAknFepUIManagerWestern::NewL(iFepManager, iCaseManager, 
-                                                 (TLanguage)iInputLanguage);
-            break;
-        case EUiManChinese:
-            uiMan = CAknFepUIManagerChinese::NewL(iFepManager, iCaseManager, 
-                                                 (TLanguage)iInputLanguage);
-            break;
-        case EUiManJapanese:
-            uiMan = CAknFepUIManagerJapanese::NewL(iFepManager, iCaseManager, 
-                                                  (TLanguage)iInputLanguage);
-            break;
-        case EUiManKorean:
-        	uiMan = CAknFepUIManagerKorean::NewL(iFepManager, iCaseManager, (TLanguage)iInputLanguage);
-        	break;
-        default:
-            AknFepPanic(EAknFepPanicNoUiManager);
-            break;
-        }
-    CleanupStack::PushL(uiMan);
-    iUiManArray->InsertL(uiManagerId, uiMan);
-    CleanupStack::Pop(); // uiMan
-    }
-
-TInt CAknFepLanguageManager::UiManagerId()
-    {
-    TInt uiManagerId = EUiManWestern;
-    switch (iInputLanguage)
-        {
-        case ELangPrcChinese:
-        case ELangHongKongChinese:
-        case ELangTaiwanChinese:
-            uiManagerId = EUiManChinese;
-            break;
-        case ELangJapanese:
-            uiManagerId = EUiManJapanese;
-            break;
-        case ELangKorean:
-        	uiManagerId = EUiManKorean;
-        	break;
-        default:
-            // Western UI manager is default.
-            // Thai, Arabic and Hebrew uses western UI manager.
-            break;
-        }
-    return uiManagerId;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepLanguageManager::GetPluginInputFepUiL
-// Get plugin UI manager object.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-MAknFepManagerInterface* CAknFepLanguageManager::GetPluginInputFepUiL(
-                                                      TPluginInputMode aPreferedMode,
-                                                      TInt aPenInputLang,
-                                                      TInt aDisplayLang,
-                                                      RPeninputServer* aPenServer)
-    {
-
-    RArray<TInt> implList;
-    CleanupClosePushL(implList);
-    
-    TPluginInputMode secondMode = EPluginInputModeItut;
-    TPluginInputMode curMode = aPreferedMode;
-    TInt language = aPenInputLang;
-
-    //pen input language and prefered mode
-    aPenServer->GetImePluginIdListL(aPenInputLang, curMode, implList);
-    
-    if( implList.Count() == 0 )
-        {
-        //pen input language and other modes
-        curMode = secondMode;
-        aPenServer->GetImePluginIdListL(aPenInputLang, curMode, implList);
-        }
-        
-    if( implList.Count() == 0 && aPenInputLang != aDisplayLang)
-        {
-        //display language and prefered modes
-        language = aDisplayLang;
-        curMode = aPreferedMode;
-        aPenServer->GetImePluginIdListL(aDisplayLang, curMode, implList);
-
-        if( implList.Count() == 0 )
-            {
-            //display language and other modes
-            curMode = secondMode;
-            aPenServer->GetImePluginIdListL(aDisplayLang, curMode, implList);
-            }
-        }
-        
-    CAknFepPenInputImePlugin* pIme = NULL;
-    MAknFepManagerInterface* pUi = NULL;
-    TInt i;
-    for(i = 0; i < implList.Count(); ++i)
-        {
-        pIme = ActivateImePlugin(implList[i], aPenServer);
-        if( pIme )
-            {
-            pUi = ActivateLayoutUiPluginL(pIme, language, curMode);
-            if( pUi )
-                {
-                iCurUiPlugIn = pUi;
-                if( iCurImePlugin != pIme )
-                    {
-                    //a new IME plugin created
-                    delete iCurImePlugin;
-                    iCurImePlugin = pIme;
-                    }
-                break;
-                }
-            else
-                {
-                //Fail create UI, delete IME plugin just created
-                 if( iCurImePlugin != pIme )
-                     {
-                     delete pIme;
-                     }
-                }
-            }        
-        }
-    
-    if( i == implList.Count() )
-        {
-        delete iCurImePlugin;
-        iCurImePlugin = NULL;
-        iCurUiPlugIn = NULL;
-        }
-    CleanupStack::PopAndDestroy(&implList);    
-    return iCurUiPlugIn;
-    }
-
-TBool  CAknFepLanguageManager::IsPluginInputAvaiable(TPluginInputMode aMode, 
-                                                     TInt aPenInputLang,
-                                                     RPeninputServer* aPenServer)
-    {
-    TBool bAvail = EFalse;
-    TRAP_IGNORE(bAvail = IsPluginInputAvaiableL(aMode, aPenInputLang, aPenServer));
-    return bAvail;
-    }
-
-TBool  CAknFepLanguageManager::IsPluginInputAvaiableL(TPluginInputMode aMode, 
-                                                     TInt aPenInputLang,
-                                                     RPeninputServer* aPenServer)
-    {
-    RArray<TInt> implList;
-    CleanupClosePushL(implList);
-    
-    aPenServer->GetImePluginIdListL(aPenInputLang, aMode, implList);    
-    TBool bAvail = implList.Count() != 0;
-    CleanupStack::PopAndDestroy(&implList);    
-    return bAvail;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepLanguageManager::ActivateImePlugin
-// Activate IME plugin by implemenation.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-CAknFepPenInputImePlugin* CAknFepLanguageManager::ActivateImePlugin(
-                                                 TInt aImeImplId, 
-                                                 RPeninputServer* aPenServer)
-    {
-    if(iCurImePlugin && iCurImePlugin->ImeImplId() == aImeImplId)
-        {
-        return iCurImePlugin;
-        }
-    else
-        {
-        TUid dtor_ID_Key;
-        CAknFepPenInputImePlugin* pIme = NULL;
-
-        TRAP_IGNORE(pIme = REINTERPRET_CAST(CAknFepPenInputImePlugin*, 
-              REComSession::CreateImplementationL(TUid::Uid(aImeImplId), dtor_ID_Key, aPenServer)));
-
-        if( pIme )
-            {
-            pIme->iDtor_ID_Key = dtor_ID_Key;           
-            }
-
-        return pIme;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepLanguageManager::ActivateLayoutUiPluginL
-// Activate IME plugin's UI by mode.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-MAknFepManagerInterface* CAknFepLanguageManager::ActivateLayoutUiPluginL(
-                                                   CAknFepPenInputImePlugin* aImePlugin, 
-                                                   TInt aPenInputLang,
-                                                   TPluginInputMode aMode)
-    {
-    MAknFepManagerInterface* pUi = NULL;
-
-    if( aImePlugin )
-        {
-        pUi = aImePlugin -> GetInputMethodUiL(iFepManager,
-                                            (TLanguage)aPenInputLang, 
-                                            aMode,
-                                            KNullDesC8(),
-                                            iIsSplitView);
-        //set inputlanguage                                                             
-        if(pUi)
-            {
-            pUi->SetInputLanguageL((TLanguage)aPenInputLang);
-            //pUi->ActivateUI();
-            }
-        }
-    
-    return pUi;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepLanguageManager::SetSplitView
-// Activate IME plugin's UI by mode.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CAknFepLanguageManager::SetSplitView(TBool aIsSplitView)
-    {
-    iIsSplitView = aIsSplitView;
-    }
-
-// End of File