uifw/AvKon/src/eikfrlbd.cpp
branchRCL_3
changeset 55 aecbbf00d063
parent 51 fcdfafb36fe7
child 56 d48ab3b357f1
--- a/uifw/AvKon/src/eikfrlbd.cpp	Thu Aug 19 10:11:06 2010 +0300
+++ b/uifw/AvKon/src/eikfrlbd.cpp	Tue Aug 31 15:28:30 2010 +0300
@@ -15,12 +15,6 @@
 *
 */
 
-#ifdef __ARMCC__
-#pragma push
-#pragma O3
-#pragma Otime
-#pragma arm
-#endif // __ARMCC__
 
 #include <eikfrlbd.h>
 #include <aknlists.h>
@@ -40,8 +34,6 @@
 #include <aknlayoutscalable_avkon.cdl.h>
 #include <layoutmetadata.cdl.h>
 #include <aknphysics.h>
-#include <AknIconArray.h>
-#include <avkon.mbg>
 
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
@@ -50,7 +42,6 @@
 #endif //RD_UI_TRANSITION_EFFECTS_LIST
 
 #include <touchfeedback.h>
-#include <AknSmileyUtils.h>
 #include "akntrace.h"
 
 // there are 17(!) subcells in qdial grid (0 ... 16)
@@ -60,12 +51,6 @@
 const TInt KColorIconFlag = -1;
 const TInt KColorIconIdx  =  0;
 
-// Number of icons in marking mode icon array
-const TInt KMarkingModeIconArraySize = 2;
-
-// smiley text place holder
-_LIT( KPlaceHolder, "\xFFF0i" );
-
 /**
 * This class needs to be in .cpp file so that we do not accidentally make it
 * derivable; that would destroy all the binary compability advantages this
@@ -86,8 +71,7 @@
     public MAknPictographAnimatorCallBack,
     public MCoeForegroundObserver,
     public MAknsEffectAnimObserver,
-    public MListBoxItemChangeObserver,
-    public MAknSmileyObserver
+    public MListBoxItemChangeObserver
     {
 public:
     enum TFlag
@@ -133,7 +117,6 @@
         TAknWindowLineLayout iGraphicLayout;
         TInt iSubCellType;
         TInt iConditionValue; // used with conditional layouts for not always drawn subcells
-        TBool iSmileyCell;
         };
 
     SRowAndSubCell& At(TInt aArrayIndex);
@@ -142,8 +125,8 @@
     TInt FindRowAndSubCellIndex(TInt& aArrayIndex,TInt aRow,TInt aSubCell) const;
     void FindRowAndSubCellIndexOrAddL(TInt& aArrayIndex,TInt aRow,TInt aSubCell);
 
-    SSLSubCell& SLAt(TInt aArrayIndex);
-    const SSLSubCell& SLAt(TInt aArrayIndex) const;
+    SSLSubCell& AtSL(TInt aArrayIndex);
+    const SSLSubCell& AtSL(TInt aArrayIndex) const;
     void AddSLSubCellL(TInt aSubCell);
     TInt FindSLSubCellIndex(TInt& aArrayIndex, TInt aSubCell) const;
     void FindSLSubCellIndexOrAddL(TInt& aArrayIndex, TInt aSubCell);
@@ -184,13 +167,6 @@
                                  CWindowGc& aGc, 
                                  const TRect& aOutRect, 
                                  const TRect& aInnerRect ) const;
-    void DrawSmileyWithText( CWindowGc& aGc, const TDesC& aSmileyText, 
-                             const TAknLayoutText& aLayout, 
-                             TBool aUseLogicalToVisualConversion, 
-                             const TRgb &aColor);
-    TInt ConvertTextToSmiley( TDes& aText );
-    void LoadMarkingIconsL();
-
 private: // New internal methods
     TBool DrawHighlightBackground( CFbsBitGc& aGc );
     void PostDeleteAnimation();
@@ -212,9 +188,7 @@
         
     TInt FindSubCellExtIndex(TInt& aArrayIndex,TInt aSubCell) const;
     TBool SubCellLayoutAlignment(TInt aSubCellIndex) const;        
-public: // from MAknSmileyObserver
-    void SmileyStillImageLoaded( CAknSmileyIcon* aSmileyIcon );
-    void SmileyAnimationChanged( CAknSmileyIcon* aSmileyIcon );
+
 private: // From MAknPictographAnimatorCallBack
     void DrawPictographArea();
 
@@ -283,9 +257,6 @@
 
     TRect iMarginRect;    
     TBool iKineticScrolling;
-    CAknSmileyManager* iSmileyMan;
-    TSize iSmileySize; // last set simley size
-    CAknIconArray* iMarkingIconArray;
     };
 
 
@@ -334,7 +305,6 @@
 #endif
 
     iKineticScrolling = CAknPhysics::FeatureEnabled();
-    LoadMarkingIconsL();
     _AKNTRACE_FUNC_EXIT;
     }
 
@@ -346,7 +316,6 @@
     // Stop receiving foreground events
     CCoeEnv* env = CCoeEnv::Static();
     env->RemoveForegroundObserver( *this );
-    delete iSmileyMan;
 
     delete iRowAndSubCellArray;
     iRowAndSubCellArray = NULL;
@@ -363,13 +332,6 @@
     delete iAnimation;
     delete iColorBmp;
     delete iHiliBmp;
-    
-    if ( iMarkingIconArray )
-        {
-        iMarkingIconArray->ResetAndDestroy();
-        }
-
-    delete iMarkingIconArray;
     _AKNTRACE_FUNC_EXIT;
     }
 
@@ -441,7 +403,6 @@
     subcell.iGraphicLayout = NULL;
     subcell.iSubCellType = 0;
     subcell.iConditionValue = -1;
-    subcell.iSmileyCell = EFalse;
 
     TKeyArrayFix key(0,ECmpTInt32);
     iSLSubCellArray->InsertIsqL(subcell,key);
@@ -449,14 +410,14 @@
 
 
 CFormattedCellListBoxDataExtension::SSLSubCell& 
-CFormattedCellListBoxDataExtension::SLAt(TInt aArrayIndex)
+CFormattedCellListBoxDataExtension::AtSL(TInt aArrayIndex)
     {
     __ASSERT_DEBUG(aArrayIndex>=0 && aArrayIndex<iSLSubCellArray->Count(),Panic(EAknPanicOutOfRange));
     return(iSLSubCellArray->At(aArrayIndex));
     }
 
 const CFormattedCellListBoxDataExtension::SSLSubCell& 
-CFormattedCellListBoxDataExtension::SLAt(TInt aArrayIndex) const
+CFormattedCellListBoxDataExtension::AtSL(TInt aArrayIndex) const
     {
     __ASSERT_DEBUG(aArrayIndex>=0 && aArrayIndex<iSLSubCellArray->Count(),Panic(EAknPanicOutOfRange));
     return(iSLSubCellArray->At(aArrayIndex));
@@ -714,7 +675,6 @@
     DeleteAnim();
     TryCreateAnimation();
     TRAP_IGNORE(CreateColorBitmapsL());
-    TRAP_IGNORE( LoadMarkingIconsL() );
     _AKNTRACE_FUNC_EXIT;
     }
 
@@ -1225,16 +1185,7 @@
     return(iSubCellExtArray->At(index).iLayoutAlign);    
     }   
 
-void CFormattedCellListBoxDataExtension::SmileyStillImageLoaded(
-    CAknSmileyIcon* /*aSmileyIcon*/)
-    {
-    iControl->DrawDeferred();
-    }
-
-void CFormattedCellListBoxDataExtension::SmileyAnimationChanged( 
-    CAknSmileyIcon* /*aSmileyIcon*/ )
-    {
-    }
+
 
 ///////////handling TSubCellExt,end
 
@@ -1298,89 +1249,23 @@
                                      KAknsIIDQsnFrListCenterPressed );
     }
 
