mmsharing/mmshui/src/musuinavimediadecorator.cpp
branchRCL_3
changeset 33 bc78a40cd63c
equal deleted inserted replaced
32:73a1feb507fb 33:bc78a40cd63c
       
     1 /*
       
     2 * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #include "musuinavimediadecorator.h"
       
    21 #include "musuinavimediaanimator.h"
       
    22 #include "musuidefinitions.h"
       
    23 #include "muslogger.h" // debug logging
       
    24 #include <musuiicons.mbg>
       
    25 //#include <musui.mbg>
       
    26 //#include <musui_temp_icons.mbg>
       
    27 #include <musui.rsg>
       
    28 #include "musresourcefinderutil.h"
       
    29 
       
    30 #include <data_caging_path_literals.hrh>    // KDC_APP_BITMAP_DIR
       
    31 #include <AknsUtils.h>
       
    32 #include <aknnavi.h>           // CAknNavigationControlContainer
       
    33 #include <eikspane.h>          // CEikStatusPaneBase
       
    34 #include <StringLoader.h>
       
    35 #include <applayout.cdl.h>     // scalable UI
       
    36 #include <AknIconUtils.h>      // SetSize for the icons
       
    37 #include <AknsDrawUtils.h>
       
    38 #include <AknIconArray.h>
       
    39 #include <gulicon.h>
       
    40 #include <applayout.cdl.h>
       
    41 #include <AknUtils.h>
       
    42 
       
    43 using namespace AppLayout;
       
    44 
       
    45 
       
    46 const TInt KMusDecoratorStability = 0;
       
    47 const TInt KIconArraySize = 15;
       
    48 
       
    49 _LIT( KMyBitmapRomFile, "Z:\\resource\\apps\\musuiicons.mif" );
       
    50 _LIT( KMyBitmapRamFile, "C:\\resource\\apps\\musuiicons.mif" );
       
    51 
       
    52 
       
    53 #ifndef __MIN
       
    54 #define __MIN(A, B) ((A) < (B) ? (A): (B)) 
       
    55 #endif
       
    56 //macro 
       
    57 //_LIT( KMyMbmFileName, "z:Camcorder.mbm");
       
    58 
       
    59 
       
    60 // -----------------------------------------------------------------------------
       
    61 //
       
    62 // -----------------------------------------------------------------------------
       
    63 //
       
    64 CMusUiNaviMediaDecorator* CMusUiNaviMediaDecorator::NewL()
       
    65     {
       
    66     CMusUiNaviMediaDecorator* self = new( ELeave ) CMusUiNaviMediaDecorator();
       
    67     CleanupStack::PushL( self );
       
    68     self->ConstructL();
       
    69     CleanupStack::Pop( self );
       
    70     return self;
       
    71     }
       
    72 
       
    73 
       
    74 // -----------------------------------------------------------------------------
       
    75 //
       
    76 // -----------------------------------------------------------------------------
       
    77 //
       
    78 CMusUiNaviMediaDecorator::~CMusUiNaviMediaDecorator()
       
    79     {
       
    80     MUS_LOG( "mus: [MUSUI ]  -> CMusUiNaviMediaDecorator::~CMusUiNaviMediaDecorator" );
       
    81     delete iLeftLabel;
       
    82     delete iRightLabel;
       
    83     delete iIconArray;
       
    84     delete iAnimation;
       
    85 
       
    86     MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::~CMusUiNaviMediaDecorator" );
       
    87     }
       
    88 
       
    89 
       
    90 // -----------------------------------------------------------------------------
       
    91 //
       
    92 // -----------------------------------------------------------------------------
       
    93 //
       
    94 CMusUiNaviMediaDecorator::CMusUiNaviMediaDecorator()
       
    95     {
       
    96     iMiddle = 0;
       
    97     iLeftTextSize = TSize( 0, 0 );
       
    98     iRightTextSize = TSize( 0, 0 );
       
    99     iIcon = NULL; 
       
   100     iIconLeft = 50; // Only defaylt valut, it's overrided right away
       
   101     iImageSize = TSize( 18, 18 ); // Only default value, it's overrided right avay
       
   102     }
       
   103 
       
   104 
       
   105 // -----------------------------------------------------------------------------
       
   106 //
       
   107 //
       
   108 // -----------------------------------------------------------------------------
       
   109 //
       
   110 void CMusUiNaviMediaDecorator::ConstructL()
       
   111     {
       
   112     MUS_LOG( "mus: [MUSUI ]  -> CMusUiNaviMediaDecorator::ConstructL" );
       
   113     iLeftLabel = HBufC16::NewL(0);
       
   114     iRightLabel = HBufC16::NewL(0);
       
   115     
       
   116 
       
   117     iIconLayout.LayoutRect( Rect(), R_MUS_NAVI_MEDIA_ICON_LAYOUT_SIZE );
       
   118     iImageSize.iWidth = iIconLayout.Rect().Width();
       
   119     iImageSize.iHeight = iIconLayout.Rect().Height();
       
   120     
       
   121     MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructL(): iImageSize.iWidth %d",
       
   122                             iImageSize.iWidth )
       
   123     MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructL(): iImageSize.iHeight %d",
       
   124                             iImageSize.iHeight )
       
   125     iLeftTextLayout.LayoutText( Rect(),
       
   126                                 R_MUS_NAVI_MEDIA_TEXT_LEFT_LAYOUT );
       
   127     iRightTextLayout.LayoutText( Rect(),
       
   128                                  R_MUS_NAVI_MEDIA_TEXT_RIGHT_LAYOUT );
       
   129                                  
       
   130 
       
   131     if( MusResourceFinderUtil::IsExistL( KMyBitmapRomFile ) ) 
       
   132         {
       
   133         iResourceRam = EFalse;
       
   134         }
       
   135     else if( MusResourceFinderUtil::IsExistL( KMyBitmapRamFile ) ) 
       
   136         {
       
   137         iResourceRam = ETrue;
       
   138         }
       
   139     else
       
   140         {
       
   141         MUS_LOG( "mus: [MUSUI ]  Icon File Not Found " );
       
   142         User::Leave(KErrNotFound);
       
   143         }    
       
   144 
       
   145     LoadImagesL();
       
   146 
       
   147     MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::ConstructL" );
       
   148     }
       
   149 
       
   150 
       
   151 // -----------------------------------------------------------------------------
       
   152 //
       
   153 //
       
   154 // -----------------------------------------------------------------------------
       
   155 //
       
   156 void CMusUiNaviMediaDecorator::SetLeftLabelL( const TDesC& aLabel )
       
   157     {
       
   158     MUS_LOG( "mus: [MUSUI ]  -> CMusUiNaviMediaDecorator::SetLabelL" );
       
   159     HBufC* newLabel = aLabel.AllocL();
       
   160     delete iLeftLabel; // after the AllocL succeeds
       
   161     iLeftLabel = NULL;
       
   162     iLeftLabel = newLabel;
       
   163     TPtr ptr( iLeftLabel->Des() );
       
   164     AknTextUtils::LanguageSpecificNumberConversion( ptr );
       
   165     DoLayoutText();
       
   166     MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::SetLabelL" );
       
   167     }
       
   168 
       
   169 
       
   170 // -----------------------------------------------------------------------------
       
   171 //
       
   172 // -----------------------------------------------------------------------------
       
   173 //
       
   174 void CMusUiNaviMediaDecorator::SetRightLabelL( const TDesC& aLabel )
       
   175     {
       
   176     MUS_LOG( "mus: [MUSUI ]  -> CMusUiNaviMediaDecorator::SetLabelL" );
       
   177     HBufC* newLabel = aLabel.AllocL();
       
   178     delete iRightLabel; // after the AllocL succeeds
       
   179     iRightLabel = NULL;
       
   180     iRightLabel = newLabel;
       
   181     TPtr ptr( iRightLabel->Des() );
       
   182     AknTextUtils::LanguageSpecificNumberConversion( ptr );
       
   183     DoLayoutText();
       
   184     MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::SetLabelL" );
       
   185     }
       
   186 
       
   187 
       
   188 // -----------------------------------------------------------------------------
       
   189 //
       
   190 // -----------------------------------------------------------------------------
       
   191 //
       
   192 void CMusUiNaviMediaDecorator::ShowIcon( TMusUiNaviMediaDecorator aIcon )
       
   193     {
       
   194     MUS_LOG1( "mus: [MUSUI ]     -> CMusUiNaviMediaDecorator::ShowIcon( \
       
   195               TMusMediaNaviIcons aIcon ) #%d", aIcon );
       
   196               
       
   197     delete iAnimation;
       
   198     iAnimation = NULL;
       
   199                   
       
   200     if( aIcon == EMusUiNaviIconNone )
       
   201         {
       
   202         iIcon = NULL;
       
   203         return;
       
   204         }
       
   205     else if( aIcon == EMusUiNaviIconWaitAnim ) 
       
   206         {
       
   207         iIcon = NULL;
       
   208         iIconLayout.LayoutRect( Rect(), R_MUS_NAVI_MEDIA_ICON_LAYOUT_SIZE );
       
   209         iImageSize.iWidth = iIconLayout.Rect().Width();
       
   210         iImageSize.iHeight = iIconLayout.Rect().Height();
       
   211         TRAPD( err, iAnimation = CMusUiNaviMediaAnimator::NewL( *this, iImageSize ); )
       
   212         if( err == KErrNone )
       
   213             {
       
   214             //iAnimation->SetInterval( 50000 );
       
   215             }
       
   216         }
       
   217     else if( iIconArray->Count() > aIcon )
       
   218     		{
       
   219     		iIcon = static_cast< CGulIcon* > ( iIconArray->At( aIcon) );
       
   220     		}
       
   221     else
       
   222         {
       
   223         iIcon = NULL;        
       
   224         }
       
   225     if( !iAnimation ) 
       
   226         {
       
   227         DrawNow();
       
   228         }
       
   229         
       
   230     MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::ShowIcon( \
       
   231              TMusMediaNaviIcons aIcon )" );
       
   232     }
       
   233 
       
   234 
       
   235 // -----------------------------------------------------------------------------
       
   236 //
       
   237 // -----------------------------------------------------------------------------
       
   238 //
       
   239 void CMusUiNaviMediaDecorator::SetIcon( CGulIcon* aIcon )
       
   240     {
       
   241     iIcon = aIcon; 
       
   242     DrawNow();
       
   243     }
       
   244 
       
   245 
       
   246 // -----------------------------------------------------------------------------
       
   247 //
       
   248 // -----------------------------------------------------------------------------
       
   249 //
       
   250 void CMusUiNaviMediaDecorator::SizeChanged()
       
   251     {
       
   252     AknsUtils::RegisterControlPosition( this );
       
   253     DoLayoutText();
       
   254     }
       
   255 
       
   256 
       
   257 // -----------------------------------------------------------------------------
       
   258 //
       
   259 // -----------------------------------------------------------------------------
       
   260 //
       
   261 void CMusUiNaviMediaDecorator::Draw( const TRect& aRect ) const
       
   262     {
       
   263     MUS_LOG( "mus: [MUSUI ]  -> CMusUiNaviMediaDecorator::Draw" );
       
   264 
       
   265     CWindowGc& gc = SystemGc();
       
   266     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   267     // Get skinned bitmap
       
   268     CFbsBitmap* skinBitmap =
       
   269                     AknsUtils::GetCachedBitmap( skin, KAknsIIDQsnIconColors );
       
   270     if( iIcon )
       
   271         {
       
   272         MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
       
   273         AknsDrawUtils::Background( skin, cc,this, gc , aRect , KAknsDrawParamDefault );        
       
   274         gc.BitBltMasked( TPoint( iIconLeft,1),
       
   275                          iIcon->Bitmap(),
       
   276                          iIconLayout.Rect(),
       
   277                          iIcon->Mask(),
       
   278                          EFalse );
       
   279         }
       
   280     // draw time indicator
       
   281 
       
   282     //TRgb color = iLeftTextLayout.Color();
       
   283 
       
   284 	TRgb color;
       
   285 
       
   286 	AknsUtils::GetCachedColor( skin, color, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG2 );
       
   287 
       
   288     gc.SetPenColor( color );
       
   289     gc.UseFont( iLeftTextLayout.Font() );
       
   290     
       
   291 
       
   292     TInt flTop = ( ( aRect.Height() >> 1 ) 
       
   293                  - ( iLeftTextLayout.Font()->AscentInPixels() >> 1 ) ) 
       
   294                  + aRect.iTl.iY - 1; // -1 because some rounding things
       
   295 
       
   296     gc.DrawText( *iLeftLabel,
       
   297                  TRect( aRect.iTl.iX+1, flTop, aRect.iBr.iX, aRect.iBr.iY  ),
       
   298                  iLeftTextLayout.Font()->AscentInPixels() + 1,
       
   299                  iLeftTextLayout.Align() );
       
   300 
       
   301     TInt frTop = ( ( aRect.Height() >> 1 ) 
       
   302                  - ( iRightTextLayout.Font()->AscentInPixels() >> 1 ) ) 
       
   303                  + aRect.iTl.iY - 1; // -1 because some rounding things
       
   304       
       
   305     TInt frLeft;  
       
   306     TInt frRight;
       
   307                  
       
   308     if ( AknLayoutUtils::LayoutMirrored() )
       
   309         {
       
   310         frLeft  = aRect.iTl.iX;
       
   311         frRight = iRightTextSize.iWidth + 1;
       
   312         }
       
   313     else
       
   314         {
       
   315         frLeft  = aRect.iBr.iX - iRightTextSize.iWidth - 1;
       
   316         frRight = aRect.iBr.iX;
       
   317         }
       
   318                  
       
   319     gc.DrawText( *iRightLabel,
       
   320                  TRect( frLeft, frTop, frRight, aRect.iBr.iY  ),
       
   321                  iRightTextLayout.Font()->AscentInPixels() + 1,
       
   322                  iRightTextLayout.Align() );
       
   323 
       
   324 
       
   325     MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::Draw " );
       
   326     }
       
   327 
       
   328 
       
   329 // -----------------------------------------------------------------------------
       
   330 // Layouts the text depending on current icon situation.
       
   331 // -----------------------------------------------------------------------------
       
   332 //
       
   333 void CMusUiNaviMediaDecorator::DoLayoutText()
       
   334     {
       
   335     MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::DoLayoutText" );
       
   336     TRect parent( Rect() );
       
   337     if ( parent.IsEmpty() )
       
   338         {
       
   339         MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::DoLayoutText: return" );
       
   340         return;
       
   341         }
       
   342 
       
   343     TInt minsize = __MIN( parent.Width(), parent.Height() );
       
   344     iImageSize = TSize( minsize-2, minsize-2 );
       
   345      
       
   346 
       
   347     // Reassign text sizes
       
   348     TAknTextLineLayout txtLayout = AppLayout::Navipanetexts_Line_2();
       
   349     const TInt spaceBetweenIconsAndText = 1;
       
   350     txtLayout.il = spaceBetweenIconsAndText;
       
   351 
       
   352     iLeftTextLayout.LayoutText( parent, txtLayout );
       
   353     iRightTextLayout.LayoutText( parent, txtLayout );
       
   354 
       
   355     TSize parentSize = TSize( parent.iBr.iX - parent.iTl.iX,
       
   356                               parent.iBr.iY - parent.iTl.iY );
       
   357 
       
   358     //TInt clientWidth = parent.iBr.iX - parent.iTl.iX;
       
   359 
       
   360     iLeftTextSize.iWidth =
       
   361             iLeftTextLayout.Font()->TextWidthInPixels( iLeftLabel->Des() );
       
   362     iRightTextSize.iWidth =
       
   363             iRightTextLayout.Font()->TextWidthInPixels( iRightLabel->Des() );
       
   364 
       
   365     // First testing elements total width
       
   366     if( iLeftTextSize.iWidth + iRightTextSize.iWidth + iIconLayout.Rect().iBr.iX
       
   367         > parentSize.iWidth )
       
   368         {
       
   369         // Whole stuff is too large
       
   370         _LIT( KMusStringThreeDots, "...");
       
   371             TRAP_IGNORE( SetRightLabelL( KMusStringThreeDots ) );
       
   372         }
       
   373 
       
   374     // Middle point of Icon box in current text parameters
       
   375     TInt middle = parent.iTl.iX + ( parentSize.iWidth >> 1 );
       
   376 
       
   377     // If there collision, calculates middle of the text fields
       
   378     iIconLeft = middle - parent.iTl.iX - ( iIconLayout.Rect().iBr.iX >> 1 );
       
   379     TInt iconRight =
       
   380             middle - parent.iTl.iX + ( iIconLayout.Rect().iBr.iX >> 1 );
       
   381 
       
   382     if( iLeftTextSize.iWidth > iIconLeft ||
       
   383         ( parentSize.iWidth - iRightTextSize.iWidth ) < iconRight )
       
   384         {
       
   385         middle = (( parentSize.iWidth
       
   386                  - ( iLeftTextSize.iWidth + iRightTextSize.iWidth )) >> 1 )
       
   387                  + parent.iTl.iX + iLeftTextSize.iWidth;
       
   388         }
       
   389 
       
   390 
       
   391     // Move only if middle place moves enough eq. ignoring jumping
       
   392     if( middle < ( iMiddle - KMusDecoratorStability )
       
   393         || middle > ( iMiddle + KMusDecoratorStability ) )
       
   394         {
       
   395         iMiddle = middle;
       
   396         }
       
   397 
       
   398     iLeftTextSize.iHeight = iLeftTextLayout.Font()->HeightInPixels();
       
   399     iRightTextSize.iHeight = iRightTextLayout.Font()->HeightInPixels();
       
   400 
       
   401     MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::DoLayoutText" );
       
   402     }
       
   403 
       
   404 
       
   405 // -----------------------------------------------------------------------------
       
   406 //
       
   407 // -----------------------------------------------------------------------------
       
   408 //
       
   409 void  CMusUiNaviMediaDecorator::LoadImagesL() 
       
   410     {
       
   411     
       
   412     delete iIconArray;
       
   413     iIconArray = NULL;
       
   414     iIconArray = new ( ELeave ) CAknIconArray( KIconArraySize );
       
   415 
       
   416     TParse parse;
       
   417     if( iResourceRam ) 
       
   418         {
       
   419         parse.Set( KMyBitmapRamFile, &KDC_APP_RESOURCE_DIR, NULL );
       
   420         }
       
   421     else 
       
   422         {
       
   423         parse.Set( KMyBitmapRomFile, &KDC_APP_RESOURCE_DIR, NULL );
       
   424         }
       
   425 
       
   426 
       
   427     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   428 
       
   429     TAknsItemID item;
       
   430     item.Set( 0xFFCC, 0xC ); // It's a kind a magic
       
   431     
       
   432 
       
   433     ConstructImageL( skin,
       
   434                      item,
       
   435                      EMbmMusuiiconsQgn_indi_video_forw,
       
   436                      EMbmMusuiiconsQgn_indi_video_forw_mask,
       
   437                      parse,
       
   438                      EFalse );
       
   439 
       
   440     ConstructImageL( skin,
       
   441                      item,
       
   442                      EMbmMusuiiconsQgn_indi_video_pause,
       
   443                      EMbmMusuiiconsQgn_indi_video_pause_mask,
       
   444                      parse,
       
   445                      EFalse );
       
   446 
       
   447     ConstructImageL( skin,
       
   448                      item,
       
   449                      EMbmMusuiiconsQgn_indi_video_play,
       
   450                      EMbmMusuiiconsQgn_indi_video_play_mask,
       
   451                      parse,
       
   452                      ETrue );
       
   453 
       
   454     ConstructImageL( skin,
       
   455                      item,
       
   456                      EMbmMusuiiconsQgn_indi_video_record,
       
   457                      EMbmMusuiiconsQgn_indi_video_record_mask,
       
   458                      parse,
       
   459                      ETrue );
       
   460 
       
   461     ConstructImageL( skin,
       
   462                      item,
       
   463                      EMbmMusuiiconsQgn_indi_video_record_not,
       
   464                      EMbmMusuiiconsQgn_indi_video_record_not_mask,
       
   465                      parse,
       
   466                      ETrue );
       
   467 
       
   468     ConstructImageL( skin,
       
   469                      item,
       
   470                      EMbmMusuiiconsQgn_indi_video_rew,
       
   471                      EMbmMusuiiconsQgn_indi_video_rew_mask,
       
   472                      parse,
       
   473                      EFalse );
       
   474 
       
   475     ConstructImageL( skin,
       
   476                      item,
       
   477                      EMbmMusuiiconsQgn_indi_video_stop,
       
   478                      EMbmMusuiiconsQgn_indi_video_stop_mask,
       
   479                      parse,
       
   480                      EFalse );
       
   481 
       
   482     }
       
   483 
       
   484 // -----------------------------------------------------------------------------
       
   485 //
       
   486 // -----------------------------------------------------------------------------
       
   487 //
       
   488 void  CMusUiNaviMediaDecorator::ConstructImageL( MAknsSkinInstance* aSkin,
       
   489                                                 const TAknsItemID& aId,
       
   490                                                 TInt aBitmapId,
       
   491                                                 TInt aMaskId,
       
   492                                                 TParse parse,
       
   493                                                 TBool aIconHasOwnColor )
       
   494 
       
   495     {
       
   496     MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructImageL()" );
       
   497 
       
   498     CFbsBitmap* bitmap = NULL;
       
   499     CFbsBitmap* mask = NULL;
       
   500    
       
   501     if (aIconHasOwnColor)
       
   502         {
       
   503    	    AknsUtils::CreateIconL(aSkin,
       
   504                            aId,
       
   505                            bitmap,
       
   506                            mask,
       
   507                            parse.FullName(),
       
   508                            aBitmapId,
       
   509                            aMaskId);
       
   510 
       
   511   	    }
       
   512     else
       
   513         {
       
   514         AknsUtils::CreateColorIconL(aSkin,
       
   515         		                aId,
       
   516         		                KAknsIIDQsnIconColors,
       
   517         		                EAknsCIQsnIconColorsCG7,
       
   518         		                bitmap,
       
   519     							          mask,
       
   520     							          parse.FullName(),
       
   521     							          aBitmapId,
       
   522     							          aMaskId,
       
   523     							          KRgbBlack);
       
   524         }
       
   525 
       
   526     AknIconUtils::SetSize( bitmap, iImageSize );
       
   527     AknIconUtils::SetSize( mask, iImageSize );
       
   528     MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructIconL(): iImageSize.iWidth %d",
       
   529                             iImageSize.iWidth )
       
   530     MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructIconL(): iImageSize.iHeight %d",
       
   531                             iImageSize.iHeight )
       
   532     
       
   533     
       
   534     CGulIcon* icon = CGulIcon::NewL();
       
   535     icon->SetBitmap( bitmap );
       
   536     icon->SetMask( mask );
       
   537     
       
   538     CleanupStack::PushL( icon );
       
   539     iIconArray->AppendL( icon );
       
   540     CleanupStack::Pop( icon );
       
   541 
       
   542     MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::ConstructIconL()" );
       
   543 
       
   544     }
       
   545 
       
   546 // end of file