diff -r 000000000000 -r eb1f2e154e89 textinput/peninputcommonctrlsjp/src/peninputlayoutwindowjp.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputcommonctrlsjp/src/peninputlayoutwindowjp.cpp Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,443 @@ +/* +* Copyright (c) 2009 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: common layout window for UI interface of VKB and HWR : japanese +* +*/ + + +// System includes +#include // many includes +#include +#include +#include +#include // CAknFepCtrlEventButton,CAknFepCtrlRepeatButton +#include + +// User includes +#include "peninputeventjp.h" // EPeninutWindowCtrlIdCandidatePopupWindow, ... +#include "peninputlayoutwindowjp.h" +#include "peninputjapaneseview.h" +#include "peninputcontextfieldjp.h" +#include "peninputjapanesecandidatewnd.h" +#include "peninputjapanesepredictivewnd.h" +#include "peninputjapanesecandidatelistbox.h" +#include "peninputjapanesepredictivelistbox.h" + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::~CPeninputLayoutWindowJp +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +EXPORT_C CPeninputLayoutWindowJp::~CPeninputLayoutWindowJp() + { + delete iViewCandidate; + delete iViewPrediction; + delete iViewCharacterRange; + } + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::HandleControlEvent +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C void CPeninputLayoutWindowJp::HandleControlEvent(TInt aEventType, + CFepUiBaseCtrl* aCtrl, + const TDesC& aEventData) + { + TInt* data = ( TInt* ) aEventData.Ptr(); + switch (aEventType) + { + case EPeninputLayoutEventMovePosition: + { + TSize shadowSize = ShadowRect().Size(); + if (iOpened && shadowSize.iWidth && shadowSize.iHeight) // check if ready. + { + TPoint tl = UiLayout()->Position(); + if ((tl.iX || tl.iY) && + !CPeninputDataConverter::AnyToInt(iLayoutContext->RequestData(EAkninputDataTypeSizeChanging)) ) + { + ChangeLayoutPosition(EPeninputPositionChangeTlJustify); + ICFDisableRegionUpdating(); + } + TInt style = *( ( TUint16* ) aEventData.Ptr() ); + if (EPeninputPositionChangeDataQuery != style) + { + style = EPeninputPositionChangeBrJustify; + } + ChangeLayoutPosition(style); + ICFDisableRegionUpdating(); + } + } + break; + case EEventSetDimmedSctBtn: + { + CAknFepCtrlEventButton* sctBtn = static_cast(iCtrlPool->Control(EPeninutWindowCtrlIdSymbolBtn)); + if (sctBtn) + { + TBool dimmFlag = (*data)? ETrue : EFalse; + sctBtn->SetDimmed(dimmFlag); + } + } + break; + default: + CPeninputLayoutWindow::HandleControlEvent(aEventType,aCtrl,aEventData); + break; + } + } + +// -------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::CreateAllControls +// (other items were commented in a header) +// -------------------------------------------------------------------------- +// +EXPORT_C void CPeninputLayoutWindowJp::CreateAllControlsL() + { + + AddCandidateWindowL(); + + // befor predictivewnd, handle pointer event + CAknFepCtrlEventButton* upButton = AddButtonL( + EPeninutWindowCtrlIdScrollUpBtn, + EPeninputLayoutEventScrollUp, + GetScrollUpBtnResId(), + EKeySpace, // dummy + ETrue); + + // befor predictivewnd, handle pointer event + CAknFepCtrlEventButton* downButton = AddButtonL( + EPeninutWindowCtrlIdScrollDownBtn, + EPeninputLayoutEventScrollDown, + GetScrollDownBtnResId(), + EKeySpace, // dummy + ETrue); + + AddPredictiveWindowL(); + + iPredictiveWnd->SetButtons(upButton, downButton); + + AddCharacterRangeWindowL(); // Hwr only + + } + +// -------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::SetControlsFont +// (other items were commented in a header) +// -------------------------------------------------------------------------- +// +EXPORT_C void CPeninputLayoutWindowJp::SetControlsFont() + { + TAknTextLineLayout textPaneTextLayout; + + if (EPluginInputModeVkb == iLayoutContext->LayoutType()) + { + textPaneTextLayout = + AknLayoutScalable_Avkon::fep_vkb_top_text_pane_t1().LayoutLine(); + } + else + { + textPaneTextLayout = + AknLayoutScalable_Avkon::fep_hwr_top_text_pane_t1().LayoutLine(); + } + + CFepInputContextField* icf = static_cast + ( Control( EPeninutWindowCtrlIdInputContextField ) ); + + icf->SetFont( AknLayoutUtils::FontFromId + ( textPaneTextLayout.iFont, NULL ) ); + TInt UnitHeight = *( static_cast( iLayoutContext->RequestData + ( EPeninputDataTypeUnitHeight ) ) ); + TInt UnitWidth = *( static_cast( iLayoutContext->RequestData + ( EPeninputDataTypeUnitWidth ) ) ); + + // call listbox->SizeChanged() + iCandidateWnd->UpdateMaximumRows( + UnitHeight + ,(EPluginInputModeVkb == iLayoutContext->LayoutType())? KPENINPUT_LAYOUT_VKB_POPUP_MAX_ROW_COUNT:KPENINPUT_LAYOUT_HWR_POPUP_MAX_ROW_COUNT); + + if (iCharacterRangeWnd) + { + // call listbox->SizeChanged() + iCharacterRangeWnd->UpdateMaximumRows(UnitHeight,KPENINPUT_LAYOUT_HWR_POPUP_MAX_ROW_COUNT); + } + + iPredictiveWnd->SetLineCount(KPENINPUT_LAYOUT_PREDICTIONPANE_ROW_COUNT); + + // call listbox->SizeChanged() + iPredictiveWnd->SizeChanged(Rect().Size().iWidth, UnitWidth, UnitHeight); + } + +// ----------------------------------------------------------------------------- +// CPeninputLayoutWindowJp:::ConstructFromResourceL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CPeninputLayoutWindowJp::ConstructFromResourceL() + { + CPeninputLayoutWindow::ConstructFromResourceL(); + if (iCandidateWnd && iCandidateWnd->ListBox() && iCandidateWnd->ListBox()->ScrollBarFrame()) + { + CAknDoubleSpanScrollBar* scrollBar = + static_cast(iCandidateWnd->ListBox()->ScrollBarFrame()->GetScrollBarHandle(CEikScrollBar::EVertical)); + if (scrollBar) + { + scrollBar->HandleResourceChange(KAknsMessageSkinChange); + } + } + } + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::HandlePointerDownEventL +// Handle pointer down event +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C CFepUiBaseCtrl* CPeninputLayoutWindowJp::HandlePointerDownEventL(const TPoint& aPoint) + { + CFepUiBaseCtrl* ctrl = iCandidateWnd->HandlePointerDownEventL(aPoint); + if (!ctrl && iCharacterRangeWnd) + { + ctrl = iCharacterRangeWnd->HandlePointerDownEventL(aPoint); + } + if (!ctrl) + { + ctrl = CAknFepCtrlBaseWindow::HandlePointerDownEventL(aPoint); + } + return ctrl; + } + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::HandlePointerUpEventL +// Handle pointer up event +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C CFepUiBaseCtrl* CPeninputLayoutWindowJp::HandlePointerUpEventL(const TPoint& aPoint) + { + CFepUiBaseCtrl* ctrl = iCandidateWnd->HandlePointerUpEventL(aPoint); + if (!ctrl && iCharacterRangeWnd) + { + ctrl = iCharacterRangeWnd->HandlePointerUpEventL(aPoint); + } + if (!ctrl) + ctrl = CPeninputLayoutWindow::HandlePointerUpEventL(aPoint); + return ctrl; + } + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::HandlePointerMoveEventL +// Handle pointer move event +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C CFepUiBaseCtrl* CPeninputLayoutWindowJp::HandlePointerMoveEventL(const TPoint& aPoint) + { + CFepUiBaseCtrl* ctrl = iCandidateWnd->HandlePointerMoveEventL(aPoint); + if (!ctrl && iCharacterRangeWnd) + { + ctrl = iCharacterRangeWnd->HandlePointerMoveEventL(aPoint); + } + if (!ctrl) + ctrl = CPeninputLayoutWindow::HandlePointerMoveEventL(aPoint); + return ctrl; + } + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::CandidateWindow +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C CPeninputJapaneseCandidateWnd* CPeninputLayoutWindowJp::CandidateWindow() + { + return iCandidateWnd; + } + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::PredictiveWindow +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C CPeninputJapanesePredictiveWnd* CPeninputLayoutWindowJp::PredictiveWindow() + { + return iPredictiveWnd; + } + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::CharacterRangeWindow +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C CPeninputJapaneseCandidateWnd* CPeninputLayoutWindowJp::CharacterRangeWindow() + { + return iCharacterRangeWnd; + } + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::InputContextField +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +EXPORT_C CFepInputContextFieldJp* CPeninputLayoutWindowJp::InputContextField() + { + return static_cast(Control(EPeninutWindowCtrlIdInputContextField)); + } + +// -------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::Opened +// (other items were commented in a header) +// -------------------------------------------------------------------------- +// +EXPORT_C void CPeninputLayoutWindowJp::Opened() + { + iOpened = ETrue; + } + +// -------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::Closed +// (other items were commented in a header) +// -------------------------------------------------------------------------- +// +EXPORT_C void CPeninputLayoutWindowJp::Closed() + { + iOpened = EFalse; + } + +// -------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::ICFDisableRegionUpdating +// (other items were commented in a header) +// -------------------------------------------------------------------------- +// +EXPORT_C void CPeninputLayoutWindowJp::ICFDisableRegionUpdating() + { + CFepInputContextField* icf = static_cast + ( Control( EPeninutWindowCtrlIdInputContextField ) ); + + icf->OnDeActivate(); + } + +// -------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::ICFEnableRegionUpdating +// (other items were commented in a header) +// -------------------------------------------------------------------------- +// +EXPORT_C void CPeninputLayoutWindowJp::ICFEnableRegionUpdating() + { + CFepInputContextField* icf = static_cast + ( Control( EPeninutWindowCtrlIdInputContextField ) ); + + icf->OnActivate(); + } + +// ------------------------------------------------------------------------ +// CPeninputLayoutWindow::CPeninputLayoutWindow +// (other items were commented in a header) +// ------------------------------------------------------------------------ +// +EXPORT_C CPeninputLayoutWindowJp::CPeninputLayoutWindowJp( + CFepUiLayout* aUiLayout, MPeninputLayoutContext* aLayoutContext ) + : CPeninputLayoutWindow( aUiLayout, aLayoutContext ), + iOpened(EFalse) + { + } + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::AddButtonL +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +CAknFepCtrlEventButton* CPeninputLayoutWindowJp::AddButtonL( + const TInt aControlId, const TInt aEventId, const TInt aResId, + const TInt aUnicode, const TBool aIsRepeat ) + { + CAknFepCtrlEventButton* button = NULL; + + if ( aIsRepeat ) + { + button = CAknFepCtrlRepeatButton::NewL( UiLayout(), aControlId, + aEventId, aUnicode ); + } + else + { + button = CAknFepCtrlEventButton::NewL( UiLayout(), aControlId, + aEventId, aUnicode ); + } + + if ( button ) + { + CleanupStack::PushL( button ); + // Read resource + TResourceReader reader; + + CCoeEnv::Static()->CreateResourceReaderLC( reader, aResId ); + button->SetResourceId( aResId ); + button->ConstructFromResourceL(); + // Pop and destroy reader + CleanupStack::PopAndDestroy( 1 ); + + AddControlL(button); + CleanupStack::Pop( button ); + } + return button; + } + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::AddCandidateWindowL +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +void CPeninputLayoutWindowJp::AddCandidateWindowL() + { + iViewCandidate = new(ELeave) CPeninputJapaneseView; + iViewCandidate->ConstructL(); + iCandidateWnd = CPeninputJapaneseCandidateWnd::NewL(UiLayout(), EPeninutWindowCtrlIdCandidatePopupWindow, iViewCandidate); + iCandidateWnd->AddEventObserver(UiLayout()); + AddControlL(iCandidateWnd); + iCandidateWnd->SetParent(NULL); + iViewCandidate->SetListBox(iCandidateWnd->ListBox()); + } + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::AddPredictiveWindowL +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +void CPeninputLayoutWindowJp::AddPredictiveWindowL() + { + iViewPrediction = new(ELeave) CPeninputJapaneseView; + iViewPrediction->ConstructL(); + iPredictiveWnd = CPeninputJapanesePredictiveWnd::NewL(UiLayout(), EPeninutWindowCtrlIdPredictionPane, iViewPrediction); + iPredictiveWnd->AddEventObserver(UiLayout()); + AddControlL(iPredictiveWnd); + iViewPrediction->SetListBox(iPredictiveWnd->ListBox()); + } + +// --------------------------------------------------------------------------- +// CPeninputLayoutWindowJp::AddCandidateWindowL +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +void CPeninputLayoutWindowJp::AddCharacterRangeWindowL() + { + if (EPluginInputModeVkb != iLayoutContext->LayoutType()) + { + iViewCharacterRange = new(ELeave) CPeninputJapaneseView; + iViewCharacterRange->ConstructL(); + iCharacterRangeWnd = CPeninputJapaneseCandidateWnd::NewL(UiLayout(), EPeninutWindowCtrlIdCharacterRangePopupWindow, iViewCharacterRange); + iCharacterRangeWnd->AddEventObserver(UiLayout()); + AddControlL(iCharacterRangeWnd); + iCharacterRangeWnd->SetParent(NULL); + iViewCharacterRange->SetListBox(iCharacterRangeWnd->ListBox()); + } + }