-void CFormattedCellListBoxDataExtension::DrawSmileyWithText( CWindowGc& aGc,
-                                                             const TDesC& aSmileyText,
-                                                             const TAknLayoutText& aLayout,
-                                                             TBool aUseLogicalToVisualConversion,
-                                                             const TRgb& aColor )
-    {
-    __ASSERT_DEBUG( iSmileyMan, Panic(EAknPanicObjectNotFullyConstructed));
-    TInt l = Min( aLayout.Font()->TextWidthInPixels(KPlaceHolder), 
-                  aLayout.Font()->HeightInPixels() );
-    TSize s(l,l);
-    if ( iSmileySize != s )
-        {
-        iSmileyMan->SetSize( s );
-        iSmileySize = s;
-        }
-    aGc.SetPenColor( aColor ); // SmileyManager's DrawText does not accept aColor...
-    iSmileyMan->DrawText( aGc, aSmileyText, aLayout, aUseLogicalToVisualConversion );
-    }
-TInt CFormattedCellListBoxDataExtension::ConvertTextToSmiley( TDes& aText)
-    {
-    __ASSERT_DEBUG( iSmileyMan, Panic(EAknPanicObjectNotFullyConstructed));
-    TInt count = 0;
-    TRAPD( err, count = iSmileyMan->ConvertTextToCodesL( aText )) ;
-    return err == KErrNone ? count : err;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CFormattedCellListBoxDataExtension::LoadMarkingIconsL
-// -----------------------------------------------------------------------------
-//
-void CFormattedCellListBoxDataExtension::LoadMarkingIconsL()
-    {
-    if ( !iMarkingIconArray )
-        {
-        iMarkingIconArray = new ( ELeave ) CAknIconArray( 
-                KMarkingModeIconArraySize );
-        }
-    else
-        {
-        iMarkingIconArray->ResetAndDestroy();
-        }
-
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    const TDesC& avkonIconFile = AknIconUtils::AvkonIconFileName();
-
-    CGulIcon* icon = AknsUtils::CreateGulIconL( skin, 
-            KAknsIIDQgnPropCheckboxOn, 
-            avkonIconFile, 
-            EMbmAvkonQgn_prop_checkbox_on, 
-            EMbmAvkonQgn_prop_checkbox_on_mask );
-    
-    CleanupStack::PushL( icon );
-    iMarkingIconArray->AppendL( icon );
-    CleanupStack::Pop( icon );
-
-    icon = AknsUtils::CreateGulIconL( skin, 
-            KAknsIIDQgnPropCheckboxOff, 
-            avkonIconFile, 
-            EMbmAvkonQgn_prop_checkbox_off, 
-            EMbmAvkonQgn_prop_checkbox_off_mask );
-
-    CleanupStack::PushL( icon );
-    iMarkingIconArray->AppendL( icon );
-    CleanupStack::Pop( icon );
-    }
-
 
 EXPORT_C CCoeControl *CFormattedCellListBoxData::Control() const 
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     return iExtension->iControl;
     }
 
 EXPORT_C void CFormattedCellListBoxData::SetSeparatorLinePosition(TAknSeparatorLinePosition aPosition)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    iExtension->iSeparatorLinePosition = aPosition;
+    if (iExtension)
+        iExtension->iSeparatorLinePosition = aPosition;
     }
 EXPORT_C TAknSeparatorLinePosition CFormattedCellListBoxData::SeparatorLinePosition() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    return iExtension->iSeparatorLinePosition;
+    if (iExtension)
+        return iExtension->iSeparatorLinePosition;
+    else
+        return ENoLine;
     }
 EXPORT_C CAknLayoutData *CFormattedCellListBoxData::LayoutData() const
     {
@@ -1400,13 +1285,11 @@
 
 EXPORT_C void CFormattedCellListBoxData::SetControl(CCoeControl *aControl)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     iExtension->SetControl( aControl );
     }
 
 EXPORT_C MAknsControlContext* CFormattedCellListBoxData::SkinBackgroundContext() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     if (iExtension->iSkinEnabled)
         {
         if (iExtension->iPopupFrame)
@@ -1427,20 +1310,18 @@
 
 EXPORT_C void CFormattedCellListBoxData::SetSkinEnabledL(TBool aEnabled)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     CListBoxData::SetSkinEnabledL(aEnabled);
     iExtension->iSkinEnabled = aEnabled;
     }
 
 EXPORT_C TBool CFormattedCellListBoxData::SkinEnabled() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     return iExtension->iSkinEnabled;
     }
 
 EXPORT_C void CFormattedCellListBoxData::SetSkinStyle(const TAknsItemID *id, const TRect &aTileRect)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
+
     if (iExtension->iSkinControlContext)
         {
         iExtension->iSkinControlContext->SetTiledBitmap(*id);
@@ -1449,7 +1330,6 @@
     }
 EXPORT_C void CFormattedCellListBoxData::SetSkinParentPos(const TPoint &aPos)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     if (iExtension->iSkinControlContext)
         {
         iExtension->iSkinControlContext->SetParentPos(aPos);
@@ -1457,7 +1337,6 @@
     }
 EXPORT_C void CFormattedCellListBoxData::SetBackgroundSkinStyle(const TAknsItemID *aId, const TRect &aRect)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     if (iExtension->iSkinControlContext)
         {
         iExtension->iSkinControlContext->SetBitmap(*aId);
@@ -1466,7 +1345,6 @@
     }
 EXPORT_C void CFormattedCellListBoxData::SetListEndSkinStyle(const TAknsItemID *aListEndId, const TRect &aRect)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     if (iExtension->iSkinControlContext)
         {
         iExtension->iSkinControlContext->SetBottomBitmap(*aListEndId);
@@ -1476,15 +1354,13 @@
 
 EXPORT_C void CFormattedCellListBoxData::SetSkinHighlightFrame(const TAknsItemID *aFrameId, const TAknsItemID *aFrameCenterId)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     iExtension->iSkinHighlightFrameId = aFrameId;
     iExtension->iSkinHighlightFrameCenterId = aFrameCenterId;
     }
     
 EXPORT_C void CFormattedCellListBoxData::SetSkinPopupFrame(const TAknsItemID *aFrameId, const TAknsItemID *aFrameCenterId)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    if ( iExtension->iPopupFrame)
+    if (iExtension && iExtension->iPopupFrame)
         {
         iExtension->iPopupFrame->SetFrame(*aFrameId);
         iExtension->iPopupFrame->SetCenter(*aFrameCenterId);
@@ -1506,27 +1382,24 @@
     
 EXPORT_C void CFormattedCellListBoxData::SetSkinPopupFramePosition(const TRect &aOuterRect, const TRect &aInnerRect)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    if ( iExtension->iPopupFrame)
+    if (iExtension && iExtension->iPopupFrame)
         iExtension->iPopupFrame->SetFrameRects(aOuterRect, aInnerRect);
     }
 
 EXPORT_C void CFormattedCellListBoxData::UseLogicalToVisualConversion(
     TBool aUseConversion )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
+    if (iExtension)
     iExtension->iUseLogicalToVisualConversion = aUseConversion;
     }
 
 void CFormattedCellListBoxData::CreatePictographInterfaceL()
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     iExtension->CreatePictographInterfaceL();
     }
 
 void CFormattedCellListBoxData::CreateMarqueeControlL()
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     TCallBack callBack(CFormattedCellListBoxDataExtension::RedrawEvent, iExtension->iControl);
     //iExtension->iMarquee = CAknMarqueeControl::NewL();
     iExtension->CreateMarqueeControlL();
@@ -1784,7 +1657,6 @@
 EXPORT_C void 
 CFormattedCellListBoxData::SetSubCellAlignmentL(TInt aSubCellIndex, CGraphicsContext::TTextAlign aAlign)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     TInt index = 0;
     FindSubCellIndexOrAddL(index,aSubCellIndex);
     At(index).iAlign=aAlign;
@@ -1932,14 +1804,15 @@
 
 EXPORT_C TBool CFormattedCellListBoxData::RespectFocus() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    return iExtension->iRespectFocus;
+    if (iExtension)
+        return iExtension->iRespectFocus;
+    return EFalse;
     }
 
 EXPORT_C void CFormattedCellListBoxData::SetRespectFocus(TBool aBool)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    iExtension->iRespectFocus = aBool;
+    if (iExtension)
+        iExtension->iRespectFocus = aBool;
     }
 
 EXPORT_C CFont* 
