// ---------------------------------------------------------------------------
// CAppMngr2SisxRuntime::LoadIconsL()
// ---------------------------------------------------------------------------
//
void CAppMngr2SisxRuntime::LoadIconsL( CAknIconArray& aIconArray )
    {
    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
    HBufC* iconFilePath = NULL;
    
    iconFilePath = FullBitmapFileNameLC( KAppMngr2SisxIconFileNameMif );

    // Icon loading order in must be the same in which SISX icons
    // are defined in TAppMngr2SisxIcons enum in appmngr2sisx.hrh.
    
    // Icon 0: SIS application icon, EQgnMenuAmSis
    CGulIcon* icon = AknsUtils::CreateGulIconL( skinInstance,
            KAknsIIDQgnMenuAmSis, *iconFilePath,
            EMbmAppmngr2sisxQgn_menu_am_sis,
            EMbmAppmngr2sisxQgn_menu_am_sis_mask );
    CleanupStack::PushL( icon );
    aIconArray.AppendL( icon );
    CleanupStack::Pop( icon );

    // Icon 1: DRM expired rights icon, EQgnPropDrmExpLarge
    icon = AknsUtils::CreateGulIconL( skinInstance,
            KAknsIIDQgnPropDrmRightsExpLarge, *iconFilePath,
            EMbmAppmngr2sisxQgn_prop_drm_exp_large,
            EMbmAppmngr2sisxQgn_prop_drm_exp_large_mask );
    CleanupStack::PushL( icon );
    aIconArray.AppendL( icon );
    CleanupStack::Pop( icon );                                                

    // Icon 2: untrusted SIS application, EQgnIndiAmInstNoAdd
    // Indicator icons are color-skinned as normal icons are
    // graphically-skinned. CreateColorIconL() must be used to
    // create color-skinned icon.
    CFbsBitmap* bitmap = NULL;
    CFbsBitmap* mask = NULL;
    AknsUtils::CreateColorIconLC( skinInstance,
            KAknsIIDQgnIndiAmInstNoAdd,
            KAknsIIDQsnIconColors, EAknsCIQsnIconColorsCG13,
            bitmap, mask, *iconFilePath,
            EMbmAppmngr2sisxQgn_indi_am_inst_no_add,
            EMbmAppmngr2sisxQgn_indi_am_inst_no_add_mask,
            KRgbBlack );
    icon = CGulIcon::NewL( bitmap, mask );
    icon->SetBitmapsOwnedExternally( EFalse );
    CleanupStack::Pop( 2 );   // bitmap and mask, order may vary
    CleanupStack::PushL( icon );
    aIconArray.AppendL( icon );
    CleanupStack::Pop( icon );

    CleanupStack::PopAndDestroy( iconFilePath );
    }
