--- a/internetradio2.0/uisrc/ircategoryviewcontainer.cpp Mon May 03 12:25:23 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1019 +0,0 @@
-/*
-* Copyright (c) 2004 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: Container class for Category view
-*
-*/
-
-/* ---------------------------------------------------------------------------
-* Version history:
-* Template version:
-* <ccm_history>
-*
-* Version: 2, Thurs March 20 15:50:00 2008 by Prabina
-* Ref:
-* Created new views for the Station Directory Views , Enabled the Touch toolbar functionality ,
-* Help Options enabled
-*
-* </ccm_history>
-* ============================================================================
-*/
-/* ---------------------------------------------------------------------------
-* Version history:
-* Template version:
-* <ccm_history>
-*
-* Version: 3, Fri March 21 17:20:00 2008 by Prabina
-* Ref:
-* Added WorkAround for supporting different Resolutions , Added Wait Dialog for Loading of stations ,
-* Handled Single/Double tapping on the list itmes
-*
-* </ccm_history>
-* ============================================================================
-*/
-/* ---------------------------------------------------------------------------
-* Version history:
-* Template version:
-* <ccm_history>
-*
-* Version: 4, Mon March 24 18:00:00 2008 by Prabina
-* Ref:
-* Added WorkAround for adding different stations to favourites list , Added Wait dialog for adding to favourites
-*
-*
-* </ccm_history>
-* ============================================================================
-*/
-/* ---------------------------------------------------------------------------
-* Version history:
-* Template version:
-* <ccm_history>
-*
-* Version: 5, Tues March 25 17:30:00 2008 by Prabina
-* Ref:
-* Fixing the PCLint errors
-*
-*
-* </ccm_history>
-* ============================================================================
-*/
-/* ---------------------------------------------------------------------------
-* Version history:
-* Template version:
-* <ccm_history>
-*
-* Version: 6, Tues March 29 10:30:00 2008 by Prabina
-* Ref:
-* Category View Container Derived from CCoeControl
-*
-*
-* </ccm_history>
-* ============================================================================
-*/
-/* ---------------------------------------------------------------------------
-* Version history:
-* Template version:
-* <ccm_history>
-*
-* Version: 7, may 7 Wed 08:35:00 2008 by Neelima
-* Removed change Resoultion function.
-* changed code in HandleResourcechange and Size changed for handling layout changes
-* in dynamic filtering
-* ============================================================================
-*/
-/* ---------------------------------------------------------------------------
-* Version history:
-* Template version:
-* <ccm_history>
-*
-* Version: 5, Thurs July 18 12:00:00 2008 by Prabina
-* Ref:
-* Code Review Comments Fixed
-*
-*
-* </ccm_history>
-* ============================================================================
-*/
-
-#include <akniconarray.h>
-#include <aknlists.h>
-#include <aknview.h>
-#include <barsread.h>
-#include <eikenv.h>
-#include <eiklabel.h>
-#include <eikmenub.h>
-#include <stringloader.h>
-#include <internetradio.rsg>
-#include <eikenv.h>
-#include <apgcli.h>
-
-#include "irui.h"
-#include "ir.hrh"
-#include "ircommon.h"
-#include "irdebug.h"
-#include "irbaseview.h"
-#include "ircategoryviewcontainer.h"
-#include "irapplication.h"
-#include "ircategoryView.h"
-#include "iraap.hlp.hrh"
-#include "irisdswrapper.h"
-#include "irimageconverter.h"
-#include "irdataprovider.h"
-#include "irhttpdataprovider.h"
-#include "irlogodownloadengine.h"
-#include <aknsbasicbackgroundcontrolcontext.h>
-#include "irfilteredmodel.h"
-#include "mirlistboxarray.h"
-#include "iradvertisinglistbox.h"
-#include "irlayoututils.h"
-
-/** Mime type when opening web browser */
-_LIT8( KIRHtmlMimeType, "text/html" );
-/** Browser prefix: See browser API specification */
-_LIT( KBrowserPrefix, "4 " );
-
-const TInt KAdvSize = 30;
-const TSize KLogoSize = TSize(320,350);
-
-#define KCONTROLSCOUNT 0
-
-// ==================== LOCAL FUNCTIONS ====================
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CIRCategoryViewContainer::NewL()
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CIRCategoryViewContainer* CIRCategoryViewContainer::NewL( CIRCategoryView& aCtaegoryView,
- const TRect& aRect )
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::NewL" );
- CIRCategoryViewContainer* self = CIRCategoryViewContainer::NewLC( aCtaegoryView, aRect );
- CleanupStack::Pop( self );
- IRLOG_DEBUG( "CIRCategoryViewContainer::NewL - Exiting" );
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CIRCategoryViewContainer::NewLC()
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CIRCategoryViewContainer* CIRCategoryViewContainer::NewLC( CIRCategoryView& aCtaegoryView,
- const TRect& aRect )
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::NewLC" );
- CIRCategoryViewContainer* self = new ( ELeave ) CIRCategoryViewContainer(aCtaegoryView);
- CleanupStack::PushL( self );
- self->ConstructL( aRect );
- IRLOG_DEBUG( "CIRCategoryViewContainer::NewLC - Exiting" );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryViewContainer::CIRCategoryViewContainer()
-// C++ default constructor can NOT contain any code, that might leave.
-// ---------------------------------------------------------------------------
-//
-CIRCategoryViewContainer::CIRCategoryViewContainer(CIRCategoryView& aCtaegoryView):
- iCategoryView(aCtaegoryView)
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::CIRCategoryViewContainer" );
- iFilteredFlag = EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryViewContainer::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::ConstructL( const TRect& aRect)
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::ConstructL - Entering" );
- CreateWindowL();
- SetRect(aRect);
-
- iBgContext = CAknsBasicBackgroundControlContext::NewL(KAknsIIDQsnBgScreen , aRect, ETrue);
-
- iAdPresent = EFalse;
- iConverter = CIRImageConverter::NewL();
- iConverter->EnableAnimations( EFalse );
- iConverter->SetObserver( this );
-
- iCurrentItemConverter = CIRImageConverter::NewL();
- iCurrentItemConverter->SetObserver( this );
-
- // Added For Dynamic Filtering
- iFilteredModel=new(ELeave) CIRFilteredModel;
- iFilteredModel->ConstructL();
-
- iListBoxArray = MIRListBoxArray::NewL();
-
- IRLOG_DEBUG( "CIRCategoryViewContainer::ConstructL - Exiting" );
- }
-// ---------------------------------------------------------------------------
-// CIRCategoryViewContainer::CreateListBoxL()
-// Creates ListBox depending upon the presence of Advertisement
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::CreateListBoxL()
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::CreateListBoxL - Entering" );
- if (iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl)
- {
- if((iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl->Length()) != 0)
- {
- iAdPresent = ETrue;
- if(iAdvPreset)
- {
- delete iAdvPreset;
- iAdvPreset = NULL;
- }
- iAdvPreset=CIRIsdsPreset::NewL();
- iAdvPreset->SetChannelType(1);
- iAdvPreset->SetImgUrl(*iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl);
- CreateCustomListBoxL();
- iFilteredModel->SetAdvFlag(EFalse,*iAdvString);
- iCategoryView.SetCurrentFocus(0);
- iLogoDownloadError = ETrue;
- iCategoryView.AdRequestL();
- }
- else
- {
- iCategoryListBox = new (ELeave) CIRCategoryAdvertisingListBox;
- CreateCustomListBoxL();
- iCategoryView.SetCurrentFocus(0);
- iLogoDownloadError = ETrue;
- iFilteredModel->SetAdvFlag(EFalse,*iAdvString);
- }
- }
- else
- {
- if(iCategoryView.iUi->iIsdsWrapper->iCatBannerTag)
- {
- iCategoryView.SetCurrentFocus(0);
- iLogoDownloadError = ETrue;
- iFilteredModel->SetAdvFlag(EFalse,*iAdvString);
- }
- iCategoryListBox = new (ELeave) CIRCategoryAdvertisingListBox;
- CreateCustomListBoxL();
- }
- IRLOG_DEBUG( "CIRCategoryViewContainer::CreateListBoxL - Exiting" );
-
- }
-// ---------------------------------------------------------------------------
-// CIRCategoryViewContainer::CreateCustomListBoxL()
-// Destructor
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::CreateCustomListBoxL()
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::CreateCustomListBoxL - Entering" );
- if(iAdPresent)
- {
- iCategoryListBox = new (ELeave) CIRCategoryAdvertisingListBox;
- }
- //For displaying Ads
- iCategoryListBox->SetContainerWindowL(*this);
-
- // Added For Dynamic Filtering
- iCategoryListBox->ConstructL (this,EAknListBoxSelectionList,iFilteredModel);
-
- // Construct list.
- TResourceReader rr;
- iCoeEnv->CreateResourceReaderLC( rr, R_IR_SEARCHRESULTS_LIST );
- ConstructFromResourceL( rr );
- CleanupStack::PopAndDestroy(); // rr
-
-
- iItemArray = static_cast<CDesCArray*>( iCategoryListBox->Model()->ItemTextArray());
- iListBoxArray->SetListArray(iItemArray);
-
- iFilteredModel->SetListArray(iListBoxArray);
- if (iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl)
- {
- // Added For Dynamic Filtering
- if(iAdvString)
- {
- delete iAdvString;
- iAdvString = NULL;
- }
- iAdvString = HBufC::NewL(KAdvSize);
- TPtr ptr(iAdvString->Des());
- _LIT(KTabFormat,"\t \t ");
- ptr.Copy(KTabFormat);
-
- iFilteredModel->SetAdvFlag(iAdPresent,*iAdvString);
- iCategoryListBox->SetListItemFormat( iAdvString );
- }
- iCategoryListBox->SetRect( Rect());
- iCategoryListBox->ActivateL();
-
- iCategoryListBox->CreateScrollBarFrameL( ETrue );
- iCategoryListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,
- CEikScrollBarFrame::EAuto);
- iCategoryListBox->SetListBoxObserver( this );
- UpdateCategoryViewL(iCategoryView.iIsdsWrapper->iCategoryData);
- iCategoryListBox->ItemDrawer()->FormattedCellData()->SetMarqueeParams
- (KLoop, KScrollAmount, KScrollDelay, KInterval);
- iCategoryListBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
- IRLOG_DEBUG( "CIRCategoryViewContainer::CreateCustomListBoxL - Exiting" );
- }
-// ---------------------------------------------------------------------------
-// CIRCategoryViewContainer::~CIRCategoryViewContainer()
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CIRCategoryViewContainer::~CIRCategoryViewContainer()
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::~CIRCategoryViewContainer - Entering" );
-
- delete iConverter;
- delete iCurrentItemConverter;
-
- if(iCategoryListBox)
- {
- delete iCategoryListBox;
- iCategoryListBox = NULL;
- }
- if(iSearchTextBox)
- {
- delete iSearchTextBox;
- iSearchTextBox = NULL;
- }
- if(iAdvPreset)
- {
- delete iAdvPreset;
- iAdvPreset = NULL;
- }
- if(iAdBitmap)
- {
- delete iAdBitmap;
- iAdBitmap = NULL;
- }
- if(iBgContext)
- {
- delete iBgContext;
- iBgContext = NULL;
- }
- if(iAdvString)
- {
- delete iAdvString;
- iAdvString = NULL;
- }
- if(iListBoxArray )
- {
- delete iListBoxArray ;
- iListBoxArray = NULL;
- }
- IRLOG_DEBUG( "CIRCategoryViewContainer::~CIRCategoryViewContainer - Exiting" );
- }
-
-// ---------------------------------------------------------------------------
-// TKeyResponse CIRCategoryViewContainer::OfferKeyEventL()
-// From class CCoeControl.
-// We need to catch the selection key event in order to do a couple of things
-// in moving state make the movement, and in normal state open channel
-// specific popup menu. Up and down buttons are forwarded to the list.
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CIRCategoryViewContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent,
- TEventCode aType )
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::OfferKeyEventL - Entering" );
- TInt currentIndex = 0;
- TKeyResponse keyResp( EKeyWasNotConsumed );
- switch ( aKeyEvent.iCode )
- {
- case EKeyLeftArrow: // fall-through intended here
- case EKeyRightArrow:
- {
- keyResp = EKeyWasNotConsumed;
- DrawNow();
- break;
- }
- case EKeyOK:
- {
- currentIndex = GetCurrentItemIndex();
- if (currentIndex == 0)
- {
- if (iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl
- && !iLogoDownloadError)
- {
- if(iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl->Length() != 0)
- {
- iCategoryView.HandleCommandL(EAdvertisementUrl);
- }
- }
- else
- {
- iCategoryView.HandleCommandL(ESelectCmd);
- }
- }
- else
- {
- iCategoryView.HandleCommandL(ESelectCmd);
- }
- keyResp = EKeyWasConsumed;
- break;
- }
-
- default:
- {
- if(iCategoryListBox)
- {
- if ( iSearchTextBox )
- {
- iFilteredFlag = ETrue;
- keyResp = iSearchTextBox->OfferKeyEventL( aKeyEvent, aType );
- if( keyResp == EKeyWasNotConsumed )
- {
- keyResp = iCategoryListBox->OfferKeyEventL( aKeyEvent, aType );
- }
- CAknFilteredTextListBoxModel* model =
- static_cast<CAknFilteredTextListBoxModel*>( iCategoryListBox->Model() );
- model->Filter()->HandleOfferkeyEventL();
- TInt filterModelCount = iFilteredModel->NumberOfItems();
- if(filterModelCount == 0 &&
- !(iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl))
- {
- HBufC* noMatchesTextResource =
- StringLoader::LoadLC(R_IRAPP_STATIONLIST_NOMATCHES);
- iCategoryListBox->View()->SetListEmptyTextL(*noMatchesTextResource);
- CleanupStack::PopAndDestroy( noMatchesTextResource );
- }
- iSearchTextBox->GetSearchText(iFindString);
- if(iFindString.Length()!=0)
- {
- if(!iLogoDownloadError &&
- iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl
- && filterModelCount > 1 )
- {
- iCategoryListBox->SetCurrentItemIndex(1);
- }
- else
- {
- iCategoryListBox->SetCurrentItemIndex(0);
- }
- }
- }
- }
- if( aKeyEvent.iScanCode==EStdKeyBackspace)
- {
- if(iSearchTextBox)
- {
- iSearchTextBox->GetSearchText(iFindString);
- if(iFindString.Length()==0)
- {
- iFilteredFlag = EFalse;
- }
- }
- }
- break;
- }
- }
- IRLOG_DEBUG( "CIRCategoryViewContainer::OfferKeyEventL - Exiting" );
- return keyResp;
- }
-
-// ---------------------------------------------------------------------------
-// From class MEikListBoxObserver.
-// List box event handler.
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::HandleListBoxEventL( CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::HandleListBoxEventL - Entering" );
- TInt currentIndex = 0;
- switch ( aEventType )
- {
- case EEventEnterKeyPressed:/** Keypress event. */
- case EEventItemDoubleClicked:
- {
- currentIndex = GetCurrentItemIndex();
- if (currentIndex == 0)
- {
- if (iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl && !iLogoDownloadError)
- {
- if(iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl->Length() != 0)
- {
- iCategoryView.HandleCommandL(EAdvertisementUrl);
- }
- }
- else
- {
- iCategoryView.SetCurrentFocus(GetCurrentItemIndex());
- iCategoryView.HandleCommandL(ESelectCmd);
- }
- }
- else
- {
- iCategoryView.SetCurrentFocus(GetCurrentItemIndex());
- iCategoryView.HandleCommandL(ESelectCmd);
- }
-
- }
- break;
- default:
- break;
- }
- IRLOG_DEBUG( "CIRCategoryViewContainer::HandleListBoxEventL - Exiting" );
- }
-
-
-// ---------------------------------------------------------------------------
-// CIRCategoryViewContainer::Draw()
-// From class CCoeControl.
-// Draws the control.
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::Draw( const TRect& /*aRect*/ ) const
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::Draw - Entering" );
- CWindowGc& gc = SystemGc();
-
- if(iCategoryListBox)
- {
- iCategoryListBox->SetGC(gc);
- iCategoryListBox->SetControlFlag(ETrue);
- }
- gc.SetPenStyle( CGraphicsContext::ENullPen );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-
- // draw background skin first.
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
- TRect clientRect(((CEikAppUi*)(CCoeEnv::Static()->AppUi()))->ClientRect());
- AknsDrawUtils::DrawBackground ( skin, iBgContext, this, gc, TPoint(0,0),
- TRect(TPoint(0,0),clientRect.iBr), KAknsDrawParamDefault );
-
- IRLOG_DEBUG( "CIRCategoryViewContainer::Draw - Exiting" );
- }
-
-
-// ---------------------------------------------------------------------------
-// CIRCategoryViewContainer::GetHelpContext()
-// From class CCoeControl.
-// Opens help by context.
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::GetHelpContext( TCoeHelpContext& aContext ) const
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::GetHelpContext - Entering" );
- if( iCategoryView.iUi->iCategoryViewTitleType == CIRCategoryView::EGenreData )
- {
- aContext = TCoeHelpContext( KIRMCVUid, KIR_HELP_GENRE );
- }
- else if( iCategoryView.iUi->iCategoryViewTitleType == CIRCategoryView::ELanguageData )
- {
- aContext = TCoeHelpContext( KIRMCVUid, KIR_HELP_LANGUAGE );
- }
- else if( iCategoryView.iUi->iCategoryViewTitleType == CIRCategoryView::ECountryData )
- {
- aContext = TCoeHelpContext( KIRMCVUid, KIR_HELP_COUNTRY );
- }
- else
- {
- // NOP
- }
-
- IRLOG_DEBUG( "CIRCategoryViewContainer::GetHelpContext - Exiting" );
- }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryViewContainer::UpdateSearchResultsViewL()
-// updates the search results data to the search results list
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::UpdateCategoryViewL(CDesCArray* aCategory)
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::UpdateCategoryViewL - Entering" );
- CDesCArray* category = aCategory;
- TInt categoryDataCount = aCategory->Count();
- for(TInt i = 0; i < categoryDataCount; i++)
- {
- iItemArray->AppendL(category->MdcaPoint(i));
- }
- if(categoryDataCount>1)
- {
- if(iSearchTextBox)
- {
- delete iSearchTextBox;
- iSearchTextBox = NULL;
- }
-
- // Added For Dynamic Filtering
- iSearchTextBox = CreateFindBoxL(iCategoryListBox, iFilteredModel,
- CAknSearchField::ESearch);
- SizeChanged();
- }
- else
- {
- DisableFindBox();
- }
- if(iFilteredFlag)
- {
- TKeyEvent event;
- TEventCode type = EEventKey;
- event.iCode = EKeyDownArrow;
- TBool needRefresh( EFalse );
- AknFind::HandleFindOfferKeyEventL( event, type, this,
- iCategoryListBox, iSearchTextBox,EFalse,needRefresh );
- TInt filterModelCount = iFilteredModel->NumberOfItems();
- if(filterModelCount ==1 && iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl)
- {
- iCategoryListBox->SetCurrentItemIndex(0);
- }
- else
- {
- if(filterModelCount>1 && iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl && !iLogoDownloadError)
- iCategoryListBox->SetCurrentItemIndex(1);
- }
- }
- else
- {
- iCategoryListBox->HandleItemAdditionL();
- }
-
- IRLOG_DEBUG( "CIRCategoryViewContainer::UpdateCategoryViewL - Exiting" );
- }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryViewContainer::GetCurrentItemIndex()
-// returns the index of the currently selected item
-// ---------------------------------------------------------------------------
-//
-TInt CIRCategoryViewContainer::GetCurrentItemIndex() const
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::GetCurrentItemIndex" );
- return iCategoryListBox->CurrentItemIndex();
- }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryViewContainer::GetListBoxTopIndex()
-// returns the index of the top item
-// ---------------------------------------------------------------------------
-//
-TInt CIRCategoryViewContainer::GetListBoxTopIndex() const
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::GetListBoxTopIndex" );
- return iCategoryListBox->View()->TopItemIndex () ;
- }
-
-
-//----------------------------------------------------------------------------
-// CIRCategoryViewContainer::CountComponentControls() const
-// returns the number of components in the view.
-//----------------------------------------------------------------------------
-//
-TInt CIRCategoryViewContainer::CountComponentControls() const
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::CountComponentControls - Entering" );
- IRLOG_DEBUG( "CIRCategoryViewContainer::CountComponentControls - Exiting" );
- TInt count(KCONTROLSCOUNT);
- if(iCategoryListBox)
- {
- count++;
- }
- if(iSearchTextBox)
- {
- count++;
- }
- return count;
- }
-//----------------------------------------------------------------------------
-// CIRCategoryViewContainer::ComponentControl() const
-// returns a pointer to the control under this view depending on the index
-// passed,to the framework.
-//----------------------------------------------------------------------------
-//
-CCoeControl* CIRCategoryViewContainer::ComponentControl(TInt aIndex) const
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::ComponentControl - Entering" );
- IRLOG_DEBUG( "CIRCategoryViewContainer::ComponentControl - Exiting" );
- switch(aIndex)
- {
- case 0:
- {
- if(iCategoryListBox)
- return iCategoryListBox;
- }
- case 1:
- {
- if(iSearchTextBox)
- return iSearchTextBox;
- }
- default:
- return NULL;
- }
- }
-// ---------------------------------------------------------------------------
-// void CIRCategoryViewContainer::SizeChanged()
-// Responds to changes to the size and position of the contents of this control.
-// ---------------------------------------------------------------------------
-//
-
-void CIRCategoryViewContainer::SizeChanged()
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::SizeChanged - Entering" );
- if(iCategoryView.iUi->IsLandscapeOrientation())
- {
- if(iCategoryListBox && iSearchTextBox && iLandScapeCount ==0)
- {
- AknFind::HandlePopupFindSizeChanged(this,iCategoryListBox,iSearchTextBox);
- iLandScapeCount ++;
- }
- }
- if(iCategoryListBox && iSearchTextBox)
- {
- AknLayoutUtils::LayoutControl(iCategoryListBox, Rect(),
- AKN_LAYOUT_WINDOW_list_gen_pane(1));
- AknLayoutUtils::LayoutControl(iSearchTextBox, Rect(),
- AKN_LAYOUT_WINDOW_find_pane);
- }
- else
- {
- if(iCategoryListBox)
- {
- AknLayoutUtils::LayoutControl(iCategoryListBox, Rect(),
- AKN_LAYOUT_WINDOW_list_gen_pane(0));
- }
- }
-
- TRect clientRect(((CEikAppUi*)(CCoeEnv::Static()->AppUi()))->ClientRect());
- TRect parentRectSize(TPoint(0,0),clientRect.iBr);
-
- if ( iBgContext )
- {
- iBgContext->SetRect(parentRectSize);
- }
-
- DrawNow();
- IRLOG_DEBUG( "CIRCategoryViewContainer::SizeChanged - Exiting" );
- }
-
-// ---------------------------------------------------------------------------
-// void CIRCategoryViewContainer::HandleResourceChange(TInt aType)
-// Handles a change to the control's resources.
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::HandleResourceChange(TInt aType)
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::HandleResourceChange" );
- CCoeControl::HandleResourceChange( aType );
- // application layout change request notification
- if ( aType == KEikDynamicLayoutVariantSwitch )
- {
- // reconstruct controls if needed
- if(iCategoryListBox && iSearchTextBox)
- {
- AknFind::HandlePopupFindSizeChanged(this,iCategoryListBox,iSearchTextBox);
- SizeChanged();
- }
- }
- }
-//----------------------------------------------------------------------------
-// CIRCategoryViewContainer::CreateFindBoxL()
-// creates the Find box when any character is Pressed
-//----------------------------------------------------------------------------
-//
-CAknSearchField* CIRCategoryViewContainer::CreateFindBoxL(CEikListBox* aListBox,
-CTextListBoxModel* aModel, CAknSearchField::TSearchFieldStyle aStyle)
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::CreateFindBoxL - Entering" );
- CAknSearchField* findbox = NULL;
- if (aListBox && aModel)
- {
- // Gets pointer of CAknFilteredTextListBoxModel.
- // Added For Dynamic Filtering
- iFilteredModel = STATIC_CAST( CIRFilteredModel*, aModel );
-
- // Creates FindBox.
- findbox = CAknSearchField::NewL( *this, aStyle, NULL,
- KAknExListFindBoxTextLength);
- CleanupStack::PushL(findbox);
- // Creates CAknListBoxFilterItems class.
- iFilteredModel->CreateFilterL( aListBox, findbox );
- CleanupStack::Pop(findbox); // findbox
- }
- IRLOG_DEBUG( "CIRCategoryViewContainer::CreateFindBoxL - Exiting" );
- return findbox;
- }
-//----------------------------------------------------------------------------
-// CIRCategoryViewContainer::DisableFindBox()
-// Deletes the findbox
-//----------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::DisableFindBox()
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::DisableFindBox - Entering" );
- if (iSearchTextBox)
- {
- iFilteredModel->RemoveFilter();
- // Important to set the find box non-focusing before
- // deleting it, otherwise the focus changes triggered
- // by the removal of the control from stack will focus
- // the find box which is under deletion
- iSearchTextBox->SetNonFocusing();
- delete iSearchTextBox;
- iSearchTextBox = NULL;
- // Inform list box that find is hidden
- static_cast<CAknColumnListBoxView*>(iCategoryListBox->View())->SetFindEmptyListState(EFalse);
- SizeChanged();
- }
- IRLOG_DEBUG( "CIRCategoryViewContainer::DisableFindBox - Exiting" );
- }
-
-
-// ---------------------------------------------------------------------------
-// Function : Comparestrings
-// Function called to compare the filtered string inthe Itemarray
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::Comparestrings()
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::Comparestrings - Entering" );
- TInt count = iFilteredModel->NumberOfItems();
- if(count)
- {
- if((count==1) && iAdvPreset &&!iLogoDownloadError )
- {
- return;
- }
- else
- {
- TPtrC16 filteredString = iFilteredModel->ItemText (iCategoryView.GetFilteredIndex());
- for(TInt i=0;i<iItemArray->Count();i++)
- {
- TPtrC16 matchString=iItemArray->MdcaPoint(i);
- if(filteredString==matchString)
- {
- iCategoryView.SetActualFilteredItemIndex(i);
- break;
- }
- }
- }
- }
- IRLOG_DEBUG( "CIRCategoryViewContainer::Comparestrings - Exiting" );
- }
-// ---------------------------------------------------------------------------
-// void CIRCategoryViewContainer::HandleImageConversionEventL( MIRImageConverterObserver::TIRImageConversionEvent aEvent,
-// from base class MIRImageConverterObserver
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::HandleImageConversionEventL( MIRImageConverterObserver::
- TIRImageConversionEvent aEvent,
- TInt /*aId*/,
- TInt aError )
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::HandleImageConversionEventL - Entering" );
- iError = aError;
- if(aError == KErrNotSupported && iRequestForAdvertisement)
- {
- iFilteredModel->SetAdvFlag(EFalse,*iAdvString);
- iLogoDownloadError = ETrue;
- iRequestForAdvertisement = EFalse;
- }
- if ( !aError && (aEvent == MIRImageConverterObserver::EIRFrameConversionCompleted ||
- aEvent == MIRImageConverterObserver::EIRImageConversionCompleted))
- {
- IRLOG_DEBUG( "CIRSearchResultsViewContainer::HandleImageConversionEventL - Entered elseif" );
- iLogoDownloadError = EFalse;
- CGulIcon* icon = iCategoryListBox->AdvertisementIcon();
- if ( !icon )
- {
- icon = CGulIcon::NewLC();
- iCategoryListBox->SetAdvertisementIconL( icon );
- CleanupStack::Pop( icon );
- }
- icon->SetBitmap( const_cast<CFbsBitmap*>(iCurrentItemConverter->Bitmap()));
- icon->SetMask(const_cast<CFbsBitmap*>(iCurrentItemConverter->Mask() ));
- icon->SetBitmapsOwnedExternally( ETrue );
- DrawDeferred();
- }
- else
- {
-
- }
- if(iFilteredFlag)
- {
- TKeyEvent event;
- TEventCode type = EEventKey;
- event.iCode = EKeyDownArrow;
- TBool needRefresh( EFalse );
- AknFind::HandleFindOfferKeyEventL( event, type, this,
- iCategoryListBox, iSearchTextBox,EFalse,needRefresh );
- }
- iAdPresent = EFalse;
- IRLOG_DEBUG( "CIRCategoryViewContainer::HandleImageConversionEventL - Exiting" );
- }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryViewContainer::PresetLogoDownloadL()
-//
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::PresetLogoDownloadL(CIRIsdsPreset* aPreset)
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::PresetLogoDownloadL - Entering" );
- if(iAdPresent)
- {
- if (iCategoryView.iUi->iIsdsWrapper->iCatBannerUrl)
- {
- *iAdvPreset = *aPreset;
- if(iAdvPreset->GetLogoData()!=KNullDesC8 )
- {
- iFilteredModel->SetAdvFlag(ETrue,*iAdvString);
- iError = KErrNone;
- iCurrentItemConverter->SetDataL(aPreset->GetLogoData());
- if(iError==KErrNone)
- {
- iCurrentItemConverter->StartL( IRLayoutUtils::AdvertisementSizeL(), KErrUnknown ); //KLogoSize
- }
- iRequestForAdvertisement = ETrue;
- }
- }
- }
- IRLOG_DEBUG( "CIRCategoryViewContainer::PresetLogoDownloadL - Exiting" );
- }
-
-// ---------------------------------------------------------------------------
-// CIRCategoryViewContainer::OpenUrlL( const TDesC& aHttpLink)
-// used to connect to the advertisement url.
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::OpenUrlL( const TDesC& aHttpLink )
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::OpenUrlL - Entering" );
-
- TDataType htmlDataType( KIRHtmlMimeType );
- TUid uid;
-
- RApaLsSession ls;
- User::LeaveIfError( ls.Connect() );
- CleanupClosePushL( ls );
-
- // Get UID of the browser.
- TInt retVal = ls.AppForDataType( htmlDataType, uid );
-
- if ( retVal == KErrNone && uid != KNullUid )
- {
- // We must check if the browser is already open and if it is,
- // switch its currently opened file to the correct URL.
- TApaTaskList taskList( iEikonEnv->WsSession() );
- TApaTask task = taskList.FindApp( uid );
- if ( task.Exists() )
- {
- HBufC8* url8 = HBufC8::NewLC( aHttpLink.Length() );
- url8->Des().Copy( aHttpLink );
- task.SendMessage( TUid::Uid( 0 ), url8->Des() );
- task.BringToForeground();
- CleanupStack::PopAndDestroy( url8 );
- }
- else
- {
- TThreadId threadId;
- HBufC* newUrl = HBufC::NewLC( aHttpLink.Length() + KBrowserPrefix().Length() );
- newUrl->Des().Append( KBrowserPrefix );
- newUrl->Des().Append( aHttpLink );
- ls.StartDocument( newUrl->Des(), uid, threadId );
- CleanupStack::PopAndDestroy( newUrl );
- }
- }
- CleanupStack::PopAndDestroy( &ls );
-
- IRLOG_DEBUG( "CIRCategoryViewContainer::OpenUrlL - Exiting" );
-
- }
-//----------------------------------------------------------------------------
-// CIRCategoryViewContainer::GetLogoNotSupported()
-// returns whether the advertisement is supported by the sdk r not
-//----------------------------------------------------------------------------
-//
-TBool CIRCategoryViewContainer::GetLogoNotSupported()
- {
- IRLOG_DEBUG( "CIRCategoryViewContainer::GetLogoNotSupported - Entering" );
- IRLOG_DEBUG( "CIRCategoryViewContainer::GetLogoNotSupported - Exiting" );
- return iLogoDownloadError;
- }
-// ---------------------------------------------------------------------------
-// void CIRCategoryViewContainer::HandleLogoErrorL()
-// called from the iCategoryView when the logo is not downloaded
-// ---------------------------------------------------------------------------
-//
-void CIRCategoryViewContainer::HandleLogoErrorL()
- {
- iLogoDownloadError = ETrue;
- iFilteredModel->SetAdvFlag(EFalse,*iAdvString);
- }