--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/src/FreestyleEmailUiStatusIndicator.cpp Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,674 @@
+/*
+* 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: FreestyleEmailUi status indicator implementation
+*
+*/
+
+
+
+// SYSTEM INCLUDES
+#include "emailtrace.h"
+#include <AknUtils.h>
+#include <StringLoader.h>
+// <cmail> SF
+#include <alf/alfdecklayout.h>
+#include <alf/alfcontrolgroup.h>
+#include <alf/alfbrusharray.h>
+// </cmail>
+#include <FreestyleEmailUi.rsg>
+
+// INTERNAL INCLUDES
+#include "FreestyleEmailUiStatusIndicator.h"
+#include "FreestyleEmailUiAppui.h"
+#include "FreestyleEmailUiTextureManager.h"
+#include "FreestyleEmailUiLayoutHandler.h"
+
+const TReal KPopupListBackgroundOpacity(1);//0.94);
+const TInt KIndicatorDefaultDuration( 3000 );
+const TInt KIconArraySize(50);
+
+CFSEmailUiStatusIndicator::CFSEmailUiStatusIndicator( CAlfEnv& aEnv,
+ CFreestyleEmailUiAppUi* aAppUi, CAlfControlGroup& aControlGroup )
+ : CAlfControl(), iEnv(aEnv), iAppUi(aAppUi), iControlGroup(aControlGroup)
+ {
+ FUNC_LOG;
+ }
+
+CFSEmailUiStatusIndicator::~CFSEmailUiStatusIndicator()
+ {
+ FUNC_LOG;
+ delete iTimer;
+ iIconArray.Close();
+ }
+
+CFSEmailUiStatusIndicator* CFSEmailUiStatusIndicator::NewL( CAlfEnv& aEnv,
+ CAlfControlGroup& aControlGroup, CFreestyleEmailUiAppUi* aAppUi )
+ {
+ FUNC_LOG;
+ CFSEmailUiStatusIndicator* self = new (ELeave) CFSEmailUiStatusIndicator( aEnv, aAppUi, aControlGroup );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+void CFSEmailUiStatusIndicator::ConstructL()
+ {
+ FUNC_LOG;
+
+ // These are done already here, otherwise the ownership of this
+ // control is not transferred to AlfEnv (AlfEnv deletes only controls that
+ // are added to control groups) -> memory leak if DoFirstStartL not called
+ CAlfControl::ConstructL( iEnv );
+ iControlGroup.AppendL( this );
+
+ iFirstStartCompleted = EFalse;
+
+ }
+
+// CFSEmailUiStatusIndicator::DoFirstStartL()
+// Purpose of this function is to do first start things only when indicator is
+// really needed to be shown for the first time. Implemented to make app startup faster.
+void CFSEmailUiStatusIndicator::DoFirstStartL()
+ {
+ FUNC_LOG;
+
+ CalculateSizeAttributes();
+ LoadIconsL();
+
+ iParentLayout = CAlfDeckLayout::AddNewL(*this);
+
+ iParentLayout->SetFlags( EAlfVisualFlagManualLayout );
+ iParentLayout->SetRect( iParentRect );
+
+ // Set list padding
+ //TInt padding = iAppUi->LayoutHandler()->ControlBarListPadding();
+ iParentLayout->SetPadding( TPoint(iBorderPadding, iBorderPadding) );
+
+ // Set list background
+ iParentLayout->EnableBrushesL();
+ CAlfImageBrush* bgBrush = iAppUi->FsTextureManager()->NewControlBarListBgBrushLC();
+ iParentLayout->Brushes()->AppendL( bgBrush, EAlfHasOwnership );
+ CleanupStack::Pop( bgBrush );
+
+ iContentLayout = CAlfAnchorLayout::AddNewL( *this, iParentLayout );
+
+ // Create new image visual for our control
+ iImageVisual = CAlfImageVisual::AddNewL(*this, iContentLayout);
+ iImageVisual->SetScaleMode( CAlfImageVisual::EScaleFitWidth );
+
+ // Working text:
+ iFirstTextVisual = CAlfTextVisual::AddNewL( *this, iContentLayout );
+ iFirstTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate );
+
+ iSecondTextVisual = CAlfTextVisual::AddNewL( *this, iContentLayout );
+ iSecondTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate );
+ if ( AknLayoutUtils::LayoutMirrored() )
+ {
+ iFirstTextVisual->SetAlign( EAlfAlignHRight, EAlfAlignVCenter );
+ iSecondTextVisual->SetAlign( EAlfAlignHRight, EAlfAlignVCenter );
+ }
+ else
+ {
+ iFirstTextVisual->SetAlign( EAlfAlignHLeft, EAlfAlignVCenter );
+ iSecondTextVisual->SetAlign( EAlfAlignHLeft, EAlfAlignVCenter );
+ }
+
+ iTimer = CFSEmailUiGenericTimer::NewL( this );
+ iFirstStartCompleted = ETrue;
+
+ }
+
+
+void CFSEmailUiStatusIndicator::PositionVisuals()
+ {
+ FUNC_LOG;
+ // Note: the method's bit rewritten for Alfred as the anchors are handled more obnoxiously
+
+ TReal firstLineTopPos = 0;
+ TReal firstLineBottomPos = 0;
+ TReal secondLineTopPos = 0;
+ TReal secondLineBottomPos = 0;
+ if( iHasSecondTextLine )
+ {
+ firstLineBottomPos = -0.5;
+ secondLineTopPos = 0.5;
+ }
+
+ // If mirrored layout in use, flip left and right anchors and their types,
+ // and invert metrics by setting mirrorMultiplier to -1.
+ if ( AknLayoutUtils::LayoutMirrored() )
+ {
+ // Set anchors for icon image visual
+ iContentLayout->SetAnchor(EAlfAnchorTopLeft,
+ 0,
+ EAlfAnchorOriginRight,
+ EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute,
+ EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint(-1 * iIconWidth, 0));
+ iContentLayout->SetAnchor(EAlfAnchorBottomRight,
+ 0,
+ EAlfAnchorOriginRight,
+ EAlfAnchorOriginBottom,
+ EAlfAnchorMetricRelativeToSize,
+ EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint(0, 0));
+
+ // Set anchors for first line text visual
+ iContentLayout->SetAnchor(EAlfAnchorTopLeft,
+ 1,
+ EAlfAnchorOriginLeft,
+ EAlfAnchorOriginTop,
+ EAlfAnchorMetricRelativeToSize,
+ EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint(0, firstLineTopPos));
+ iContentLayout->SetAnchor(EAlfAnchorBottomRight,
+ 1,
+ EAlfAnchorOriginRight,
+ EAlfAnchorOriginBottom,
+ EAlfAnchorMetricAbsolute,
+ EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint(-1 * (iIconWidth+iTextPadding), firstLineBottomPos));
+
+ // Set anchors for second line text visual
+ iContentLayout->SetAnchor(EAlfAnchorTopLeft,
+ 2,
+ EAlfAnchorOriginLeft,
+ EAlfAnchorOriginTop,
+ EAlfAnchorMetricRelativeToSize,
+ EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint(0, secondLineTopPos));
+ iContentLayout->SetAnchor(EAlfAnchorBottomRight,
+ 2,
+ EAlfAnchorOriginRight,
+ EAlfAnchorOriginBottom,
+ EAlfAnchorMetricAbsolute,
+ EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint(-1 * (iIconWidth+iTextPadding), secondLineBottomPos));
+ }
+ else
+ {
+ // Set anchors for icon image visual
+ iContentLayout->SetAnchor(EAlfAnchorTopLeft,
+ 0,
+ EAlfAnchorOriginLeft,
+ EAlfAnchorOriginTop,
+ EAlfAnchorMetricRelativeToSize,
+ EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint(0, 0));
+ iContentLayout->SetAnchor(EAlfAnchorBottomRight,
+ 0,
+ EAlfAnchorOriginLeft,
+ EAlfAnchorOriginBottom,
+ EAlfAnchorMetricAbsolute,
+ EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint(iIconWidth, 0));
+
+ // Set anchors for first line text visual
+ iContentLayout->SetAnchor(EAlfAnchorTopLeft,
+ 1,
+ EAlfAnchorOriginLeft,
+ EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute,
+ EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint((iIconWidth+iTextPadding), firstLineTopPos));
+ iContentLayout->SetAnchor(EAlfAnchorBottomRight,
+ 1,
+ EAlfAnchorOriginRight,
+ EAlfAnchorOriginBottom,
+ EAlfAnchorMetricRelativeToSize,
+ EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint(0, firstLineBottomPos));
+
+ // Set anchors for second line text visual
+ iContentLayout->SetAnchor(EAlfAnchorTopLeft,
+ 2,
+ EAlfAnchorOriginLeft,
+ EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute,
+ EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint((iIconWidth+iTextPadding), secondLineTopPos));
+ iContentLayout->SetAnchor(EAlfAnchorBottomRight,
+ 2,
+ EAlfAnchorOriginRight,
+ EAlfAnchorOriginBottom,
+ EAlfAnchorMetricRelativeToSize,
+ EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint(0, secondLineBottomPos));
+ }
+ }
+
+
+void CFSEmailUiStatusIndicator::CalculateSizeAttributes()
+ {
+ FUNC_LOG;
+ iBorderPadding = iAppUi->LayoutHandler()->ControlBarListBorderRoundingSize() / 2;
+ iContentHeight = iAppUi->LayoutHandler()->OneLineListItemHeight();
+ iIconWidth = iContentHeight;
+
+ if( iHasSecondTextLine )
+ {
+ iIconWidth += iIconWidth/2;
+ iContentHeight += iContentHeight;
+ }
+
+ if( iHasIcon )
+ {
+ iTextPadding = iBorderPadding;
+ }
+ else
+ {
+ iIconWidth = 0;
+ iTextPadding = 0;
+ }
+
+ // Calculate size and location for the parent rect
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, iParentRect );
+ TInt popupWidth = iParentRect.Width();
+ if ( iFirstTextVisual && iSecondTextVisual )
+ {
+ if ( iUseCompactLayout )
+ {
+ iFirstTextVisual->SetStyle( EAlfTextStyleSmall );
+ iSecondTextVisual->SetStyle( EAlfTextStyleSmall );
+ /*
+ iFirstTextVisual->ReportChanged();
+ iSecondTextVisual->ReportChanged();
+
+ TInt contentWidth = Max( iFirstTextVisual->TextExtents().iWidth,
+ iSecondTextVisual->TextExtents().iWidth );
+ contentWidth += iIconWidth;
+ contentWidth += 2*iBorderPadding;
+ popupWidth = Min( iParentRect.Width(), contentWidth );
+ */
+ popupWidth = popupWidth * 3 / 4;
+ }
+ else
+ {
+ iFirstTextVisual->SetStyle( EAlfTextStyleNormal );
+ iSecondTextVisual->SetStyle( EAlfTextStyleNormal );
+ }
+ }
+ TInt leftMargin = ( iParentRect.Width() - popupWidth ) / 2;
+
+ iParentRect.SetRect( leftMargin, iParentRect.Height() - iContentHeight - 2*iBorderPadding,
+ leftMargin + popupWidth, iParentRect.Height() );
+ //iParentRect.Shrink(100, 100);
+ //iParentRect.SetHeight(10);
+ //iParentRect.Move(0, 150);
+ }
+
+void CFSEmailUiStatusIndicator::SetTextByResourceIdL( TInt aResourceId, CAlfTextVisual* aTextVisual )
+ {
+ FUNC_LOG;
+ if ( iFirstStartCompleted )
+ {
+ HBufC* headingText = StringLoader::LoadLC( aResourceId );
+ aTextVisual->SetTextL( *headingText );
+ CleanupStack::PopAndDestroy(headingText);
+ }
+ }
+
+void CFSEmailUiStatusIndicator::ShowIndicatorL(
+ TDesC* aFirstLineText,
+ TDesC* aSecondLineText,
+ CAlfTexture* aIconTexture,
+ TInt aDuration )
+ {
+ FUNC_LOG;
+ // Do first construction if not completed
+ if ( !iFirstStartCompleted )
+ {
+ DoFirstStartL();
+ }
+
+ // Set first line of text
+ if( aFirstLineText )
+ {
+ iFirstTextVisual->SetTextL( *aFirstLineText );
+ }
+ else
+ {
+ iFirstTextVisual->SetTextL( KNullDesC );
+ }
+
+ // Set second line of text
+ if( aSecondLineText )
+ {
+ iSecondTextVisual->SetTextL( *aSecondLineText );
+ iHasSecondTextLine = ETrue;
+ }
+ else
+ {
+ iSecondTextVisual->SetTextL( KNullDesC );
+ iHasSecondTextLine = EFalse;
+ }
+
+ // Set icon texture
+ if( aIconTexture )
+ {
+ iHasIcon = ETrue;
+ iImageVisual->SetImage( TAlfImage( *aIconTexture ) );
+ }
+ else
+ {
+ iHasIcon = EFalse;
+ iImageVisual->SetImage( TAlfImage() );
+ }
+
+ DoShowIndicator( aDuration );
+ }
+
+void CFSEmailUiStatusIndicator::ShowIndicatorL(
+ TStatusIndicationTypes aIndicationType,
+ const TDesC* aFirstLineText,
+ TInt aDuration )
+ {
+ FUNC_LOG;
+ // Do first construction if not completed
+ if ( !iFirstStartCompleted )
+ {
+ DoFirstStartL();
+ }
+
+ iHasIcon = ETrue;
+ iImageVisual->SetImage( TAlfImage( *iIconArray[aIndicationType] ) );
+
+ iHasSecondTextLine = EFalse;
+ iUseCompactLayout = EFalse;
+ iSecondTextVisual->SetTextL( KNullDesC );
+
+ CAlfTextVisual* textVisual = iFirstTextVisual;
+ if( aFirstLineText )
+ {
+ iFirstTextVisual->SetTextL( *aFirstLineText );
+ textVisual = iSecondTextVisual;
+ iHasSecondTextLine = ETrue;
+ }
+
+ // <cmail> S60 Skin support
+ TRgb textColor = KRgbBlack;
+ textColor = iAppUi->LayoutHandler()->DropdownMenuTextColor();
+
+ iFirstTextVisual->SetColor (textColor);
+ iSecondTextVisual->SetColor (textColor);
+ //</cmail>
+
+ switch( aIndicationType )
+ {
+ case EIndicationSynchronising:
+ {
+ SetTextByResourceIdL( R_FREESTYLE_EMAIL_UI_STATUS_UPDATING, textVisual );
+ }
+ break;
+
+ case EIndicationConnected:
+ {
+ SetTextByResourceIdL( R_FREESTYLE_EMAIL_UI_STATUS_CONNECTED, textVisual );
+ }
+ break;
+
+ case EIndicationConnecting:
+ {
+ SetTextByResourceIdL( R_FREESTYLE_EMAIL_UI_STATUS_CONNECTING, textVisual );
+ }
+ break;
+
+ case EIndicationDisconnectedGeneral:
+ {
+ SetTextByResourceIdL( R_FREESTYLE_EMAIL_UI_STATUS_DISCONNECTED, textVisual );
+ }
+ break;
+
+ case EIndicationDisconnectedError:
+ {
+ SetTextByResourceIdL( R_FREESTYLE_EMAIL_UI_STATUS_DISCONNECTED, textVisual );
+ }
+ break;
+
+ case EIndicationDisconnectedLowBattery:
+ {
+ SetTextByResourceIdL( R_FREESTYLE_EMAIL_UI_STATUS_DISCONNECTED, textVisual );
+ }
+ break;
+
+ case EIndicationMailSent:
+ {
+ SetTextByResourceIdL( R_FREESTYLE_EMAIL_UI_STATUS_EMAIL_SENT, textVisual );
+ }
+ break;
+ case EIndicationCancelSynchronising:
+ {
+ iImageVisual->SetImage( TAlfImage() );
+ iHasIcon = EFalse;
+ SetTextByResourceIdL( R_FREESTYLE_EMAIL_UI_STATUS_CANCEL_SYNC, textVisual );
+ }
+ break;
+ case EIndicationDownloadStarted:
+ {
+ SetTextByResourceIdL( R_FSE_VIEWER_NOTE_ATTACHMENT_DOWNLOADING, textVisual );
+ }
+ break;
+ case EIndicationDownloadProgress:
+ {
+ iHasSecondTextLine = EFalse;
+ iUseCompactLayout = ETrue;
+ }
+ break;
+ default:
+ return;
+ }
+
+ DoShowIndicator( aDuration );
+ }
+
+void CFSEmailUiStatusIndicator::DoShowIndicator( TInt aDuration )
+ {
+ FUNC_LOG;
+ if ( iFirstStartCompleted ) // Safety
+ {
+ CalculateSizeAttributes();
+ PositionVisuals();
+
+ // Default values used when just updating the view after layout change
+ TInt transitionTime( 0 );
+ TRect startRect = iParentRect;
+
+ // Set indicator transparent and out of the screen as a preparation
+ // for transformation effect (fade and slide in). Except if we are
+ // just updating the visuals as a result of layout change.
+ if ( aDuration != EIndicationLayoutUpdated )
+ {
+ SetOpacity( 0, 0 );
+
+ startRect.Move( 0, iContentHeight - 2*iBorderPadding );
+
+ transitionTime = iAppUi->LayoutHandler()->StatusIndicatorFadeEffectTime();
+ }
+
+ // Show the indicator
+ CAlfControlGroup* group = ControlGroup();
+ iEnv.Send(TAlfGroupCommand(*group, EAlfOpShow, &iAppUi->Display()), 0);
+ //Display().Roster().ShowL(*group);
+ SetOpacity( KPopupListBackgroundOpacity, transitionTime );
+
+ // First set the transformation starting rect immediately,
+ // and then the actual rect with transtition time
+ iParentLayout->SetRect( startRect );
+ iParentLayout->SetRect( iParentRect, transitionTime );
+
+ if( aDuration == EIndicationDefaultDuration )
+ {
+ aDuration = KIndicatorDefaultDuration;
+ }
+
+ // Start hiding timer only if some reasonable duration is given.
+ // In other cases the indicator is going to be hided manually, or
+ // the original duration is preserved.
+ if( aDuration >=0 )
+ {
+ iTimer->Start( aDuration );
+ }
+ iVisible = ETrue;
+ }
+ }
+
+void CFSEmailUiStatusIndicator::SetContentsL( const TDesC* aFirstLineText,
+ const TDesC* aSecondLineText /*= NULL*/,
+ const CAlfTexture* aIconTexture /*= NULL*/ )
+ {
+ FUNC_LOG;
+ // Do first construction if not completed
+ if ( !iFirstStartCompleted )
+ {
+ DoFirstStartL();
+ }
+ if ( aFirstLineText )
+ {
+ iFirstTextVisual->SetTextL( *aFirstLineText );
+ }
+
+ if ( aSecondLineText )
+ {
+ iSecondTextVisual->SetTextL( *aSecondLineText );
+ iHasSecondTextLine = ETrue;
+ }
+
+ if ( aIconTexture )
+ {
+ iHasIcon = ETrue;
+ iImageVisual->SetImage( TAlfImage( *aIconTexture ) );
+ }
+ }
+
+void CFSEmailUiStatusIndicator::HideIndicator( TInt aDelayBeforeHidingInMs /*= 0*/ )
+ {
+ FUNC_LOG;
+ if ( iFirstStartCompleted ) // Safety
+ {
+ // Cancel any running hiding timer to prevent indicator being slided off twice.
+ iTimer->Stop();
+
+ if ( aDelayBeforeHidingInMs > 0 )
+ {
+ iTimer->Start( aDelayBeforeHidingInMs );
+ }
+ else // hide now
+ {
+ CAlfControlGroup* group = ControlGroup();
+ CAlfDisplay* temp = Display();
+ Env().Send(TAlfGroupCommand(*group, EAlfOpHide, Display()), iAppUi->LayoutHandler()->StatusIndicatorFadeEffectTime());
+ //Display().Roster().ShowL(*group);
+ SetOpacity(0, iAppUi->LayoutHandler()->StatusIndicatorFadeEffectTime());
+
+ TRect tempRect = iParentRect;
+ tempRect.Move( 0, iContentHeight - 2*iBorderPadding );
+ iParentLayout->SetRect( tempRect, iAppUi->LayoutHandler()->StatusIndicatorFadeEffectTime() );
+
+ iVisible = EFalse;
+ }
+ }
+ }
+
+TBool CFSEmailUiStatusIndicator::IsVisible()
+ {
+ FUNC_LOG;
+ return iVisible;
+ }
+
+// ---------------------------------------------------------------------------
+// HandleForegroundEventL
+// The function is called by Appui or Mail viewer visualiser, to resize the
+// window correctly after the screensaver, if the status indicator is visible
+// ---------------------------------------------------------------------------
+void CFSEmailUiStatusIndicator::HandleForegroundEventL()
+ {
+ FUNC_LOG;
+ if ( iFirstStartCompleted && iVisible )
+ {
+ DoShowIndicator( EIndicationLayoutUpdated );
+ }
+ }
+
+void CFSEmailUiStatusIndicator::NotifyLayoutChange()
+ {
+ FUNC_LOG;
+ if ( iFirstStartCompleted && iVisible )
+ {
+ DoShowIndicator( EIndicationLayoutUpdated );
+ }
+ }
+
+void CFSEmailUiStatusIndicator::HandleCommandL(TInt /*aCommand*/)
+ {
+ FUNC_LOG;
+ // Status indicator does not handle any commands.
+ }
+
+TBool CFSEmailUiStatusIndicator::OfferEventL(const TAlfEvent& /*aEvent*/)
+ {
+ FUNC_LOG;
+ return EFalse; // Not consumed. Status indicator does not handle any events.
+ }
+
+void CFSEmailUiStatusIndicator::SetOpacity( TReal aOpacity, TInt aTransitionTime )
+ {
+ FUNC_LOG;
+ if ( iFirstStartCompleted ) // Safety
+ {
+ TAlfTimedValue opacity = iParentLayout->Opacity();
+ opacity.SetTarget( aOpacity, aTransitionTime );
+ iParentLayout->SetOpacity( opacity );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Load the needed icons
+// ---------------------------------------------------------------------------
+//
+void CFSEmailUiStatusIndicator::LoadIconsL()
+ {
+ FUNC_LOG;
+ iIconArray.Reset();
+ // NOTE: Must be appended same order as are in TStatusIndicationTypes!
+ iIconArray.AppendL( &iAppUi->FsTextureManager()->TextureByIndex( EStatusTextureSynchronising ) ); // EIndicationSynchronising
+ iIconArray.AppendL( &iAppUi->FsTextureManager()->TextureByIndex( EStatusTextureConnected ) ); // EIndicationConnected
+ // Change to EStatusTextureConnecting when icon available!!!
+ iIconArray.AppendL( &iAppUi->FsTextureManager()->TextureByIndex( EStatusTextureConnecting ) ); // EIndicationConnecting
+ iIconArray.AppendL( &iAppUi->FsTextureManager()->TextureByIndex( EStatusTextureDisconnectedGeneral ) ); // EIndicationDisconnectedGeneral
+ iIconArray.AppendL( &iAppUi->FsTextureManager()->TextureByIndex( EStatusTextureDisconnectedError ) ); // EIndicationDisconnectedError
+ iIconArray.AppendL( &iAppUi->FsTextureManager()->TextureByIndex( EStatusTextureDisconnectedLowBattery ) ); // EIndicationDisconnectedLowBattery
+ iIconArray.AppendL( &iAppUi->FsTextureManager()->TextureByIndex( EStatusTextureMailSent ) ); // EIndicationMailSent
+ iIconArray.AppendL( &iAppUi->FsTextureManager()->TextureByIndex( EStatusTextureDisconnectedGeneral ) ); // EIndicationCancelSynchronising // there's no icon for this but add entry anyway to maintain the array order
+ iIconArray.AppendL( &iAppUi->FsTextureManager()->TextureByIndex( EAttachmentsDownload ) ); //EIndicationDownloadStarted
+ iIconArray.AppendL( &iAppUi->FsTextureManager()->TextureByIndex( EAttachmentsDownload ) ); // EIndicationDownloadProgress
+
+ for( TInt i = 0; i < iIconArray.Count(); ++i )
+ {
+ if ( i != EIndicationDownloadProgress &&
+ i != EIndicationDownloadStarted ) // attachment icon should use its original (smaller) size
+ {
+ iIconArray[i]->Size().SetSize( KIconArraySize, KIconArraySize );
+ }
+ }
+ }
+
+
+void CFSEmailUiStatusIndicator::TimerEventL( CFSEmailUiGenericTimer* /*aTriggeredTimer*/ )
+ {
+ FUNC_LOG;
+ HideIndicator();
+ }
+