// ---------------------------------------------------------
// CBTUiDeviceContainer::ConstructL
// ---------------------------------------------------------
void CBTUiDeviceContainer::ConstructL(const TRect& aRect, 
  CBTUIListedDevicesView* aView, TBTDeviceGroup aGroup)
    {
	TRACE_FUNC_ENTRY
	
    CreateWindowL();
    
	iView = aView;
    iGroup = aGroup;
    // Create new list for other paired bt-devices
    //
    iDeviceList = new (ELeave) CAknSingleGraphicStyleListBox;
    iDeviceList->SetContainerWindowL(*this);
    iDeviceList->ConstructL(this, EAknListBoxSelectionList);
    
	iDeviceList->SetListBoxObserver( this );    

    // Set the empty text at basis of the list
    iDeviceList->View()->SetListEmptyTextL( KNullDesC );

    // Set up filenames for Btui and Avkon bitmaps
    TFileName bmpFilename;
    bmpFilename += KBitmapFileDrive;
    bmpFilename += KDC_APP_BITMAP_DIR;
    bmpFilename += KBtuiBmpFileName;
        
    // The avkon bitmap we will get from AknIconUtils::AvkonIconFileName()
    TFileName avkonbmpFilename = AknIconUtils::AvkonIconFileName();
    
    // Setup graphic items list for BT devices listbox
    CAknIconArray* iconList = new(ELeave) CAknIconArray(KBTNumberOfIcons);
    CleanupStack::PushL( iconList );
    

	CreateAndAppendIconL( KAknsIIDQgnPropBtComputer, 
						  avkonbmpFilename, 
						  EMbmAvkonQgn_prop_bt_computer,
						  EMbmAvkonQgn_prop_bt_computer_mask,
						  iconList);

	CreateAndAppendIconL( KAknsIIDQgnPropBtPhone,
						  avkonbmpFilename, 
						  EMbmAvkonQgn_prop_bt_phone,
						  EMbmAvkonQgn_prop_bt_phone_mask,
						  iconList);

	CreateAndAppendIconL( KAknsIIDQgnPropBtAudio,
						  avkonbmpFilename, 
						  EMbmAvkonQgn_prop_bt_audio,
						  EMbmAvkonQgn_prop_bt_audio_mask,
						  iconList);

	CreateAndAppendIconL( KAknsIIDQgnPropBtMisc,
						  avkonbmpFilename, 
						  EMbmAvkonQgn_prop_bt_misc,
						  EMbmAvkonQgn_prop_bt_misc_mask,
						  iconList);
						  
	CreateAndAppendIconL( KAknsIIDQgnPropBtKeyboard,
						  avkonbmpFilename, 
						  EMbmAvkonQgn_prop_bt_keyboard,
						  EMbmAvkonQgn_prop_bt_keyboard_mask,
						  iconList);					  

	CreateAndAppendIconL( KAknsIIDQgnPropBtMouse,
						  avkonbmpFilename, 
						  EMbmAvkonQgn_prop_bt_mouse,
						  EMbmAvkonQgn_prop_bt_mouse_mask,
						  iconList);
						  
	CreateAndAppendIconL( KAknsIIDQgnPropBtPrinter,
						  avkonbmpFilename, 
						  EMbmAvkonQgn_prop_bt_printer,
						  EMbmAvkonQgn_prop_bt_printer_mask,
						  iconList);					  					  
	
	CreateAndAppendIconL( KAknsIIDQgnPropBtCarKit,
						  avkonbmpFilename, 
						  EMbmAvkonQgn_prop_bt_carkit,
						  EMbmAvkonQgn_prop_bt_carkit_mask,
						  iconList);
						  
	CreateAndAppendIconL( KAknsIIDQgnPropBtAudioConnect,
						  bmpFilename, 
						  EMbmBtuiQgn_prop_bt_audio_connect,
						  EMbmBtuiQgn_prop_bt_audio_connect_mask,
						  iconList);					  
						  
	CreateAndAppendIconL( KAknsIIDQgnPropBtComputerConnect,
						  bmpFilename, 
						  EMbmBtuiQgn_prop_bt_computer_connect,
						  EMbmBtuiQgn_prop_bt_computer_connect_mask,
						  iconList);
						  
    CreateAndAppendIconL( KAknsIIDQgnPropBtKeyboardConnect,
						  bmpFilename, 
						  EMbmBtuiQgn_prop_bt_keyboard_connect,
						  EMbmBtuiQgn_prop_bt_keyboard_connect_mask,
						  iconList);						  		
						  
	CreateAndAppendIconL( KAknsIIDQgnPropBtCarKitConnect,
						  bmpFilename, 
						  EMbmBtuiQgn_prop_bt_car_kit_connect,
						  EMbmBtuiQgn_prop_bt_car_kit_connect_mask,
						  iconList);	
	
	CreateAndAppendIconL( KAknsIIDQgnPropBtMouseConnect,
                          bmpFilename, 
                          EMbmBtuiQgn_prop_bt_mouse_connect,
                          EMbmBtuiQgn_prop_bt_mouse_connect_mask,
                          iconList);
	
	CFbsBitmap* bitmap = NULL;
    CFbsBitmap* mask = NULL;
    AknsUtils::CreateColorIconLC(AknsUtils::SkinInstance(), 
                                 KAknsIIDQgnIndiBtTrustedAdd,
                                 KAknsIIDQsnIconColors,
                                 EAknsCIQsnIconColorsCG13,
                                 bitmap, mask,
                                 avkonbmpFilename,
                                 EMbmAvkonQgn_indi_bt_trusted_add,
                                 EMbmAvkonQgn_indi_bt_trusted_add_mask,
                                 KRgbBlack);
    CGulIcon* icon = CGulIcon::NewL(bitmap, mask);
        
    CleanupStack::Pop(mask);
    CleanupStack::Pop(bitmap); 
    
    CleanupStack::PushL(icon);    
	iconList->AppendL( icon );
    CleanupStack::Pop(icon);
    
    	
    // Transfer iconlist ownership to the listbox
    iDeviceList->ItemDrawer()->ColumnData()->SetIconArray(iconList);
    CleanupStack::Pop(iconList);

    // Create scrollbars
    iDeviceList->CreateScrollBarFrameL(ETrue);
    iDeviceList->ScrollBarFrame()->SetScrollBarVisibilityL(
    	CEikScrollBarFrame::EOn, CEikScrollBarFrame::EAuto);

    SetRect(aRect);
    ActivateL();

    TRACE_FUNC_EXIT
    }