@@ -2312,7 +2185,6 @@
 EXPORT_C void CFormattedCellListBoxData::Draw(TListItemProperties aProperties, CWindowGc& aGc,const TDesC* aText,const TRect& aRect,TBool aHighlight, const TColors& aColors) const
     {
     _AKNTRACE_FUNC_ENTER;
-    _AKNTRACE("Highlight width: %d, (%d,%d)", aRect.Width(), aRect.iTl.iX, aRect.iBr.iX );
     DrawDefaultHighlight(aGc, aRect, aHighlight);
 
     // Draw the actual items.
@@ -2329,16 +2201,11 @@
                                           const TColors& aColors ) const
     {
     _AKNTRACE_FUNC_ENTER;
-    _AKNTRACE("DrawFormatted: aItemRect=(%d,%d,%d,%d)",
-            aItemRect.iTl.iX, aItemRect.iTl.iY, aItemRect.iBr.iX, 
+    _AKNTRACE("DrawFormatted: aText=%S, aItemRect=(%d,%d,%d,%d)",
+            aText, aItemRect.iTl.iX, aItemRect.iTl.iY, aItemRect.iBr.iX, 
             aItemRect.iBr.iY);
     
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    __ASSERT_DEBUG( iExtension->iControl, Panic( EAknPanicNullPointer ));
-
-    CEikListBox* listbox = static_cast<CEikListBox*>( iExtension->iControl ); 
-    CListBoxView* view = listbox->View();
-
+    CListBoxView* view = static_cast<CEikListBox*>( iExtension->iControl )->View();
     if (!view->ViewRect().Intersects(aItemRect))
         {
         // outside of the clipping rect -> don't process this item
@@ -2349,12 +2216,10 @@
         {
         iExtension->iClippedSubcells = 0;
         }
-
-    TBool backgroundDrawingSuppressed = listbox->BackgroundDrawingSuppressed();
     
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
     MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( &aGc );
-    if ( transApi && !backgroundDrawingSuppressed )
+    if ( transApi )
         {
         transApi->StartDrawing( MAknListBoxTfxInternal::EListItem );
         if(transApi->EffectsDisabled())
@@ -2363,13 +2228,10 @@
             }
         }
 #else
-    if ( !backgroundDrawingSuppressed )
-        {
-        aGc.SetClippingRect( view->ViewRect() );
-        }
+    CListBoxView* view = static_cast<CEikListBox*>( iExtension->iControl )->View();
+    aGc.SetClippingRect( view->ViewRect() );
 #endif //RD_UI_TRANSITION_EFFECTS_LIST
-    TRect vr(view->ViewRect());
-    _AKNTRACE("Clipping: Width %d, (%d,%d)", vr.Width(), vr.iTl.iX, vr.iBr.iX );
+    
     if ( UsesScalableLayoutData() )
         {
         /* this is a AvKon list or list is created using methods in aknlists.cpp
@@ -2387,7 +2249,7 @@
         }
 
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST  
-    if ( transApi && !backgroundDrawingSuppressed )
+    if ( transApi )
         {        
         if(transApi->EffectsDisabled())
             {
@@ -2397,10 +2259,7 @@
         transApi->StopDrawing();
         }
 #else
-    if ( !backgroundDrawingSuppressed )
-        {
-        aGc.CancelClippingRect();
-        }
+    aGc.CancelClippingRect();
 #endif //RD_UI_TRANSITION_EFFECTS_LIST 
     _AKNTRACE_FUNC_EXIT;
     }
@@ -2414,8 +2273,6 @@
                                           TBool           aColorIcon,
                                           const TRect&    aGraphicRect ) const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    
     // se also eikclbd.cpp ( sigh ).
     CFbsBitmap* bitmap( aIcon->Bitmap() );
     CFbsBitmap* mask( aIcon->Mask() );
@@ -2475,15 +2332,11 @@
                                                 const TColors& aColors ) const
     {
     _AKNTRACE_FUNC_ENTER;
-    _AKNTRACE("DrawFormattedSimple: aItemRect=(%d,%d,%d,%d)",
-            aItemRect.iTl.iX, aItemRect.iTl.iY, aItemRect.iBr.iX, 
+    _AKNTRACE("DrawFormattedSimple: aText=%S, aItemRect=(%d,%d,%d,%d)",
+            aText, aItemRect.iTl.iX, aItemRect.iTl.iY, aItemRect.iBr.iX, 
             aItemRect.iBr.iY);
     
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    
     TRect textRect(aItemRect);
-    DrawMarkingModeIcons( aProperties, aGc, textRect );
-    
     const TColors *subcellColors = &aColors;
 
     TInt lastSubCell = Min( LastSubCell(), KMaxSubCellIndex );
@@ -2507,7 +2360,7 @@
     
     if ( iExtension->iSubCellsMightIntersect )
         {
-        CheckIfSubCellsIntersect( &textLines[0], &rectClipped[0], *aText, textRect );
+        CheckIfSubCellsIntersect( &textLines[0], &rectClipped[0], *aText, aItemRect );
         }
 
     TInt SCindex=0;
@@ -2529,7 +2382,7 @@
             ++ subcell;
             continue;
             }
-
+        if (!iExtension) break;
         if (iExtension->FindSLSubCellIndex(SCindex,subcell)!=0) break;
 
         if (UseSubCellColors(subcell))
@@ -2542,13 +2395,12 @@
             }
             
         TRgb color;
-        CListBoxView* view = static_cast<CEikListBox*>( Control() )->View();
-        TBool useOverrideColor = view->ItemDrawer()->Flags() & CListItemDrawer::EUseOverrideSkinTextColor; 
+
         if (aHighlight)
             {
             color = subcellColors->iHighlightedText;
             aGc.SetBrushColor(subcellColors->iHighlightedBack); 
-            if ( AknsUtils::AvkonSkinEnabled() && !useOverrideColor )
+            if ( AknsUtils::AvkonSkinEnabled() )
                 {
                 if ( iExtension->iHighlightedTextColor != NULL )
                     {
@@ -2560,7 +2412,7 @@
             {
             color = subcellColors->iText;
             aGc.SetBrushColor(subcellColors->iBack);
-            if ( AknsUtils::AvkonSkinEnabled() && !useOverrideColor )
+            if ( AknsUtils::AvkonSkinEnabled() )
                 {
                 if ( iExtension->iTextColor != NULL )
                     {
@@ -2570,7 +2422,7 @@
             }
         
         // graphics or text column
-        if (iExtension->SLAt(SCindex).iSubCellType == CFormattedCellListBoxDataExtension::EAknSLText)
+        if (iExtension->AtSL(SCindex).iSubCellType == CFormattedCellListBoxDataExtension::EAknSLText)
             {
             const CFont* rowAndCellFont=RowAndSubCellFont(iExtension->iCurrentlyDrawnItemIndex,subcell);
             const CFont* cellFont=Font(aProperties, subcell);
@@ -2586,7 +2438,7 @@
             else
                 {
                 // check if there are icons affecting this text layout
-                TInt gSC = iExtension->SLAt(SCindex).iConditionValue; // graphical subcell which might affect this text subcell
+                TInt gSC = iExtension->AtSL(SCindex).iConditionValue; // graphical subcell which might affect this text subcell
                 
                 if (gSC > -1)
                     {
@@ -2597,16 +2449,16 @@
                         TextUtils::ColumnText(tempText,gSC, aText);
                         if (tempText != KNullDesC)
                             {
-                            textLineLayout = iExtension->SLAt(tempIndex).iTextLayout;
+                            textLineLayout = iExtension->AtSL(tempIndex).iTextLayout;
                             break;                      
                             }
-                        gSC = iExtension->SLAt(tempIndex).iConditionValue;
+                        gSC = iExtension->AtSL(tempIndex).iConditionValue;
                         }
                     }
                     
                 if (gSC == -1) // no affecting icons -> use default layout
                     {
-                    textLineLayout = iExtension->SLAt(SCindex).iTextLayout;
+                    textLineLayout = iExtension->AtSL(SCindex).iTextLayout;
                     }
                 }
 
@@ -2642,16 +2494,8 @@
             SetUnderlineStyle( aProperties, aGc, subcell );
 
             // * 2 == leave some room for marquee
-            const TInt maxlen( KMaxColumnDataLength * 3 );
+            const TInt maxlen( KMaxColumnDataLength * 2 ); 
             TBuf<maxlen> convBuf = text.Left(maxlen);
-            TBool smileyDraw = EFalse;
-            // do smiley convert before clipping. don't worry marquee now.            
-            if ( iExtension->iSmileyMan && 
-                 iExtension->SLAt(SCindex).iSmileyCell &&
-                 iExtension->ConvertTextToSmiley( convBuf ) > 0 )
-                {
-                smileyDraw = ETrue;
-                }
 
             // Note that this potentially modifies the text so its lenght in pixels
             // might increase. Therefore, this should always be done before
@@ -2716,16 +2560,7 @@
                     marquee->Stop();
                     }
 
-                if ( smileyDraw )
-                    {
-                    TRect tr(textLayout.TextRect());
-                    _AKNTRACE( "textLayout Width: %d (%d,%d)", tr.Width(), tr.iTl.iX, tr.iBr.iX );
-                    iExtension->DrawSmileyWithText( aGc, convBuf, textLayout, bidiConv, color );
-                    }
-                else
-                    {
                 textLayout.DrawText( aGc, convBuf, bidiConv, color );
-                    }
                 }
 
             if ( iExtension->iPictoInterface )
@@ -2800,7 +2635,6 @@
             
             if( !iIconArray )
                 {
-                ++ subcell;
                 continue;
                 }
 
@@ -2812,7 +2646,7 @@
              index = index & 0xffff; // mask off possible highlight icon
             __ASSERT_DEBUG((index>=0 && index<iIconArray->Count()),Panic(EAknPanicFormattedCellListInvalidBitmapIndex));
             
-            TAknWindowLineLayout graphicLayout = iExtension->SLAt(SCindex).iGraphicLayout;
+            TAknWindowLineLayout graphicLayout = iExtension->AtSL(SCindex).iGraphicLayout;
             TAknLayoutRect graphicRect; 
             
             graphicRect.LayoutRect(textRect,graphicLayout);
@@ -2846,72 +2680,6 @@
     _AKNTRACE_FUNC_EXIT;
     }
 
-// -----------------------------------------------------------------------------
-// CFormattedCellListBoxData::DrawMarkingModeIcons
-// -----------------------------------------------------------------------------
-//
-void CFormattedCellListBoxData::DrawMarkingModeIcons( 
-                                            TListItemProperties& aProperties,
-                                            CWindowGc& aGc,
-                                            TRect& aItemRect ) const
-    {
-    CEikListBox* listbox = static_cast<CEikListBox*>( Control() ); 
-    TRect textRect( aItemRect );
-    
-    if ( listbox->View()->ItemDrawer()->Flags() 
-            & CListItemDrawer::EMarkingModeEnabled 
-            && !aProperties.IsSelectionHidden()            
-            && iExtension->iMarkingIconArray
-            &&  iExtension->iMarkingIconArray->Count() 
-                == KMarkingModeIconArraySize )       
-        {
-        if ( AknLayoutUtils::LayoutMirrored() )
-            {
-            textRect.iBr.iX -= 
-                AknLayoutScalable_Avkon::list_double_graphic_pane_t1( 
-                    0 ).LayoutLine().ir;
-            }
-        else
-            {
-            textRect.iTl.iX += 
-                AknLayoutScalable_Avkon::list_double_graphic_pane_t1( 
-                    0 ).LayoutLine().il;
-            }                    
-
-        TAknLayoutRect layoutRect;
-        layoutRect.LayoutRect( aItemRect, 
-                AknLayoutScalable_Avkon::list_double_graphic_pane_g1( 0 ) );
-
-        // unchecked icon
-        CGulIcon* icon = ( *iExtension->iMarkingIconArray )[1];        
-        
-        if ( listbox->View()->ItemIsSelected( 
-                iExtension->iCurrentlyDrawnItemIndex ) )
-            {
-            icon = ( *iExtension->iMarkingIconArray )[0];        
-            }
-        
-        CFbsBitmap* bitmap = icon->Bitmap();
-
-        if ( bitmap )
-            {
-            TSize size( bitmap->SizeInPixels() ); // set size if not already
-            TSize targetSize( layoutRect.Rect().Size() );
-            
-            if ( size.iWidth != targetSize.iWidth && 
-                 size.iHeight != targetSize.iHeight )
-                {
-                AknIconUtils::SetSize( bitmap, targetSize,
-                        EAspectRatioPreservedAndUnusedSpaceRemoved ); 
-                }
-            aGc.BitBltMasked( layoutRect.Rect().iTl, 
-                              bitmap, 
-                              TRect( layoutRect.Rect().Size() ),
-                              icon->Mask(), EFalse );
-            }
-        aItemRect = textRect;
-        }    
-    }
 
 EXPORT_C 
 CFormattedCellListBoxData::CFormattedCellListBoxData()
@@ -3077,9 +2845,9 @@
     {
     _AKNTRACE_FUNC_ENTER;
     const TRect &aItemRect = aRect;
-
-    DrawDefaultHighlight( aGc, aItemRect, aHighlight );
-
+    
+    DrawPopupHighlight(aGc, aItemRect, aHighlight);
+    
     // Draw the actual items.
     DrawFormatted(aProperties,aGc,aText,aItemRect,aHighlight,aColors);
     _AKNTRACE_FUNC_EXIT;
@@ -3087,9 +2855,7 @@
 
 void CFormattedCellListBoxData::DrawDefaultHighlight(CWindowGc &aGc, const TRect &aItemRect, TBool aHighlight) const
     {
-    _AKNTRACE_FUNC_ENTER;    
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    
+    _AKNTRACE_FUNC_ENTER;
     // When this flag set, draw pressed down state and don't use animation.
     // There are several derived CListboxData in this file. All of them do  
     // this same thing.
@@ -3182,19 +2948,53 @@
     _AKNTRACE_FUNC_EXIT;
     }
 
+void CFormattedCellListBoxData::DrawSettingHighlight(CWindowGc &aGc, const TRect &aItemRect, TBool aHighlight) const
+    {
+    _AKNTRACE_FUNC_ENTER;
+    DrawDefaultHighlight( aGc, aItemRect, aHighlight );
+    _AKNTRACE_FUNC_EXIT;
+    }
+
+void CFormattedCellListBoxData::DrawPopupHighlight(CWindowGc &aGc, const TRect &aItemRect, TBool aHighlight) const
+    {
+    _AKNTRACE_FUNC_ENTER;
+    DrawDefaultHighlight( aGc, aItemRect, aHighlight );
+    _AKNTRACE_FUNC_EXIT;
+    }
+
+void CFormattedCellListBoxData::DrawPopupFrame(CWindowGc &aGc) const
+    {
+    _AKNTRACE_FUNC_ENTER;
+    CCoeControl* control = Control();
+
+    if ( control )
+        {
+        aGc.SetPenStyle( CGraphicsContext::ENullPen );
+
+        TBool done = AknsDrawUtils::Background( AknsUtils::SkinInstance(), 
+                                                iExtension->iPopupFrame, 
+                                                control, 
+                                                aGc, 
+                                                control->Rect() );
+        
+        if ( !done )
+            {
+            aGc.Clear( control->Rect() );
+            }
+        }
+    _AKNTRACE_FUNC_EXIT;
+    }
 
 void CFormattedCellListBoxData::SetWordWrappedSubcellIndices(
     TInt aFirstIndex,
     TInt aSecondIndex )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     iExtension->iFirstWordWrappedSubcellIndex = (TInt16)aFirstIndex;
     iExtension->iSecondWordWrappedSubcellIndex = (TInt16)aSecondIndex;
     }
 
 EXPORT_C void CFormattedCellListBoxData::EnableMarqueeL(TBool aEnable)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     // CreateMarqueeControlL does nothing if marquee already exists,
     // so let's just call it just in case.
     CreateMarqueeControlL();
@@ -3206,13 +3006,11 @@
 #ifdef __WINS__
 EXPORT_C const TBool CFormattedCellListBoxData::IsMarqueeOn()
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     return iExtension->IsMarqueeOn();
     }
 #else
 EXPORT_C TBool CFormattedCellListBoxData::IsMarqueeOn()
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     return iExtension->IsMarqueeOn();
     }
 #endif // __WINS__
@@ -3220,20 +3018,17 @@
 
 void CFormattedCellListBoxData::FocusGained()
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     iExtension->FocusGained();
     }
 
 void CFormattedCellListBoxData::FocusLost()
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     iExtension->FocusLost();
     }
 
 void CFormattedCellListBoxData::HandleResourceChange( TInt aType )
     {
     _AKNTRACE_FUNC_ENTER;
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     // Animation is skin dependent, whenever skin changes animation changes
     // too.
     if( KAknsMessageSkinChange == aType )
@@ -3267,8 +3062,9 @@
 //
 EXPORT_C const CAknsEffectAnim* CFormattedCellListBoxData::HighlightAnim() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    return iExtension->iAnimation;
+    if( iExtension )
+        return iExtension->iAnimation;
+    return NULL;
     }
 
 // -----------------------------------------------------------------------------
@@ -3277,7 +3073,10 @@
 //
 EXPORT_C void CFormattedCellListBoxData::AboutToDrawHighlightAnim() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
+    if( !iExtension )
+        {
+        return;
+        }
     if( !iExtension->iAnimation || !iExtension->iControl )
         {
         return;
@@ -3306,8 +3105,10 @@
 EXPORT_C void CFormattedCellListBoxData::SetHighlightAnimBackgroundDrawer(
     MListBoxAnimBackgroundDrawer* aDrawer )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    iExtension->iHighlightBgDrawer = aDrawer;
+    if( iExtension )
+        {
+        iExtension->iHighlightBgDrawer = aDrawer;
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -3316,12 +3117,14 @@
 //
 EXPORT_C void CFormattedCellListBoxData::SetItemCellSize( const TSize& aSize )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    if( iExtension->iAnimSize != aSize )
+    if( iExtension )
         {
-        iExtension->Play();
+        if( iExtension->iAnimSize != aSize )
+            {
+            iExtension->Play();
+            }
+        iExtension->iAnimSize = aSize;
         }
-    iExtension->iAnimSize = aSize;
     }
 
 // -----------------------------------------------------------------------------
@@ -3330,8 +3133,11 @@
 //
 EXPORT_C TBool CFormattedCellListBoxData::HasHighlightAnim() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    return ( iExtension->iAnimation != NULL );
+    if( !iExtension )
+        return EFalse;
+    if( !iExtension->iAnimation )
+        return EFalse;
+    return ETrue;
     }
 
 // -----------------------------------------------------------------------------
@@ -3341,7 +3147,9 @@
 EXPORT_C TBool CFormattedCellListBoxData::DrawHighlightAnim(
         CBitmapContext& aGc, const TRect& aRect ) const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
+    if( !iExtension )
+        return EFalse;
+
     if( !iExtension->iAnimation )
         return EFalse;
 
@@ -3350,7 +3158,6 @@
 
 void CFormattedCellListBoxData::ResetMarquee()
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     if (iExtension->iMarquee)
         {
         iExtension->iMarquee->Reset();
@@ -3363,7 +3170,6 @@
 
 TInt CFormattedCellListBoxData::CurrentMarqueeItemIndex()
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     return iExtension->iCurrentItem;
     }
 
@@ -3371,7 +3177,6 @@
     {
     _AKNTRACE("CFormattedCellListBoxData::SetCurrentMarqueeItemIndex aIndex=%d",
             aIndex);
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     
     iExtension->iCurrentItem = aIndex;
     }
@@ -3379,7 +3184,6 @@
 void CFormattedCellListBoxData::SetCurrentItemIndex(TInt aIndex)
     {
     _AKNTRACE("CFormattedCellListBoxData::SetCurrentItemIndex aIndex=%d", aIndex);
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     if( iExtension->iCurrentRow != aIndex )
         {
         iExtension->iAnimFlags.Set( CFormattedCellListBoxDataExtension::EFlagUpdateBg );
@@ -3391,14 +3195,16 @@
     {
     _AKNTRACE("CFormattedCellListBoxData::SetCurrentlyDrawnItemIndex aIndex=%d", 
             aIndex);
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    iExtension->iCurrentlyDrawnItemIndex = aIndex;
+    if ( iExtension )
+        {
+        iExtension->iCurrentlyDrawnItemIndex = aIndex;
+        }
     }
 
 EXPORT_C const CFont* 
 CFormattedCellListBoxData::RowAndSubCellFont(TInt aRow,TInt aSubCellIndex) const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
+    if (!iExtension) return 0;
     TInt index = 0;
     if (iExtension->FindRowAndSubCellIndex(index,aRow,aSubCellIndex)!=0)
         return 0;
@@ -3409,7 +3215,7 @@
                                                                TInt aSubCellIndex,
                                                                const CFont* aFont)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
+    if (!iExtension) return;
     TInt index = 0;
     iExtension->FindRowAndSubCellIndexOrAddL(index,aRowIndex,aSubCellIndex);
     iExtension->At(index).iFont=aFont;
@@ -3421,7 +3227,6 @@
 */ 
 EXPORT_C void CFormattedCellListBoxData::SetDrawBackground(const TBool aDrawBackground)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     iExtension->iDrawBackground = aDrawBackground;
     if( !aDrawBackground )
         {
@@ -3434,7 +3239,6 @@
 */ 
 TBool CFormattedCellListBoxData::IsBackgroundDrawingEnabled() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     return iExtension->iDrawBackground;
     }
 
@@ -3445,7 +3249,6 @@
 */ 
 void CFormattedCellListBoxData::SetDrawScrollbarBackground(const TBool aDrawBackground)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     iExtension->iDrawScrollbarBackground = aDrawBackground;
     }
 
@@ -3454,7 +3257,6 @@
 */ 
 TBool CFormattedCellListBoxData::IsScrollbarBackgroundDrawingEnabled() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     return iExtension->iDrawScrollbarBackground;
     }
 
@@ -3462,7 +3264,6 @@
 EXPORT_C void CFormattedCellListBoxData::SetMarqueeParams(const TInt aLoops, const TInt aScrollAmount, 
                                                           const TInt aScrollDelay, const TInt aInterval)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     if ( iExtension->iMarquee )
         {
         iExtension->iMarquee->SetLoops( aLoops );
@@ -3482,8 +3283,7 @@
 
 EXPORT_C void CFormattedCellListBoxData::SetSubCellIconSize(TInt aIndex, TSize aSize)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    if ( aIndex <= KMaxSubCellIndex && aIndex >= 0)
+    if (iExtension && aIndex <= KMaxSubCellIndex && aIndex >= 0)
         {
         iExtension->iSubCellIconSize[aIndex] = aSize;
         }
@@ -3491,8 +3291,7 @@
 
 TSize CFormattedCellListBoxData::GetSubCellIconSize(TInt aIndex)
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    if ( aIndex <= KMaxSubCellIndex && aIndex >= 0)
+    if (iExtension && aIndex <= KMaxSubCellIndex && aIndex >= 0)
         {
         return iExtension->iSubCellIconSize[aIndex];
         }
@@ -3561,8 +3360,6 @@
 // extended skin support
 void CFormattedCellListBoxData::SetESSTextColor( TAknsQsnTextColorsIndex aIndex )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    
     TRgb color;
     
     TInt error = AknsUtils::GetCachedColor( AknsUtils::SkinInstance(),
@@ -3579,7 +3376,6 @@
 // extended skin support
 void CFormattedCellListBoxData::SetESSHighlightedTextColor( TAknsQsnTextColorsIndex aIndex )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     TRgb color;
     
     TInt error = AknsUtils::GetCachedColor( AknsUtils::SkinInstance(),
@@ -3596,7 +3392,7 @@
 void CFormattedCellListBoxData::SetGraphicSubCellL( TInt aSubCell,
                                                     const TAknWindowLineLayout &aGraphicLayout )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
+    if ( !iExtension ) return;
     CEikFormattedCellListBox* list = static_cast<CEikFormattedCellListBox*>( iExtension->iControl );
     // this does happen with caknsetstyle, caknform(wide)style lists.
     // eventually they'll get here again with list!=0, so this check is enough
@@ -3604,9 +3400,9 @@
     
     TInt index = 0;
     iExtension->FindSLSubCellIndexOrAddL(index,aSubCell);
-    iExtension->SLAt(index).iTextLayout=NULL;
-    iExtension->SLAt(index).iGraphicLayout=aGraphicLayout;
-    iExtension->SLAt(index).iSubCellType=CFormattedCellListBoxDataExtension::EAknSLGraphic;
+    iExtension->AtSL(index).iTextLayout=NULL;
+    iExtension->AtSL(index).iGraphicLayout=aGraphicLayout;
+    iExtension->AtSL(index).iSubCellType=CFormattedCellListBoxDataExtension::EAknSLGraphic;
 
     // For compabitility - needed at least for text wrapping.
     // Beware - some of these WILL be overriden if you got here trough
@@ -3645,7 +3441,7 @@
 void CFormattedCellListBoxData::SetTextSubCellL( TInt aSubCell,
                                                  const TAknTextLineLayout &aTextLayout )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
+    if (!iExtension) return;
     CEikFormattedCellListBox* list = static_cast<CEikFormattedCellListBox*>( iExtension->iControl );
     // this does happen with caknsetstyle, caknform(wide)style lists.
     // eventually they'll get here again with list!=0, so this check is enough
@@ -3653,9 +3449,9 @@
 
     TInt index = 0;
     iExtension->FindSLSubCellIndexOrAddL(index,aSubCell);
-    iExtension->SLAt(index).iTextLayout=aTextLayout;
-    iExtension->SLAt(index).iGraphicLayout=NULL;
-    iExtension->SLAt(index).iSubCellType=CFormattedCellListBoxDataExtension::EAknSLText;
+    iExtension->AtSL(index).iTextLayout=aTextLayout;
+    iExtension->AtSL(index).iGraphicLayout=NULL;
+    iExtension->AtSL(index).iSubCellType=CFormattedCellListBoxDataExtension::EAknSLText;
 
     
     // For compabitility - needed at least for text wrapping.
@@ -3698,7 +3494,6 @@
                                                        const TAknTextLineLayout &aTextLayout,
                                                        TInt aAffectedSubCell)  
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     // iConditionValue of affected subcell (=text subcell, which has different layouts)
     // contains index of graphical subcell, which existence should be checked first.
     // This graphical subcell has in iConditionValue index of graphical subcell,
@@ -3708,6 +3503,8 @@
     // for compabitility - needed at least for text wrapping
     SetNotAlwaysDrawnSubCellL( aSubCell, ETrue );
 
+    if (!iExtension) return;
+
     TInt i = 0x01;
     i = i << aSubCell;
     iExtension->iConditionalCells = iExtension->iConditionalCells | i;
@@ -3715,22 +3512,22 @@
     TInt graphicalIndex = 0;
     if (iExtension->FindSLSubCellIndex(graphicalIndex, aSubCell)!=0) return; // subcell not found
     // conditional layoutline can be only added to graphical subcells
-    if (iExtension->SLAt(graphicalIndex).iSubCellType!=CFormattedCellListBoxDataExtension::EAknSLGraphic) return;
+    if (iExtension->AtSL(graphicalIndex).iSubCellType!=CFormattedCellListBoxDataExtension::EAknSLGraphic) return;
     
     TInt textIndex = 0; // index of affected subcell
     if (iExtension->FindSLSubCellIndex(textIndex, aAffectedSubCell)!=0) return; // subcell not found
     // affected subcell can only be text subcell
-    if (iExtension->SLAt(textIndex).iSubCellType==CFormattedCellListBoxDataExtension::EAknSLGraphic) return;
+    if (iExtension->AtSL(textIndex).iSubCellType==CFormattedCellListBoxDataExtension::EAknSLGraphic) return;
     
-    TInt gSC = iExtension->SLAt(textIndex).iConditionValue; // text subcell to be added in priority chain
+    TInt gSC = iExtension->AtSL(textIndex).iConditionValue; // text subcell to be added in priority chain
 
     while (gSC > -1)
         {
         if (iExtension->FindSLSubCellIndex(textIndex, gSC)!=0) return; // subcell not found
-        gSC = iExtension->SLAt(textIndex).iConditionValue;
+        gSC = iExtension->AtSL(textIndex).iConditionValue;
         }
-    iExtension->SLAt(textIndex).iConditionValue = aSubCell; // add next subcell to chain
-    iExtension->SLAt(graphicalIndex).iTextLayout=aTextLayout;
+    iExtension->AtSL(textIndex).iConditionValue = aSubCell; // add next subcell to chain
+    iExtension->AtSL(graphicalIndex).iTextLayout=aTextLayout;
 
     iExtension->CreateColorBitmapsL( SubCellSize( aSubCell ) );
     
@@ -3743,8 +3540,8 @@
         {
         iExtension->iMarginRect.BoundingRect( r );
         }
+    CEikFormattedCellListBox* list = static_cast<CEikFormattedCellListBox*>( iExtension->iControl );
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-    CEikFormattedCellListBox* list = static_cast<CEikFormattedCellListBox*>( iExtension->iControl );
     MAknListBoxTfxInternal* transApi =
         CAknListLoader::TfxApiInternal( list->View()->ItemDrawer()->Gc() );
     if ( transApi )
@@ -3764,40 +3561,50 @@
 //
 TBool CFormattedCellListBoxData::UsesScalableLayoutData() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    return iExtension->iSimpleList;
+    if (iExtension)
+        return iExtension->iSimpleList;
+
+    return EFalse;
     }
 void CFormattedCellListBoxData::UseScalableLayoutData( TBool aUse )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    if ( !aUse && iExtension->iSimpleList )
+    if ( iExtension )
         {
+        if ( !aUse && iExtension->iSimpleList )
+            {
 #ifdef RD_UI_TRANSITION_EFFECTS_LIST
-        CEikFormattedCellListBox* list = static_cast<CEikFormattedCellListBox*>( 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 ) );
+            CEikFormattedCellListBox* list = static_cast<CEikFormattedCellListBox*>( 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
             }
-#endif
+        iExtension->iSimpleList = aUse;
         }
-    iExtension->iSimpleList = aUse;
     }
 
 EXPORT_C void CFormattedCellListBoxData::SetSubcellUnderlined( TBitFlags32 aUnderlinedCells )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    iExtension->iUnderlineFlagSet = ETrue;
-    iExtension->iUnderlineFlags   = aUnderlinedCells;
+    if ( iExtension )
+        {
+        iExtension->iUnderlineFlagSet = ETrue;
+        iExtension->iUnderlineFlags   = aUnderlinedCells;
+        }
     }
 
 void CFormattedCellListBoxData::SetUnderlineStyle( TListItemProperties aProperties,
                                                    CWindowGc& aGc,
                                                    TInt aSubCell ) const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
