browserui/browser/FavouritesSrc/BrowserFavouritesFolderListboxIconHandler.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:31:04 +0100
branchRCL_3
changeset 48 8e6fa1719340
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201032 Kit: 201035

/*
* 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 TWmlBrowserFavouritesFolderListboxIconHandler.
*      
*
*/


// INCLUDE FILES
#include <BrowserNG.rsg>
#include <favouritesitem.h>
#include "BrowserFavouritesFolderListboxIconHandler.h"
#include "BrowserFavouritesIconIndexArray.h"
#include "BrowserFavouritesView.h"
#include <AknsUtils.h>
#include <avkon.mbg>
#include <gulicon.h>
#include <AknIconArray.h>
#include <browser.mbg>

#include "CommonConstants.h"
#include <data_caging_path_literals.hrh>

// CONSTANTS

// MACROS

// LOCAL TYPES

/**
* Icon indexes. Numeric values MUST match the resource definition order.
*/
enum
    {
    EIconIndexListboxMark = 0,			///< Listbox mark icon index.
    EIconIndexFolder = 1,				///< Folder icon index.
    EIconIndexRootFolder = 2,			///< Root folder icon index.
	EIconIndexHomepage = 3,				///< Homepage icon index.
    EIconIndexLastVisitedPage = 4,		///< Last Visited icon index.
    EIconIndexBookmark = 5,				///< Bookmark icon index.
    EIconIndexCsdBearer = 6,			///< CSD bearer icon index.
    EIconIndexHscsdBearer = 7,			///< HSCSD bearer icon index.
    EIconIndexGprsBearer = 8,			///< GPRS bearer icon index.
	EIconIndexSeamlessLinksFolder = 9	///< Seamless links icon index
    };

// ================= MEMBER FUNCTIONS =======================

// ---------------------------------------------------------
// TBrowserFavouritesFolderListboxIconHandler::IconArrayResourceId
// ---------------------------------------------------------
//
TInt TBrowserFavouritesFolderListboxIconHandler::IconArrayResourceId() const
    {
    return R_BROWSER_FAVOURITES_FOLDER_LISTBOX_ICONS;
    }

//-----------------------------------------------------------------------------
// MBrowserFavouritesListboxIconHandler::IconIndexes
//-----------------------------------------------------------------------------
//
TBrowserFavouritesIconIndexes
    TBrowserFavouritesFolderListboxIconHandler::IconIndexes( 
                                    const CFavouritesItem& aItem ) const
    {
    TBrowserFavouritesIconIndexes indexes;
     indexes.iItemIcon = ItemIconIndex( aItem );
     indexes.iBearerIcon = KBrowserFavouritesNoBearerIcon; //Bearer icons removed
     return indexes;
    }

// ---------------------------------------------------------
// TBrowserFavouritesFolderListboxIconHandler::ItemIconIndex
// ---------------------------------------------------------
//
TInt TBrowserFavouritesFolderListboxIconHandler::ItemIconIndex
( const CFavouritesItem& aItem,CBrowserFavouritesListbox* /*aListbox*/  ) const
    {
    return ItemIconIndex(aItem);
    }

// ---------------------------------------------------------
// TBrowserFavouritesFolderListboxIconHandler::ItemIconIndex
// ---------------------------------------------------------
//
TInt TBrowserFavouritesFolderListboxIconHandler::ItemIconIndex
( const CFavouritesItem& aItem ) const
    {
	if ( aItem.Uid() == KFavouritesRootUid )
		{
        return EIconIndexRootFolder;
		}
	if ( aItem.Uid() == KFavouritesHomepageUid )
        {
        return EIconIndexHomepage;
        }
    if ( aItem.Uid() == KFavouritesStartPageUid )
        {
        return EIconIndexHomepage;
        }
    if ( aItem.Uid() == KFavouritesLastVisitedUid )
        {
        return EIconIndexLastVisitedPage;
        }

   	//seamless links folders have a different icon
   	if( CBrowserFavouritesView::IsSeamlessFolder( aItem.ContextId() ) )
   		{
   		return EIconIndexSeamlessLinksFolder;
   		}
	
	return aItem.IsItem() ? EIconIndexBookmark : EIconIndexFolder;        
    }


