diff -r e686773b3f54 -r 04ab22b956c2 phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlaunchercustomlistboxdata.cpp --- a/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlaunchercustomlistboxdata.cpp Tue Feb 02 10:12:17 2010 +0200 +++ b/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlaunchercustomlistboxdata.cpp Fri Feb 19 22:40:27 2010 +0200 @@ -11,50 +11,29 @@ * * Contributors: * -* Description: +* Description: CCA customized control. Code has been modified to suit + CCA requirements. See CFormattedCellListBoxData +* in EIKCLBD.CPP. +* Ensure that this piece of code is in sync with Avkon EIKFRLBD.CPP(CFormattedCellListBoxData) * */ -/* - * ccappcommlaunchercustomlistboxdata.cpp - * - * Created on: 2009-11-2 - * Author: dev - */ -/* - * ============================================================================ - * Name : Eikfrlbd.cpp - * Part of : Avkon - * - * Description: - * Version: - * - * Copyright � 2002-2009 Nokia Corporation. - * This material, including documentation and any related - * computer programs, is protected by copyright controlled by - * Nokia Corporation. All rights are reserved. Copying, - * including reproducing, storing, adapting or translating, any - * or all of this material requires the prior written consent of - * Nokia Corporation. This material also contains confidential - * information which may not be disclosed to others without the - * prior written consent of Nokia Corporation. - * ============================================================================ - */ + #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include -#include +#include #include #include -//#include + #include #include #include @@ -69,9 +48,8 @@ #include #endif //RD_UI_TRANSITION_EFFECTS_LIST -#ifdef RD_TACTILE_FEEDBACK + #include -#endif //RD_TACTILE_FEEDBACK // there are 17(!) subcells in qdial grid (0 ... 16) const TInt KMaxSubCellIndex = 16 + 1; @@ -992,9 +970,9 @@ cc = SkinBackgroundContext(); } - return AknsDrawUtils::DrawBackground(AknsUtils::SkinInstance(), cc, - iControl, aGc, TPoint(0, 0), itemRect, - KAknsDrawParamBottomLevelRGBOnly); + TBool ret = AknsDrawUtils::DrawBackground( AknsUtils::SkinInstance(), cc, iControl, aGc, TPoint(0,0), + itemRect, KAknsDrawParamBottomLevelRGBOnly ); + return ret; } // ----------------------------------------------------------------------------- @@ -1298,22 +1276,25 @@ void CCCAppCommLauncherCustomListBoxData::SetSkinPopupFrame( const TAknsItemID *aFrameId, const TAknsItemID *aFrameCenterId) { - if (iExtension && iExtension->iPopupFrame) - { - iExtension->iPopupFrame->SetFrame(*aFrameId); - iExtension->iPopupFrame->SetCenter(*aFrameCenterId); - } - else - { - TRAPD(err, iExtension->iPopupFrame = CAknsFrameBackgroundControlContext::NewL( + if ( iExtension ) + { + if ( iExtension->iPopupFrame ) + { + iExtension->iPopupFrame->SetFrame(*aFrameId); + iExtension->iPopupFrame->SetCenter(*aFrameCenterId); + } + else + { + TRAPD(err, iExtension->iPopupFrame = CAknsFrameBackgroundControlContext::NewL( KAknsIIDNone, TRect(0,0,1,1), // these must be set by using SetSkinPopupFramePosition TRect(0,0,1,1), EFalse ) ); - if (!err) - { - iExtension->iPopupFrame->SetFrame(*aFrameId); - iExtension->iPopupFrame->SetCenter(*aFrameCenterId); + if (!err) + { + iExtension->iPopupFrame->SetFrame(*aFrameId); + iExtension->iPopupFrame->SetCenter(*aFrameCenterId); + } } } } @@ -1748,27 +1729,27 @@ TListItemProperties aProperties, CWindowGc& aGc, const TDesC* aText, const TRect& aItemRect, TBool aHighlight, const TColors& aColors) const { + CListBoxView* view = static_cast( iExtension->iControl )->View(); + if (!view->ViewRect().Intersects(aItemRect)) + { + // outside of the clipping rect -> don't process this item + return; + } if (aHighlight) { iExtension->iClippedSubcells = 0; } #ifdef RD_UI_TRANSITION_EFFECTS_LIST - MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal(&aGc); - TBool effectsDisabled = ETrue; - - if (transApi) - { - transApi->StartDrawing(MAknListBoxTfxInternal::EListItem); - effectsDisabled = transApi->EffectsDisabled(); - - if (effectsDisabled) - { - CListBoxView* view = - static_cast (iExtension->iControl)->View(); - aGc.SetClippingRect(view->ViewRect()); - } - } + MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( &aGc ); + if ( transApi ) + { + transApi->StartDrawing( MAknListBoxTfxInternal::EListItem ); + if(transApi->EffectsDisabled()) + { + aGc.SetClippingRect( view->ViewRect() ); + } + } #else CListBoxView* view = static_cast( iExtension->iControl )->View(); aGc.SetClippingRect( view->ViewRect() ); @@ -1794,7 +1775,7 @@ #ifdef RD_UI_TRANSITION_EFFECTS_LIST if (transApi) { - if (effectsDisabled) + if(transApi->EffectsDisabled()) { aGc.CancelClippingRect(); } @@ -1873,189 +1854,186 @@ TPtrC tempText; TRect textShadowRect; // For transparent list TRgb textShadowColour = AKN_LAF_COLOR_STATIC(215); // Black shadow for item text. - MAknsControlContext *cc = AknsDrawUtils::ControlContext(Control()); - TBool skinEnabled = AknsUtils::AvkonSkinEnabled(); - - if (!cc) - { - cc = SkinBackgroundContext(); - } - - TAknTextLineLayout textLines[KMaxSubCellIndex]; - TBool rectClipped[KMaxSubCellIndex]; - - Mem::FillZ(&rectClipped[0], KMaxSubCellIndex * sizeof(TBool)); - - if (iExtension->iSubCellsMightIntersect) - { - CheckIfSubCellsIntersect(&textLines[0], &rectClipped[0], *aText, - aItemRect); - } + MAknsControlContext *cc = AknsDrawUtils::ControlContext( Control() ); + if (!cc) + { + cc = SkinBackgroundContext(); + } + + TAknTextLineLayout textLines[KMaxSubCellIndex]; + TBool rectClipped[KMaxSubCellIndex]; + + Mem::FillZ( &rectClipped[0], KMaxSubCellIndex * sizeof( TBool ) ); + + if ( iExtension->iSubCellsMightIntersect ) + { + CheckIfSubCellsIntersect( &textLines[0], &rectClipped[0], *aText, aItemRect ); + } TInt SCindex = 0; - // This loop does the drawing. - aGc.SetPenStyle(CGraphicsContext::ENullPen); - subcell = 0; - FOREVER{ - if (subcell>lastSubCell) - { - break; - } - - TextUtils::ColumnText(text,subcell, aText); - if (text == KNullDesC) - { - // empty subcell, continue to draw next subcell - ++ subcell; - continue; - } - if (!iExtension) break; - if (iExtension->FindSLSubCellIndex(SCindex,subcell)!=0) break; - - if (UseSubCellColors(subcell)) - { - subcellColors = &SubCellColors(subcell); - } - else - { - subcellColors = &aColors; - } - - TRgb color; - - if (aHighlight) - { - color = subcellColors->iHighlightedText; - aGc.SetBrushColor(subcellColors->iHighlightedBack); - if ( skinEnabled ) - { - if ( iExtension->iHighlightedTextColor != NULL ) - { - color = iExtension->iHighlightedTextColor; - } - } - } - else - { - color = subcellColors->iText; - aGc.SetBrushColor(subcellColors->iBack); - if ( skinEnabled ) - { - if ( iExtension->iTextColor != NULL ) - { - color = iExtension->iTextColor; - } - } - } - - // graphics or text column - if (iExtension->AtSL(SCindex).iSubCellType == CCCAppCommLauncherCustomListBoxDataExtension::EAknSLText) - { - const CFont* rowAndCellFont=RowAndSubCellFont(iExtension->iCurrentlyDrawnItemIndex,subcell); - const CFont* cellFont=Font(aProperties, subcell); - const CFont* tempFont=(cellFont) ? cellFont : NULL; - const CFont* usedFont=(rowAndCellFont) ? rowAndCellFont : tempFont; - - TAknTextLineLayout textLineLayout = NULL; - - if ( rectClipped[subcell] ) - { - textLineLayout = textLines[subcell]; - } - else - { - // check if there are icons affecting this text layout - TInt gSC = iExtension->AtSL(SCindex).iConditionValue; // graphical subcell which might affect this text subcell - - if (gSC> -1) - { - TInt tempIndex; - while (gSC> -1) // when gSC == -1, we have found our graphical subcell - - { - if (iExtension->FindSLSubCellIndex(tempIndex,gSC)!=0) break; - TextUtils::ColumnText(tempText,gSC, aText); - if (tempText != KNullDesC) - { - textLineLayout = iExtension->AtSL(tempIndex).iTextLayout; - break; - } - gSC = iExtension->AtSL(tempIndex).iConditionValue; - } - } - - if (gSC == -1) // no affecting icons -> use default layout - - { - textLineLayout = iExtension->AtSL(SCindex).iTextLayout; - } - } - - CGraphicsContext::TTextAlign align=SubCellAlignment(subcell); //gumq - TBool isLayoutAlignment = iExtension->SubCellLayoutAlignment(subcell); //gumq - if( !isLayoutAlignment ) - { - switch(align) - { - case CGraphicsContext::ELeft : - { - textLineLayout.iJ = ELayoutAlignLeft; - } - break; - case CGraphicsContext::ECenter: - { - textLineLayout.iJ = ELayoutAlignCenter; - } - break; - case CGraphicsContext::ERight: - { - textLineLayout.iJ = ELayoutAlignRight; - } - break; - default: break; - }; - } - - TAknLayoutText textLayout; - textLayout.LayoutText(textRect, textLineLayout, usedFont); - - SetUnderlineStyle( aProperties, aGc, subcell ); - - // * 2 == leave some room for marquee - const TInt maxlen( KMaxColumnDataLength * 2 ); - TBuf convBuf = text.Left(maxlen); - - // Note that this potentially modifies the text so its lenght in pixels - // might increase. Therefore, this should always be done before - // wrapping/clipping text. In some cases, WordWrapListItem is called - // before coming here. Is it certain that it is not done for number subcells? - - // Do number conversion if required. - if (SubCellIsNumberCell(subcell)) - { - AknTextUtils::LanguageSpecificNumberConversion(convBuf); - } - - // Check whether logical to visual conversion should be done here or not. - TBool bidiConv = - iExtension->iUseLogicalToVisualConversion && - subcell != iExtension->iFirstWordWrappedSubcellIndex && - subcell != iExtension->iSecondWordWrappedSubcellIndex; - - TBool doesNotFit( EFalse ); - if ( aHighlight ) - { - doesNotFit = usedFont->TextWidthInPixels( convBuf )> textLayout.TextRect().Width(); - - if ( doesNotFit ) - { - iExtension->iClippedSubcells |= ( 1 << subcell ); - } - else - { - iExtension->iClippedSubcells &= ~( 1 << subcell ); - } + // This loop does the drawing. + aGc.SetPenStyle(CGraphicsContext::ENullPen); + subcell=0; + FOREVER + { + if (subcell>lastSubCell) + { + break; + } + + TextUtils::ColumnText(text,subcell, aText); + if (text == KNullDesC) + { + // empty subcell, continue to draw next subcell + ++ subcell; + continue; + } + if (!iExtension) break; + if (iExtension->FindSLSubCellIndex(SCindex,subcell)!=0) break; + + if (UseSubCellColors(subcell)) + { + subcellColors = &SubCellColors(subcell); + } + else + { + subcellColors = &aColors; + } + + TRgb color; + + if (aHighlight) + { + color = subcellColors->iHighlightedText; + aGc.SetBrushColor(subcellColors->iHighlightedBack); + if ( AknsUtils::AvkonSkinEnabled() ) + { + if ( iExtension->iHighlightedTextColor != NULL ) + { + color = iExtension->iHighlightedTextColor; + } + } + } + else + { + color = subcellColors->iText; + aGc.SetBrushColor(subcellColors->iBack); + if ( AknsUtils::AvkonSkinEnabled() ) + { + if ( iExtension->iTextColor != NULL ) + { + color = iExtension->iTextColor; + } + } + } + + // graphics or text column + if (iExtension->AtSL(SCindex).iSubCellType == CCCAppCommLauncherCustomListBoxDataExtension::EAknSLText) + { + const CFont* rowAndCellFont=RowAndSubCellFont(iExtension->iCurrentlyDrawnItemIndex,subcell); + const CFont* cellFont=Font(aProperties, subcell); + const CFont* tempFont=(cellFont) ? cellFont : NULL; + const CFont* usedFont=(rowAndCellFont) ? rowAndCellFont : tempFont; + + TAknTextLineLayout textLineLayout = NULL; + + if ( rectClipped[subcell] ) + { + textLineLayout = textLines[subcell]; + } + else + { + // check if there are icons affecting this text layout + TInt gSC = iExtension->AtSL(SCindex).iConditionValue; // graphical subcell which might affect this text subcell + + if (gSC > -1) + { + TInt tempIndex; + while (gSC > -1) // when gSC == -1, we have found our graphical subcell + { + if (iExtension->FindSLSubCellIndex(tempIndex,gSC)!=0) break; + TextUtils::ColumnText(tempText,gSC, aText); + if (tempText != KNullDesC) + { + textLineLayout = iExtension->AtSL(tempIndex).iTextLayout; + break; + } + gSC = iExtension->AtSL(tempIndex).iConditionValue; + } + } + + if (gSC == -1) // no affecting icons -> use default layout + { + textLineLayout = iExtension->AtSL(SCindex).iTextLayout; + } + } + + + CGraphicsContext::TTextAlign align=SubCellAlignment(subcell); //gumq + TBool isLayoutAlignment = iExtension->SubCellLayoutAlignment(subcell); //gumq + if( !isLayoutAlignment ) + { + switch(align) + { + case CGraphicsContext::ELeft : + { + textLineLayout.iJ = ELayoutAlignLeft; + } + break; + case CGraphicsContext::ECenter: + { + textLineLayout.iJ = ELayoutAlignCenter; + } + break; + case CGraphicsContext::ERight: + { + textLineLayout.iJ = ELayoutAlignRight; + } + break; + default: break; + }; + } + + TAknLayoutText textLayout; + textLayout.LayoutText(textRect, textLineLayout, usedFont); + + SetUnderlineStyle( aProperties, aGc, subcell ); + + // * 2 == leave some room for marquee + const TInt maxlen( KMaxColumnDataLength * 2 ); + TBuf convBuf = text.Left(maxlen); + + // Note that this potentially modifies the text so its lenght in pixels + // might increase. Therefore, this should always be done before + // wrapping/clipping text. In some cases, WordWrapListItem is called + // before coming here. Is it certain that it is not done for number subcells? + + // Do number conversion if required. + if (SubCellIsNumberCell(subcell)) + { + AknTextUtils::LanguageSpecificNumberConversion(convBuf); + } + + // Check whether logical to visual conversion should be done here or not. + TBool bidiConv = + iExtension->iUseLogicalToVisualConversion && + subcell != iExtension->iFirstWordWrappedSubcellIndex && + subcell != iExtension->iSecondWordWrappedSubcellIndex; + + TBool doesNotFit( EFalse ); + if ( aHighlight ) + { + doesNotFit = usedFont->TextWidthInPixels( convBuf ) > textLayout.TextRect().Width(); + + if ( doesNotFit ) + { + iExtension->iClippedSubcells |= ( 1 << subcell ); + } + else + { + iExtension->iClippedSubcells &= ~( 1 << subcell ); + } if ( iExtension->iUseClippedByWrap ) // override if already clipped @@ -2554,8 +2532,19 @@ iExtension->iAnimFlags.Set( CCCAppCommLauncherCustomListBoxDataExtension::EFlagUpdateBg); } + else if( ( aType == KEikMessageUnfadeWindows ) || + ( aType == KEikMessageFadeAllWindows ) ) + { + if( iExtension->iMarquee ) + { + iExtension->iMarquee->HandleResourceChange( aType ); + } + if( iExtension->i2ndLineMarquee ) + { + iExtension->i2ndLineMarquee->HandleResourceChange( aType ); + } + } } - // ----------------------------------------------------------------------------- // CCCAppCommLauncherCustomListBoxData::HighlightAnim // ----------------------------------------------------------------------------- @@ -2785,7 +2774,7 @@ void CCCAppCommLauncherCustomListBoxData::SetSubCellIconSize( TInt aIndex, TSize aSize) { - if (iExtension && aIndex <= KMaxSubCellIndex && aIndex >= 0) + if ( iExtension && aIndex < KMaxSubCellIndex && aIndex >= 0 ) { iExtension->iSubCellIconSize[aIndex] = aSize; } @@ -2793,7 +2782,7 @@ TSize CCCAppCommLauncherCustomListBoxData::GetSubCellIconSize(TInt aIndex) { - if (iExtension && aIndex <= KMaxSubCellIndex && aIndex >= 0) + if ( iExtension && aIndex < KMaxSubCellIndex && aIndex >= 0 ) { return iExtension->iSubCellIconSize[aIndex]; } @@ -2975,7 +2964,7 @@ { TInt B = aBaseline; - if( /*TAknFontId::IsEncodedFont(aFontId) &&*/ aFontId != ELayoutEmpty ) // This tells us that the font id has come from scalable layout API + if( TAknFontId::IsEncodedFont(aFontId) && aFontId != ELayoutEmpty ) // This tells us that the font id has come from scalable layout API { TInt b = aBaseline; if (IsParentRelative(b)) { b = aParentHeight - ELayoutP + b; } @@ -3089,18 +3078,16 @@ { if (!aUse && iExtension->iSimpleList) { - CEikFormattedCellListBox - * list = - static_cast (iExtension->iControl); - MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( - list->View()->ItemDrawer()->Gc()); - if (transApi) - { - transApi->SetPosition(MAknListBoxTfxInternal::EListTLMargin, - TPoint(0, 0)); - transApi->SetPosition(MAknListBoxTfxInternal::EListBRMargin, - TPoint(0, 0)); - } +#ifdef RD_UI_TRANSITION_EFFECTS_LIST + CEikFormattedCellListBox* list = static_cast( iExtension->iControl ); + MAknListBoxTfxInternal* transApi = + CAknListLoader::TfxApiInternal( list->View()->ItemDrawer()->Gc() ); + if ( transApi ) + { + transApi->SetPosition( MAknListBoxTfxInternal::EListTLMargin, TPoint( 0, 0 ) ); + transApi->SetPosition( MAknListBoxTfxInternal::EListBRMargin, TPoint( 0, 0 ) ); + } +#endif } iExtension->iSimpleList = aUse; } @@ -3333,7 +3320,6 @@ TInt lastSubCell = Min(KMaxSubCellIndex, LastSubCell()); TPtrC text; TBool isEmpty[KMaxSubCellIndex]; - TBool layoutMirrored = AknLayoutUtils::LayoutMirrored(); // cache the empty text states while (ETrue) @@ -3393,44 +3379,41 @@ TRect bRect2(SubCellPosition(subCell2), SubCellSize(subCell2)); - if (bRect.Intersects(bRect2) && !SubCellIsTransparent(subCell) - && !SubCellIsTransparent(subCell2)) - { - aResults[subCell] = ETrue; - - if (!layoutMirrored) - { - bRect.iBr.iX = bRect2.iTl.iX; - } - else - { - bRect.iTl.iX = bRect2.iBr.iX; - } - } - } - - if (aResults[subCell]) - { - if (iExtension->AtSL(subCellIndex).iSubCellType - == CCCAppCommLauncherCustomListBoxDataExtension::EAknSLText) - { - TAknTextLineLayout textLine = - iExtension->AtSL(subCellIndex).iTextLayout; - - textLine.iW = bRect.Width(); - - if (!layoutMirrored) - { - textLine.ir = aItemRect.iBr.iX - bRect.iBr.iX; - } - else - { - textLine.il = bRect.iTl.iX - aItemRect.iTl.iX; - } - - aLayouts[subCell] = textLine; - } - } + if ( bRect.Intersects( bRect2 ) && !SubCellIsTransparent( subCell ) && !SubCellIsTransparent( subCell2 ) ) + { + aResults[subCell] = ETrue; + + if ( !AknLayoutUtils::LayoutMirrored() ) + { + bRect.iBr.iX = bRect2.iTl.iX; + } + else + { + bRect.iTl.iX = bRect2.iBr.iX; + } + } + } + + if ( aResults[subCell] ) + { + if ( iExtension->AtSL( subCellIndex ).iSubCellType == CCCAppCommLauncherCustomListBoxDataExtension::EAknSLText ) + { + TAknTextLineLayout textLine = iExtension->AtSL( subCellIndex ).iTextLayout; + + textLine.iW = bRect.Width(); + + if ( !AknLayoutUtils::LayoutMirrored() ) + { + textLine.ir = aItemRect.iBr.iX - bRect.iBr.iX; + } + else + { + textLine.il = bRect.iTl.iX - aItemRect.iTl.iX; + } + + aLayouts[subCell] = textLine; + } + } ++subCell; } @@ -3568,8 +3551,7 @@ { cc = SkinBackgroundContext(); } - TBool linesShown = AknListBoxUtils::ListBoxLinesShown( - AknsUtils::SkinInstance(), cc); + Mem::FillZ(textNull, sizeof(textNull)); @@ -3609,8 +3591,7 @@ TRect bRect(SubCellPosition(subcell), SubCellSize(subcell)); TMargins m(SubCellMargins(subcell)); - TRect cRect(bRect.iTl + TSize(m.iLeft, m.iTop), bRect.Size() - TSize( - m.iRight + m.iLeft, m.iBottom + m.iTop)); + TRect cRect(bRect.iTl+TSize(m.iLeft,m.iTop),bRect.Size()-TSize(m.iRight+m.iLeft,m.iBottom+m.iTop)); for (subcell2 = subcell + 1; subcell2 <= lastSubCell; subcell2++) { @@ -3620,10 +3601,8 @@ } // This is called O(N^2) times - Do not put anything extra to it, it'll slow down drawing! - TRect bRect2(SubCellPosition(subcell2), SubCellSize(subcell2)); - if (cRect.Intersects(bRect2) && bRect.Intersects(bRect2) - && !SubCellIsTransparent(subcell) && !SubCellIsTransparent( - subcell2)) + TRect bRect2 = TRect(SubCellPosition(subcell2),SubCellSize(subcell2)); + if (cRect.Intersects(bRect2) && bRect.Intersects(bRect2) && !SubCellIsTransparent(subcell) && !SubCellIsTransparent(subcell2)) { if (!layoutMirrored) { @@ -3661,8 +3640,8 @@ // SetPosition, SetSize and margins support TRect bRect(SubCellPosition(subcell), SubCellRealSize(subcell)); TMargins m(SubCellMargins(subcell)); - TRect cRect(bRect.iTl + TSize(m.iLeft, m.iTop), SubCellRealTextSize( - subcell)); + TRect cRect(bRect.iTl+TSize(m.iLeft,m.iTop),SubCellRealTextSize(subcell)); + if (bRect.iBr.iX == 0) { @@ -3672,9 +3651,9 @@ if (layoutMirrored) { - TRect bRect(SubCellPosition(subcell), SubCellSize(subcell)); - TRect cRect2(bRect.iTl + TSize(m.iLeft, m.iTop), bRect.Size() - - TSize(m.iRight + m.iLeft, m.iBottom + m.iTop)); + TRect bRect = TRect(SubCellPosition(subcell),SubCellSize(subcell)); + TRect cRect2 = TRect(bRect.iTl+TSize(m.iLeft,m.iTop),bRect.Size()-TSize(m.iRight+m.iLeft,m.iBottom+m.iTop)); + TInt shift = (cRect2.Size() - SubCellRealTextSize(subcell)).iWidth; cRect.iTl.iX += shift; @@ -3735,12 +3714,10 @@ CGraphicsContext::TTextAlign align = SubCellAlignment(subcell); if (!SubCellIsGraphics(subcell)) { - const CFont* rowAndCellFont = RowAndSubCellFont( - iExtension->iCurrentlyDrawnItemIndex, subcell); - const CFont* cellFont = Font(aProperties, subcell); - const CFont* tempFont = (cellFont) ? cellFont : font; - const CFont* usedFont = (rowAndCellFont) ? rowAndCellFont - : tempFont; + const CFont* rowAndCellFont=RowAndSubCellFont(iExtension->iCurrentlyDrawnItemIndex,subcell); + const CFont* cellFont=Font(aProperties, subcell); + const CFont* tempFont=(cellFont) ? cellFont : font; + const CFont* usedFont=(rowAndCellFont) ? rowAndCellFont : tempFont; aGc.UseFont(usedFont); SetUnderlineStyle(aProperties, aGc, subcell); @@ -3749,9 +3726,7 @@ baseLineOffset -= cRect.iTl.iY; if (!baseLineOffset) { - baseLineOffset = (cRect.Size().iHeight - - usedFont->HeightInPixels()) / 2 - + usedFont->AscentInPixels(); + baseLineOffset = (cRect.Size().iHeight-usedFont->HeightInPixels())/2 + usedFont->AscentInPixels(); } TBuf clipbuf = @@ -3769,15 +3744,18 @@ TBool clipped(EFalse); TInt clipgap = SubCellTextClipGap(subcell); - if (iExtension->iUseLogicalToVisualConversion && subcell - != iExtension->iFirstWordWrappedSubcellIndex && subcell - != iExtension->iSecondWordWrappedSubcellIndex) - { - TInt maxClipWidth = textRect.Size().iWidth + clipgap; - - clipped = AknBidiTextUtils::ConvertToVisualAndClip( - text.Left(KMaxColumnDataLength), clipbuf, - *usedFont, textRect.Size().iWidth, maxClipWidth); + if ( iExtension->iUseLogicalToVisualConversion && + subcell != iExtension->iFirstWordWrappedSubcellIndex && + subcell != iExtension->iSecondWordWrappedSubcellIndex ) + { + TInt maxClipWidth = textRect.Size().iWidth + clipgap; + + clipped = AknBidiTextUtils::ConvertToVisualAndClip( + text.Left(KMaxColumnDataLength), + clipbuf, + *usedFont, + textRect.Size().iWidth, + maxClipWidth ); } if (clipped) @@ -3805,32 +3783,27 @@ if (iExtension->iUseClippedByWrap) // override if already clipped { - iExtension->iClippedSubcells - = iExtension->iClippedByWrap; + iExtension->iClippedSubcells = iExtension->iClippedByWrap; } } - CAknMarqueeControl* marquee = - subcell == 1 ? iExtension->iMarquee - : iExtension->i2ndLineMarquee; - - TBool - marqueeDisabled = - static_cast (Control())->View()->ItemDrawer()->Flags() - & CListItemDrawer::EDisableMarquee; - - if (aHighlight && iExtension->IsMarqueeOn() && clipped - && !marqueeDisabled) - { - // Let marquee know if it needs to do bidi conversion. - marquee->UseLogicalToVisualConversion(clipped); - - if (marquee->DrawText(aGc, textRect, text, baseLineOffset, - align, *usedFont)) - { - // All the loops have been executed -> the text needs to be truncated. - aGc.DrawText(clipbuf, textRect, baseLineOffset, align, - 0); + CAknMarqueeControl* marquee = + subcell == 1 ? iExtension->iMarquee : + iExtension->i2ndLineMarquee; + + TBool marqueeDisabled = + static_cast( + Control() )->View()->ItemDrawer()->Flags() & CListItemDrawer::EDisableMarquee; + + if ( aHighlight && iExtension->IsMarqueeOn() && clipped && !marqueeDisabled ) + { + // Let marquee know if it needs to do bidi conversion. + marquee->UseLogicalToVisualConversion( clipped ); + + if ( marquee->DrawText( aGc, textRect, text, baseLineOffset, align, *usedFont ) ) + { + // All the loops have been executed -> the text needs to be truncated. + aGc.DrawText( clipbuf, textRect, baseLineOffset, align, 0 ); } } else @@ -3842,34 +3815,30 @@ if (IsBackgroundDrawingEnabled()) { - aGc.DrawText(clipbuf, textRect, baseLineOffset, align, - 0); - } - else // "Transparent" list, draw text shadow first, then the actual text. - { - textShadowRect = textRect; - textShadowRect.Move(1, 1); - aGc.SetPenColor(textShadowColour); - aGc.DrawText(clipbuf, textShadowRect, baseLineOffset, - align, 0); - if (aHighlight) - { - aGc.SetPenColor(subcellColors->iHighlightedText); - } - else - { - aGc.SetPenColor(subcellColors->iText); - } - aGc.DrawText(clipbuf, textRect, baseLineOffset, align, - 0); + aGc.DrawText( clipbuf, textRect, baseLineOffset, align, 0 ); + } + else // "Transparent" list, draw text shadow first, then the actual text. + { + textShadowRect = textRect; + textShadowRect.Move( 1, 1 ); + aGc.SetPenColor( textShadowColour ); + aGc.DrawText( clipbuf, textShadowRect, baseLineOffset, align, 0 ); + if ( aHighlight ) + { + aGc.SetPenColor( subcellColors->iHighlightedText ); + } + else + { + aGc.SetPenColor( subcellColors->iText ); + } + aGc.DrawText( clipbuf, textRect, baseLineOffset, align, 0 ); } } if (iExtension->iPictoInterface) { iExtension->iPictoInterface->Interface()->DrawPictographsInText( - aGc, *usedFont, clipbuf, textRect, baseLineOffset, - align, 0); + aGc, *usedFont, clipbuf, textRect, baseLineOffset, align, 0 ); } // disable underline after first text. // at least phonebook uses this. See SetSubcellUnderlined to override @@ -3942,10 +3911,9 @@ break; } bmpRect = TRect(bmpPos, size); - TPoint posInBitmap = TPoint(0, 0) + bitmap->SizeInPixels() - - textRect.Size(); - posInBitmap.iX >> 1; - posInBitmap.iY >> 1; + TPoint posInBitmap = TPoint(0,0) + bitmap->SizeInPixels() - textRect.Size(); + posInBitmap.iX /= 2; + posInBitmap.iY /= 2; if (posInBitmap.iX < 0) { posInBitmap.iX = 0;