+    if ( !iExtension )
+        {
+        return;
+        }
+
     if ( !iExtension->iUnderlineFlagSet )
         {
         // underlining is already either on or off and
@@ -3820,14 +3627,19 @@
 
 void CFormattedCellListBoxData::UseHighlightIconSwapping( TBool aUse )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    iExtension->iUseHighligthIconSwapping = aUse;
+    if ( iExtension )
+        {
+        iExtension->iUseHighligthIconSwapping = aUse;
+        }
     }
 
 TBool CFormattedCellListBoxData::UseHighlightIconSwapping() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    return iExtension->iUseHighligthIconSwapping;
+    if ( iExtension )
+        {
+        return iExtension->iUseHighligthIconSwapping;
+        }
+    return EFalse;
     }
 
 // -----------------------------------------------------------------------------
@@ -3883,19 +3695,16 @@
     TInt aNormalSubCell,
     TInt aStretchedSubCell )
     {
-    _AKNTRACE_FUNC_ENTER;
     if ( Layout_Meta_Data::IsLandscapeOrientation() &&
          Layout_Meta_Data::IsListStretchingEnabled() &&
          StretchingEnabled() )
         {
-        _AKNTRACE("Layout_Meta_Data::IsListStretchingEnabled");
         SetConditionalSubCellL( aSubCell, aStretchedLayout.LayoutLine(), aStretchedSubCell );
         }
     else
         {
         SetConditionalSubCellL( aSubCell, aNormalLayout.LayoutLine(), aNormalSubCell );
         }
-    _AKNTRACE_FUNC_EXIT;
     }
 
 
