emailuis/emailui/src/FreestyleEmailUiAknStatusIndicator.cpp
branchRCL_3
changeset 22 d620048b4810
parent 10 f5907b1a1053
child 23 dcf0eedfc1a3
equal deleted inserted replaced
20:efd4f1afd43e 22:d620048b4810
     1 /*
     1 /*
     2 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
     2 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    11 *
    11 *
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description:  Implementation for status indicator
    14 * Description:  Implementation for status indicator
    15 *
    15 *
    16 */ 
    16 */
    17 
    17 
    18 #include "FreestyleEmailUiAknStatusIndicator.h"
    18 #include "FreestyleEmailUiAknStatusIndicator.h"
    19 
    19 
    20 #include <biditext.h>
    20 #include <biditext.h>
    21 #include <AknIconUtils.h>
    21 #include <AknIconUtils.h>
    22 #include <AknBidiTextUtils.h>
    22 #include <AknBidiTextUtils.h>
       
    23 #include <AknsUtils.h>
       
    24 #include <layoutmetadata.cdl.h>
    23 
    25 
    24 const TInt KImageMargin = 8;
    26 const TInt KImageMargin = 8;
    25 const TInt KTextMargin = 4;
    27 const TInt KTextMargin = 4;
    26 const TInt KRoundBoundaryEllipse = 5;
    28 const TInt KRoundBoundaryEllipse = 7;
    27 const TInt KTuncationCharsWidth = 20;    
    29 const TInt KTuncationCharsWidth = 20;
    28 
    30 
       
    31 const TInt KAnimationFps = 15;
       
    32 const TInt KAnimationDelayMs = 1000 / KAnimationFps;
       
    33 const TInt KSecondsPerFullRotation = 2;
       
    34 const TInt KPenSize = 2;
    29 
    35 
    30 CFreestyleEmailUiAknStatusIndicator* CFreestyleEmailUiAknStatusIndicator::NewL( const TRect& aRect, const CCoeControl* aParent )
    36 CFreestyleEmailUiAknStatusIndicator* CFreestyleEmailUiAknStatusIndicator::NewL( const TRect& aRect, const CCoeControl* aParent )
    31     {
    37     {
    32     CFreestyleEmailUiAknStatusIndicator* self = CFreestyleEmailUiAknStatusIndicator::NewLC( aRect, aParent );
    38     CFreestyleEmailUiAknStatusIndicator* self = CFreestyleEmailUiAknStatusIndicator::NewLC( aRect, aParent );
    33     CleanupStack::Pop( self );
    39     CleanupStack::Pop( self );
    44 
    50 
    45 CFreestyleEmailUiAknStatusIndicator::~CFreestyleEmailUiAknStatusIndicator()
    51 CFreestyleEmailUiAknStatusIndicator::~CFreestyleEmailUiAknStatusIndicator()
    46     {
    52     {
    47     ClearImage();
    53     ClearImage();
    48     ClearText();
    54     ClearText();
    49     
    55 
    50     delete iTimer;
    56     delete iTimer;
    51     }
    57     }
    52 
    58 
    53 void CFreestyleEmailUiAknStatusIndicator::ShowIndicatorL( CFbsBitmap* aBitmap, 
    59 void CFreestyleEmailUiAknStatusIndicator::ShowIndicatorL( CFbsBitmap* aBitmap,
    54                                                           CFbsBitmap* aMaskBitmap,
    60                                                           CFbsBitmap* aMaskBitmap,
    55                                                           TDesC* aText,
    61                                                           TDesC* aText,
    56                                                           TInt aDuration )
    62                                                           TInt aDuration,
       
    63                                                           const TBool aAnimate )
    57     {
    64     {
    58     iTimer->Stop();
    65     iTimer->Stop();
    59 
    66 
       
    67     iAnimate = aAnimate;
    60     SetImage( aBitmap, aMaskBitmap );
    68     SetImage( aBitmap, aMaskBitmap );
    61     SetTextL( aText );
    69     SetTextL( aText );
    62 
    70 
    63     MakeVisible( ETrue );
    71     MakeVisible( ETrue );
    64     DrawNow();
    72     DrawNow();
    65     
    73 
    66     if ( aDuration >= 0 )
    74     if ( aDuration >= 0 )
    67         {
    75         {
    68         HideIndicator( aDuration );
    76         HideIndicator( aDuration );
    69         }
    77         }
       
    78     else if ( iAnimate )
       
    79         {
       
    80         iHideTimeout = KMaxTInt;
       
    81         StartTimer( KAnimationDelayMs );
       
    82         }
    70     }
    83     }
    71 
    84 
    72 void CFreestyleEmailUiAknStatusIndicator::SetTextL( TDesC* aText )
    85 void CFreestyleEmailUiAknStatusIndicator::SetTextL( TDesC* aText )
    73     {
    86     {
    74     SetTextFont();
    87     SetTextFont();
    75 
    88 
    76     ClearText();    
    89     ClearText();
    77     iText = aText; 
    90     iText = aText;
    78     if ( iText )
    91     if ( iText )
    79         {
    92         {
    80         iVisualText = HBufC::NewL( iText->Length() + KAknBidiExtraSpacePerLine );
    93         iVisualText = HBufC::NewL( iText->Length() + KAknBidiExtraSpacePerLine );
    81         CalculateVisualText();
    94         CalculateVisualText();
    82         }    
    95         }
    83     
    96 
    84     if ( IsVisible() )
    97     if ( IsVisible() )
    85         {
    98         {
    86         DrawNow();
    99         DrawNow();
    87         }
   100         }
    88     }
   101     }
    89 
   102 
    90 void CFreestyleEmailUiAknStatusIndicator::HideIndicator( TInt aDelayBeforeHidingInMs )
   103 void CFreestyleEmailUiAknStatusIndicator::HideIndicator( TInt aDelayBeforeHidingInMs )
    91     {
   104     {
       
   105     if ( !aDelayBeforeHidingInMs )
       
   106         {
       
   107         iTimer->Stop();
       
   108         MakeVisible( EFalse );
       
   109         iAngle = 0;
       
   110         }
       
   111     else
       
   112         {
       
   113         if (iAnimate)
       
   114             {
       
   115             iHideTimeout = aDelayBeforeHidingInMs / KAnimationDelayMs;
       
   116             StartTimer( KAnimationDelayMs );
       
   117             }
       
   118         else
       
   119             {
       
   120             iHideTimeout = 0;
       
   121             iTimer->Start( aDelayBeforeHidingInMs );
       
   122             }
       
   123         }
       
   124     }
       
   125 
       
   126 void CFreestyleEmailUiAknStatusIndicator::StartTimer( const TInt aTimeOut )
       
   127     {
    92     iTimer->Stop();
   128     iTimer->Stop();
    93     
   129     iTimer->Start( aTimeOut );
    94     if ( aDelayBeforeHidingInMs == 0 )
   130     }
    95         {
   131 
    96         MakeVisible( EFalse );
       
    97         }
       
    98     else
       
    99         {
       
   100         iTimer->Start( aDelayBeforeHidingInMs );
       
   101         }
       
   102     }
       
   103 
   132 
   104 CCoeControl* CFreestyleEmailUiAknStatusIndicator::CFreestyleEmailUiAknStatusIndicator::ComponentControl( TInt /*aIndex*/ ) const
   133 CCoeControl* CFreestyleEmailUiAknStatusIndicator::CFreestyleEmailUiAknStatusIndicator::ComponentControl( TInt /*aIndex*/ ) const
   105     {
   134     {
   106     return NULL;
   135     return NULL;
   107     }
   136     }
   111     return 0;
   140     return 0;
   112     }
   141     }
   113 
   142 
   114 void CFreestyleEmailUiAknStatusIndicator::Draw( const TRect& aRect ) const
   143 void CFreestyleEmailUiAknStatusIndicator::Draw( const TRect& aRect ) const
   115     {
   144     {
   116     CWindowGc& gc = SystemGc();
       
   117     gc.Clear( aRect );
       
   118     
       
   119     DrawBoundary( aRect );
   145     DrawBoundary( aRect );
   120     DrawImage( iImageRect );
   146     DrawImage( iImageRect );
   121     DrawText( iTextRect );
   147     DrawText( iTextRect );
   122     }
   148     }
   123 
   149 
   124 void CFreestyleEmailUiAknStatusIndicator::SizeChanged()
   150 void CFreestyleEmailUiAknStatusIndicator::SizeChanged()
   125     {  
   151     {
   126     CalculateLayout( Rect() );
   152     CalculateLayout( Rect() );
   127     ScaleImage();
   153     ScaleImage();
   128     CalculateVisualText();
   154     CalculateVisualText();
   129     }
   155     }
   130     
   156 
   131 CFreestyleEmailUiAknStatusIndicator::CFreestyleEmailUiAknStatusIndicator()
   157 CFreestyleEmailUiAknStatusIndicator::CFreestyleEmailUiAknStatusIndicator()
   132     : iBitmap( NULL ),
   158     : iBitmap( NULL ),
   133     iMaskBitmap( NULL ),
   159     iMaskBitmap( NULL ),
   134     iText( NULL ),
   160     iText( NULL ),
   135     iVisualText( NULL ),
   161     iVisualText( NULL ),
   136     iTextFont( NULL )
   162     iTextFont( NULL )
   137     {    
   163     {
   138     }
   164     }
   139 
   165 
   140 void CFreestyleEmailUiAknStatusIndicator::ConstructL( const TRect& aRect, const CCoeControl* aParent )
   166 void CFreestyleEmailUiAknStatusIndicator::ConstructL( const TRect& aRect, const CCoeControl* aParent )
   141     {
   167     {
   142     iTimer = CFSEmailUiGenericTimer::NewL( this ); 
   168     iTimer = CFSEmailUiGenericTimer::NewL( this );
   143     
   169    
   144     if ( !aParent )
   170     if ( aParent )
       
   171         {
       
   172         SetContainerWindowL( *aParent );
       
   173         }
       
   174     else
   145         {
   175         {
   146         CreateWindowL();
   176         CreateWindowL();
   147         }
   177         }
   148     else
       
   149         {
       
   150         SetContainerWindowL( *aParent );
       
   151         }
       
   152     
       
   153     SetRect( aRect );
   178     SetRect( aRect );
   154     ActivateL();
   179     ActivateL();
   155     
       
   156     MakeVisible( EFalse );
   180     MakeVisible( EFalse );
   157     }
   181     }
   158 
   182 
   159 void CFreestyleEmailUiAknStatusIndicator::TimerEventL( CFSEmailUiGenericTimer* /*aTriggeredTimer*/ )
   183 void CFreestyleEmailUiAknStatusIndicator::TimerEventL( CFSEmailUiGenericTimer* /*aTriggeredTimer*/ )
   160     {
   184     {
   161     HideIndicator();
   185     if ( iAnimate && ( iHideTimeout == KMaxTInt || iHideTimeout-- > 0 ) )
   162     }
   186         {
   163 
   187         StartTimer( KAnimationDelayMs );
   164 void CFreestyleEmailUiAknStatusIndicator::CalculateLayout( const TRect& aRect ) const
   188         iAngle -= 360 / (KAnimationFps * KSecondsPerFullRotation);
       
   189         ScaleImage();
       
   190         DrawDeferred();
       
   191         }
       
   192     else
       
   193         {
       
   194         HideIndicator();
       
   195         }
       
   196     }
       
   197 
       
   198 TRect CFreestyleEmailUiAknStatusIndicator::ImageRect( const TRect& aRect ) const
   165     {
   199     {
   166     TSize imageSize = aRect.Size();
   200     TSize imageSize = aRect.Size();
   167     imageSize.iHeight = imageSize.iHeight - 2 * KImageMargin;
   201     imageSize.iHeight = imageSize.iHeight - 2 * KImageMargin;
   168     imageSize.iWidth = imageSize.iWidth - 2 * KImageMargin;
   202     imageSize.iWidth = imageSize.iWidth - 2 * KImageMargin;
   169     if ( imageSize.iWidth > imageSize.iHeight )
   203     if ( imageSize.iWidth > imageSize.iHeight )
   172         }
   206         }
   173     else
   207     else
   174         {
   208         {
   175         imageSize.iHeight = imageSize.iWidth;
   209         imageSize.iHeight = imageSize.iWidth;
   176         }
   210         }
   177     
   211 
       
   212     TPoint imageLeftTop;
       
   213     if ( !Layout_Meta_Data::IsMirrored() )
       
   214         {
       
   215         imageLeftTop = TPoint( aRect.iTl.iX + KImageMargin, aRect.iTl.iY + KImageMargin );
       
   216         }
       
   217     else
       
   218         {
       
   219         imageLeftTop = TPoint( aRect.iBr.iX - KImageMargin - imageSize.iWidth, aRect.iTl.iY + KImageMargin );
       
   220         }
       
   221 
       
   222     return TRect( imageLeftTop, imageSize );
       
   223     }
       
   224 
       
   225 TRect CFreestyleEmailUiAknStatusIndicator::TextRect( const TRect& aRect ) const
       
   226     {
       
   227     TSize imageSize = aRect.Size();
       
   228     imageSize.iHeight = imageSize.iHeight - 2 * KImageMargin;
       
   229     imageSize.iWidth = imageSize.iWidth - 2 * KImageMargin;
       
   230     if ( imageSize.iWidth > imageSize.iHeight )
       
   231         {
       
   232         imageSize.iWidth = imageSize.iHeight;
       
   233         }
       
   234     else
       
   235         {
       
   236         imageSize.iHeight = imageSize.iWidth;
       
   237         }
       
   238 
   178     TSize textSize = aRect.Size();
   239     TSize textSize = aRect.Size();
   179     textSize.iHeight = textSize.iHeight - 2 * KTextMargin;
   240     textSize.iHeight = textSize.iHeight - 2 * KTextMargin;
   180     textSize.iWidth = textSize.iWidth - 2 * KTextMargin - 2 * KImageMargin - imageSize.iWidth;
   241     textSize.iWidth = textSize.iWidth - 2 * KTextMargin - 2 * KImageMargin - imageSize.iWidth;
   181     
   242 
   182     TLanguage language = User::Language();
   243     TPoint textLeftTop;
   183     TBidiText::TDirectionality  direction = TBidiText::ScriptDirectionality( language );    
   244     if ( !Layout_Meta_Data::IsMirrored() )
   184     if ( direction == TBidiText::ELeftToRight )
   245         {
   185         {
   246         textLeftTop = TPoint( aRect.iTl.iX + KImageMargin + imageSize.iWidth + KTextMargin, aRect.iTl.iY + KTextMargin );
   186         TPoint imageLeftTop ( aRect.iTl.iX + KImageMargin, aRect.iTl.iY + KImageMargin );
   247         }
   187         iImageRect.SetRect( imageLeftTop, imageSize );    
   248     else
   188         
   249         {
   189         TPoint textLeftTop ( aRect.iTl.iX + 2*KImageMargin + imageSize.iWidth + KTextMargin, aRect.iTl.iY + KTextMargin );
   250         textLeftTop = TPoint( aRect.iTl.iX + KTextMargin, aRect.iTl.iY + KTextMargin );
   190         iTextRect.SetRect( textLeftTop, textSize );    
   251         }
   191         }
   252 
   192     else
   253     return TRect( textLeftTop, textSize );
   193         {
   254     }
   194         TPoint imageLeftTop ( aRect.iBr.iX - KImageMargin - imageSize.iWidth, aRect.iTl.iY + KImageMargin );
   255 
   195         iImageRect.SetRect( imageLeftTop, imageSize );    
   256 void CFreestyleEmailUiAknStatusIndicator::CalculateLayout( const TRect& aRect ) const
   196         
   257     {
   197         TPoint textLeftTop ( aRect.iTl.iX + KTextMargin, aRect.iTl.iY + KTextMargin );
   258     iImageRect = ImageRect( aRect );
   198         iTextRect.SetRect( textLeftTop, textSize );    
   259     iTextRect = TextRect( aRect );
   199         }
       
   200     }
   260     }
   201 
   261 
   202 void CFreestyleEmailUiAknStatusIndicator::SetTextFont() const
   262 void CFreestyleEmailUiAknStatusIndicator::SetTextFont() const
   203     {
   263     {
   204     if ( iTextFont )
   264     if ( iTextFont )
   205         return;
   265         return;
   206     
   266 
   207     const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontPrimarySmallFont );
   267     const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontPrimarySmallFont );
   208     iTextFont = CONST_CAST( CFont*, font );
   268     iTextFont = CONST_CAST( CFont*, font );
   209     }
   269     }
   210 
   270 
   211 void CFreestyleEmailUiAknStatusIndicator::CalculateVisualText() const
   271 void CFreestyleEmailUiAknStatusIndicator::CalculateVisualText() const
   218         TInt MaxClippedWidthInPixels = iTextRect.Size().iWidth;
   278         TInt MaxClippedWidthInPixels = iTextRect.Size().iWidth;
   219         AknBidiTextUtils::ConvertToVisualAndClip( *iText,
   279         AknBidiTextUtils::ConvertToVisualAndClip( *iText,
   220                                                   visualText,
   280                                                   visualText,
   221                                                   *iTextFont,
   281                                                   *iTextFont,
   222                                                   MaxWidthInPixels,
   282                                                   MaxWidthInPixels,
   223                                                   MaxClippedWidthInPixels );    
   283                                                   MaxClippedWidthInPixels );
   224         }
   284         iVisualTextWidth = AknBidiTextUtils::MeasureTextBoundsWidth(
       
   285             *iTextFont, *iVisualText, CFont::TMeasureTextInput::EFVisualOrder );
       
   286         }
       
   287     }
       
   288 
       
   289 TRgb CFreestyleEmailUiAknStatusIndicator::BackgroundColor() const
       
   290     {
       
   291     TRgb color;
       
   292     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   293     if ( AknsUtils::GetCachedColor( skin, color, KAknsIIDQsnOtherColors, EAknsCIQsnOtherColorsCG22 ) )
       
   294         {
       
   295         // fallback to default value
       
   296         color = TRgb(197, 197, 197);
       
   297         }
       
   298     return color;
       
   299     }
       
   300 
       
   301 TRgb CFreestyleEmailUiAknStatusIndicator::BorderColor() const
       
   302     {
       
   303     return KRgbBlack;
       
   304     }
       
   305 
       
   306 TRgb CFreestyleEmailUiAknStatusIndicator::FontColor() const
       
   307     {
       
   308     TRgb color;
       
   309     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   310     if ( AknsUtils::GetCachedColor( skin, color, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG55 /*EAknsCIQsnTextColorsCG81*/ ) )
       
   311         {
       
   312         // fallback to default value
       
   313         color = KRgbBlack;
       
   314         }
       
   315     return color;
   225     }
   316     }
   226 
   317 
   227 void CFreestyleEmailUiAknStatusIndicator::DrawBoundary( const TRect& aRect ) const
   318 void CFreestyleEmailUiAknStatusIndicator::DrawBoundary( const TRect& aRect ) const
   228     {
   319     {
   229     CWindowGc& gc = SystemGc();
   320     CWindowGc& gc = SystemGc();
   230     gc.SetPenColor( KRgbCyan );
   321     gc.SetClippingRect( aRect );
       
   322     gc.SetBrushColor( BackgroundColor() );
       
   323     gc.SetPenColor( BorderColor() );
       
   324     gc.SetPenSize( TSize(KPenSize, KPenSize) );
       
   325     gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
       
   326     gc.SetPenStyle( CGraphicsContext::ESolidPen );
   231     TSize ellipse( KRoundBoundaryEllipse, KRoundBoundaryEllipse );
   327     TSize ellipse( KRoundBoundaryEllipse, KRoundBoundaryEllipse );
   232     gc.DrawRoundRect( aRect, ellipse);
   328     TRect roundRect( aRect );
       
   329     roundRect.Shrink( 2, 2 );
       
   330     gc.DrawRoundRect( roundRect, ellipse);
   233     }
   331     }
   234 
   332 
   235 void CFreestyleEmailUiAknStatusIndicator::DrawImage( const TRect& aRect ) const
   333 void CFreestyleEmailUiAknStatusIndicator::DrawImage( const TRect& aRect ) const
   236     {
   334     {
   237     if ( !iBitmap )
   335     if ( !iBitmap )
   238         return;
   336         return;
   239     
   337 
   240     CWindowGc& gc = SystemGc();
   338     CWindowGc& gc = SystemGc();
   241     if ( iMaskBitmap )
   339     if ( iMaskBitmap )
   242         {
   340         {
   243         TRect bmpPieceRect(TPoint(0,0), aRect.Size() ); 
   341         TRect bmpPieceRect(TPoint(0,0), aRect.Size() );
   244         gc.BitBltMasked( aRect.iTl, iBitmap, bmpPieceRect, iMaskBitmap, EFalse );
   342         gc.BitBltMasked( aRect.iTl, iBitmap, bmpPieceRect, iMaskBitmap, EFalse );
   245         }
   343         }
   246     else
   344     else
   247         {
   345         {
   248         gc.DrawBitmap( aRect, iBitmap );
   346         gc.DrawBitmap( aRect, iBitmap );
   253     {
   351     {
   254     if ( !iVisualText )
   352     if ( !iVisualText )
   255         return;
   353         return;
   256     if ( iVisualText->Length() == 0 )
   354     if ( iVisualText->Length() == 0 )
   257         return;
   355         return;
   258     
   356 
   259     TLanguage language = User::Language();
   357     CGraphicsContext::TTextAlign alignment = Layout_Meta_Data::IsMirrored() ?
   260     TBidiText::TDirectionality  direction = TBidiText::ScriptDirectionality( language );
   358         CGraphicsContext::ERight : CGraphicsContext::ELeft;
   261     
   359 
   262     CGraphicsContext::TTextAlign alignment = CGraphicsContext::ELeft;
       
   263     if ( direction == TBidiText::ERightToLeft )
       
   264         {
       
   265         alignment = CGraphicsContext::ERight;
       
   266         }
       
   267     
       
   268     CWindowGc& gc = SystemGc();
   360     CWindowGc& gc = SystemGc();
   269     gc.UseFont( iTextFont );
   361     gc.UseFont( iTextFont );
   270 
   362     TInt baseline = aRect.Height() / 2 + iTextFont->FontMaxAscent() / 2;
   271     TInt baseline = aRect.Height() / 2 + iTextFont->FontMaxAscent() / 2; 
   363     gc.SetPenColor(FontColor());
   272     
   364 
   273     gc.SetPenColor(KRgbBlack);
   365     TRect drawRect( aRect );
   274 
   366     drawRect.Shrink( (drawRect.Width() - iVisualTextWidth) / 2, 0 );
   275     gc.DrawText( *iVisualText, aRect, baseline, alignment, 0);
   367     gc.DrawText( *iVisualText, drawRect, baseline, alignment, 0);
   276     }
   368     }
   277 
   369 
   278 void CFreestyleEmailUiAknStatusIndicator::SetImage( CFbsBitmap* aBitmap, CFbsBitmap* aMaskBitmap )
   370 void CFreestyleEmailUiAknStatusIndicator::SetImage( CFbsBitmap* aBitmap, CFbsBitmap* aMaskBitmap )
   279     {
   371     {
   280     ClearImage();
   372     ClearImage();
       
   373     iAngle = 0;
   281     iBitmap = aBitmap;
   374     iBitmap = aBitmap;
   282     iMaskBitmap = aMaskBitmap;
   375     iMaskBitmap = aMaskBitmap;
   283     ScaleImage();
   376     ScaleImage();
   284     }
   377     }
   285 
   378 
   286 void CFreestyleEmailUiAknStatusIndicator::ScaleImage() const
   379 void CFreestyleEmailUiAknStatusIndicator::ScaleImage() const
   287     {
   380     {
   288     if ( iBitmap )
   381     if ( iBitmap )
   289         {
   382         {
   290         AknIconUtils::DisableCompression( iBitmap );
   383         AknIconUtils::DisableCompression( iBitmap );
   291         AknIconUtils::SetSize( iBitmap, iImageRect.Size(), EAspectRatioPreserved );
   384         AknIconUtils::SetSizeAndRotation( iBitmap, iImageRect.Size(), EAspectRatioPreserved, iAngle );
   292         }
   385         }
   293     if ( iMaskBitmap )
       
   294         {
       
   295         AknIconUtils::DisableCompression( iMaskBitmap );
       
   296         AknIconUtils::SetSize( iMaskBitmap, iImageRect.Size(), EAspectRatioPreserved );
       
   297         }    
       
   298     }
   386     }
   299 
   387 
   300 void CFreestyleEmailUiAknStatusIndicator::ClearImage()
   388 void CFreestyleEmailUiAknStatusIndicator::ClearImage()
   301     {
   389     {
   302     delete iBitmap;
   390     delete iBitmap;
   307 
   395 
   308 void CFreestyleEmailUiAknStatusIndicator::ClearText()
   396 void CFreestyleEmailUiAknStatusIndicator::ClearText()
   309     {
   397     {
   310     delete iText;
   398     delete iText;
   311     iText = NULL;
   399     iText = NULL;
   312     
   400 
   313     delete iVisualText;
   401     delete iVisualText;
   314     iVisualText = NULL;
   402     iVisualText = NULL;
   315     }
   403     }
   316 
   404