diff -r 2e1adbfc62af -r ee64f059b8e1 internetradio2.0/uisrc/ircategoryviewcontainer.cpp --- 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: -* -* -* 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 -* -* -* ============================================================================ -*/ -/* --------------------------------------------------------------------------- -* Version history: -* Template version: -* -* -* 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 -* -* -* ============================================================================ -*/ -/* --------------------------------------------------------------------------- -* Version history: -* Template version: -* -* -* 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 -* -* -* -* ============================================================================ -*/ -/* --------------------------------------------------------------------------- -* Version history: -* Template version: -* -* -* Version: 5, Tues March 25 17:30:00 2008 by Prabina -* Ref: -* Fixing the PCLint errors -* -* -* -* ============================================================================ -*/ -/* --------------------------------------------------------------------------- -* Version history: -* Template version: -* -* -* Version: 6, Tues March 29 10:30:00 2008 by Prabina -* Ref: -* Category View Container Derived from CCoeControl -* -* -* -* ============================================================================ -*/ -/* --------------------------------------------------------------------------- -* Version history: -* Template version: -* -* -* 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: -* -* -* Version: 5, Thurs July 18 12:00:00 2008 by Prabina -* Ref: -* Code Review Comments Fixed -* -* -* -* ============================================================================ -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#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 -#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( 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( 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(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;iCount();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(iCurrentItemConverter->Bitmap())); - icon->SetMask(const_cast(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); - }