@@ -3905,7 +3714,11 @@
 //
 void CFormattedCellListBoxData::ResetSLSubCellArray()
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
+    if ( !iExtension )
+        {
+        return;
+        }
+
     iExtension->iMarginRect = TRect::EUninitialized;
 
     UseScalableLayoutData( EFalse );
@@ -3923,7 +3736,11 @@
 TBool CFormattedCellListBoxData::StretchingEnabled() const
     {
 #ifdef RD_LIST_STRETCH    
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));        
+    if ( !iExtension )
+        {
+        return EFalse;
+        }
+        
     return iExtension->iStretchingEnabled;
 #else
     return EFalse;
@@ -3937,7 +3754,11 @@
 //
 void CFormattedCellListBoxData::EnableStretching( const TBool aEnabled )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));        
+    if ( !iExtension )
+        {
+        return;
+        }
+        
     iExtension->iStretchingEnabled = aEnabled;        
     }
 
@@ -3947,7 +3768,11 @@
 //
 void CFormattedCellListBoxData::HideSecondRow( const TBool aHide )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));        
+    if ( !iExtension )
+        {
+        return;
+        }
+        
     iExtension->iHideSecondRow = aHide;        
     }
 #endif // RD_LIST_STRETCH
@@ -3958,7 +3783,11 @@
 //
 TBool CFormattedCellListBoxData::SecondRowHidden() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));        
