fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/aknfepuilayoutdatamgr.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 15 Sep 2010 12:34:44 +0300
branchRCL_3
changeset 50 5a1685599b76
parent 0 eb1f2e154e89
child 56 8152b1f1763a
permissions -rw-r--r--
Revision: 201035 Kit: 201036

/*
* Copyright (c) 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 for phrase creation layout data managment
 *
*/


// INCLUDE FILES
#include <gulfont.h> 
#include <eiklabel.h>
#include <AknLayout.lag>
#include <AknsDrawUtils.h>
#include <skinlayout.cdl.h>
#include <aknlayoutscalable_avkon.cdl.h>

#include "aknfepuilayoutdatamgr.h"

// -----------------------------------------------------------------------------
// CAknFepUiLayoutDataMgr::GetPinyinPhraseCreationContainerHeight()
// Get the pinyin phrase creation container Height data 
// -----------------------------------------------------------------------------
//
CAknFepUiLayoutDataMgr* CAknFepUiLayoutDataMgr::NewL()
    {
    CAknFepUiLayoutDataMgr* self = new(ELeave)CAknFepUiLayoutDataMgr();
    CleanupStack::PushL( self );
    self->ConstructL( );
    CleanupStack::Pop( ); // self
    return self;
    }

CAknFepUiLayoutDataMgr::CAknFepUiLayoutDataMgr()
    {
    }

void CAknFepUiLayoutDataMgr::ConstructL()
    {
    ReadLafInfo();
    }

