mmsharing/mmshui/src/musuinavimediadecorator.cpp
branchRCL_3
changeset 22 73a1feb507fb
parent 21 33a5d2bbf6fc
child 23 bc78a40cd63c
--- a/mmsharing/mmshui/src/musuinavimediadecorator.cpp	Thu Aug 19 09:51:39 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,546 +0,0 @@
-/*
-* Copyright (c) 2005 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: 
-*
-*/
-
-
-
-#include "musuinavimediadecorator.h"
-#include "musuinavimediaanimator.h"
-#include "musuidefinitions.h"
-#include "muslogger.h" // debug logging
-#include <musuiicons.mbg>
-//#include <musui.mbg>
-//#include <musui_temp_icons.mbg>
-#include <musui.rsg>
-#include "musresourcefinderutil.h"
-
-#include <data_caging_path_literals.hrh>    // KDC_APP_BITMAP_DIR
-#include <AknsUtils.h>
-#include <aknnavi.h>           // CAknNavigationControlContainer
-#include <eikspane.h>          // CEikStatusPaneBase
-#include <StringLoader.h>
-#include <applayout.cdl.h>     // scalable UI
-#include <AknIconUtils.h>      // SetSize for the icons
-#include <AknsDrawUtils.h>
-#include <AknIconArray.h>
-#include <gulicon.h>
-#include <applayout.cdl.h>
-#include <AknUtils.h>
-
-using namespace AppLayout;
-
-
-const TInt KMusDecoratorStability = 0;
-const TInt KIconArraySize = 15;
-
-_LIT( KMyBitmapRomFile, "Z:\\resource\\apps\\musuiicons.mif" );
-_LIT( KMyBitmapRamFile, "C:\\resource\\apps\\musuiicons.mif" );
-
-
-#ifndef __MIN
-#define __MIN(A, B) ((A) < (B) ? (A): (B)) 
-#endif
-//macro 
-//_LIT( KMyMbmFileName, "z:Camcorder.mbm");
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiNaviMediaDecorator* CMusUiNaviMediaDecorator::NewL()
-    {
-    CMusUiNaviMediaDecorator* self = new( ELeave ) CMusUiNaviMediaDecorator();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiNaviMediaDecorator::~CMusUiNaviMediaDecorator()
-    {
-    MUS_LOG( "mus: [MUSUI ]  -> CMusUiNaviMediaDecorator::~CMusUiNaviMediaDecorator" );
-    delete iLeftLabel;
-    delete iRightLabel;
-    delete iIconArray;
-    delete iAnimation;
-
-    MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::~CMusUiNaviMediaDecorator" );
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusUiNaviMediaDecorator::CMusUiNaviMediaDecorator()
-    {
-    iMiddle = 0;
-    iLeftTextSize = TSize( 0, 0 );
-    iRightTextSize = TSize( 0, 0 );
-    iIcon = NULL; 
-    iIconLeft = 50; // Only defaylt valut, it's overrided right away
-    iImageSize = TSize( 18, 18 ); // Only default value, it's overrided right avay
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::ConstructL()
-    {
-    MUS_LOG( "mus: [MUSUI ]  -> CMusUiNaviMediaDecorator::ConstructL" );
-    iLeftLabel = HBufC16::NewL(0);
-    iRightLabel = HBufC16::NewL(0);
-    
-
-    iIconLayout.LayoutRect( Rect(), R_MUS_NAVI_MEDIA_ICON_LAYOUT_SIZE );
-    iImageSize.iWidth = iIconLayout.Rect().Width();
-    iImageSize.iHeight = iIconLayout.Rect().Height();
-    
-    MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructL(): iImageSize.iWidth %d",
-                            iImageSize.iWidth )
-    MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructL(): iImageSize.iHeight %d",
-                            iImageSize.iHeight )
-    iLeftTextLayout.LayoutText( Rect(),
-                                R_MUS_NAVI_MEDIA_TEXT_LEFT_LAYOUT );
-    iRightTextLayout.LayoutText( Rect(),
-                                 R_MUS_NAVI_MEDIA_TEXT_RIGHT_LAYOUT );
-                                 
-
-    if( MusResourceFinderUtil::IsExistL( KMyBitmapRomFile ) ) 
-        {
-        iResourceRam = EFalse;
-        }
-    else if( MusResourceFinderUtil::IsExistL( KMyBitmapRamFile ) ) 
-        {
-        iResourceRam = ETrue;
-        }
-    else
-        {
-        MUS_LOG( "mus: [MUSUI ]  Icon File Not Found " );
-        User::Leave(KErrNotFound);
-        }    
-
-    LoadImagesL();
-
-    MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::ConstructL" );
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::SetLeftLabelL( const TDesC& aLabel )
-    {
-    MUS_LOG( "mus: [MUSUI ]  -> CMusUiNaviMediaDecorator::SetLabelL" );
-    HBufC* newLabel = aLabel.AllocL();
-    delete iLeftLabel; // after the AllocL succeeds
-    iLeftLabel = NULL;
-    iLeftLabel = newLabel;
-    TPtr ptr( iLeftLabel->Des() );
-    AknTextUtils::LanguageSpecificNumberConversion( ptr );
-    DoLayoutText();
-    MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::SetLabelL" );
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::SetRightLabelL( const TDesC& aLabel )
-    {
-    MUS_LOG( "mus: [MUSUI ]  -> CMusUiNaviMediaDecorator::SetLabelL" );
-    HBufC* newLabel = aLabel.AllocL();
-    delete iRightLabel; // after the AllocL succeeds
-    iRightLabel = NULL;
-    iRightLabel = newLabel;
-    TPtr ptr( iRightLabel->Des() );
-    AknTextUtils::LanguageSpecificNumberConversion( ptr );
-    DoLayoutText();
-    MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::SetLabelL" );
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::ShowIcon( TMusUiNaviMediaDecorator aIcon )
-    {
-    MUS_LOG1( "mus: [MUSUI ]     -> CMusUiNaviMediaDecorator::ShowIcon( \
-              TMusMediaNaviIcons aIcon ) #%d", aIcon );
-              
-    delete iAnimation;
-    iAnimation = NULL;
-                  
-    if( aIcon == EMusUiNaviIconNone )
-        {
-        iIcon = NULL;
-        return;
-        }
-    else if( aIcon == EMusUiNaviIconWaitAnim ) 
-        {
-        iIcon = NULL;
-        iIconLayout.LayoutRect( Rect(), R_MUS_NAVI_MEDIA_ICON_LAYOUT_SIZE );
-        iImageSize.iWidth = iIconLayout.Rect().Width();
-        iImageSize.iHeight = iIconLayout.Rect().Height();
-        TRAPD( err, iAnimation = CMusUiNaviMediaAnimator::NewL( *this, iImageSize ); )
-        if( err == KErrNone )
-            {
-            //iAnimation->SetInterval( 50000 );
-            }
-        }
-    else if( iIconArray->Count() > aIcon )
-    		{
-    		iIcon = static_cast< CGulIcon* > ( iIconArray->At( aIcon) );
-    		}
-    else
-        {
-        iIcon = NULL;        
-        }
-    if( !iAnimation ) 
-        {
-        DrawNow();
-        }
-        
-    MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::ShowIcon( \
-             TMusMediaNaviIcons aIcon )" );
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::SetIcon( CGulIcon* aIcon )
-    {
-    iIcon = aIcon; 
-    DrawNow();
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::SizeChanged()
-    {
-    AknsUtils::RegisterControlPosition( this );
-    DoLayoutText();
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::Draw( const TRect& aRect ) const
-    {
-    MUS_LOG( "mus: [MUSUI ]  -> CMusUiNaviMediaDecorator::Draw" );
-
-    CWindowGc& gc = SystemGc();
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    // Get skinned bitmap
-    CFbsBitmap* skinBitmap =
-                    AknsUtils::GetCachedBitmap( skin, KAknsIIDQsnIconColors );
-    if( iIcon )
-        {
-        MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
-        AknsDrawUtils::Background( skin, cc,this, gc , aRect , KAknsDrawParamDefault );        
-        gc.BitBltMasked( TPoint( iIconLeft,1),
-                         iIcon->Bitmap(),
-                         iIconLayout.Rect(),
-                         iIcon->Mask(),
-                         EFalse );
-        }
-    // draw time indicator
-
-    //TRgb color = iLeftTextLayout.Color();
-
-	TRgb color;
-
-	AknsUtils::GetCachedColor( skin, color, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG2 );
-
-    gc.SetPenColor( color );
-    gc.UseFont( iLeftTextLayout.Font() );
-    
-
-    TInt flTop = ( ( aRect.Height() >> 1 ) 
-                 - ( iLeftTextLayout.Font()->AscentInPixels() >> 1 ) ) 
-                 + aRect.iTl.iY - 1; // -1 because some rounding things
-
-    gc.DrawText( *iLeftLabel,
-                 TRect( aRect.iTl.iX+1, flTop, aRect.iBr.iX, aRect.iBr.iY  ),
-                 iLeftTextLayout.Font()->AscentInPixels() + 1,
-                 iLeftTextLayout.Align() );
-
-    TInt frTop = ( ( aRect.Height() >> 1 ) 
-                 - ( iRightTextLayout.Font()->AscentInPixels() >> 1 ) ) 
-                 + aRect.iTl.iY - 1; // -1 because some rounding things
-      
-    TInt frLeft;  
-    TInt frRight;
-                 
-    if ( AknLayoutUtils::LayoutMirrored() )
-        {
-        frLeft  = aRect.iTl.iX;
-        frRight = iRightTextSize.iWidth + 1;
-        }
-    else
-        {
-        frLeft  = aRect.iBr.iX - iRightTextSize.iWidth - 1;
-        frRight = aRect.iBr.iX;
-        }
-                 
-    gc.DrawText( *iRightLabel,
-                 TRect( frLeft, frTop, frRight, aRect.iBr.iY  ),
-                 iRightTextLayout.Font()->AscentInPixels() + 1,
-                 iRightTextLayout.Align() );
-
-
-    MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::Draw " );
-    }
-
-
-// -----------------------------------------------------------------------------
-// Layouts the text depending on current icon situation.
-// -----------------------------------------------------------------------------
-//
-void CMusUiNaviMediaDecorator::DoLayoutText()
-    {
-    MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::DoLayoutText" );
-    TRect parent( Rect() );
-    if ( parent.IsEmpty() )
-        {
-        MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::DoLayoutText: return" );
-        return;
-        }
-
-    TInt minsize = __MIN( parent.Width(), parent.Height() );
-    iImageSize = TSize( minsize-2, minsize-2 );
-     
-
-    // Reassign text sizes
-    TAknTextLineLayout txtLayout = AppLayout::Navipanetexts_Line_2();
-    const TInt spaceBetweenIconsAndText = 1;
-    txtLayout.il = spaceBetweenIconsAndText;
-
-    iLeftTextLayout.LayoutText( parent, txtLayout );
-    iRightTextLayout.LayoutText( parent, txtLayout );
-
-    TSize parentSize = TSize( parent.iBr.iX - parent.iTl.iX,
-                              parent.iBr.iY - parent.iTl.iY );
-
-    //TInt clientWidth = parent.iBr.iX - parent.iTl.iX;
-
-    iLeftTextSize.iWidth =
-            iLeftTextLayout.Font()->TextWidthInPixels( iLeftLabel->Des() );
-    iRightTextSize.iWidth =
-            iRightTextLayout.Font()->TextWidthInPixels( iRightLabel->Des() );
-
-    // First testing elements total width
-    if( iLeftTextSize.iWidth + iRightTextSize.iWidth + iIconLayout.Rect().iBr.iX
-        > parentSize.iWidth )
-        {
-        // Whole stuff is too large
-        _LIT( KMusStringThreeDots, "...");
-            TRAP_IGNORE( SetRightLabelL( KMusStringThreeDots ) );
-        }
-
-    // Middle point of Icon box in current text parameters
-    TInt middle = parent.iTl.iX + ( parentSize.iWidth >> 1 );
-
-    // If there collision, calculates middle of the text fields
-    iIconLeft = middle - parent.iTl.iX - ( iIconLayout.Rect().iBr.iX >> 1 );
-    TInt iconRight =
-            middle - parent.iTl.iX + ( iIconLayout.Rect().iBr.iX >> 1 );
-
-    if( iLeftTextSize.iWidth > iIconLeft ||
-        ( parentSize.iWidth - iRightTextSize.iWidth ) < iconRight )
-        {
-        middle = (( parentSize.iWidth
-                 - ( iLeftTextSize.iWidth + iRightTextSize.iWidth )) >> 1 )
-                 + parent.iTl.iX + iLeftTextSize.iWidth;
-        }
-
-
-    // Move only if middle place moves enough eq. ignoring jumping
-    if( middle < ( iMiddle - KMusDecoratorStability )
-        || middle > ( iMiddle + KMusDecoratorStability ) )
-        {
-        iMiddle = middle;
-        }
-
-    iLeftTextSize.iHeight = iLeftTextLayout.Font()->HeightInPixels();
-    iRightTextSize.iHeight = iRightTextLayout.Font()->HeightInPixels();
-
-    MUS_LOG( "mus: [MUSUI ]  <- CMusUiNaviMediaDecorator::DoLayoutText" );
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void  CMusUiNaviMediaDecorator::LoadImagesL() 
-    {
-    
-    delete iIconArray;
-    iIconArray = NULL;
-    iIconArray = new ( ELeave ) CAknIconArray( KIconArraySize );
-
-    TParse parse;
-    if( iResourceRam ) 
-        {
-        parse.Set( KMyBitmapRamFile, &KDC_APP_RESOURCE_DIR, NULL );
-        }
-    else 
-        {
-        parse.Set( KMyBitmapRomFile, &KDC_APP_RESOURCE_DIR, NULL );
-        }
-
-
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
-    TAknsItemID item;
-    item.Set( 0xFFCC, 0xC ); // It's a kind a magic
-    
-
-    ConstructImageL( skin,
-                     item,
-                     EMbmMusuiiconsQgn_indi_video_forw,
-                     EMbmMusuiiconsQgn_indi_video_forw_mask,
-                     parse,
-                     EFalse );
-
-    ConstructImageL( skin,
-                     item,
-                     EMbmMusuiiconsQgn_indi_video_pause,
-                     EMbmMusuiiconsQgn_indi_video_pause_mask,
-                     parse,
-                     EFalse );
-
-    ConstructImageL( skin,
-                     item,
-                     EMbmMusuiiconsQgn_indi_video_play,
-                     EMbmMusuiiconsQgn_indi_video_play_mask,
-                     parse,
-                     ETrue );
-
-    ConstructImageL( skin,
-                     item,
-                     EMbmMusuiiconsQgn_indi_video_record,
-                     EMbmMusuiiconsQgn_indi_video_record_mask,
-                     parse,
-                     ETrue );
-
-    ConstructImageL( skin,
-                     item,
-                     EMbmMusuiiconsQgn_indi_video_record_not,
-                     EMbmMusuiiconsQgn_indi_video_record_not_mask,
-                     parse,
-                     ETrue );
-
-    ConstructImageL( skin,
-                     item,
-                     EMbmMusuiiconsQgn_indi_video_rew,
-                     EMbmMusuiiconsQgn_indi_video_rew_mask,
-                     parse,
-                     EFalse );
-
-    ConstructImageL( skin,
-                     item,
-                     EMbmMusuiiconsQgn_indi_video_stop,
-                     EMbmMusuiiconsQgn_indi_video_stop_mask,
-                     parse,
-                     EFalse );
-
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void  CMusUiNaviMediaDecorator::ConstructImageL( MAknsSkinInstance* aSkin,
-                                                const TAknsItemID& aId,
-                                                TInt aBitmapId,
-                                                TInt aMaskId,
-                                                TParse parse,
-                                                TBool aIconHasOwnColor )
-
-    {
-    MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructImageL()" );
-
-    CFbsBitmap* bitmap = NULL;
-    CFbsBitmap* mask = NULL;
-   
-    if (aIconHasOwnColor)
-        {
-   	    AknsUtils::CreateIconL(aSkin,
-                           aId,
-                           bitmap,
-                           mask,
-                           parse.FullName(),
-                           aBitmapId,
-                           aMaskId);
-
-  	    }
-    else
-        {
-        AknsUtils::CreateColorIconL(aSkin,
-        		                aId,
-        		                KAknsIIDQsnIconColors,
-        		                EAknsCIQsnIconColorsCG7,
-        		                bitmap,
-    							          mask,
-    							          parse.FullName(),
-    							          aBitmapId,
-    							          aMaskId,
-    							          KRgbBlack);
-        }
-
-    AknIconUtils::SetSize( bitmap, iImageSize );
-    AknIconUtils::SetSize( mask, iImageSize );
-    MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructIconL(): iImageSize.iWidth %d",
-                            iImageSize.iWidth )
-    MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructIconL(): iImageSize.iHeight %d",
-                            iImageSize.iHeight )
-    
-    
-    CGulIcon* icon = CGulIcon::NewL();
-    icon->SetBitmap( bitmap );
-    icon->SetMask( mask );
-    
-    CleanupStack::PushL( icon );
-    iIconArray->AppendL( icon );
-    CleanupStack::Pop( icon );
-
-    MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::ConstructIconL()" );
-
-    }
-
-// end of file