+    if ( !iExtension )
+        {
+        return EFalse;
+        }
+        
     return iExtension->iHideSecondRow;        
     }
 
@@ -3968,7 +3797,10 @@
 //
 void CFormattedCellListBoxData::ToggleDropShadows( const TBool aEnable )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
+    if ( !iExtension )
+        {
+        return;
+        }
     iExtension->iUseDropShadows = aEnable;
     }
 
@@ -3982,7 +3814,6 @@
     const TDesC& aText, 
     const TRect& aItemRect ) const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     TInt subCell = 0;
     TInt subCell2;
     TInt subCellIndex;
@@ -4066,9 +3897,9 @@
             
         if ( aResults[subCell] )
             {
-            if ( iExtension->SLAt( subCellIndex ).iSubCellType == CFormattedCellListBoxDataExtension::EAknSLText )
+            if ( iExtension->AtSL( subCellIndex ).iSubCellType == CFormattedCellListBoxDataExtension::EAknSLText )
                 {
-                TAknTextLineLayout textLine = iExtension->SLAt( subCellIndex ).iTextLayout;
+                TAknTextLineLayout textLine = iExtension->AtSL( subCellIndex ).iTextLayout;
                 
                 textLine.iW = bRect.Width();
 
@@ -4095,7 +3926,6 @@
 //
 void CFormattedCellListBoxData::SubCellsMightIntersect( const TBool aMightIntersect )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
     iExtension->iSubCellsMightIntersect = aMightIntersect;
     }
 
@@ -4195,12 +4025,6 @@
     }
 
 
