internetradio2.0/uicontrolssrc/iradvertisinglistbox.cpp
changeset 14 896e9dbc5f19
parent 12 608f67c22514
child 15 065198191975
--- a/internetradio2.0/uicontrolssrc/iradvertisinglistbox.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1060 +0,0 @@
-/*
-* Copyright (c) 2008-2008 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Listbox implementation supporting bitmap advertisement.
-*
-*/
-
-
-#include <gulicon.h>
-#include <stringloader.h>
-#include <internetradio.rsg>
-#include <aknbiditextutils.h> 
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <aknutils.h> 
-
-#include "irui.h"
-#include "irdebug.h"
-#include "irfavoritesdb.h"
-#include "irmainview.h"
-#include "irmaincontainer.h"
-#include "iradvertisinglistbox.h"
-
-const TInt KThree = 3;
-const TInt KFour = 4;
-const TInt KSix = 6;
-const TInt KTen = 10;
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::NewL
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisingListBoxData* CIRAdvertisingListBoxData::NewL()
-    {
-    CIRAdvertisingListBoxData* self = new (ELeave) CIRAdvertisingListBoxData();
-    CleanupStack::PushL( self );
-    self->ConstructLD();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::SetAdvertisementIcon
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBoxData::SetAdvertisementIcon( CGulIcon* aIcon )
-    {
-    delete iIcon;
-    iIcon = aIcon;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::AdvertisementIcon
-// ---------------------------------------------------------------------------
-//
-CGulIcon* CIRAdvertisingListBoxData::AdvertisementIcon()
-    {
-    return iIcon;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::SetControlFlag
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBoxData::SetControlFlag(TBool aControlFlag)
-    {
-    iControlFlag = aControlFlag;
-    }
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::GetControlFlag
-// ---------------------------------------------------------------------------
-//
-TBool CIRAdvertisingListBoxData::GetControlFlag()
-    {
-    return iControlFlag;
-    }
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::CIRAdvertisingListBoxData
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisingListBoxData::CIRAdvertisingListBoxData()
-    {
-    }
-// ---------------------------------------------------------
-// CIRAdvertisingListBoxData::DrawNoMatchesText
-// Draws the NoMatches Text on the view
-// ---------------------------------------------------------
-//
-void CIRAdvertisingListBoxData::DrawEmptyListL(CWindowGc &aGc,
-											   TPtrC aText,
-											   TRect aParentRect) const 
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBoxData::DrawEmptyListL - Entering" );
-    
-	MAknsSkinInstance* skin = AknsUtils::SkinInstance () ;
-
-
-    TRgb color( KRgbBlack );
-    if ( AknsUtils::AvkonSkinEnabled() )
-        {
-        TRgb c;
-        MAknsSkinInstance *skin = AknsUtils::SkinInstance();
-        TInt err = AknsUtils::GetCachedColor( skin,
-                                              c,
-                                              KAknsIIDQsnTextColors,
-                                              EAknsCIQsnTextColorsCG6 );
-        if ( !err )
-            {
-            color = c;
-            }
-        }
-
-	
-    if ( !aText.Length() )
-        {
-        return;
-        }
-
-    HBufC* hbuf = HBufC::New( aText.Size() + 3 * ( KAknBidiExtraSpacePerLine  +1 )
-                              + KTen );  // reserve space for newlines
-    if ( !hbuf )
-        { // can't really do anything
-        return;
-        }
-
-    TPtr buffer(hbuf->Des());
-    
-
-    /*
-    * input text can be either
-    * - "line1"
-    * - "line1 which will be wrapped to 2 lines and truncated with..."
-    * - "line1\nline2"
-    * - "line1\nMany other lines which will be wrapped to several lines"
-    *
-    * there are 3 layouts
-    * - 1 line with big font,
-    * - 2 lines with big font
-    * - 1 line with big font + 1..3 lines with small font (not for popup lists)
-    *
-    *  so first we need to check if given text has a newline,
-    *  if so, then we need to check if given text fits to 2 lines or
-    *  should it be split to several small font lines
-    */
-
-    TInt i, n;
-    n = 0;
-    for (i = 0; i < aText.Length(); i ++)
-        {
-        if ( aText[i] == '\n' )
-            {
-            n++;
-            }
-        }
-
-    
-    TAknTextComponentLayout layout1( AknLayoutScalable_Avkon::main_pane_empty_t1( 0 ) );
-    TAknTextComponentLayout layout2( AknLayoutScalable_Avkon::main_pane_empty_t2( 0 ) );
-    TAknLayoutText line1;
-    TAknLayoutText line2;
-
-    line1.LayoutText( aParentRect, layout1 );
-    TInt line1length = line1.TextRect().Size().iWidth;
-
-    line2.LayoutText( aParentRect, layout2 ); 
-    TInt line2length = line2.TextRect().Size().iWidth;
-
-    const CFont *font = line1.Font();
-
-    if ( n == 0 )
-        { // one line, or one line which will be wrapped to two
-        DrawEmptyListDrawUpToTwoLinesL( aGc,aText, line1, line2,
-                                                 line1length, line2length,
-                                                 font, color, buffer,
-                                                 aParentRect );
-
-        delete hbuf;
-        return;
-        }
-    
-    CArrayFix<TInt>* wrapWidthArray = new( ELeave ) CArrayFixFlat<TInt>(KTen);
-    CleanupStack::PushL( wrapWidthArray );
-
-    wrapWidthArray->AppendL( line1length );
-    wrapWidthArray->AppendL( line2length );
-    wrapWidthArray->AppendL( line2length ); // allow wrap to 3 lines
-    
-    TRAPD( error,AknBidiTextUtils::ConvertToVisualAndWrapToStringL(
-        aText, *wrapWidthArray, *font, buffer, ETrue ));
-
-    CleanupStack::PopAndDestroy(wrapWidthArray); 
-
-
-    n = 0;
-    for ( i = 0; i < buffer.Length(); i ++)
-        {
-        if (buffer[i] == '\n')
-            {
-            n++;
-            }
-        }
-
-    // wrapping adds a \n to end of each line --> n < 3
-    
-    if ( error != KErrNone || n < KThree)
-        { // 2 lines which fit to 2 line space
-        DrawEmptyListDrawUpToTwoLinesL( aGc,aText, line1, line2,
-                                                 line1length, line2length,
-                                                 font, color, buffer,
-                                                 aParentRect );
-
-        }
-    else
-        { // 1 line with big font + 1..3 lines with small font
-        DrawEmptyListDrawMoreThanTwoLinesL( aGc,aParentRect, aText,
-        											 color, buffer );
-
-        }
-
-    delete hbuf;
-   
-    IRLOG_DEBUG( "CIRAdvertisingListBoxData::DrawEmptyListL - Exiting" );
-	}   
-// ---------------------------------------------------------
-// CIRAdvertisingListBoxData::DrawEmptyListDrawUpToTwoLines
-// 
-// ---------------------------------------------------------
-//
-void CIRAdvertisingListBoxData::DrawEmptyListDrawUpToTwoLinesL(CWindowGc &aGc,
-											  TPtrC aText,
-                                              TAknLayoutText &aLine1,
-                                              TAknLayoutText &aLine2,
-                                              TInt aLine1length,
-                                              TInt aLine2length,
-                                              const CFont* aFont,
-                                              TRgb aColor,
-                                              TDes& aBuffer,
-                                              TRect aParentRect) const 
-    {
-    IRLOG_DEBUG("CIRAdvertisingListBoxData::DrawEmptyListDrawUpToTwoLinesL-Entering" );
-    CArrayFix<TInt>* wrapWidthArray = new( ELeave ) CArrayFixFlat<TInt>(KTen);
-    CleanupStack::PushL( wrapWidthArray );
-
-    wrapWidthArray->AppendL( aLine1length );
-    wrapWidthArray->AppendL( aLine2length );
-    
-    TRAPD( error,AknBidiTextUtils::ConvertToVisualAndWrapToStringL( 
-        aText, *wrapWidthArray, *aFont, aBuffer, ETrue ));
-    
-    CleanupStack::PopAndDestroy(wrapWidthArray); 
-    
-    if ( error != KErrNone )
-        {
-        aBuffer = aText;
-        }
-    
-    // Drawing text
-    aGc.Reset();
-    TBool oneline( EFalse );
-    TPtrC ptr = aBuffer;
-    TPtrC top = ptr;
-    TInt off = ptr.Locate('\n');
-    if ( off >= 0 )
-        {
-        top.Set(ptr.Left(off));
-        ptr.Set(ptr.Mid(off+1));
-
-        TInt off1 = ptr.Locate('\n');
-        if ( off1 >= 0 )
-            {
-            ptr.Set(ptr.Left(off1));
-            }
-        else
-            {
-            oneline = ETrue;
-            }
-        }
-    
-    aGc.SetBrushStyle(CGraphicsContext::ENullBrush);
-    aGc.SetOpaque( ETrue ); // transparency off
-
-    // no layout exist for popup list - mainpane layout is ok for X
-    // coords, center vertically.  Also need to calculate vertical
-    // position for mainpane lists, since laf is broken as designed.
-    // If you don't believe this, try using laf values in phonebook.
-    aGc.UseFont( aFont );
-    aGc.SetPenColor( aColor );
-    
-    // center horizontally
-    CGraphicsContext::TTextAlign textAlign( CGraphicsContext::ECenter );
-    
-    // center vertically
-    TInt h = aParentRect.Height();
-    TInt lineh = aLine1.TextRect().Height();
-    TRect r1( aLine1.TextRect() );
-    TRect r2( aLine2.TextRect() );
-
-    // gap between lines - must be calculated this way, since no other
-    // way really exists. Could be calculated from layout data, but
-    // data is wrong, as 1st line is calculated from top of parent
-    // rect, and 2nd line is calculated from bottom of the parent
-    // rect. iAvkonAppUi->ClientRect() as parent rect would otherwise
-    // be ok and give nice results, but in phonebook ClientRect() is
-    // not what it should be - it is some strange amount too large.
-    // This can not be fixed unless layout data is fixed to use only
-    // top marginals.
-    TInt lineGap( lineh / KSix );
-
-    TInt m;  // // middle point of texts
-    m = aParentRect.iTl.iY + h / 2;// + lineh + lineGap / 2;
-    if ( oneline )
-        {
-        m += lineh / 2;
-        }
-    TInt b1( m - lineGap / 2 );           // bottom of 1st line
-    TInt b2( m + lineh + lineGap / 2 );   // botton of 2nd line
-    
-    
-    // rects of texts
-    r1.iTl.iY = b1 - lineh;
-    r1.iBr.iY = b1;
-        
-    r2.iTl.iY = b2 - lineh;
-    r2.iBr.iY = b2;
-        
-	TInt baseLineOffset = ((r1.iBr.iY - r1.iTl.iY - aFont->HeightInPixels())/2
-				+ aFont->AscentInPixels());
-
-    aGc.DrawText( top, r1, baseLineOffset, textAlign );
-    if ( !oneline )
-        {
-        aGc.DrawText( ptr, r2, baseLineOffset, textAlign );
-        }
-    
-    
-    aGc.DiscardFont();
-    aGc.SetOpaque( EFalse ); // transparency back on
-    IRLOG_DEBUG("CIRAdvertisingListBoxData::DrawEmptyListDrawUpToTwoLinesL-Exiting" );
-    }    
-// ---------------------------------------------------------
-// CIRAdvertisingListBoxData::DrawEmptyListDrawMoreThanTwoLines
-// Draws the NoMatches Text on the view
-// ---------------------------------------------------------
-//
-void CIRAdvertisingListBoxData::DrawEmptyListDrawMoreThanTwoLinesL(CWindowGc &aGc,
-												  TRect &aParentRect,
-                                                  TPtrC aText,
-                                                  TRgb aColor,
-                                                  TDes& buffer ) const
-
-    {
-    IRLOG_DEBUG("CIRAdvertisingListBoxData::DrawEmptyListDrawMoreThanTwoLinesL-Entering" );
-    // fetch layouts
-    TAknLayoutText line[KFour];
-    
-    line[0].LayoutText( aParentRect, AknLayoutScalable_Avkon::main_pane_empty_t1(2) );
-    line[1].LayoutText( aParentRect, AknLayoutScalable_Avkon::main_pane_empty_t3(0) );
-    line[2].LayoutText( aParentRect, AknLayoutScalable_Avkon::main_pane_empty_t4(0) );
-    line[3].LayoutText( aParentRect, AknLayoutScalable_Avkon::main_pane_empty_t5(0) );
-
-    TInt lineLength[KFour];
-    TInt i;
-    for ( i = 0; i < KFour; i++ )
-        {
-        lineLength[i] = line[i].TextRect().Width();
-        }
-    
-    const CFont *bigFont = line[0].Font();
-    const CFont *smallFont = line[1].Font(); 
-
-    // wrap text
-    TInt off = aText.Locate('\n');
-    TPtrC rest( aText );
-    rest.Set( aText.Right(aText.Length() - off - 1 ));
-
-    HBufC* firstLine = NULL;
-    
-    TRAPD( error1, 
-            {
-            firstLine = HBufC::NewL(
-                aText.Left(off).Length() + KAknBidiExtraSpacePerLine );
-            });
-
-    if (error1 == KErrNone)
-        {
-        TPtr firstLinePtr = firstLine->Des();
-        AknBidiTextUtils::ConvertToVisualAndClip(
-                                aText.Left(off),
-                                firstLinePtr,
-                                *bigFont,
-                                lineLength[0],
-                                lineLength[0] );
-        }
-    
-    CArrayFix<TInt>* wrapWidthArray = new( ELeave ) CArrayFixFlat<TInt>(KTen);
-    CleanupStack::PushL( wrapWidthArray );
-    
-    // wrap small font lines
-    wrapWidthArray->Reset();
-    for ( i = 1; i < KFour; i++ )
-        {
-		TInt temp = lineLength[i];
-		if(wrapWidthArray->Count() >= 0  && wrapWidthArray->Count() < KTen)
-			{
-			wrapWidthArray->AppendL( temp );
-			}
-        }
-    
-    TRAPD( error2,AknBidiTextUtils::ConvertToVisualAndWrapToStringL( 
-        rest, *wrapWidthArray, *smallFont, buffer, ETrue ));
-    
-    CleanupStack::PopAndDestroy(wrapWidthArray);
-    
-    
-    TPtrC ptr[KFour];
-    TInt n = 0;
-    
-    if (error1 == KErrNone)
-        {
-        ptr[0].Set( firstLine->Des() );
-        }
-    if ( error1 != KErrNone || error2 != KErrNone )
-        {
-        ptr[0].Set(aText.Left(off));
-        }
-    else
-        {
-        TInt newlines[KThree];
-        n = 0;
-        for ( i = 0; i < buffer.Length(); i++ )
-            {
-            if ( buffer[i] != '\n' )
-                {
-                continue;
-                }
-            newlines[n] = i;
-            
-            n++;
-            if ( n >= KThree )
-                {
-                break;
-                }
-            }
-        
-        if ( n >= 1 )
-            {
-            ptr[1].Set( buffer.Left( newlines[0] ) );
-            }
-        if ( n >= 2 )
-            {
-            ptr[2].Set( buffer.Mid( newlines[0] + 1, newlines[1] - newlines[0] - 1 ) );
-            }
-        if ( n >= KThree )
-            {
-            ptr[3].Set( buffer.Mid( newlines[1] + 1, newlines[2] - newlines[1] - 1 ) );
-            }
-        }
-    
-    // draw texts
-    aGc.SetBrushStyle(CGraphicsContext::ENullBrush);
-    aGc.SetOpaque( ETrue ); // transparency off
-    
-    for ( i = 0; i < KFour; i++ )
-        {
-        line[i].DrawText( aGc,ptr[i], EFalse, aColor );
-        }
- 
-    aGc.SetOpaque( EFalse ); // transparency back on  
-    delete firstLine;
-    IRLOG_DEBUG("CIRAdvertisingListBoxData::DrawEmptyListDrawMoreThanTwoLinesL-Exiting" );
-
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxData::~CIRAdvertisingListBoxData
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisingListBoxData::~CIRAdvertisingListBoxData()
-    {
-    delete iIcon;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxDrawer::CIRAdvertisingListBoxDrawer
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisingListBoxDrawer::CIRAdvertisingListBoxDrawer( MTextListBoxModel* aTextListBoxModel,
-                                                          const CFont* aFont,
-                                                          CIRAdvertisingListBoxData* 
-                                                          aFormattedCellData,
-                                                          CIRAdvertisingListBox* aListBox,
-                      									  CIRCategoryAdvertisingListBox* aCatListBox) 
-    : CFormattedCellListBoxItemDrawer( aTextListBoxModel, aFont, aFormattedCellData ),
-      iListBox(aListBox),
-      iCatListBox(aCatListBox)
-
-    {
-    }
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBoxDrawer::DrawActualItem
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBoxDrawer::DrawActualItem( TInt aItemIndex, 
-                                                  const TRect& aActualItemRect, 
-                                                  TBool aItemIsCurrent, 
-                                                  TBool aViewIsEmphasized, 
-                                                  TBool aViewIsDimmed,
-                                                  TBool aItemIsSelected) const
-	{
-	IRLOG_DEBUG( "CIRAdvertisingListBox::DrawActualItem - Entering" );
-	CIRAdvertisingListBoxData* formattedCellData = static_cast<CIRAdvertisingListBoxData*>
-														( FormattedCellData() );
-	if (aItemIndex == 0)
-		{
-		TBool flag(EFalse);
-		if (iListBox)
-			{
-			flag = iListBox->GetLastPlayed();
-			}
-		TBool selectedItem =aItemIsSelected;
-		if(flag)	
-			{
-			selectedItem = EFalse;	
-			}
-		CFormattedCellListBoxItemDrawer::DrawActualItem( aItemIndex, 
-		                                                 aActualItemRect, 
-		                                                 aItemIsCurrent, 
-		                                                 aViewIsEmphasized, 
-		                                                 aViewIsDimmed,
-		                                                 selectedItem);
-
-
-		// For MainView the folowing code is executed for hacking to make the
-		// (NoMatches) string to be visible. The icon used for drawing in main
-		// view is totally transparent, which makes it invisible.
-		if (aItemIndex == 0 && formattedCellData->AdvertisementIcon() )
-		    {
-		    const CFbsBitmap* bitmap = formattedCellData->AdvertisementIcon()->Bitmap();
-		    const CFbsBitmap* mask = formattedCellData->AdvertisementIcon()->Mask();
-		    TSize bitmapSize = bitmap->SizeInPixels();
-		    TRect maskRect;
-		    if ( mask )
-		        {
-		        maskRect.SetSize( mask->SizeInPixels() );
-		        }
-		    
-		    TPoint bitmapPos( aActualItemRect.iTl.iX + 
-		    				 (aActualItemRect.Width() - bitmapSize.iWidth)/2,
-		                      aActualItemRect.iTl.iY + 
-		                      (aActualItemRect.Height() - bitmapSize.iHeight)/2 );
-
-		    Gc()->BitBltMasked( bitmapPos, bitmap, maskRect, mask, EFalse );
-		    }
-
-		}
-	else
-		{
-		CFormattedCellListBoxItemDrawer::DrawActualItem( aItemIndex, 
-		                                                 aActualItemRect, 
-		                                                 aItemIsCurrent, 
-		                                                 aViewIsEmphasized, 
-		                                                 aViewIsDimmed,
-		                                                 aItemIsSelected);
-		}
-
-	IRLOG_DEBUG( "CIRAdvertisingListBox::DrawActualItem - Exiting" );
-	}
-        
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::CIRAdvertisingListBox
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisingListBox::CIRAdvertisingListBox()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::SetGC
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::SetGC(CWindowGc& aGc)
-	{
-	iGc = &aGc;	
-	}
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::SetControlFlag
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::SetControlFlag(TBool aControlFlag)
-	{
-    CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-	irListBoxData->SetControlFlag(aControlFlag);	
-	}
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::Draw
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::Draw(const TRect& aRect) const 
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBox::Draw - Entering" );
-	CAknDoubleLargeStyleListBox::Draw(aRect);
-	
-    TInt count = Model()->NumberOfItems();
-    CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-	if(irListBoxData->GetControlFlag())
-		{
-		if(GetActiveView())
-			{	
-			if(GetFavouritesCount() != 0)
-				{
-				if(count == 0 && !GetLastPlayed())
-					{
-					TRAP_IGNORE(View()->SetListEmptyTextL(*iNoMatchesTextResource));
-					}
-				else if(count == 1 && GetLastPlayed())
-					{
-					TRAP_IGNORE(irListBoxData->DrawEmptyListL(*iGc,*iNoMatchesTextResource,Rect()));	
-					}
-				}
-			else
-				{
-				if(GetLastPlayed())
-					{
-					TRAP_IGNORE(irListBoxData->DrawEmptyListL(*iGc,*iFindStationsTextResource,Rect()));	
-					}
-				else
-					{
-					TRAP_IGNORE(View()->SetListEmptyTextL(*iFindStationsTextResource));	
-					}
-				}
-			}
-		else
-			{
-			if(count == 1 && irListBoxData->AdvertisementIcon())
-				{
-				TRAP_IGNORE(irListBoxData->DrawEmptyListL(*iGc,*iNoMatchesTextResource,Rect()));	
-				}
-			else
-				{
-				TRAP_IGNORE(View()->SetListEmptyTextL(*iNoMatchesTextResource));
-				}
-			}
-		irListBoxData->SetControlFlag(EFalse);
-		}
-
-    IRLOG_DEBUG( "CIRAdvertisingListBox::Draw - Exiting" );
-    }
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::~CIRAdvertisingListBox
-// ---------------------------------------------------------------------------
-//
-CIRAdvertisingListBox::~CIRAdvertisingListBox()
-	{
-	IRLOG_DEBUG( "CIRAdvertisingListBox::~CIRAdvertisingListBox - Entering" );
-	if(iFindStationsTextResource)
-		{
-		delete iFindStationsTextResource;
-		iFindStationsTextResource = NULL;
-		}
-	if(iNoMatchesTextResource)
-		{
-		delete iNoMatchesTextResource;
-		iNoMatchesTextResource = NULL;	
-		}
-	IRLOG_DEBUG( "CIRAdvertisingListBox::~CIRAdvertisingListBox - Exiting" );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::SetListItemFormat
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::SetListItemFormat(  HBufC* aItemFormat)
-    {
-    IRLOG_DEBUG( "CIRAdvertisingListBox::SetListItemFormat - Entering" );
-	iItemFormat = aItemFormat;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::SetAdvertisementIconL
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::SetAdvertisementIconL( CGulIcon* aIcon,TBool aMainView )
-    {
-    IRLOG_DEBUG( "CIRAdvertisingListBox::SetAdvertisementIconL - Entering" );
-    
-    CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    
-    // add listitem only, if it doesn't exist yet.
-    if ( !aMainView && !irListBoxData->AdvertisementIcon() )
-        {
-        TInt currentItemIndex = CurrentItemIndex();
-        TInt topItemIndex = TopItemIndex();
-
-        
-        CAknFilteredTextListBoxModel* listBoxModel = static_cast<CAknFilteredTextListBoxModel*>
-        												( Model() );
-        CDesCArraySeg* items = static_cast<CDesCArraySeg*>( listBoxModel->ItemTextArray() );
-        items->InsertL( 0, *iItemFormat );
-        
-        HandleItemAdditionL();
-        if ( currentItemIndex >= 0 )
-            {
-            SetCurrentItemIndex( currentItemIndex + 1 );
-            }
-        if ( topItemIndex > 0 )
-            {
-            SetTopItemIndex( topItemIndex + 1 );
-            }
-        }
-    // always replace the existing image.
-    irListBoxData->SetAdvertisementIcon( aIcon );
-    
-    DrawDeferred();     
-    IRLOG_DEBUG( "CIRAdvertisingListBox::SetAdvertisementIconL - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::ClearAdvertisementIcon
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::ClearAdvertisementIcon()
-    {
-    IRLOG_DEBUG( "CIRAdvertisingListBox::ClearAdvertisementIcon - Entering" );
-   CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    irListBoxData->SetAdvertisementIcon( NULL );
-    IRLOG_DEBUG( "CIRAdvertisingListBox::ClearAdvertisementIcon - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::AdvertisementIcon
-// ---------------------------------------------------------------------------
-//
-CGulIcon* CIRAdvertisingListBox::AdvertisementIcon()
-    {
-    IRLOG_DEBUG( "CIRAdvertisingListBox::AdvertisementIcon - Entering" );
-  	CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    IRLOG_DEBUG( "CIRAdvertisingListBox::AdvertisementIcon - Exiting" );
-    return irListBoxData->AdvertisementIcon();
-    }
-
-// ---------------------------------------------------------------------------
-// CIRAdvertisingListBox::CreateItemDrawerL
-// ---------------------------------------------------------------------------
-//
-void CIRAdvertisingListBox::CreateItemDrawerL()
-    {
-    IRLOG_DEBUG( "CIRAdvertisingListBox::CreateItemDrawerL - Entering" );
-    CIRAdvertisingListBoxData* formattedCellListBoxData = CIRAdvertisingListBoxData::NewL();
-    CleanupStack::PushL( formattedCellListBoxData );
-    const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontPrimaryFont );
-    
-    iItemDrawer = new (ELeave) CIRAdvertisingListBoxDrawer( Model(), font,
-                                                            formattedCellListBoxData,this, NULL );
-    CleanupStack::Pop( formattedCellListBoxData );
-    IRLOG_DEBUG( "CIRAdvertisingListBox::CreateItemDrawerL - Exiting" );
-    }
-// --------------------------------------------------------------------------
-// CIRAdvertisingListBox::ConstructL()
-// 
-// --------------------------------------------------------------------------
-void CIRAdvertisingListBox::ConstructL(const CCoeControl* aParent, 
-                    TInt aFlags,CAknFilteredTextListBoxModel* aFilteredmodel)
-    {
-    IRLOG_DEBUG( "CIRAdvertisingListBox::ConstructL - Entering" );
-    iModel=aFilteredmodel;
-    CreateItemDrawerL();
-
-    EnableExtendedDrawingL();
-    iItemDrawer->SetDrawMark(EFalse);
-    
-	if(iFindStationsTextResource)
-		{
-		delete iFindStationsTextResource;
-		iFindStationsTextResource = NULL;
-		}
-	HBufC* findStationsTextResource = StringLoader::LoadLC(R_IRAPP_FAVOURITES_LIST_EMPTY);
-	iFindStationsTextResource = HBufC::NewL(findStationsTextResource->Length());
-	iFindStationsTextResource->Des().Append(findStationsTextResource->Des());
-	CleanupStack::PopAndDestroy( findStationsTextResource );
-	
-	if(iNoMatchesTextResource)
-		{
-		delete iNoMatchesTextResource;
-		iNoMatchesTextResource = NULL;	
-		}
-	HBufC* noMatchesTextResource = StringLoader::LoadLC(R_IRAPP_STATIONLIST_NOMATCHES);
-	iNoMatchesTextResource = HBufC::NewL(noMatchesTextResource->Length());
-	iNoMatchesTextResource->Des().Append(noMatchesTextResource->Des());
-	CleanupStack::PopAndDestroy( noMatchesTextResource );
-
-    CEikListBox::ConstructL(aParent,aFlags);
-    IRLOG_DEBUG( "CIRAdvertisingListBox::ConstructL - Exiting" );
-    }
-// --------------------------------------------------------------------------
-// CIRAdvertisingListBox::SetLastPlayed()
-// sets the status of lastplayed
-// --------------------------------------------------------------------------
-void CIRAdvertisingListBox::SetLastPlayed(TBool aLastPlayed)
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBox::SetLastPlayed " );
-	iLastPlayed = aLastPlayed;	
-	}
-
-// --------------------------------------------------------------------------
-// CIRAdvertisingListBox::GetLastPlayed()
-// return the status of lastplayed
-// --------------------------------------------------------------------------
-TBool  CIRAdvertisingListBox::GetLastPlayed() const
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetLastPlayed " );
-	return iLastPlayed;	
-	}
-// --------------------------------------------------------------------------
-// CIRAdvertisingListBox::GetFavouritesCount()
-// returns the number of favourates present.
-// --------------------------------------------------------------------------
-TInt CIRAdvertisingListBox::GetFavouritesCount() const
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetFavouritesCount " );
-	CIRUi* appUi = static_cast<CIRUi*>( iCoeEnv->AppUi() );
-	TInt favCount = appUi->iFavPresets->iFavPresetList.Count();
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetFavouritesCount - Exiting" );
-    return favCount;
-	}
-// --------------------------------------------------------------------------
-// CIRAdvertisingListBox::GetFavouritesCount()
-// returns the number of favourates present.
-// --------------------------------------------------------------------------
-TBool CIRAdvertisingListBox::GetFilteredFlag() const
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetFavouritesCount " );
-	CIRUi* appUi = static_cast<CIRUi*>( iCoeEnv->AppUi() );
-	TBool flag = appUi->iMainView->GetMainContainer()->GetFilteredFlag();
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetFavouritesCount - Exiting" );
-    return flag;
-	}
-// --------------------------------------------------------------------------
-// CIRAdvertisingListBox::GetActiveView()
-// returns whether the active view is mainView or not.
-// --------------------------------------------------------------------------
-TBool CIRAdvertisingListBox::GetActiveView() const
-	{
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetActiveView " );
-	CIRUi* appUi = static_cast<CIRUi*>( iCoeEnv->AppUi() );
-    IRLOG_DEBUG( "CIRAdvertisingListBox::GetActiveView - Exiting" );
-	if(appUi->iMainView->GetMainContainer())
-		{
-		return ETrue;	
-		}
-	else
-		{
-		return EFalse;	
-		}
-	}
-/******************************Advertisement Listbox for Category View************/
-
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::CIRCategoryAdvertisingListBox
-// ---------------------------------------------------------------------------
-//
-CIRCategoryAdvertisingListBox::CIRCategoryAdvertisingListBox()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::SetGC
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::SetGC(CWindowGc& aGc)
-	{
-	iGc = &aGc;	
-	}
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::SetControlFlag
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::SetControlFlag(TBool aControlFlag)
-	{
-    CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-	irListBoxData->SetControlFlag(aControlFlag);	
-	}
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::Draw
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::Draw(const TRect& aRect) const 
-	{
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::Draw - Entering" );
-	CAknDoubleStyleListBox::Draw(aRect);
-
-    TInt count = Model()->NumberOfItems();
-    CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    if(irListBoxData->GetControlFlag())
-	    {
-	    if(count == 1 && irListBoxData->AdvertisementIcon())
-		    {
-			TRAP_IGNORE(irListBoxData->DrawEmptyListL(*iGc,*iTextResource,Rect()));	
-			}
-	    else if(count == 0)
-		    {
-			TRAP_IGNORE(View()->SetListEmptyTextL(*iTextResource));
-		    }
-		irListBoxData->SetControlFlag(EFalse);
-	    }
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::Draw - Exiting" );
-    }
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::~CIRCategoryAdvertisingListBox
-// ---------------------------------------------------------------------------
-//
-CIRCategoryAdvertisingListBox::~CIRCategoryAdvertisingListBox()
-	{
-	IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::~CIRCategoryAdvertisingListBox - Entering" );
-	if(iTextResource)
-		{
-		delete iTextResource;
-		iTextResource = NULL;
-		}
-	IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::~CIRCategoryAdvertisingListBox - Exiting" );
-	}
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::SetListItemFormat
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::SetListItemFormat(  HBufC* aItemFormat )
-    {
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::SetListItemFormat - Entering" );
-	__ASSERT_ALWAYS( !iItemFormat, User::Panic( KNullDesC, KErrCorrupt ) );
-    iItemFormat = aItemFormat;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::SetAdvertisementIconL
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::SetAdvertisementIconL( CGulIcon* aIcon )
-    {
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::SetAdvertisementIconL - Entering" );
-	__ASSERT_ALWAYS( iItemFormat, User::Panic( KNullDesC, KErrCorrupt  ) );
-    
-    CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    
-    // add listitem only, if it doesn't exist yet.
-    if ( !irListBoxData->AdvertisementIcon() )
-        {
-        TInt currentItemIndex = CurrentItemIndex();
-        TInt topItemIndex = TopItemIndex();
-
-     
-        CAknFilteredTextListBoxModel* listBoxModel = static_cast<CAknFilteredTextListBoxModel*>
-        											( Model() );
-        CDesCArraySeg* items = static_cast<CDesCArraySeg*>( listBoxModel->ItemTextArray() );
-        items->InsertL( 0, *iItemFormat );
-        
-        HandleItemAdditionL();
-        if ( currentItemIndex >= 0 )
-            {
-            SetCurrentItemIndex( currentItemIndex + 1 );
-            }
-        if ( topItemIndex > 0 )
-            {
-            SetTopItemIndex( topItemIndex + 1 );
-            }
-        }
-    // always replace the existing image.
-    irListBoxData->SetAdvertisementIcon( aIcon );
-    
-    DrawDeferred();     
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::SetAdvertisementIconL - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::ClearAdvertisementIcon
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::ClearAdvertisementIcon()
-    {
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::ClearAdvertisementIcon - Entering" );
-   CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    irListBoxData->SetAdvertisementIcon( NULL );
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::ClearAdvertisementIcon - Exiting" );
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::AdvertisementIcon
-// ---------------------------------------------------------------------------
-//
-CGulIcon* CIRCategoryAdvertisingListBox::AdvertisementIcon()
-    {
-     IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::AdvertisementIcon - Entering" );
-  CIRAdvertisingListBoxData* irListBoxData = 
-        static_cast<CIRAdvertisingListBoxData*>( ItemDrawer()->FormattedCellData() );
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::AdvertisementIcon - Exiting" );
-    return irListBoxData->AdvertisementIcon();
-    }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::CreateItemDrawerL
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryAdvertisingListBox::CreateItemDrawerL()
-    {
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::CreateItemDrawerL - Entering" );
-    CIRAdvertisingListBoxData* formattedCellListBoxData = CIRAdvertisingListBoxData::NewL();
-    CleanupStack::PushL( formattedCellListBoxData );
-    const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontPrimaryFont );
-    
-    iItemDrawer = new (ELeave) CIRAdvertisingListBoxDrawer( Model(), font,
-                                                            formattedCellListBoxData,NULL, this );
-    CleanupStack::Pop( formattedCellListBoxData );
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::CreateItemDrawerL - Exiting" );
-    }
-// --------------------------------------------------------------------------
-// CIRCategoryAdvertisingListBox::ConstructL()
-// 
-// --------------------------------------------------------------------------
-void CIRCategoryAdvertisingListBox::ConstructL(const CCoeControl* aParent, 
-                    TInt aFlags,CAknFilteredTextListBoxModel* aFilteredmodel)
-    {
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::ConstructL - Entering" );
-    iModel=aFilteredmodel;
-    CreateItemDrawerL();
-
-    EnableExtendedDrawingL();
-    iItemDrawer->SetDrawMark(EFalse);
-
-	if(iTextResource)
-		{
-		delete iTextResource;
-		iTextResource = NULL;
-		}
-	HBufC* textResource = StringLoader::LoadLC(R_IRAPP_STATIONLIST_NOMATCHES);
-	iTextResource = HBufC::NewL(textResource->Length());
-	iTextResource->Des().Append(textResource->Des());
-	CleanupStack::PopAndDestroy( textResource );
-
-    CEikListBox::ConstructL(aParent,aFlags);
-    IRLOG_DEBUG( "CIRCategoryAdvertisingListBox::ConstructL - Exiting" );
-    }