diff -r aecbbf00d063 -r d48ab3b357f1 uifw/AvKon/src/aknlists.cpp --- a/uifw/AvKon/src/aknlists.cpp Tue Aug 31 15:28:30 2010 +0300 +++ b/uifw/AvKon/src/aknlists.cpp Wed Sep 01 12:16:19 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-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" @@ -616,28 +616,8 @@ aItemDrawer->SetHighlightedBackColor(AKN_LAF_COLOR_STATIC( AKN_LAYOUT_WINDOW_List_pane_highlight_graphics__various__Line_2(TRect(0,0,0,0)).iC)); } - -TInt AknListBoxLayouts::AdjustPopupLayoutData( const TRect& aScreenRect ) - { - _AKNTRACE( "[%s][%s][%d].", "AknListBoxLayouts", __FUNCTION__, __LINE__ ); - TInt width = aScreenRect.Width(); - TInt height = aScreenRect.Height(); - - if ( width ==640 && height ==360 ) //QHD - { - return 32; - } - else if(( width ==320 && height ==240 ) //QVGA, QVGA2 - ||( width ==640 && height ==480 )) //VGA, VAG3 - { - return 0; - } - else - { - Panic( EAknPopupLayoutUnknownResolution ); - return 0; - } - } + + // ----------------------------------------------------------------------------- // IdFromTextAlign // ----------------------------------------------------------------------------- @@ -1169,43 +1149,31 @@ SetupFormTextCell( aListBox, aItemDrawer, index, font, C, lm, rm, B, W, aAlign, p1, p2 ); } -// this is common popuplist setup code -static TSize PopupListItemSize(const TAknWindowLineLayout &aL) +// ---------------------------------------------------------------------------- +// This is common popup list setup code. +// ---------------------------------------------------------------------------- +// +static TSize PopupListItemSize( const TAknWindowLineLayout &aL ) { _AKNTRACE( "[%s][%d]", __FUNCTION__, __LINE__ ); - TAknLayoutRect temp, layout; + TAknLayoutRect temp; + TAknLayoutRect layout; TRect mainPane; AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EPopupParent, mainPane ); - temp.LayoutRect( mainPane, AknLayoutScalable_Avkon::popup_menu_window(13)); + temp.LayoutRect( mainPane, + AknLayoutScalable_Avkon::popup_menu_window( + Layout_Meta_Data::IsLandscapeOrientation() ? 43 : 13 ) ); TRect screenRect; AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect ); - TAknWindowLineLayout lineLayout = AknLayoutScalable_Avkon::listscroll_menu_pane(0).LayoutLine(); - - // Layout data of listscroll_menu_pane are changed for CR 417-35260. - // The change is just for QHD landscape model. - // The CR makes listscroll_menu_pane's ir or il bigger than normal, - // so that width of list item is smaller than needs. Then, first cell - // of list item can not be drawn on proper position. - // Adjustment of layout is a solution for this problem. This is not a perfect idea, but - // creating a new layout for popuplist is too complex to do that. Adjustment is a must. - if(Layout_Meta_Data::IsLandscapeOrientation()) - { - TInt offset = AknListBoxLayouts::AdjustPopupLayoutData( screenRect ); - if (!AknLayoutUtils::LayoutMirrored()) - { - lineLayout.ir -= offset; - } - else - { - lineLayout.il -= offset; - } - } - layout.LayoutRect( temp.Rect(), lineLayout); + + layout.LayoutRect( temp.Rect(), + AknLayoutScalable_Avkon::listscroll_menu_pane( 0 ) ); - temp.LayoutRect( layout.Rect(), AknLayoutScalable_Avkon::list_menu_pane(0)); - layout.LayoutRect( temp.Rect(), aL); + temp.LayoutRect( layout.Rect(), + AknLayoutScalable_Avkon::list_menu_pane( 0 ) ); + layout.LayoutRect( temp.Rect(), aL ); return layout.Rect().Size(); } @@ -1424,6 +1392,16 @@ } // ----------------------------------------------------------------------------- +// SetupListL +// ----------------------------------------------------------------------------- +// +static void SetupListL( CEikFormattedCellListBox* aListBox, + const TAknWindowComponentLayout& aNormalLayout ) + { + SetupStretchableListL( aListBox, aNormalLayout, aNormalLayout ); + } + +// ----------------------------------------------------------------------------- // ShowAllRows // ----------------------------------------------------------------------------- // @@ -1634,6 +1612,12 @@ TInt pos = -1; TBool removeicon = (!aItemIsSelected && !ItemMarkReverse()) || (aItemIsSelected && ItemMarkReverse()); + + if ( Flags() & CListItemDrawer::EMarkingModeEnabled ) + { + removeicon = EFalse; + } + if ( Flags() & EDrawMarkSelection && ItemMarkPosition() != -1 && removeicon) { repl.Set( ItemMarkReplacement() ); @@ -1726,7 +1710,8 @@ // Set again because ReplaceColumn in WordWrapListItem does not update the length to 'des2' ! des2.Set( buffer2->Des() ); - DrawBackgroundAndSeparatorLines( aItemTextRect ); + DrawBackgroundAndSeparatorLines( aItemTextRect, + aItemIndex != FormattedCellData()->ListBox()->BottomItemIndex() ); if( aItemIsCurrent ) { @@ -3118,8 +3103,23 @@ transApi->StartDrawing( MAknListBoxTfxInternal::EListView ); } #endif //RD_UI_TRANSITION_EFFECTS_LIST - gc->SetBrushColor(this->BackColor()); - AknsDrawUtils::BackgroundBetweenRects( AknsUtils::SkinInstance(), cc, this, *gc, clientRect, this->iView->ViewRect() ); + + if ( this->iItemDrawer->Flags() + & CListItemDrawer::EDrawWholeBackground ) + { + AknsDrawUtils::Background( + AknsUtils::SkinInstance(), cc, this, *gc, clientRect ); + + this->iItemDrawer->SetFlags( CListItemDrawer::EBackgroundDrawn ); + } + else + { + gc->SetBrushColor(this->BackColor()); + AknsDrawUtils::BackgroundBetweenRects( + AknsUtils::SkinInstance(), cc, this, *gc, clientRect, + this->iView->ViewRect() ); + } + #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( transApi ) { @@ -3392,12 +3392,12 @@ formattedCellData->SetStretchableTextSubCellL( 1, AknLayoutScalable_Avkon::list_double_graphic_pane_t1( 0 ), - AknLayoutScalable_Avkon::list_double_graphic_pane_vc_t1( 0 ) ); + AknLayoutScalable_Avkon::list_double_graphic_pane_vc_t1( 3 ) ); formattedCellData->SetStretchableTextSubCellL( 2, AknLayoutScalable_Avkon::list_double_graphic_pane_t2( 0 ), - AknLayoutScalable_Avkon::list_double_graphic_pane_vc_t2( 0 ) ); + AknLayoutScalable_Avkon::list_double_graphic_pane_vc_t2( 3 ) ); formattedCellData->SetStretchableGraphicSubCellL( 3, @@ -3410,9 +3410,11 @@ AknLayoutScalable_Avkon::list_double_graphic_pane_vc_g2( 1 ) ); // New icon below g1. - formattedCellData->SetGraphicSubCellL( + formattedCellData->SetStretchableGraphicSubCellL( 5, - AknLayoutScalable_Avkon::list_double_graphic_pane_g4( 0 ) ); + AknLayoutScalable_Avkon::list_double_graphic_pane_g4( 0 ) , + AknLayoutScalable_Avkon::list_double_graphic_pane_vc_g4( 0 ) ); + // On default new cell is always drawn but this cell should NOT be drawn! formattedCellData->SetNotAlwaysDrawnSubCellL( 5, ETrue ); @@ -3421,12 +3423,12 @@ formattedCellData->SetStretchableConditionalSubCellL( 4, AknLayoutScalable_Avkon::list_double_graphic_pane_t1( 2 ), - AknLayoutScalable_Avkon::list_double_graphic_pane_vc_t2( 2 ), 1, 2 ); + AknLayoutScalable_Avkon::list_double_graphic_pane_vc_t2( 4 ), 1, 2 ); formattedCellData->SetStretchableConditionalSubCellL( 3, AknLayoutScalable_Avkon::list_double_graphic_pane_t1( 1 ), - AknLayoutScalable_Avkon::list_double_graphic_pane_vc_t2( 1 ), 1, 2 ); + AknLayoutScalable_Avkon::list_double_graphic_pane_vc_t2( 5 ), 1, 2 ); } else { @@ -3453,6 +3455,15 @@ itemDrawer->SetItemMarkPosition( 3 ); itemDrawer->SetItemMarkReplacement( KFirstMovingCSIconReplacement ); } + + // Mirrored layout does not have smiley. + if ( !AknLayoutUtils::LayoutMirrored() && + itemDrawer->Flags() & CListItemDrawer::EDrawSmileyIcon ) + { + formattedCellData->InitSmileyL(); + // only second lable can have smiley icon now. + formattedCellData->SetSmileySubCellL(2); + } _AKNTRACE_FUNC_EXIT; } @@ -3481,15 +3492,11 @@ CFormattedCellListBoxData* formattedCellData( itemDrawer->FormattedCellData() ); if ( !formattedCellData->SecondRowHidden() ) { - SetupStretchableListL( this, - AknLayoutScalable_Avkon::list_double_pane( 0 ), - AknLayoutScalable_Avkon::list_double_pane_vc( 0 ) ); + SetupListL( this, AknLayoutScalable_Avkon::list_double_pane( 0 ) ); } else { - SetupStretchableListL( this, - AknLayoutScalable_Avkon::list_single_pane( 0 ), - AknLayoutScalable_Avkon::list_double_pane_vc( 0 ) ); + SetupListL( this, AknLayoutScalable_Avkon::list_single_pane( 0 ) ); } SetSeparatorLinePosition( this, EAColumn ); @@ -3498,46 +3505,37 @@ { // Assertion fails in CFormattedCellListBoxData::DrawFormattedSimple if // this cell does not exist. - formattedCellData->SetStretchableTextSubCellL( 0, - AknLayoutScalable_Avkon::list_double_pane_t1( 0 ), - AknLayoutScalable_Avkon::list_double_pane_vc_t1( 0 ) ); - - formattedCellData->SetStretchableTextSubCellL( 1, - AknLayoutScalable_Avkon::list_double_pane_t1( 0 ), - AknLayoutScalable_Avkon::list_double_pane_vc_t1( 0 ) ); - - formattedCellData->SetStretchableTextSubCellL( 2, - AknLayoutScalable_Avkon::list_double_pane_t2( 0 ), - AknLayoutScalable_Avkon::list_double_pane_vc_t2( 0 ) ); + formattedCellData->SetTextSubCellL( 0, + AknLayoutScalable_Avkon::list_double_pane_t1( 0 ) ); + + formattedCellData->SetTextSubCellL( 1, + AknLayoutScalable_Avkon::list_double_pane_t1( 0 ) ); + + formattedCellData->SetTextSubCellL( 2, + AknLayoutScalable_Avkon::list_double_pane_t2( 0 ) ); - formattedCellData->SetStretchableGraphicSubCellL( 3, - AknLayoutScalable_Avkon::list_double_pane_g1( 0 ), - AknLayoutScalable_Avkon::list_double_pane_vc_g1( 0 ) ); - - formattedCellData->SetStretchableGraphicSubCellL( 4, - AknLayoutScalable_Avkon::list_double_pane_g2( 0 ), - AknLayoutScalable_Avkon::list_double_pane_vc_g2( 0 ) ); + formattedCellData->SetGraphicSubCellL( 3, + AknLayoutScalable_Avkon::list_double_pane_g1( 0 ) ); + + formattedCellData->SetGraphicSubCellL( 4, + AknLayoutScalable_Avkon::list_double_pane_g2( 0 ) ); // Conditional subcells must be added in priority order! - formattedCellData->SetStretchableConditionalSubCellL( 4, - AknLayoutScalable_Avkon::list_double_pane_t1( 2 ), - AknLayoutScalable_Avkon::list_double_pane_vc_t2( 2 ), 1, 2 ); - - formattedCellData->SetStretchableConditionalSubCellL( 3, - AknLayoutScalable_Avkon::list_double_pane_t1( 1 ), - AknLayoutScalable_Avkon::list_double_pane_vc_t2( 1 ), 1, 2 ); + formattedCellData->SetConditionalSubCellL( 4, + AknLayoutScalable_Avkon::list_double_pane_t1( 2 ), 1 ); + + formattedCellData->SetConditionalSubCellL( 3, + AknLayoutScalable_Avkon::list_double_pane_t1( 1 ), 1 ); } else { // Assertion fails in CFormattedCellListBoxData::DrawFormattedSimple if // this cell does not exist. - formattedCellData->SetStretchableTextSubCellL( 0, - AknLayoutScalable_Avkon::list_single_pane_t1( 0 ), - AknLayoutScalable_Avkon::list_double_pane_vc_t1( 0 ) ); - - formattedCellData->SetStretchableTextSubCellL( 1, - AknLayoutScalable_Avkon::list_single_pane_t1( 0 ), - AknLayoutScalable_Avkon::list_double_pane_vc_t1( 0 ) ); + formattedCellData->SetTextSubCellL( 0, + AknLayoutScalable_Avkon::list_single_pane_t1( 0 ) ); + + formattedCellData->SetTextSubCellL( 1, + AknLayoutScalable_Avkon::list_single_pane_t1( 0 ) ); } itemDrawer->SetItemMarkReverse( ETrue ); @@ -3676,7 +3674,7 @@ d->SetStretchableTextSubCellL( 3, AknLayoutScalable_Avkon::list_double_time_pane_t2( 0 ), - AknLayoutScalable_Avkon::list_double_time_pane_vc_t2( 0 ) ); + AknLayoutScalable_Avkon::list_double_time_pane_vc_t2( 3 ) ); d->SetStretchableGraphicSubCellL( 4, AknLayoutScalable_Avkon::list_double_time_pane_g1( 0 ), @@ -3689,11 +3687,11 @@ // Conditional subcells must be added in priority order! d->SetStretchableConditionalSubCellL( 5, AknLayoutScalable_Avkon::list_double_time_pane_t1( 2 ), - AknLayoutScalable_Avkon::list_double_time_pane_vc_t2( 2 ), 2, 3 ); + AknLayoutScalable_Avkon::list_double_time_pane_vc_t2( 5 ), 2, 3 ); d->SetStretchableConditionalSubCellL( 4, AknLayoutScalable_Avkon::list_double_time_pane_t1( 1 ), - AknLayoutScalable_Avkon::list_double_time_pane_vc_t2( 1 ), 2, 3 ); + AknLayoutScalable_Avkon::list_double_time_pane_vc_t2( 4 ), 2, 3 ); _AKNTRACE_FUNC_EXIT; } @@ -3789,6 +3787,16 @@ itemDrawer->SetItemMarkReverse( ETrue ); itemDrawer->SetItemMarkPosition( 3 ); itemDrawer->SetItemMarkReplacement( KFirstMovingCSIconReplacement ); + + // Mirrored layout does not have smiley. + // for conversation + if ( !AknLayoutUtils::LayoutMirrored() && + itemDrawer->Flags() & CListItemDrawer::EDrawSmileyIcon ) + { + formattedCellData->InitSmileyL(); + // only second lable can have smiley icon now. + formattedCellData->SetSmileySubCellL(2); + } _AKNTRACE_FUNC_EXIT; } @@ -4200,7 +4208,7 @@ SetupStretchableListL( this, AknLayoutScalable_Avkon::list_setting_pane( 0 ), AknLayoutScalable_Avkon::list_setting_pane_vc( 0 ), - EFalse ); + ETrue ); SetSeparatorLinePosition( this, EAColumn ); @@ -4303,7 +4311,7 @@ SetupStretchableListL( this, AknLayoutScalable_Avkon::list_setting_number_pane( 0 ), AknLayoutScalable_Avkon::list_setting_number_pane_vc( 0 ), - EFalse ); + ETrue ); SetSeparatorLinePosition( this, EABColumn );