-struct TCellInfo
-    {
-    TBool iTextNull;
-    TPtrC iTextPtr;
-    };
-
 void 
 CFormattedCellListBoxData::DrawFormattedOld( TListItemProperties& aProperties,
                                              CWindowGc& aGc,
@@ -4210,75 +4034,48 @@
                                              const TColors& aColors ) const
     {
     _AKNTRACE_FUNC_ENTER;
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    _AKNTRACE( "DrawFormattedOld: aText=%S, aItemRect=(%d,%d,%d,%d)",
-               aText, aItemRect.iTl.iX,
-               aItemRect.iTl.iY,
-               aItemRect.iBr.iX, 
-               aItemRect.iBr.iY );
-
-    TRect itemRect( aItemRect );
+    TRect aRect(aItemRect);
+    const TColors *subcellColors = &aColors;
     
-    TInt lastSubCell = LastSubCell();
-    if ( lastSubCell == KErrNotFound )
+    TInt lastSubCell=LastSubCell();
+    if (lastSubCell==KErrNotFound)
         {
-        aGc.UseFont( CEikonEnv::Static()->NormalFont() );
-        // Use draw text so that there's no need to change pen color/style.
-        aGc.DrawText( TPtrC(), itemRect, 0 );
+        aGc.UseFont(CEikonEnv::Static()->NormalFont());
+        aGc.DrawText(TPtrC(),aRect,0); // use draw text so that don't need to change pen color/style
         aGc.DiscardFont(); // Release the font cache
-        _AKNTRACE_FUNC_EXIT;
         return;
         }
-    
-    CEikListBox* listbox = static_cast<CEikListBox*>( Control() ); 
-    
-    DrawMarkingModeIcons( aProperties, aGc, itemRect );
-    TInt iconOffset = aItemRect.Width() - itemRect.Width();
-    
-    const TColors* subcellColors = &aColors;
-    
     const CFont* font=SubCellFont(0);
     if (font==NULL)
         {
         font=CEikonEnv::Static()->NormalFont();
         }
     
-    TRect textRect( itemRect );
-    textRect.iBr.iX = itemRect.iTl.iX;
+    TInt extraVerticalSpace=(aRect.Height()-font->HeightInPixels());
+    TInt baseLineOffset=extraVerticalSpace/2+font->AscentInPixels();
+    TRect textRect=aRect;
+    textRect.iBr.iX=aRect.iTl.iX;
     TInt subcell=0;
     TInt subcell2=0;
-
-    TCellInfo textNull[30];
+    TPtrC text;
+    TBool textNull[30];
+    TRgb bmpBackColor, bmpForeColor;
     TRect textShadowRect;           // For transparent list
     TRgb textShadowColour = AKN_LAF_COLOR_STATIC(215);    // Black shadow for item text.
 
+    MAknsControlContext *cc = AknsDrawUtils::ControlContext( Control() );
     TBool layoutMirrored = AknLayoutUtils::LayoutMirrored();
     TBool skinEnabled = AknsUtils::AvkonSkinEnabled();
     
+    if (!cc)
+        {
+        cc = SkinBackgroundContext();
+        }
+
+    Mem::FillZ( textNull, sizeof( textNull ) );
 
     // cache the text states.
     subcell = 0;
-    
-    SSubCell defaultCell;
-    TMargins tm = {0,0,0,0};
-    defaultCell.iPosition = TPoint(0,0);
-    defaultCell.iSize = TSize(0,0);
-    defaultCell.iRealSize = TSize(0,0);
-    defaultCell.iRealTextSize = TSize(0,0);
-    defaultCell.iMargin = tm;
-    defaultCell.iUseSubCellColors = EFalse;
-    defaultCell.iColors = defaultcolors;
-    defaultCell.iGraphics = EFalse;
-    defaultCell.iAlign = CGraphicsContext::ELeft;
-    defaultCell.iBaseline = 0;
-    defaultCell.iNumberCell = EFalse;
-    defaultCell.iTextClipGap = 0;
-    defaultCell.iNotAlwaysDrawn = EFalse;
-    defaultCell.iTransparent = EFalse;
-    defaultCell.iBaseFont = 0;
-    SSubCell* sc;
-    
-    
     for(;;)
         {
         if (subcell>lastSubCell)
@@ -4286,27 +4083,10 @@
             break;
             }
         
-        TInt subcellindex = 0;
-        TInt subcellfound = 0;
-        subcellfound = FindSubCellIndex(subcellindex,subcell);
-        if (subcellfound != KErrNotFound)
-            {
-            sc = &(iSubCellArray->At(subcellindex));
-            }
-        else
+        TextUtils::ColumnText(text,subcell, aText);
+        if (text == KNullDesC && SubCellIsNotAlwaysDrawn(subcell))
             {
-            sc = &defaultCell;
-            }
-        
-        TextUtils::ColumnText(textNull[subcell].iTextPtr,subcell, aText);
-        
-        if (textNull[subcell].iTextPtr == KNullDesC && sc->iNotAlwaysDrawn)
-            {
-            textNull[subcell].iTextNull = ETrue;
-            }
-        else
-            {
-            textNull[subcell].iTextNull = EFalse;
+            textNull[subcell] = ETrue;
             }
 
         subcell++;
@@ -4322,59 +4102,33 @@
             break;
             }
         
-        if (textNull[subcell].iTextNull)
+        if (textNull[subcell])
             {
             ++subcell;
             continue;
             }
         
-        TInt subcellindex = 0;
-        TInt subcellfound = 0;
-        subcellfound = FindSubCellIndex(subcellindex,subcell);
-        if (subcellfound != KErrNotFound)
-            {
-            sc = &(iSubCellArray->At(subcellindex));
-            }
-        else
-            {
-            sc = &defaultCell;
-            }
+        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 bRect = TRect(sc->iPosition,sc->iSize);
-        bRect.iBr.iX -= iconOffset;
-        TMargins m = sc->iMargin;
-        TRect cRect = TRect(bRect.iTl+TSize(m.iLeft,m.iTop),bRect.Size()-TSize(m.iRight+m.iLeft,m.iBottom+m.iTop));
-        const TBool istrans = sc->iTransparent;
-        if (!layoutMirrored)
+        for (subcell2=subcell+1; subcell2<=lastSubCell; subcell2++) 
             {
-            for (subcell2=subcell+1; subcell2<=lastSubCell; subcell2++) 
+            if (textNull[subcell2])
                 {
-                if (textNull[subcell2].iTextNull)
-                    {
-                    continue;
-                    }
-                
-                // 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) && !istrans && !SubCellIsTransparent(subcell2)) 
+                continue;
+                }
+            
+            // This is called O(N^2) times - Do not put anything extra to it, it'll slow down drawing!
+            TRect bRect2 = TRect(SubCellPosition(subcell2),SubCellSize(subcell2));
+            if (cRect.Intersects(bRect2) && bRect.Intersects(bRect2) && !SubCellIsTransparent(subcell) && !SubCellIsTransparent(subcell2)) 
+                {
+                if (!layoutMirrored)
                     {
                     cRect.iBr.iX = bRect2.iTl.iX;
                     bRect.iBr.iX = bRect2.iTl.iX;
                     }
-                }
-            }
-        else
-            {
-            for (subcell2=subcell+1; subcell2<=lastSubCell; subcell2++) 
-                {
-                if (textNull[subcell2].iTextNull)
-                    {
-                    continue;
-                    }
-                
-                // 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) && !istrans && !SubCellIsTransparent(subcell2)) 
+                else
                     {
                     cRect.iTl.iX = bRect2.iBr.iX;
                     bRect.iTl.iX = bRect2.iBr.iX;
@@ -4383,8 +4137,6 @@
             }
         SetSubCellRealTextSize(subcell, cRect.Size());
         SetSubCellRealSize(subcell, bRect.Size());
-        sc->iRealTextSize = cRect.Size();
-        sc->iRealSize = bRect.Size();
         subcell++;
         }
     
@@ -4398,29 +4150,16 @@
             break;
             }
         
-        if (textNull[subcell].iTextNull)
+        if (textNull[subcell])
             {
             ++ subcell;
             continue;
             }
         
-        
-        TInt subcellindex = 0;
-        TInt subcellfound = 0;
-        subcellfound = FindSubCellIndex(subcellindex,subcell);
-        if (subcellfound != KErrNotFound)
-            {
-            sc = &(iSubCellArray->At(subcellindex));
-            }
-        else
-            {
-            sc = &defaultCell;
-            }
-        
         // SetPosition, SetSize and margins support
-        TRect bRect = TRect(sc->iPosition,sc->iRealSize);
-        TMargins m = sc->iMargin;
-        TRect cRect = TRect(bRect.iTl+TSize(m.iLeft,m.iTop),sc->iRealTextSize);
+        TRect bRect(SubCellPosition(subcell),SubCellRealSize(subcell));
+        TMargins m(SubCellMargins(subcell));
+        TRect cRect(bRect.iTl+TSize(m.iLeft,m.iTop),SubCellRealTextSize(subcell));
         
         
         if (bRect.iBr.iX == 0)
@@ -4431,38 +4170,37 @@
         
         if ( layoutMirrored ) 
             {
-            TRect bRect( sc->iPosition, sc->iSize );
-            bRect.iBr.iX -= iconOffset;
-            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() - sc->iRealTextSize).iWidth;
+            TInt shift = (cRect2.Size() - SubCellRealTextSize(subcell)).iWidth;
             cRect.iTl.iX += shift;
             cRect.iBr.iX += shift;
             }
         
-        textRect = TRect( itemRect.iTl + cRect.iTl, cRect.Size() );
+        textRect.SetRect(aItemRect.iTl+cRect.iTl,cRect.Size());
         
-        if (sc->iUseSubCellColors)
+        if (UseSubCellColors(subcell))
             {
-            subcellColors = &sc->iColors;
+            subcellColors = &SubCellColors(subcell);
             }
         else
             {
             subcellColors = &aColors;
             }
-        CListBoxView* view = listbox->View();
-        TBool useOverrideColor = view->ItemDrawer()->Flags() & CListItemDrawer::EUseOverrideSkinTextColor; 
+
         if (aHighlight)
             {
             aGc.SetPenColor(subcellColors->iHighlightedText);
             aGc.SetBrushColor(subcellColors->iHighlightedBack); 
-            if ( skinEnabled && !useOverrideColor )
+            bmpBackColor = subcellColors->iHighlightedBack;
+            bmpForeColor = subcellColors->iHighlightedText;
+            if ( skinEnabled && iExtension )
                 {
                 if ( iExtension->iHighlightedTextColor != NULL )
                     {
                     aGc.SetPenColor( iExtension->iHighlightedTextColor );
+                    bmpForeColor = iExtension->iHighlightedTextColor;
                     }
                 }
             }
