diff -r 000000000000 -r eb1f2e154e89 textinput/peninputgenerichwr/src/peninputgenerichwrlafdatamgr.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputgenerichwr/src/peninputgenerichwrlafdatamgr.cpp Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,358 @@ +/* +* Copyright (c) 2002-2005 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: peninput hwr laf data manager +* +*/ + + +// System includes +#include +#include +#include +#include + +// User includes +#include "peninputgenerichwrlafdatamgr.h" + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CPeninputHwrLayoutDataInfo::NewLC +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +CPeninputHwrLayoutDataInfo* CPeninputHwrLayoutDataInfo::NewLC() + { + CPeninputHwrLayoutDataInfo* self = + new ( ELeave ) CPeninputHwrLayoutDataInfo(); + CleanupStack::PushL( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::NewL +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +CPeninputGenericHwrLafMgr* CPeninputGenericHwrLafMgr::NewL(TPeninputHwrLayoutType aLayoutType) + { + CPeninputGenericHwrLafMgr* self = NewLC(aLayoutType); + CleanupStack::Pop(self); + + return self; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::NewLC +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +CPeninputGenericHwrLafMgr* CPeninputGenericHwrLafMgr::NewLC(TPeninputHwrLayoutType aLayoutType) + { + CPeninputGenericHwrLafMgr* self = + new ( ELeave ) CPeninputGenericHwrLafMgr(aLayoutType); + CleanupStack::PushL( self ); + self->ConstructL(); + + return self; + + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::ConstructL +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CPeninputGenericHwrLafMgr::ConstructL() + { + ReadLafInfoL(); + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::~CPeninputGenericHwrLafMgr +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +CPeninputGenericHwrLafMgr::~CPeninputGenericHwrLafMgr() + { + iLayoutData.ResetAndDestroy(); + iLayoutData.Close(); + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::GetButtonRect +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CPeninputGenericHwrLafMgr::GetButtonRect( TPeninputCommonCtrlID aButtonID, + TRect& aOutterRect, + TRect& aInnerRect ) + { + ASSERT( IsValid() ); + + switch( aButtonID ) + { + case EPeninutWindowCtrlIdMoveBtn: + { + aOutterRect = iLayoutData[iCurLayoutType]->iMoveButton.iRect; + aInnerRect = iLayoutData[iCurLayoutType]->iMoveButton.iInnerRect; + } + break; + case EPeninutWindowCtrlIdCloseBtn: + { + aOutterRect = iLayoutData[iCurLayoutType]->iCloseButton.iRect; + aInnerRect = iLayoutData[iCurLayoutType]->iCloseButton.iInnerRect; + } + break; + case EPeninutWindowCtrlIdOptionBtn: + { + aOutterRect = iLayoutData[iCurLayoutType]->iOptionButton.iRect; + aInnerRect = iLayoutData[iCurLayoutType]->iOptionButton.iInnerRect; + } + break; + case EPeninutWindowCtrlIdSwitchToVkbBtn: + { + aOutterRect = iLayoutData[iCurLayoutType]->iSwitchButton.iRect; + aInnerRect = iLayoutData[iCurLayoutType]->iSwitchButton.iInnerRect; + } + break; + case EPeninutWindowCtrlIdSymbolBtn: + { + aOutterRect = iLayoutData[iCurLayoutType]->iRangbar.iSymbolButton.iRect; + aInnerRect = iLayoutData[iCurLayoutType]->iRangbar.iSymbolButton.iInnerRect; + } + break; + case EPeninutWindowCtrlIdNativeCharBtn: + { + aOutterRect = iLayoutData[iCurLayoutType]->iRangbar.iAlphaButton.iRect; + aInnerRect = iLayoutData[iCurLayoutType]->iRangbar.iAlphaButton.iInnerRect; + } + break; + case EPeninutWindowCtrlIdInputLangSwitcherBtn: + { + aOutterRect = iLayoutData[iCurLayoutType]->iLanguageButton.iRect; + aInnerRect = iLayoutData[iCurLayoutType]->iLanguageButton.iInnerRect; + } + break; + case EPeninutWindowCtrlIdLatinNumberBtn: + { + aOutterRect = iLayoutData[iCurLayoutType]->iRangbar.iNumberButton.iRect; + aInnerRect = iLayoutData[iCurLayoutType]->iRangbar.iNumberButton.iInnerRect; + } + break; + default: + ASSERT( EFalse ); + break; + } + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::EntirePaneRect +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +inline const TRect& CPeninputGenericHwrLafMgr::EntirePaneRect() const + { + ASSERT( IsValid() ); + return iLayoutData[iCurLayoutType]->iHwrWndRect; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::RangbarRect +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +inline const TRect& CPeninputGenericHwrLafMgr::RangbarRect() const + { + ASSERT( IsValid() ); + return iLayoutData[iCurLayoutType]->iRangbar.iRect; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::TextAreaRect +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +inline const TRect& CPeninputGenericHwrLafMgr::TextAreaRect() const + { + ASSERT( IsValid() ); + return iLayoutData[iCurLayoutType]->iICF.iRect; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::WriteAreaRect +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +inline const TRect& CPeninputGenericHwrLafMgr::WriteAreaRect() const + { + ASSERT( IsValid() ); + return iLayoutData[iCurLayoutType]->iWriteAreaRect; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::CPeninputGenericHwrLafMgr +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +CPeninputGenericHwrLafMgr::CPeninputGenericHwrLafMgr(TPeninputHwrLayoutType aLayoutType) + : iCurLayoutType(aLayoutType),iIsValid(EFalse) + { + + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::SetLayoutType +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +inline void CPeninputGenericHwrLafMgr::SetLayoutType(TPeninputHwrLayoutType aLayoutType) + { + iCurLayoutType = aLayoutType; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::LayoutType +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +inline TPeninputHwrLayoutType CPeninputGenericHwrLafMgr::LayoutType() const + { + return iCurLayoutType; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::IsValid +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +inline TBool CPeninputGenericHwrLafMgr::IsValid() const + { + return iIsValid && iCurLayoutType != ELayoutNone; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::ReadLafInfoL +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CPeninputGenericHwrLafMgr::ReadLafInfoL() + { + TAknWindowLineLayout appWnd, mainPane, wndLayout; + TAknLayoutRect wndLayoutRect; + + // Get hwr window layout + appWnd = AknLayoutScalable_Avkon::application_window(0).LayoutLine(); + + if (appWnd.iW > appWnd.iH) // landscape + { + mainPane = AknLayoutScalable_Avkon::main_pane(4).LayoutLine(); + wndLayout = AknLayoutScalable_Avkon::popup_fep_hwr_window(2).LayoutLine(); + } + else // portrait + { + mainPane = AknLayoutScalable_Avkon::main_pane(1).LayoutLine(); + wndLayout = AknLayoutScalable_Avkon::popup_fep_hwr_window(0).LayoutLine(); + } + wndLayoutRect.LayoutRect(appWnd.Rect(), wndLayout); + + // Get latin layout + CPeninputHwrLayoutDataInfo* pDataInfo = CPeninputHwrLayoutDataInfo::NewLC(); + GetHwrLayoutDataInfo( wndLayoutRect.Rect(), 0, *pDataInfo ); + iLayoutData.AppendL( pDataInfo ); + CleanupStack::Pop( pDataInfo ); + + // Get non latin layout + pDataInfo = CPeninputHwrLayoutDataInfo::NewLC(); + GetHwrLayoutDataInfo( wndLayoutRect.Rect(), 2, *pDataInfo ); + iLayoutData.AppendL( pDataInfo ); + CleanupStack::Pop( pDataInfo ); + + iIsValid = ETrue; + } + +// --------------------------------------------------------------------------- +// CPeninputGenericHwrLafMgr::GetHwrLayoutDataInfo +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CPeninputGenericHwrLafMgr::GetHwrLayoutDataInfo( const TRect& aParentWndRect, + TInt aLayoutType, + CPeninputHwrLayoutDataInfo& aDataInfo ) + { + TAknWindowLineLayout topPane, sidePane, topTextPane; + TAknWindowLineLayout cellBtn, cellBtnInner, writePane; + + TAknLayoutRect topPaneRect, sidePaneRect; + TAknLayoutRect topTextPaneRect, writePaneRect; + TAknLayoutRect cellBtnRect, cellBtnInnerRect; + TAknTextLineLayout cellText; + + aDataInfo.iHwrWndRect = aParentWndRect; + + // Get top pane laf info + topPane = AknLayoutScalable_Avkon::fep_hwr_top_pane(aLayoutType).LayoutLine(); + topPaneRect.LayoutRect(aParentWndRect, topPane); + // move button + cellBtn = AknLayoutScalable_Avkon::fep_hwr_top_pane_g1(aLayoutType).LayoutLine(); + cellBtnRect.LayoutRect(topPaneRect.Rect(), cellBtn); + aDataInfo.iMoveButton.iRect = cellBtnRect.Rect(); + // close button + cellBtn = AknLayoutScalable_Avkon::fep_hwr_top_pane_g2(aLayoutType).LayoutLine(); + cellBtnRect.LayoutRect(topPaneRect.Rect(), cellBtn); + aDataInfo.iCloseButton.iRect = cellBtnRect.Rect(); + // option button + cellBtn = AknLayoutScalable_Avkon::fep_hwr_top_pane_g3(aLayoutType).LayoutLine(); + cellBtnRect.LayoutRect(topPaneRect.Rect(), cellBtn); + aDataInfo.iOptionButton.iRect = cellBtnRect.Rect(); + // ICF and it's text font + topTextPane = AknLayoutScalable_Avkon::fep_hwr_top_text_pane(aLayoutType).LayoutLine(); + topTextPaneRect.LayoutRect(topPaneRect.Rect(), topTextPane); + aDataInfo.iICF.iRect = topTextPaneRect.Rect(); + cellText = AknLayoutScalable_Avkon::fep_hwr_top_text_pane_t1().LayoutLine(); + aDataInfo.iICF.iTextFont = AknLayoutUtils::FontFromId(cellText.iFont, NULL); + + // Get side pane laf info + sidePane = AknLayoutScalable_Avkon::fep_hwr_side_pane(aLayoutType).LayoutLine(); + sidePaneRect.LayoutRect(aParentWndRect, sidePane); + // alphabet button + cellBtn = AknLayoutScalable_Avkon::cell_hwr_side_pane(aLayoutType, 0, 0).LayoutLine(); + cellBtnRect.LayoutRect(sidePaneRect.Rect(), cellBtn); + aDataInfo.iRangbar.iAlphaButton.iRect = cellBtnRect.Rect(); + // number button + cellBtn = AknLayoutScalable_Avkon::cell_hwr_side_pane(aLayoutType, 1, 0).LayoutLine(); + cellBtnRect.LayoutRect(sidePaneRect.Rect(), cellBtn); + aDataInfo.iRangbar.iNumberButton.iRect = cellBtnRect.Rect(); + // symbol button + cellBtn = AknLayoutScalable_Avkon::cell_hwr_side_pane(aLayoutType, 2, 0).LayoutLine(); + cellBtnRect.LayoutRect(sidePaneRect.Rect(), cellBtn); + aDataInfo.iRangbar.iSymbolButton.iRect = cellBtnRect.Rect(); + // set range bar rect + aDataInfo.iRangbar.iRect = TRect( aDataInfo.iRangbar.iAlphaButton.iRect.iTl, + aDataInfo.iRangbar.iSymbolButton.iRect.iBr ); + // language button + cellBtn = AknLayoutScalable_Avkon::cell_hwr_side_pane(aLayoutType, 3, 0).LayoutLine(); + cellBtnRect.LayoutRect(sidePaneRect.Rect(), cellBtn); + aDataInfo.iLanguageButton.iRect = cellBtnRect.Rect(); + // switch button + cellBtn = AknLayoutScalable_Avkon::cell_hwr_side_pane(aLayoutType, 4, 0).LayoutLine(); + cellBtnRect.LayoutRect(sidePaneRect.Rect(), cellBtn); + aDataInfo.iSwitchButton.iRect = cellBtnRect.Rect(); + + // Get write pane laf info + writePane = AknLayoutScalable_Avkon::fep_hwr_write_pane(aLayoutType).LayoutLine(); + writePaneRect.LayoutRect(aParentWndRect, writePane); + aDataInfo.iWriteAreaRect = writePaneRect.Rect(); + } +