--- /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
+*
+*/
+
+
+//<cmail> removed __FS_ALFRED_SUPPORT flag
+//#include <fsconfig.h>
+//</cmail> removed __FS_ALFRED_SUPPORT flag
+//<cmail> SF
+#include "emailtrace.h"
+#include <alf/alfAnchorLayout.h>
+#include <alf/alfFlowLayout.h>
+#include <alf/alfimagevisual.h>
+//</cmail>
+#include <COECNTRL.H>
+
+#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
+ //<cmail> removed from cmail
+ //iRootLayout->SetRect( TAlfRealRect( TRect( 0, 0, 240, 150 ) ), 0 );
+ //</cmail>
+//----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();
+ }
+