void CAknFepUiLayoutDataMgr::ReadLafInfo()
    {	
	// Screen
    TRect rect;
    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, rect );
    iScreenSize = rect.Size();

    iLandScape = iScreenSize.iWidth < iScreenSize.iHeight ? EFalse : ETrue;
    
    // 1. Container With Candidate list
    TAknWindowLineLayout layoutLineEntry;
    TAknLayoutRect layoutRectEntry;
      
    // Get container Rect & height
    layoutLineEntry = AknLayoutScalable_Avkon::popup_hyb_candi_window(0);
    layoutRectEntry.LayoutRect( rect, layoutLineEntry );    
    iPopupRectEntry = layoutRectEntry.Rect();
    iPopupHeightEntry = layoutLineEntry.iH;
    
    // Candidate layout
    iCandidate = AknLayoutScalable_Avkon::grid_hyb_candi_pane(0);
    
    // Scroll layout
    iScrollLayout = AknLayoutScalable_Avkon::cell_hyb_candi_scroll_pane(0); 
   
    // Up arrow & down arrow & close in scroll pane
    iUpArrowLayout = AknLayoutScalable_Avkon::cell_hyb_candi_scroll_pane_g1_aid(0);   
    iDownArrowLayout = AknLayoutScalable_Avkon::cell_hyb_candi_scroll_pane_g2_aid(0);    
    iCloseLayout = AknLayoutScalable_Avkon::cell_hyb_candi_scroll_pane_g3(0);
    
    // Character in candidate pane
    iCharacterLineLayout = AknLayoutScalable_Avkon::cell_hyb_candi_pane(0);    
    iCharacterTextLayout = AknLayoutScalable_Avkon::cell_hyb_candi_pane_t1(0);
    iEntryPaneWindowLine = AknLayoutScalable_Avkon::input_focus_pane_cp06( 0 );
    iEntryPaneWindowLine.il = 3;
    iEntryPaneWindowLine.it = 3;
    iEntryPaneWindowLine.ir = 5;
    iEntryPaneWindowLine.iH = 30;
    iLayoutEntryItem = AKN_LAYOUT_WINDOW_fep_entry_item_pane;    
    iLayoutLineRectEntryPane.LayoutRect( iPopupRectEntry, iEntryPaneWindowLine );
    
    // 2. EC( With Candidate list & Entry )
    TAknWindowLineLayout layoutLineCandidate;
    TAknLayoutRect layoutRectCandidate, layoutEC;
    
    // Container Rect & height
    layoutLineCandidate = AknLayoutScalable_Avkon::popup_hyb_candi_window(1);
    layoutRectCandidate.LayoutRect( rect,layoutLineCandidate );
    iPopupRectCandidate = layoutRectCandidate.Rect();
    iPopupRectCandidateHeight = layoutLineCandidate.iH;
    
    // Candidate layout
    iECandidate = AknLayoutScalable_Avkon::grid_hyb_candi_pane(1);    
    iEntryCLayout = AknLayoutScalable_Avkon::entry_hyb_candi_pane(0);
    
    // Phrase pane layout
    iECWindowLayout = AknLayoutScalable_Avkon::grid_hyb_phrase_pane(0);     
       
    // 3. ECP( With Candidate list & Entry & PopUp )
    TAknWindowLineLayout layoutLineEEP;
    TAknLayoutRect layoutEEP, layoutRectEEP;
    
    // Container Rect & height
    layoutLineEEP = AknLayoutScalable_Avkon::popup_hyb_candi_window(2);
    layoutRectEEP.LayoutRect(rect,layoutLineEEP);
    iPopupRectEEP = layoutRectEEP.Rect();
    iPopupHeightEEP = layoutLineEEP.iH;
    
    //Entry
    iEntryCPLayout = AknLayoutScalable_Avkon::entry_hyb_candi_pane(1);
    iEntryWithCandidateAndPopUp = AknLayoutScalable_Avkon::grid_hyb_phrase_pane(1);

    // Candidate layout
    iEPCandidate = AknLayoutScalable_Avkon::grid_hyb_candi_pane(2);
       
    //EEP
    iEEPWindowLayout = AknLayoutScalable_Avkon::grid_hyb_phrase_pane(1);     
    layoutEEP.LayoutRect( iPopupRectEEP, iEEPWindowLayout );
    iEEPWindowRect = layoutEEP.Rect();
    
    iRectCoverMainPaneInputEntry.LayoutRect(iPopupRectEntry, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_1(iPopupRectEntry));
    iRectFirstShadowInputEntry.LayoutRect(iPopupRectEntry, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_2(iPopupRectEntry));
    iRectOutlineFrameInputEntry.LayoutRect(iPopupRectEntry, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_3(iPopupRectEntry));
    iRectInsideAreaInputEntry.LayoutRect(iPopupRectEntry, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_4(iPopupRectEntry));
    
    iRectCoverMainPaneInputCandidate.LayoutRect(iPopupRectCandidate, 
                                                AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_1(iPopupRectCandidate));
    iRectFirstShadowInputCandidate.LayoutRect(iPopupRectCandidate, 
                                              AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_2(iPopupRectCandidate));
    iRectOutlineFrameInputCandidate.LayoutRect(iPopupRectCandidate,
                                               AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_3(iPopupRectCandidate));
    iRectInsideAreaInputCandidate.LayoutRect(iPopupRectCandidate, 
                                             AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_4(iPopupRectCandidate));
    
  
    iRectCoverMainPaneInputEEP.LayoutRect(iPopupRectEEP, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_1(iPopupRectEEP));
    iRectFirstShadowInputEEP.LayoutRect(iPopupRectEEP, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_2(iPopupRectEEP));
    iRectOutlineFrameInputEEP.LayoutRect(iPopupRectEEP, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_3(iPopupRectEEP));
    iRectInsideAreaInputEEP.LayoutRect(iPopupRectEEP, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_4(iPopupRectEEP));    
    
    iEntryHorizLineWindow = AknLayoutScalable_Avkon::popup_fep_china_uni_window_g(0,0).LayoutLine();
    iEEPSecondHorizLineWindow = AknLayoutScalable_Avkon::popup_fep_china_uni_window_g(0,1).LayoutLine();
    iEEPFirstHorizLineWindow = AknLayoutScalable_Avkon::popup_fep_china_uni_window_g(1,0).LayoutLine();
    iHorizLine.LayoutRect(iPopupRectEntry, iEntryHorizLineWindow);
    iEEPFirstHorizLine.LayoutRect(iPopupRectEEP, iEEPFirstHorizLineWindow);
    iEEPSecondHorizLine.LayoutRect(iPopupRectEEP, iEEPSecondHorizLineWindow);
    iEntryPaneRect = iLayoutLineRectEntryPane.Rect( );

    TAknLayoutRect labelRect;
    labelRect.LayoutRect( iEntryPaneRect, AknLayoutScalable_Avkon::entry_hyb_candi_pane(0));
    iEntryTextLayout = AknLayoutScalable_Avkon::entry_hyb_candi_pane_t1( 0 );
    iLayoutInputPaneText.LayoutText( labelRect.Rect( ), iEntryTextLayout );

    TRect windowRect = layoutRectEntry.Rect();    
    TInt height = windowRect.Height();
    TInt width = windowRect.Width();
    
    windowRect.iTl.iY = 0;
    windowRect.iTl.iX = 0;
    windowRect.SetHeight(height);
    windowRect.SetWidth(width);
      
    TAknLayoutRect layoutLineRectEntryPane;
    layoutLineRectEntryPane.LayoutRect(windowRect, iEntryPaneWindowLine);
    TRect entryPane = layoutLineRectEntryPane.Rect();
     
    iRectCoverMainPaneInput.LayoutRect(windowRect, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_1(windowRect));
    iRectFirstShadowInput.LayoutRect(windowRect, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_2(windowRect));
    iRectOutlineFrameInput.LayoutRect(windowRect, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_3(windowRect));
    iRectInsideAreaInput.LayoutRect(windowRect, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_4(windowRect));
      
    //eep text
    TAknTextComponentLayout textLayout = AknLayoutScalable_Avkon::entry_hyb_candi_pane_t1(0);
    iEEPTextLine = textLayout.LayoutLine();
    TAknLayoutText eepTextLayout;
    eepTextLayout.LayoutText( iEEPWindowRect, iEEPTextLine );
    iEEPTextColor = eepTextLayout.Color();
    const CFont* font = AknLayoutUtils::FontFromId(iEEPTextLine.FontId());
    iEEPCursorHeight = font->HeightInPixels();    
    iInputLayout = AknLayoutScalable_Avkon::cell_hyb_phrase_pane(0);
    iInputTextLayout = AknLayoutScalable_Avkon::cell_hyb_phrase_pane_t1(0);
    }

