camerauis/cameraapp/generic/common/src/CamCaptureSetupListItemDrawer.cpp
changeset 19 d9aefe59d544
parent 3 8b2d6d0384b0
child 21 fa6d9f75d6a6
child 28 3075d9b614e6
--- a/camerauis/cameraapp/generic/common/src/CamCaptureSetupListItemDrawer.cpp	Tue Feb 02 00:01:39 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,565 +0,0 @@
-/*
-* Copyright (c) 2007-2010 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:  A drawer class for the capture setup list box items*
-*/
-
-
-
-// INCLUDE FILES
-#include <eikappui.h>	// For CCoeAppUiBase
-#include <eikapp.h>		// For CEikApplication
-#include <AknUtils.h>
-#include <AknsSkinInstance.h>
-#include <AknsUtils.h>
-#include <barsread.h>
-#include <AknIconArray.h>
-#include <gulicon.h>
-#include <AknsFrameBackgroundControlContext.h>
-#include <AknsDrawUtils.h>
-#include <aknenv.h>
-#include <aknlayoutscalable_avkon.cdl.h> // list_highlight_pane_g1_cp1
-
-#include <cameraapp.mbg>
-#ifndef CAMERAAPP_PLUGIN_BUILD
-  #include <cameraapp.rsg>
-  #include <vgacamsettings.rsg>
-#else
-  #include <gscamerapluginrsc.rsg>
-#endif //CAMERAAPP_PLUGIN_BUILD
-
-
-#include "CamCaptureSetupListItemDrawer.h"
-#include "CamCaptureSetupListBoxModel.h"
-#include "CamUtility.h"
-#include "camlogging.h"
-
-#include <aknlayoutscalable_apps.cdl.h>
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-#include <aknlistloadertfx.h>
-#include <aknlistboxtfxinternal.h>
-#endif //RD_UI_TRANSITION_EFFECTS_LIST
-
-// CONSTANTS
-static const TInt KRadioButtonSelectedIconIndex = 0;
-static const TInt KRadioButtonUnselectedIconIndex = 1;
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CCamCaptureSetupListItemDrawer::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CCamCaptureSetupListItemDrawer* 
-CCamCaptureSetupListItemDrawer::NewL( MCamListboxModel& aListBoxModel )
-    {
-    CCamCaptureSetupListItemDrawer* self = new( ELeave ) 
-                    CCamCaptureSetupListItemDrawer( aListBoxModel );               
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CCamCaptureSetupListItemDrawer Destructor
-//
-// -----------------------------------------------------------------------------
-//
-CCamCaptureSetupListItemDrawer::~CCamCaptureSetupListItemDrawer()
-    {
-    PRINT( _L("Camera => ~CCamCaptureSetupListItemDrawer") );
-    if ( iRadioButtonIconArray )
-        {
-        delete iRadioButtonIconArray;
-        iRadioButtonIconArray = NULL;
-        }
-    PRINT( _L("Camera <= ~CCamCaptureSetupListItemDrawer") );
-    }
-
-// -----------------------------------------------------------------------------
-// CCamCaptureSetupListItemDrawer::CCamCaptureSetupListItemDrawer
-// C++ constructor
-// -----------------------------------------------------------------------------
-//
-CCamCaptureSetupListItemDrawer
-::CCamCaptureSetupListItemDrawer( MCamListboxModel& aListBoxModel )
-  : iModel( aListBoxModel )
-    {
-	}
-
-// ---------------------------------------------------------------------------
-// CCamCaptureSetupListItemDrawer::ConstructL
-// 2nd phase construction
-// ---------------------------------------------------------------------------
-//
-void CCamCaptureSetupListItemDrawer::ConstructL()
-	{    
-
-
-    iCaptureSetupItemHeight = iModel.ListItemLayoutData().Rect().Height();
-    
-
-	const TInt KIconArrayGranularity = 4;
-	iRadioButtonIconArray = 
-                          new( ELeave ) CAknIconArray( KIconArrayGranularity );
-    TResourceReader reader;
-    
-    CCoeEnv::Static()->CreateResourceReaderLC(reader, R_AVKON_SETTING_PAGE_RADIOBUTTON_ICONS);
-
-    reader.ReadInt16(); //not needed, simple or complex
-
-    HBufC* bmpFile = reader.ReadHBufCL();
-    TInt count = reader.ReadInt16(); // count
-   
-    TInt32 bmpSelected = reader.ReadInt32();
-    TInt32 bmpSelectedM = reader.ReadInt32();
-    TInt32 bmp = reader.ReadInt32();
-    TInt32 bmpM = reader.ReadInt32();
-    CleanupStack::PopAndDestroy(); // reader
-
-    CleanupStack::PushL(bmpFile);
-
-    // create normally colored icons
-    CreateIconAndAddToArrayL( iRadioButtonIconArray,
-                              KAknsIIDQgnIndiRadiobuttOn,
-                              EAknsCIQsnIconColorsCG14,
-                              *bmpFile,
-                              bmpSelected,
-                              bmpSelectedM );
-
-    CreateIconAndAddToArrayL( iRadioButtonIconArray,
-                              KAknsIIDQgnIndiRadiobuttOff,
-                              EAknsCIQsnIconColorsCG14,
-                              *bmpFile,
-                              bmp,
-                              bmpM );
-
-    // create highlight colored icons
-    CreateIconAndAddToArrayL( iRadioButtonIconArray,
-                              KAknsIIDQgnIndiRadiobuttOn,
-                              EAknsCIQsnIconColorsCG18,
-                              *bmpFile,
-                              bmpSelected,
-                              bmpSelectedM );
-
-    CreateIconAndAddToArrayL( iRadioButtonIconArray,
-                              KAknsIIDQgnIndiRadiobuttOff,
-                              EAknsCIQsnIconColorsCG18,
-                              *bmpFile,
-                              bmp,
-                              bmpM );
-    
-    const TSize radioButtonRectSize = 
-        TSize( iModel.RadioButtonLayoutData().Rect().Width(),
-               iModel.RadioButtonLayoutData().Rect().Height() );
-    AknIconUtils::SetSize( 
-        iRadioButtonIconArray->At( KRadioButtonSelectedIconIndex )->Bitmap(), 
-                                   radioButtonRectSize );
-    AknIconUtils::SetSize( 
-        iRadioButtonIconArray->At( KRadioButtonUnselectedIconIndex )->Bitmap(), 
-                                   radioButtonRectSize );
-
-    
-	ReadLayout(); 
-	
-    CleanupStack::PopAndDestroy(); // bmpfile
-
-	}
-
-// ---------------------------------------------------------------------------
-// CCamCaptureSetupListItemDrawer::MinimumCellSize
-// Calculate the minimum size of a cell
-// ---------------------------------------------------------------------------
-//
-TSize 
-CCamCaptureSetupListItemDrawer::MinimumCellSize() const
-  {
-  PRINT( _L("Camera => CCamCaptureSetupListItemDrawer::MinimumCellSize") );
-
-  TSize cellSize;
-  cellSize.iWidth = iModel.ListItemLayoutData().Rect().Width();
-  cellSize.iHeight = iModel.ListItemLayoutData().Rect().Height();
-
-
-  PRINT2( _L("Camera => CCamCaptureSetupListItemDrawer::MinimumCellSize, return (%d x %d)"), cellSize.iWidth, cellSize.iHeight );
-  return cellSize;
-  }
-
-// ---------------------------------------------------------------------------
-// CCamCaptureSetupListItemDrawer::DrawActualItem
-// Draw the highlight, bitmap, radio button and item text.
-// ---------------------------------------------------------------------------
-//
-void CCamCaptureSetupListItemDrawer::DrawActualItem( TInt aItemIndex, 
-                                                    const TRect& aActualItemRect,
-                                                    TBool aItemIsCurrent,
-                                                    TBool /*aViewIsEmphasized*/,
-                                                    TBool /*aViewIsDimmed*/,
-                                                    TBool aItemIsSelected ) const
-    { 
-	
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iGc );
-    if ( transApi )
-        {
-        transApi->StartDrawing( MAknListBoxTfxInternal::EListView );
-        }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-    // Draw unhighlighted rectangle that encapsulates the item text and bitmap.
-	DrawItemRect( aActualItemRect );       
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST   
-   	if ( transApi )
-   	    {
-        transApi->StopDrawing();
-        }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-    // If this item is currently selected, draw highlight        
-	if ( aItemIsCurrent )
-		{
-		DrawHighlight( aActualItemRect );
-		}
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST   
-   	if ( transApi )
-   	    {
-        transApi->StartDrawing( MAknListBoxTfxInternal::EListItem );
-        }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-    // Determine drawing colour for text and radio buttons, from current skin
-    // ...text colour index if this item is not selected.
-    TRgb color;
-    TAknsQsnTextColorsIndex index = EAknsCIQsnTextColorsCG7;
-    // ...text colour index if this item is selected.
-    if( Flags() & CListItemDrawer::ESingleClickDisabledHighlight )
-        {
-        // Single clickable items don't have a highlight
-        aItemIsCurrent = EFalse;
-        }
-
-    if ( aItemIsCurrent )
-        {
-        index = EAknsCIQsnTextColorsCG10; // highlighted text colour
-        }
-
-    // ...get colour from current skin for text colour index
-	MAknsSkinInstance *skin = AknsUtils::SkinInstance();	   
-    AknsUtils::GetCachedColor( skin, color, KAknsIIDQsnTextColors, index );
-
-    // ...make sure text/bitmap background colour does not overwrite skin background colour
-	iGc->SetBrushStyle( CGraphicsContext::ENullBrush );
-	
-	if ( !iModel.ShootingModeListBox() )
-        {
-
-        // Draw text
-        // ...Create a text layout object for drawing the text
-        // ...inside of the list item's rectangle
-        TAknLayoutText layoutText;
-        layoutText.LayoutText( aActualItemRect, iTxtLayout );  
-        // ...Pass the text to be drawn, into the text layout object
-        // ...and draw it.    
-        layoutText.DrawText( *iGc, iModel.ItemText( aItemIndex ), 
-                             ETrue, color );
-        // Draw the bitmap.
-        // ...Create a rect layout object for drawing the bitmap
-        // ...inside of the list item's rectangle.
-        TAknLayoutRect layoutRect;
-        layoutRect.LayoutRect( aActualItemRect, iBmpLayout );
-        // ...Pass the bitmap to be drawn, into the rect layout object
-        // ...and draw it.
-        CFbsBitmap* bitmap = iModel.Bitmap( aItemIndex );
-        // if the item has a bitmap
-        if ( bitmap )
-            {
-            CFbsBitmap* bitmapMask = iModel.BitmapMask( aItemIndex );
-            layoutRect.DrawImage( *iGc, bitmap, bitmapMask );
-            }        
-
-
-        DrawRadioButton( aActualItemRect, aItemIsSelected, color );
-        }
-    else 
-        {
-        // draw without radiobuttons
-        
-        // Draw text
-        // ...Create a text layout object for drawing the text
-        // ...inside of the list item's rectangle
-        TAknLayoutText layoutText;
-        layoutText.LayoutText( aActualItemRect, iTxtWithRbLayout );
-        // ...Pass the text to be drawn, into the text layout object
-        // ...and draw it.    
-        layoutText.DrawText( *iGc, iModel.ItemText( aItemIndex ), ETrue, color );
-
-        // Draw the bitmap.
-        // ...Create a rect layout object for drawing the bitmap
-        // ...inside of the list item's rectangle.
-        TAknLayoutRect layoutRect;
-        layoutRect.LayoutRect( aActualItemRect, iBmpWithRbLayout );
-        // ...Pass the bitmap to be drawn, into the rect layout object
-        // ...and draw it.
-        CFbsBitmap* bitmap = iModel.Bitmap( aItemIndex );
-        // if the item has a bitmap
-        if ( bitmap )
-            {
-            CFbsBitmap* bitmapMask = iModel.BitmapMask( aItemIndex );
-            layoutRect.DrawImage( *iGc, bitmap, bitmapMask );
-            }        
-
-        
-        }
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    if ( transApi )
-        {
-        transApi->StopDrawing();
-        }
-#endif //RD_UI_TRANSITION_EFFECTS_LIST
-    }
-
-// ---------------------------------------------------------------------------
-// CCamCaptureSetupListItemDrawer::DrawHighlight
-// Draw the highlight as a bitmap before any other part of the item
-// ---------------------------------------------------------------------------
-//
-void CCamCaptureSetupListItemDrawer::DrawHighlight( const TRect& aActualItemRect ) const
-    {
-    if( Flags() & CListItemDrawer::ESingleClickDisabledHighlight )
-        {
-        return;
-        }
-
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST
-        MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( iGc );
-	   	if ( transApi )
-	   	    {
-            transApi->BeginRedraw( MAknListBoxTfxInternal::EListHighlight, aActualItemRect );
-            transApi->StartDrawing( MAknListBoxTfxInternal::EListHighlight );
-	   	    }
-#endif //RD_UI_TRANSITION_EFFECTS_LIST    	
-    TAknLayoutRect highlightRectLayout;
-    highlightRectLayout.LayoutRect( aActualItemRect, iHighlightLayout );
-    //highlightRectLayout.DrawOutLineRect(*iGc);
-    TRect highlightRect( highlightRectLayout.Rect() );
-
-
-       
-    
-    // Draw highlight using the same highlight that is used for the Avkon settings list radio controls.
-	MAknsSkinInstance *skin = AknsUtils::SkinInstance();	
-    //TBool highlightDrawn = EFalse;
-
-    TAknLayoutRect innerHighlightLayRect;
-    innerHighlightLayRect.LayoutRect( highlightRect, 
-                       AknLayoutScalable_Avkon::list_highlight_pane_g1_cp1() ); 
-
-	//highlightDrawn = 
-    if ( Flags()&EPressedDownState )
-        {
-        // This handles the darker pressed down highlights
-        AknsDrawUtils::DrawFrame( skin, 
-            *iGc, 
-            highlightRect, 
-            innerHighlightLayRect.Rect(), 
-            KAknsIIDQsnFrListPressed,
-            KAknsIIDQsnFrListCenterPressed );
-        }
-    else
-        {
-        AknsDrawUtils::DrawFrame( skin, 
-            *iGc, 
-            highlightRect, 
-            innerHighlightLayRect.Rect(), 
-            KAknsIIDQsnFrList, //KAknsIIDQsnFrSetOptFoc other option?
-            KAknsIIDDefault );
-                
-        }
-
-	//(void)highlightDrawn; // avoid compiler warning
-	/*
-    // if the highlight has not be drawn
-	if ( !highlightDrawn )
-		{
-		TAknLayoutRect highlightshadow;
-		TAknLayoutRect highlight;
-		highlightshadow.LayoutRect( highlightRect, 
-            AKN_LAYOUT_WINDOW_List_pane_highlight_graphics__various__Line_1( highlightRect ) );
-		highlight.LayoutRect( highlightRect, 
-            AKN_LAYOUT_WINDOW_List_pane_highlight_graphics__various__Line_2( highlightRect ) );
-		highlightshadow.DrawRect( *iGc );
-		highlight.DrawRect( *iGc );
-		}
-		*/
-#ifdef RD_UI_TRANSITION_EFFECTS_LIST    
-        if ( transApi )
-            {
-            transApi->StopDrawing();
-            transApi->EndRedraw( MAknListBoxTfxInternal::EListHighlight );
-            }
-#endif // RD_UI_TRANSITION_EFFECTS_LIST
-    }
-
-// ---------------------------------------------------------------------------
-// CCamCaptureSetupListItemDrawer::DrawRadioButton
-// Draw the radio button
-// ---------------------------------------------------------------------------
-//
-void CCamCaptureSetupListItemDrawer::DrawRadioButton( const TRect& aActualItemRect, 
-                                                      TBool aItemIsSelected, const TRgb& /*aColor*/ ) const
-    {
-    PRINT( _L("Camera => CCamCaptureSetupListItemDrawer::DrawRadioButton"))
-
-    TAknLayoutRect layoutRect;
-    layoutRect.LayoutRect( aActualItemRect, AknLayoutScalable_Apps::cset_list_set_pane_g1( 0 ) );
-
-    // Pass the bitmap to be drawn into the rect layout object, and draw it
-	TInt index;
-	if (aItemIsSelected)
-		{
-		index = KRadioButtonSelectedIconIndex;
-		}
-	else
-		{
-		index = KRadioButtonUnselectedIconIndex;
-		}
-
-	layoutRect.DrawImage( *iGc,
-	        iRadioButtonIconArray->At(index)->Bitmap(),
-	        iRadioButtonIconArray->At(index)->Mask() );           
-
-    }
-
-
-// ---------------------------------------------------------
-// CCamCaptureSetupListItemDrawer::DrawItemRect
-// Draws a rectangle for an item.
-// ---------------------------------------------------------
-//
-void CCamCaptureSetupListItemDrawer::DrawItemRect( 
-    const TRect& aActualItemRect ) // the rectangular area to be drawn
-    const
-    {
-    
-    /*
-    iGc->SetBrushColor( AKN_LAF_COLOR_STATIC(0) );
-	iGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
-	iGc->SetPenStyle( CGraphicsContext::ENullPen );	
-    iGc->DrawRect( aActualItemRect );
-    
-  */
-
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    const CCoeControl* control = iParentControl;
-    MAknsControlContext* cc = AknsDrawUtils::ControlContext( control );
-    
-    TBool bgDrawn( EFalse );
-	if ( control )
-		{
-            bgDrawn = AknsDrawUtils::Background(
-                skin, cc, control, *iGc, aActualItemRect,
-                KAknsDrawParamNoClearUnderImage | 
-                KAknsDrawParamBottomLevelRGBOnly );
-		}
-            
-	 if ( !bgDrawn )
-        {
-        iGc->Clear( aActualItemRect );
-        }
-    
-
-    /*
-    // Draw background to be the same colour as that for the Avkon settings list radio controls.
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-//    AknsDrawUtils::DrawCachedImage(skin, *iGc, aActualItemRect, KAknsIIDQsnFrSetOpt);	  
-    AknsDrawUtils::DrawCachedImage(skin, *iGc, aActualItemRect, KAknsIIDQsnBgScreenMp);	  
-*/
-
-    }
-
-// ---------------------------------------------------------
-// CCamCaptureSetupListItemDrawer::SetControl
-// Sets the parent control of the listbox
-// ---------------------------------------------------------
-//
-void CCamCaptureSetupListItemDrawer::SetParentControl( 
-    const CCoeControl* aControl )
-    {
-    iParentControl = aControl;
-    }
-
-// ---------------------------------------------------------
-// CCamCaptureSetupListItemDrawer::ReadLayout
-// ---------------------------------------------------------
-//
-void CCamCaptureSetupListItemDrawer::ReadLayout()  
-    {
-    if ( CamUtility::IsNhdDevice() ) 
-        {
-        iTxtLayout = AknLayoutScalable_Apps::cset_list_set_pane_t1( 0 );
-        iBmpLayout = AknLayoutScalable_Apps::cset_list_set_pane_g3( 0 );
-        iTxtWithRbLayout = AknLayoutScalable_Apps::cset_list_set_pane_t1( 1 );
-        iBmpWithRbLayout = AknLayoutScalable_Apps::cset_list_set_pane_g3( 1 );
-        iHighlightLayout = 
-                       AknLayoutScalable_Apps::list_highlight_pane_cp021( 0 ); 
-        }
-    else
-        {
-        iTxtLayout = AknLayoutScalable_Apps::cset_list_set_pane_t1_copy1( 0 );
-        iBmpLayout = AknLayoutScalable_Apps::cset_list_set_pane_g3_copy1( 0 );
-        iTxtWithRbLayout = 
-                     AknLayoutScalable_Apps::cset_list_set_pane_t1_copy1( 1 );
-        iBmpWithRbLayout = 
-                     AknLayoutScalable_Apps::cset_list_set_pane_g3_copy1( 1 );
-        iHighlightLayout = 
-                 AknLayoutScalable_Apps::list_highlight_pane_cp021_copy1( 0 );
-        }
-    }
- 
-void CCamCaptureSetupListItemDrawer::CreateIconAndAddToArrayL(
-    CArrayPtr<CGulIcon>*& aIconArray,
-    const TAknsItemID& aId,
-    const TInt aColorIndex,
-    const TDesC& aBmpFile,
-    const TInt32 aBmp,
-    const TInt32 aBmpM )
-    {
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
-    CFbsBitmap* bitmap = 0;
-    CFbsBitmap* mask = 0;
-
-    AknsUtils::CreateColorIconLC( skin,
-                                  aId,
-                                  KAknsIIDQsnIconColors,
-                                  aColorIndex,
-                                  bitmap,
-                                  mask,
-                                  aBmpFile,
-                                  aBmp,
-                                  aBmpM,
-                                  KRgbBlack );
-
-    CGulIcon* gulicon = CGulIcon::NewL( bitmap, mask ); // ownership passed
-    CleanupStack::PushL( gulicon );
-    
-    aIconArray->AppendL( gulicon );
-    CleanupStack::Pop( 3 ); // mask, bitmap, gulicon
-    }
-
-//End of file
-
-