// ---------------------------------------------------------
// TBrowserFavouritesFolderListboxIconHandler::LoadIconsL
// ---------------------------------------------------------
//
CAknIconArray* TBrowserFavouritesFolderListboxIconHandler::LoadIconsL() const
{
    CAknIconArray* icons = 
    new(ELeave) CAknIconArray( 20 );
    CleanupStack::PushL(icons); // PUSH Icon
	CGulIcon* newIcon;
	CFbsBitmap *newIconBmp;
	CFbsBitmap *newIconMaskBmp;

    TBuf<KMaxFileName> iconFileAvkon= KAvkonMbmPath();
    TParse* fp = new(ELeave) TParse(); 
    CleanupStack::PushL(fp);
    TInt err = fp->Set(KBrowserDirAndFile, &KDC_APP_BITMAP_DIR, NULL); 
    if (err != KErrNone)
        {
        User::Leave(err);
        }
    TBuf<KMaxFileName> iconFileBrowser= fp->FullName();
    CleanupStack::PopAndDestroy(fp);
	
	MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();

	AknsUtils::CreateIconLC( skinInstance,
                                           KAknsIIDQgnIndiMarkedAdd,
                                           newIconBmp,
										   newIconMaskBmp,
                                           iconFileAvkon,
                                           EMbmAvkonQgn_indi_marked_add,
										   EMbmAvkonQgn_indi_marked_add_mask);    
	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
	CleanupStack::PushL(newIcon);
	icons->AppendL( newIcon );
	CleanupStack::Pop(newIcon);
	//EMbmAvkonQgn_prop_folder_small; maskId = EMbmAvkonQgn_prop_folder_small_mask; },
	AknsUtils::CreateIconLC( skinInstance,
                                           KAknsIIDQgnPropFolderSmall,
                                           newIconBmp,
										   newIconMaskBmp,
                                           iconFileAvkon,
                                           EMbmAvkonQgn_prop_folder_small,
										   EMbmAvkonQgn_prop_folder_small_mask);    
	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
	CleanupStack::PushL(newIcon);
	icons->AppendL( newIcon );
	CleanupStack::Pop(newIcon);
	//EMbmAvkonQgn_indi_level_back; maskId = EMbmAvkonQgn_indi_level_back_mask; }
	AknsUtils::CreateIconLC( skinInstance,
                                           KAknsIIDQgnIndiLevelBack,
                                           newIconBmp,
										   newIconMaskBmp,
                                           iconFileAvkon,
                                           EMbmAvkonQgn_indi_level_back,
										   EMbmAvkonQgn_indi_level_back_mask);    
	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
	CleanupStack::PushL(newIcon);
	icons->AppendL( newIcon );
	CleanupStack::Pop(newIcon);
    //"z:\\system\\apps\\browser\\Browser.mbm";
	//EMbmBrowserQgn_prop_wml_home; maskId = EMbmBrowserQgn_prop_wml_home_mask; },
	AknsUtils::CreateIconLC( skinInstance,
                                           KAknsIIDQgnPropWmlHome,
                                           newIconBmp,
										   newIconMaskBmp,
                                           iconFileBrowser,
                                           EMbmBrowserQgn_prop_wml_home,
										   EMbmBrowserQgn_prop_wml_home_mask);    
	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
	CleanupStack::PushL(newIcon);
	icons->AppendL( newIcon );
	CleanupStack::Pop(newIcon);
	//EMbmBrowserQgn_prop_wml_bm_last; maskId = EMbmBrowserQgn_prop_wml_bm_last_mask; },
	AknsUtils::CreateIconLC( skinInstance,
                                           KAknsIIDQgnPropWmlBmLast,
                                           newIconBmp,
										   newIconMaskBmp,
                                           iconFileBrowser,
                                           EMbmBrowserQgn_prop_wml_bm_last,
										   EMbmBrowserQgn_prop_wml_bm_last_mask);    
	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
	CleanupStack::PushL(newIcon);
	icons->AppendL( newIcon );
	CleanupStack::Pop(newIcon);
	//EMbmBrowserQgn_prop_wml_bm; maskId = EMbmBrowserQgn_prop_wml_bm_mask; },
	AknsUtils::CreateIconLC( skinInstance,
                                           KAknsIIDQgnPropWmlBm,
                                           newIconBmp,
										   newIconMaskBmp,
                                           iconFileBrowser,
                                           EMbmBrowserQgn_prop_wml_bm,
										   EMbmBrowserQgn_prop_wml_bm_mask);    
	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
	CleanupStack::PushL(newIcon);
	icons->AppendL( newIcon );
	CleanupStack::Pop(newIcon);
	//EMbmBrowserQgn_indi_wml_csd_add; maskId = EMbmBrowserQgn_indi_wml_csd_add_mask; },
	AknsUtils::CreateIconLC( skinInstance,
                                           KAknsIIDQgnIndiWmlCsdAdd,
                                           newIconBmp,
										   newIconMaskBmp,
                                           iconFileBrowser,
                                           EMbmBrowserQgn_indi_wml_csd_add,
										   EMbmBrowserQgn_indi_wml_csd_add_mask);    
	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
	CleanupStack::PushL(newIcon);
	icons->AppendL( newIcon );
	CleanupStack::Pop(newIcon);
	//EMbmBrowserQgn_indi_wml_hscsd_add; maskId = EMbmBrowserQgn_indi_wml_hscsd_add_mask; },
	AknsUtils::CreateIconLC( skinInstance,
                                           KAknsIIDQgnIndiWmlHscsdAdd,
                                           newIconBmp,
										   newIconMaskBmp,
                                           iconFileBrowser,
                                           EMbmBrowserQgn_indi_wml_hscsd_add,
										   EMbmBrowserQgn_indi_wml_hscsd_add_mask);    
	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
	CleanupStack::PushL(newIcon);
	icons->AppendL( newIcon );
	CleanupStack::Pop(newIcon);
	//EMbmBrowserQgn_indi_wml_gprs_add; maskId = EMbmBrowserQgn_indi_wml_gprs_add_mask; },
	AknsUtils::CreateIconLC( skinInstance,
                                           KAknsIIDQgnIndiWmlGprsAdd,
                                           newIconBmp,
										   newIconMaskBmp,
                                           iconFileBrowser,
                                           EMbmBrowserQgn_indi_wml_gprs_add,
										   EMbmBrowserQgn_indi_wml_gprs_add_mask);    
	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
	CleanupStack::PushL(newIcon);
	icons->AppendL( newIcon );
	CleanupStack::Pop(newIcon);
	//EMbmBrowserQgn_prop_wml_folder_link_seamless; maskId = EMbmBrowserQgn_prop_wml_folder_link_seamless_mask; }
	AknsUtils::CreateIconLC( skinInstance,
                                           KAknsIIDQgnPropWmlFolderLinkSeamless,
                                           newIconBmp,
										   newIconMaskBmp,
                                           iconFileBrowser,
                                           EMbmBrowserQgn_prop_wml_folder_link_seamless,
										   EMbmBrowserQgn_prop_wml_folder_link_seamless_mask);    
	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
    CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC)
	CleanupStack::PushL(newIcon);
	icons->AppendL( newIcon );
	CleanupStack::Pop(newIcon);

    CleanupStack::Pop();    // POP Icon
	return icons;
}

// End of File