diff -r 8b2d6d0384b0 -r d9aefe59d544 camerauis/cameraapp/generic/common/src/CamCaptureSetupListItemDrawer.cpp --- 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 // For CCoeAppUiBase -#include // For CEikApplication -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // list_highlight_pane_g1_cp1 - -#include -#ifndef CAMERAAPP_PLUGIN_BUILD - #include - #include -#else - #include -#endif //CAMERAAPP_PLUGIN_BUILD - - -#include "CamCaptureSetupListItemDrawer.h" -#include "CamCaptureSetupListBoxModel.h" -#include "CamUtility.h" -#include "camlogging.h" - -#include - -#ifdef RD_UI_TRANSITION_EFFECTS_LIST -#include -#include -#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*& 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 - -