diff -r 4baee4f15982 -r 6385c4c93049 browserui/browser/FavouritesSrc/BrowserFavouritesContainer.cpp --- a/browserui/browser/FavouritesSrc/BrowserFavouritesContainer.cpp Thu Aug 19 09:57:56 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,362 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "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: -* Implementation of CBrowserFavouritesContainer. -* -* -*/ - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for TResourceReader -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "Display.h" -#include "Preferences.h" -#include "BrowserAppUi.h" -#include "BrowserUIVariant.hrh" -#include "CommonConstants.h" -#include "BrowserFavouritesView.h" -#include "BrowserFavouritesContainer.h" -#include "BrowserFavouritesListbox.h" -#include "BrowserFavouritesListboxModel.h" -#include "BrowserFavouritesListboxIconHandler.h" -#include "logger.h" - -// CONSTANTS -LOCAL_D const TInt KTabId = 88888; -LOCAL_D const TInt KMaxNaviText = 25; // format is "/". -_LIT( KFormat, "%d/%d" ); - -// ============================= LOCAL FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::~CBrowserFavouritesContainer -// ----------------------------------------------------------------------------- -// -CBrowserFavouritesContainer::~CBrowserFavouritesContainer() - { - delete iListbox; - delete iIconHandler; - delete iSkinContext; - delete iNaviPaneTabsFolder; - } - - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::ShowRootNaviPane -// ----------------------------------------------------------------------------- -// -void CBrowserFavouritesContainer::ShowRootNaviPane() - { - // If text is showing, destroy now - this pops off teh Navi Pane. - delete iNaviPaneTabsFolder; - iNaviPaneTabsFolder = NULL; - } - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::ShowFolderNaviPaneL -// ----------------------------------------------------------------------------- -// -void CBrowserFavouritesContainer::ShowFolderNaviPaneL -( TInt aFolderIndex, TInt aFolderCount ) - { - CAknNavigationControlContainer* naviPane = - iView->ApiProvider().Display().NaviPaneL(); - if ( !iNaviPaneTabsFolder ) - { - // Folder's tab group not yet created. Make it now. - iNaviPaneTabsFolder = naviPane->CreateTabGroupL(); - iNaviPaneTabsFolder->SetNaviDecoratorObserver(this); - } - - TBuf buf; - // Format Navi Pane text "1/4" style. - buf.Format( KFormat, aFolderIndex + 1, aFolderCount ); - AknTextUtils::LanguageSpecificNumberConversion( buf ); - - CEikImage* folderIcon = new (ELeave) CEikImage; - CleanupStack::PushL( folderIcon ); - TResourceReader rr; - iCoeEnv->CreateResourceReaderLC( rr, R_BROWSER_ICON_PROP_FOLDER ); - folderIcon->ConstructFromResourceL( rr ); - folderIcon->SetPictureOwnedExternally( EFalse ); // has ownership now - CleanupStack::PopAndDestroy(); // rr - - CAknTabGroup* tabGroup = - STATIC_CAST( CAknTabGroup*, iNaviPaneTabsFolder->DecoratedControl() ); - if ( tabGroup->TabCount() ) - { - // Already created. Change the contents. - tabGroup->ReplaceTabL - ( - KTabId, - buf, - folderIcon->Bitmap(), // ownership passed - folderIcon->Mask() // ownership passed - ); - } - else - { - // Created just now. Add the contents. - tabGroup->AddTabL - ( - KTabId, - buf, - folderIcon->Bitmap(), // ownership passed - folderIcon->Mask() // ownership passed - ); - } - folderIcon->SetPictureOwnedExternally( ETrue ); // ownership passed - CleanupStack::PopAndDestroy(); // folderIcon - - tabGroup->SetTabFixedWidthL( EAknTabWidthWithOneTab ); - tabGroup->SetActiveTabById( KTabId ); - - iNaviPaneTabsFolder->SetScrollButtonDimmed - ( CAknNavigationDecorator::ELeftButton, aFolderIndex == 0 ); - iNaviPaneTabsFolder->SetScrollButtonDimmed - ( - CAknNavigationDecorator::ERightButton, - aFolderIndex == aFolderCount - 1 - ); - - // If not yet pushed, this will do the push; if already there, this brings - // it to top and draws. - naviPane->PushL( *iNaviPaneTabsFolder ); - } - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::ComponentControl -// ----------------------------------------------------------------------------- -// -CCoeControl* CBrowserFavouritesContainer::ComponentControl -( TInt aIndex ) const - { - switch (aIndex) - { - case 0: - return iListbox; - - default: - return 0; - } - } - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::CountComponentControls -// ----------------------------------------------------------------------------- -// -TInt CBrowserFavouritesContainer::CountComponentControls() const - { - return (iListbox ? 1 : 0) ; - } - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::SizeChanged -// ----------------------------------------------------------------------------- -// -void CBrowserFavouritesContainer::SizeChanged() - { - // Listbox is empty; listbox takes the whole area. - iListbox->SetRect( Rect() ); - } - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::OfferKeyEventL -// ----------------------------------------------------------------------------- -// -TKeyResponse CBrowserFavouritesContainer::OfferKeyEventL -( const TKeyEvent& aKeyEvent, TEventCode aType ) - { - CBrowserAppUi* ui = CBrowserAppUi::Static(); - TKeyResponse result = EKeyWasNotConsumed; - - if (ui->OfferApplicationSpecificKeyEventL(aKeyEvent, aType) == EKeyWasConsumed) - { - return EKeyWasConsumed; - } - - - if ( result == EKeyWasNotConsumed ) - { - // Otherwise, give the view a chance to handle arrow presses - // (moving between subfolders). - result = iView->OfferKeyEventL( aKeyEvent, aType ); - } - - if ( result == EKeyWasNotConsumed && iListbox ) - { - // Otherwise, let the listbox fiddle with it. This will NOT consume - // arrow presses (base class overridden). - result = iListbox->OfferKeyEventL( aKeyEvent, aType ); - - if( (aKeyEvent.iCode == EKeyDownArrow) || (aKeyEvent.iCode == EKeyUpArrow) ) - { - iView->UpdateToolbarButtonsState(); - } - - } - - return result; - } - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::HandleCursorChangedL -// ----------------------------------------------------------------------------- -// -void CBrowserFavouritesContainer::HandleCursorChangedL -( CEikListBox* /*aListBox*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::HandleNaviDecoratorEventL -// -// Called when user touches the left or right arrow in navipane -// ----------------------------------------------------------------------------- -// -void CBrowserFavouritesContainer::HandleNaviDecoratorEventL( TInt aEventID ) - { - // used to swap the arrow key functionality for Arabic, etc... - TBool forward(!(AknLayoutUtils::PenEnabled() && AknLayoutUtils::LayoutMirrored())); - - switch (aEventID) - { - case MAknNaviDecoratorObserver::EAknNaviDecoratorEventRightTabArrow: - iView->ShowNextFolerL(forward); - break; - case MAknNaviDecoratorObserver::EAknNaviDecoratorEventLeftTabArrow: - iView->ShowNextFolerL(!forward); - break; - default: - break; - } - } - - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::ConstructComponentControlsL -// ----------------------------------------------------------------------------- -// -void CBrowserFavouritesContainer::ConstructComponentControlsL( - const TRect& /*aRect*/, - CBrowserFavouritesView& aView ) - { - // Construct listbox. - iIconHandler = CreateListboxIconHandlerL(); - iListbox = CBrowserFavouritesListbox::NewL( iView->ApiProvider(), this, *iIconHandler ); - iListbox->SetListBoxObserver( &aView ); - iListbox->SetListboxCursorObserver( this ); - HBufC* buf = iCoeEnv->AllocReadResourceLC( ListboxEmptyTextResourceId() ); - iListbox->View()->SetListEmptyTextL( *buf ); - CleanupStack::PopAndDestroy(); // buf - - } - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::ConstructL -// ----------------------------------------------------------------------------- -// -void CBrowserFavouritesContainer::ConstructL -( const TRect& aRect, CBrowserFavouritesView& aView ) - { - iView = &aView; - - //CAknNavigationControlContainer* naviPane = iView->ApiProvider().Display().NaviPaneL(); - - CreateWindowL(); - SetMopParent( iView ); - - ConstructComponentControlsL( aRect, *iView ); - - TAknsItemID tileIID = KAknsIIDSkinBmpListPaneNarrowA; - TAknLayoutRect listGenPane; - listGenPane.LayoutRect(iAvkonAppUi->ClientRect() , - AknLayout::list_gen_pane( 0 )); - - TAknLayoutRect column; - column.LayoutRect(iAvkonAppUi->ClientRect() , - AknLayout::A_column()); - - iSkinContext = CAknsListBoxBackgroundControlContext::NewL( - KAknsIIDSkinBmpMainPaneUsual, - listGenPane.Rect(), //TODOVRa: Should come from LAF! - EFalse, tileIID, - column.Rect() ); //TODOVRa: Should come from LAF! - SetRect( aRect ); - ActivateL(); - } - - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::MopSupplyObject -// ----------------------------------------------------------------------------- -// -TTypeUid::Ptr CBrowserFavouritesContainer::MopSupplyObject( TTypeUid aId ) - { - if( aId.iUid == MAknsControlContext::ETypeId ) - { - return MAknsControlContext::SupplyMopObject( aId, iSkinContext ); - } - - return SupplyMopObject( aId, (MAknEditingStateIndicator*)NULL ); - } - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::HandleResourceChange -// ----------------------------------------------------------------------------- -// -void CBrowserFavouritesContainer::HandleResourceChange( TInt aType ) - { - // goes through all the subcomponents - CCoeControl::HandleResourceChange( aType ); - - if (aType == KEikDynamicLayoutVariantSwitch) - { - SetRect(iView->ClientRect()); - DrawDeferred(); - } - } - -// ----------------------------------------------------------------------------- -// CBrowserFavouritesContainer::FocusChanged -// ----------------------------------------------------------------------------- -// -void CBrowserFavouritesContainer::FocusChanged( TDrawNow aDrawNow ) - { - if ( iListbox && iListbox->IsVisible() ) - { - Listbox()->SetFocus( IsFocused(), aDrawNow ); - } - } - -// End of File