TAny* CAknFepUiLayoutDataMgr::RequestData(TInt aDataType)
    {
    switch ( aDataType )
        {
        case EPopupRectEntry:
            return &iPopupRectEntry;
        case EPopupRectCandatate:
            return &iPopupRectCandidate;
        case EPopupRectEEP:
            return &iPopupRectEEP;
        case EPopupHeightEntry:
            return &iPopupHeightEntry;
        case EPopupHeightEEP:
            return &iPopupHeightEEP;
        case EEntryPaneWindowLine:
            return &iEntryPaneWindowLine;
        case ECandidatePaneWindowLine:
            return &iCandidatePaneWindowLine;
        case ELayoutEntryItem:
            return &iLayoutEntryItem;
        case EEEPWindowRect:
            return &iEEPWindowRect;
        case EEEPWindowLayout:
            return &iEEPWindowLayout;
        case ERectCoverMainPaneInputEntry:
            return &iRectCoverMainPaneInputEntry;
        case ERectFirstShadowInputEntry:
            return &iRectFirstShadowInputEntry;
        case ERectOutlineFrameInputEntry:
            return &iRectOutlineFrameInputEntry;
        case ERectInsideAreaInputEntry:
            return &iRectInsideAreaInputEntry;
        case ERectCoverMainPaneInputCandidate:
            return &iRectCoverMainPaneInputCandidate;
        case ERectFirstShadowInputCandidate:
            return &iRectFirstShadowInputCandidate;
        case ERectOutlineFrameInputCandidate:
            return &iRectOutlineFrameInputCandidate;
        case ERectInsideAreaInputCandidate:
            return &iRectInsideAreaInputCandidate;
        case ERectCoverMainPaneInputEEP:
            return &iRectCoverMainPaneInputEEP;
        case ERectFirstShadowInputEEP:
            return &iRectFirstShadowInputEEP;
        case ERectOutlineFrameInputEEP:
            return &iRectOutlineFrameInputEEP;
        case ERectInsideAreaInputEEP:
            return &iRectInsideAreaInputEEP;
        case ELayoutInputPaneText:
            return &iLayoutInputPaneText;
        case ELayoutLineRectEntryPane:
            return &iLayoutLineRectEntryPane;
        case EEntryTextLayout:
            return &iEntryTextLayout;
        case EEntryPaneRect:
            return &iEntryPaneRect;
        case ERectCoverMainPaneInput:
            return &iRectCoverMainPaneInput;
        case ERectFirstShadowInput:
            return &iRectFirstShadowInput;
        case ERectOutlineFrameInput:
            return &iRectOutlineFrameInput;
        case ERectInsideAreaInput:
            return &iRectInsideAreaInput;
        case EEEPTextLine:
            return &iEEPTextLine;
        case EEEPCursorHeight:
            return &iEEPCursorHeight;
        case EHorizLine:
            return &iHorizLine;
        case EEEPFirstHorizLine:
            return &iEEPFirstHorizLine;
        case EEEPSecondHorizLine:
            return &iEEPSecondHorizLine;
        case EEntryHorizLineWindow:
            return &iEntryHorizLineWindow;
        case EEEPSecondHorizLineWindow:
            return &iEEPSecondHorizLineWindow;
        case EEEPFirstHorizLineWindow:
            return &iEEPFirstHorizLineWindow;
        case EEEPTextColor:
            return &iEEPTextColor;
        case EECPLayout:
        	return &iEntryWithCandidateAndPopUp;//Rect;
        case ECandidateLayout:
        	return &iCandidate;
        case EECandidateLayout:
        	return &iECandidate;
        case EEPCandidateLayout:
        	return &iEPCandidate;
        case ECharacterLayout:
        	return &iCharacterLineLayout;
        case ECharacterTextLayout:
        	return &iCharacterTextLayout;
        case EPopupHeightEP:
        	return &iPopupRectCandidateHeight;
        case EUpArrowLayout:
        	return &iUpArrowLayout;
        case EDownArrowLayout:
        	return &iDownArrowLayout;
        case EScrollLayout:
        	return &iScrollLayout;
        case EEntryCLayout:
        	return &iEntryCLayout;
        case EEntryCPLayout:
        	return &iEntryCPLayout;
        case EECWindowLayout:
        	return &iECWindowLayout;
        case ECloseLayout:
        	return &iCloseLayout;
        case EInputLayout:
        	return &iInputLayout;
        case EInputTextLayout:
        	return &iInputTextLayout;
        default:
            break;
        }
    return NULL;
    }

// End of File