diff -r 000000000000 -r 8466d47a6819 emailuis/uicomponents/src/fsfastaddressingvisualizer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/uicomponents/src/fsfastaddressingvisualizer.cpp Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,455 @@ +/* +* Copyright (c) 2007 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 CFsFastAddressingVisualizer class +* +*/ + + +// removed __FS_ALFRED_SUPPORT flag +//#include +// removed __FS_ALFRED_SUPPORT flag +// SF +#include "emailtrace.h" +#include +#include +#include +// +#include + +#include "fsfastaddressingvisualizer.h" +#include "fstextinputvisual.h" +#include "fsgenericpanic.h" + +//Height of text input field in pixels +const TInt KFixedTexFieldHeight = 20; + +const TInt KFixedSpacing = 5; //Spacing in pixels +const TInt KOrdinalTextField = 0; +const TInt KOrdinalListField = 2; +const TReal32 KOpacityVisible = 1; +const TReal32 KOpacityInvisible = 0; + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +CFsFastAddressingVisualizer::CFsFastAddressingVisualizer( CAlfControl& aOwner ) + : iControlOwner( aOwner ), + iListPosition( CFsFastAddressingList::EListBelowTextField ) + { + FUNC_LOG; + //No implementation needed + } + +// --------------------------------------------------------------------------- +// Two phased constructor +// --------------------------------------------------------------------------- +// +void CFsFastAddressingVisualizer::ConstructL( CCoeControl& aTextControl ) + { + FUNC_LOG; + CAlfLayout* parent = CAlfLayout::AddNewL( iControlOwner ); + iRootLayout = CAlfAnchorLayout::AddNewL( iControlOwner, parent ); + iTextField = CAlfFlowLayout::AddNewL( iControlOwner, + iRootLayout ); + iTextField->SetFlowDirection( CAlfFlowLayout::EFlowHorizontal ); + + iItemsList = CAlfLayout::AddNewL( iControlOwner, iRootLayout ); + iIconA = CAlfImageVisual::AddNewL( iControlOwner, iTextField ); + iTextInputVisual = CFsTextInputVisual::AddNewL( iControlOwner, + aTextControl, + iTextField ); + iIconB = CAlfImageVisual::AddNewL( iControlOwner, iTextField ); + iTextFieldVisible = ETrue; +//----TO BE REMOVED + //Set size of the component + // this part of code exists only for tests purpose + // removed from cmail + //iRootLayout->SetRect( TAlfRealRect( TRect( 0, 0, 240, 150 ) ), 0 ); + // +//----END OF TO BE REMOVED + SetAnchors(); + } + +// --------------------------------------------------------------------------- +// Constructs and returns an CFsFastAddressingVisualizer object. +// --------------------------------------------------------------------------- +// +CFsFastAddressingVisualizer* CFsFastAddressingVisualizer::NewL( + CAlfControl& aOwner, + CCoeControl& aTextControl + /*CCoeControl& aDispControl */) + { + FUNC_LOG; + CFsFastAddressingVisualizer* self = + CFsFastAddressingVisualizer::NewLC( aOwner, + aTextControl ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// Constructs and returns an CFsFastAddressingVisualizer object. +// --------------------------------------------------------------------------- +// +CFsFastAddressingVisualizer* CFsFastAddressingVisualizer::NewLC( + CAlfControl& aOwner, + CCoeControl& aTextControl ) + { + FUNC_LOG; + CFsFastAddressingVisualizer* self = + new( ELeave ) CFsFastAddressingVisualizer( aOwner ); + CleanupStack::PushL( self ); + self->ConstructL( aTextControl ); + return self; + } + +// --------------------------------------------------------------------------- +// Destructor. +// --------------------------------------------------------------------------- +// +CFsFastAddressingVisualizer::~CFsFastAddressingVisualizer() + { + FUNC_LOG; + } + + +// --------------------------------------------------------------------------- +// Sets icon image. +// --------------------------------------------------------------------------- +// +void CFsFastAddressingVisualizer::SetIcon( + const CFsFastAddressingList::TIconID aIconID, + const TAlfImage& aImage ) + { + FUNC_LOG; + if ( aIconID == CFsFastAddressingList::EIconA ) + { + iIconA->SetImage( aImage ); + iIconA->SetSize( TAlfRealSize( KFixedTexFieldHeight, + KFixedTexFieldHeight ) ); + } + else if ( aIconID == CFsFastAddressingList::EIconB ) + { + iIconB->SetImage( aImage ); + iIconB->SetSize( TAlfRealSize( KFixedTexFieldHeight, + KFixedTexFieldHeight ) ); + } + SetAnchors(); + } + +// --------------------------------------------------------------------------- +// Controls icon visibility. +// --------------------------------------------------------------------------- +// +void CFsFastAddressingVisualizer::SetIconVisible( + const CFsFastAddressingList::TIconID aIconID, + const TBool aVisible ) + { + FUNC_LOG; + CAlfImageVisual* icon(NULL); + if ( aIconID == CFsFastAddressingList::EIconA ) + { + icon = iIconA; + } + else if ( aIconID == CFsFastAddressingList::EIconB ) + { + icon = iIconB; + } + else + { + FsGenericPanic( EFsFastAddressingListBadIconId ); + } + + const TAlfImage& img = icon->Image(); + if ( !img.HasTexture()) + { + FsGenericPanic( EFsFastAddressingListTextureNotSet ); + } + + if ( aVisible ) + { + TAlfTimedValue opacity( icon->Opacity() ); + opacity.SetValueNow( KOpacityVisible ); + icon->SetOpacity( opacity ); + icon->SetSize( TAlfRealSize( KFixedTexFieldHeight, + KFixedTexFieldHeight ) ); + } + else + { + TAlfTimedValue opacity( icon->Opacity() ); + opacity.SetValueNow( KOpacityVisible ); + icon->SetOpacity( opacity ); + icon->SetSize( TAlfRealSize( 0, 0 ) ); + } + SetAnchors(); + } + + +// --------------------------------------------------------------------------- +// Resturns status of the icon visibility. +// --------------------------------------------------------------------------- +// +TBool CFsFastAddressingVisualizer::IconVisible( + const CFsFastAddressingList::TIconID aIconID ) const + { + FUNC_LOG; + TBool result( EFalse ); + + switch ( aIconID ) + { + case CFsFastAddressingList::EIconA: + { + result = TBool( iIconA->Opacity().ValueNow() == KOpacityInvisible ); + break; + } + + case CFsFastAddressingList::EIconB: + { + result = TBool( iIconB->Opacity().ValueNow() == KOpacityInvisible ); + break; + } + + default: + { + FsGenericPanic( EFsFastAddressingListBadIconId ); + break; + } + } + + return result; + } + +// --------------------------------------------------------------------------- +// Redraws whole fast addressing list component. +// --------------------------------------------------------------------------- +// +void CFsFastAddressingVisualizer::Refresh() + { + FUNC_LOG; + //TO DO + } + +// --------------------------------------------------------------------------- +// Controls visibility of the component +// --------------------------------------------------------------------------- +// +void CFsFastAddressingVisualizer::SetVisible(const TBool /*aVisible*/) + { + FUNC_LOG; + //TO DO + } + +// --------------------------------------------------------------------------- +// Move selection up. +// --------------------------------------------------------------------------- +// +void CFsFastAddressingVisualizer::MoveSelectionUp() + { + FUNC_LOG; + //TO DO + } + +// --------------------------------------------------------------------------- +// Move selection down. +// --------------------------------------------------------------------------- +// +void CFsFastAddressingVisualizer::MoveSelectionDown() + { + FUNC_LOG; + //TO DO + } + +// --------------------------------------------------------------------------- +// Retuns latyout for the text input field +// --------------------------------------------------------------------------- +// +CAlfLayout* CFsFastAddressingVisualizer::GetTextLayout() const + { + FUNC_LOG; + return iTextField; + } + + +// --------------------------------------------------------------------------- +// Controls visibility of the text field +// --------------------------------------------------------------------------- +// +void CFsFastAddressingVisualizer::SetTextFieldVisible( const TBool aVisible ) + { + FUNC_LOG; + iTextFieldVisible = aVisible; + if ( aVisible ) + { + TAlfTimedValue opacity( iTextInputVisual->Opacity() ); + opacity.SetValueNow( KOpacityVisible ); + iTextInputVisual->SetOpacity( opacity ); + } + else + { + TAlfTimedValue opacity( iTextInputVisual->Opacity() ); + opacity.SetValueNow( KOpacityInvisible ); + iTextInputVisual->SetOpacity( opacity ); + } + } + +// --------------------------------------------------------------------------- +// Returns status of the text field visibility +// --------------------------------------------------------------------------- +// +TBool CFsFastAddressingVisualizer::IsTextFieldVisible() const + { + FUNC_LOG; + return iTextFieldVisible; + } + +// --------------------------------------------------------------------------- +// Sets list position (above/below of the text input field) +// --------------------------------------------------------------------------- +// +void CFsFastAddressingVisualizer::SetListPosition( + const CFsFastAddressingList::TFsListPosition aPos ) + { + FUNC_LOG; + iListPosition = aPos; + SetAnchors(); + } + +// --------------------------------------------------------------------------- +// Returns the list position (above/below of the text input field) +// --------------------------------------------------------------------------- +// +CFsFastAddressingList::TFsListPosition + CFsFastAddressingVisualizer::ListPosition() const + { + return iListPosition; + } + +// --------------------------------------------------------------------------- +// Returns pointer to the main layout +// --------------------------------------------------------------------------- +// +CAlfLayout* CFsFastAddressingVisualizer::GetMainLayout() const + { + FUNC_LOG; + return iRootLayout; + } + +// --------------------------------------------------------------------------- +// Returns layout for list component +// --------------------------------------------------------------------------- +// +CAlfLayout* CFsFastAddressingVisualizer::GetListLayout() const + { + FUNC_LOG; + return iItemsList; + } + +// --------------------------------------------------------------------------- +// Draws underline of matching part of text in the list items. +// --------------------------------------------------------------------------- +// +void CFsFastAddressingVisualizer::DrawUnderline() + { + FUNC_LOG; + //TO DO - probably not needed. + } + +// --------------------------------------------------------------------------- +// Sets anchors in root layout (positioning) +// --------------------------------------------------------------------------- +// +void CFsFastAddressingVisualizer::SetAnchors() + { + FUNC_LOG; + iRootLayout->Reset(); + TAlfTimedPoint rootSize = iRootLayout->Size(); + TPoint size = rootSize.ValueNow(); + + if ((!size.iX) || (!size.iY)) + { + return; //if size is zero its not needed to set anchors. + } + + TAlfTimedPoint listTopLeft( 0, 0 ); + TAlfTimedPoint listBottomRight( rootSize ); + + if ( iTextFieldVisible ) + { + TPoint iconA = iIconA->Size().ValueNow(); + TPoint iconB = iIconB->Size().ValueNow(); + TAlfTimedPoint textFieldTopLeft; + TAlfTimedPoint textFieldBottomRight; + + if ( iListPosition == CFsFastAddressingList::EListBelowTextField ) + { + textFieldTopLeft.SetTarget( TAlfRealPoint( 0, 0 ) ); + textFieldBottomRight.SetTarget( TAlfRealPoint( size.iX, + KFixedTexFieldHeight ) ); + listTopLeft.SetTarget( TAlfRealPoint( 0, + KFixedTexFieldHeight+KFixedSpacing ) ); + } + else if (iListPosition == + CFsFastAddressingList::EListOnTopOfTextField ) + { + textFieldTopLeft.SetTarget( TAlfRealPoint( 0, + size.iY - KFixedTexFieldHeight ) ); + textFieldBottomRight.SetTarget( TAlfRealPoint( size.iX, size.iY ) ); + listBottomRight.SetTarget( TAlfRealPoint( size.iX, + size.iY - ( KFixedTexFieldHeight+KFixedSpacing ) ) ); + } + + iTextInputVisual->SetSize( TAlfRealSize( ( size.iX )- + ( iconA.iX + iconB.iX ), + KFixedTexFieldHeight ) ); + + iRootLayout->SetAnchor( EAlfAnchorTopLeft, + KOrdinalTextField, + EAlfAnchorOriginLeft, + EAlfAnchorOriginTop, + EAlfAnchorMetricAbsolute, + EAlfAnchorMetricAbsolute, + textFieldTopLeft); + + iRootLayout->SetAnchor( EAlfAnchorBottomRight, + KOrdinalTextField, + EAlfAnchorOriginLeft, + EAlfAnchorOriginTop, + EAlfAnchorMetricAbsolute, + EAlfAnchorMetricAbsolute, + textFieldBottomRight); + } + + iRootLayout->SetAnchor( EAlfAnchorTopLeft, + KOrdinalListField, + EAlfAnchorOriginLeft, + EAlfAnchorOriginTop, + EAlfAnchorMetricAbsolute, + EAlfAnchorMetricAbsolute, + listTopLeft); + + iRootLayout->SetAnchor( EAlfAnchorBottomRight, + KOrdinalListField, + EAlfAnchorOriginLeft, + EAlfAnchorOriginTop, + EAlfAnchorMetricAbsolute, + EAlfAnchorMetricAbsolute, + listBottomRight); + + iRootLayout->UpdateChildrenLayout(); + } +