/*
* Copyright (c) 2002 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:           
*
*/












#include <aknedsts.h>
#include "AknFepQuery.h"
#include <featmgr.h>                //FeatureManager

CAknFepTextQueryDialog::CAknFepTextQueryDialog(TDes& aDataText, CAknEdwinState& aEditorState, 
    const TTone aTone, const TInt aEditorFlag) :
    CAknTextQueryDialog(aDataText, aTone),
    iUnderlyingEditorState(aEditorState),
    iEditorFlag(aEditorFlag)
    {
    }

CAknFepTextQueryDialog::~CAknFepTextQueryDialog()
    {
    }

void CAknFepTextQueryDialog::PreLayoutDynInitL()
    {
    CAknTextQueryDialog::PreLayoutDynInitL();

    // need to set query editor's case and sct resource based on editor present when this is launched
    CAknQueryControl* ctrl=STATIC_CAST(CAknQueryControl*, ControlOrNull(EGeneralQuery));
    CEikEdwin* editor=STATIC_CAST(CEikEdwin*, ctrl->ControlByLayoutOrNull(EDataLayout));
    if (editor)
        {
        if (iEditorFlag)
	       { 
	       editor->SetAknEditorFlags(editor->AknEdwinFlags() | iEditorFlag );	     
	       }
        TInt currentCase = iUnderlyingEditorState.CurrentCase();
        if (currentCase != 0)
            {
            editor->SetAknEditorCase(iUnderlyingEditorState.CurrentCase());
            }
        else
            {
            editor->SetAknEditorCase(EAknEditorUpperCase);
            }
        if( iUnderlyingEditorState.Flags() & EAknEditorFlagLatinInputModesOnly )
            {
            editor->SetAknEditorFlags(editor->AknEdwinFlags() | EAknEditorFlagLatinInputModesOnly);
            }
        if (FeatureManager::FeatureSupported(KFeatureIdJapanese))
            {
            editor->SetAknEditorFlags(editor->AknEdwinFlags() | EAknEditorFlagLatinInputModesOnly);
            }
        TInt underlyingEditorSCTResId=iUnderlyingEditorState.SpecialCharacterTableResourceId();
        if (FeatureManager::FeatureSupported(KFeatureIdChinese))
            {
            if (!underlyingEditorSCTResId || underlyingEditorSCTResId == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG)
                {
                underlyingEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE;
                }
            }        
        else if (FeatureManager::FeatureSupported(KFeatureIdKorean))
            {
            // Use the special sct resource file for Korean variant.
            if (!underlyingEditorSCTResId || underlyingEditorSCTResId == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG)
                {
                underlyingEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_KOREAN;
                }
            }        
        else if (!underlyingEditorSCTResId)
            {
            underlyingEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG;
            }
        editor->SetAknEditorSpecialCharacterTable(underlyingEditorSCTResId);
        }
    }

// End of File