@@ -4470,12 +4208,15 @@
             {
             aGc.SetPenColor(subcellColors->iText);
             aGc.SetBrushColor(subcellColors->iBack);
+            bmpBackColor = subcellColors->iBack;
+            bmpForeColor = subcellColors->iText;
             
-            if ( skinEnabled && !useOverrideColor )
+            if ( skinEnabled && iExtension )
                 {
                 if ( iExtension->iTextColor != NULL )
                     {
                     aGc.SetPenColor( iExtension->iTextColor );
+                    bmpForeColor = iExtension->iTextColor;
                     }
                 }
             }
@@ -4484,60 +4225,56 @@
         
         // The following draws subcells to textRect
         if (textRect.iBr.iX!=textRect.iTl.iX)
-            {          
+            {
+            TextUtils::ColumnText(text,subcell,aText);
+            
             // graphics or text column
-            CGraphicsContext::TTextAlign align=sc->iAlign;
-            if (!sc->iGraphics)
+            CGraphicsContext::TTextAlign align=SubCellAlignment(subcell);
+            if (!SubCellIsGraphics(subcell))
                 {
                 const CFont* rowAndCellFont=RowAndSubCellFont(iExtension->iCurrentlyDrawnItemIndex,subcell);
-                const CFont* cellFont=sc->iBaseFont;
+                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 );
                 
                 // baseline calc needed for each cell.
-                TInt baseLineOffset = sc->iBaseline;
+                baseLineOffset = SubCellBaselinePos(subcell);
                 baseLineOffset -= cRect.iTl.iY;
                 if (!baseLineOffset)
                     {
                     baseLineOffset = (cRect.Size().iHeight-usedFont->HeightInPixels())/2 + usedFont->AscentInPixels();
                     }
                 
-                TBuf<KMaxColumnDataLength + KAknBidiExtraSpacePerLine> clipbuf;// = sc->iColumnText.Left(KMaxColumnDataLength);
+                TBuf<KMaxColumnDataLength + KAknBidiExtraSpacePerLine> clipbuf = 
+                    text.Left(KMaxColumnDataLength);
                 
                 // 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?
-                TBool bufset = EFalse;
-                if (sc->iNumberCell)
+                if (SubCellIsNumberCell(subcell))
                     {
-                    clipbuf = textNull[subcell].iTextPtr.Left(KMaxColumnDataLength);
                     AknTextUtils::LanguageSpecificNumberConversion(clipbuf);
-                    bufset = ETrue;
                     }
                 
                 TBool clipped( EFalse );
-                TInt clipgap = sc->iTextClipGap;
+                TInt clipgap = SubCellTextClipGap( subcell );
                 
                 if ( iExtension->iUseLogicalToVisualConversion &&
                      subcell != iExtension->iFirstWordWrappedSubcellIndex &&
                      subcell != iExtension->iSecondWordWrappedSubcellIndex )
                     {
                     TInt maxClipWidth = textRect.Size().iWidth + clipgap;
-                
+                    
                     clipped = AknBidiTextUtils::ConvertToVisualAndClip(
-                        textNull[subcell].iTextPtr.Left(KMaxColumnDataLength), 
+                        text.Left(KMaxColumnDataLength), 
                         clipbuf,
                         *usedFont,
-                        textRect.Width(), 
+                        textRect.Size().iWidth, 
                         maxClipWidth );
                     }
-                else if (!bufset)
-                    {
-                    clipbuf = textNull[subcell].iTextPtr.Left(KMaxColumnDataLength);
-                    }
                 
                 if (clipped) 
                     {
@@ -4573,14 +4310,15 @@
                                    iExtension->i2ndLineMarquee;
                 
                 TBool marqueeDisabled =
-                    listbox->View()->ItemDrawer()->Flags() & CListItemDrawer::EDisableMarquee;
+                        static_cast<CEikListBox*>(
+                            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, textNull[subcell].iTextPtr, baseLineOffset, align, *usedFont ) )
+                    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 );
@@ -4627,7 +4365,7 @@
                 }
             else // Graphics subcell
                 {
-                TLex lex(textNull[subcell].iTextPtr);
+                TLex lex(text);
                 TInt index;
                 __ASSERT_ALWAYS(lex.Val(index)==KErrNone,Panic(EAknPanicFormattedCellListInvalidBitmapIndex));
                 __ASSERT_DEBUG(iIconArray, Panic(EAknPanicOutOfRange));
@@ -4641,38 +4379,39 @@
                     CGulIcon* icon=(*iIconArray)[index];
                     CFbsBitmap* bitmap=icon->Bitmap();
                     
-
-                    TInt w, h;
-                    TSize sz = bitmap->SizeInPixels();
-
-                    w = iExtension->iSubCellIconSize[subcell].iWidth;
-                    h = iExtension->iSubCellIconSize[subcell].iHeight;
-
-                    if (h != 0 && w != 0 && !( sz.iWidth == w || sz.iHeight == h ) )
+                    if ( iExtension )
                         {
-                        AknIconUtils::SetSize( bitmap,
-                                               iExtension->iSubCellIconSize[subcell],
-                                               EAspectRatioPreservedAndUnusedSpaceRemoved );
+                        TInt w, h;
+                        TSize sz = bitmap->SizeInPixels();
+                        
+                        w = iExtension->iSubCellIconSize[subcell].iWidth;
+                        h = iExtension->iSubCellIconSize[subcell].iHeight;
+                        
+                        if (h != 0 && w != 0 && !( sz.iWidth == w || sz.iHeight == h ) )
+                            {
+                            AknIconUtils::SetSize( bitmap,
+                                                   iExtension->iSubCellIconSize[subcell],
+                                                   EAspectRatioPreservedAndUnusedSpaceRemoved );
+                            }
+                        else if ( sz.iWidth == 0 || sz.iHeight == 0 ) // check if size is set at all
+                            {
+                            // just in case fallback
+                            AknIconUtils::SetSize( bitmap,
+                                                   textRect.Size(),
+                                                   EAspectRatioPreservedAndUnusedSpaceRemoved );
+                            }
                         }
-                    else if ( sz.iWidth == 0 || sz.iHeight == 0 ) // check if size is set at all
-                        {
-                        // just in case fallback
-                        AknIconUtils::SetSize( bitmap,
-                                               textRect.Size(),
-                                               EAspectRatioPreservedAndUnusedSpaceRemoved );
-                        }
-
                     
                     TSize size=bitmap->SizeInPixels();
                     
-                    if (size.iWidth>textRect.Width())
+                    if (size.iWidth>textRect.Size().iWidth)
                         {
-                        size.iWidth = textRect.Width();
+                        size.iWidth = textRect.Size().iWidth;
                         }
                     
-                    if (size.iHeight>textRect.Height())
+                    if (size.iHeight>textRect.Size().iHeight)
                         {
-                        size.iHeight = textRect.Height();
+                        size.iHeight = textRect.Size().iHeight;
                         }
                     
                     TPoint bmpPos=textRect.iTl;
@@ -4726,56 +4465,38 @@
 
 void CFormattedCellListBoxData::SetClippedByWrap( TUint32 aClippedCells, TBool aUseClippedByWrap )
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    iExtension->iClippedByWrap = aClippedCells;
-    iExtension->iUseClippedByWrap = aUseClippedByWrap;
+    if ( iExtension )
+        {
+        iExtension->iClippedByWrap = aClippedCells;
+        iExtension->iUseClippedByWrap = aUseClippedByWrap;
+        }
     }
 
 EXPORT_C TUint32 CFormattedCellListBoxData::CurrentItemTextWasClipped() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    return iExtension->iClippedSubcells;
+    return iExtension ? iExtension->iClippedSubcells : 0;
     }
 
 
 
 TBool CFormattedCellListBoxData::KineticScrollingEnabled() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    return iExtension->iKineticScrolling;
+    if ( iExtension )
+        {
+        return iExtension->iKineticScrolling;       
+        }
+    return EFalse;
     }
     
     
 CEikListBox* CFormattedCellListBoxData::ListBox() const
     {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicNullPointer ));
-    if ( iExtension->iControl )
+    if ( iExtension && iExtension->iControl )
         {
         return static_cast<CEikListBox*>( iExtension->iControl );
         }
     return NULL;
     }
-void CFormattedCellListBoxData::InitSmileyL()
-    {
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicObjectNotFullyConstructed ));
-    if ( !iExtension->iSmileyMan )
-        {
-        iExtension->iSmileyMan = CAknSmileyManager::NewL( iExtension );
-        }
-    }
-
-void CFormattedCellListBoxData::SetSmileySubCellL( TInt aSubCell )
-    {    
-    __ASSERT_DEBUG( iExtension, Panic( EAknPanicObjectNotFullyConstructed ));
-    TInt index = 0;
-    if ( iExtension )
-        {
-        iExtension->FindSLSubCellIndexOrAddL( index,aSubCell );
-        iExtension->SLAt(index).iSmileyCell = ETrue;
-        }
-    }
-#ifdef __ARMCC__
-#pragma pop
-#endif // __ARMCC__
+    
     
 // End of File