simpsyconfigurator/src/simpsyfileselector.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:31:27 +0100
branchRCL_3
changeset 18 870918037e16
parent 0 522cd55cc3d7
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2007 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:  Simulation PSY file selector dialog.
*
*/


// SYSTEM INCLUDES 
#include <AknIconArray.h>		// Icon Array
#include <eikclbd.h>			// Column Listbox
#include <aknlists.h>           // CAknPopupList
#include <aknconsts.h>
#include <AknIconArray.h>
#include <AknsUtils.h>
#include <AknsConstants.h>
#include <avkon.mbg>
#include <gulicon.h>
#include <fbs.h>

// USER INCLUDES
#include "simpsyfileselector.h"
#include "simpsyfileselectormodel.h"

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

// ---------------------------------------------------------------------------
// CSimPsyFileSelector::CSimPsyFileSelector
// ---------------------------------------------------------------------------
//
CSimPsyFileSelector::CSimPsyFileSelector()
    {
    // C++ Default constructor. No allocations or functions which can Leave
    // should be called from here.
    }

// ---------------------------------------------------------------------------
// CSimPsyFileSelector::~CSimPsyFileSelector
// ---------------------------------------------------------------------------
//
CSimPsyFileSelector::~CSimPsyFileSelector()
    {
    // C++ Destructor. Free all resources associated with this class.
    
    // Delete the List box model.
    delete iListBoxModel;
    }

// ---------------------------------------------------------------------------
// void CSimPsyFileSelector::ConstructL
// ---------------------------------------------------------------------------
//
void CSimPsyFileSelector::ConstructL( CCoeControl*   aParent )
    {
    // Create the list box model
    iListBoxModel = CSimPsyFileSelectorModel::NewL();
    
    CAknSingleGraphicPopupMenuStyleListBox::ConstructL( aParent, EAknListBoxMenuList );
    
    CreateScrollBarFrameL( ETrue );
    ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,
                                               CEikScrollBarFrame::EAuto ); 
     
    UpdateIconsL();

    Model()->SetItemTextArray( iListBoxModel );  
    Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
    
    ActivateL();
    }

// ---------------------------------------------------------------------------
// void CSimPsyFileSelector::UpdateIconsL
// ---------------------------------------------------------------------------
//
void CSimPsyFileSelector::UpdateIconsL()
	{
    // Add icons to listbox
    CAknIconArray* iconArray = new( ELeave ) CAknIconArray( 1 );
    CleanupStack::PushL( iconArray );

    CFbsBitmap* bitmap = NULL;
    CFbsBitmap* mask = NULL;
    AknsUtils::CreateIconL( AknsUtils::SkinInstance(), 
                            KAknsIIDQgnPropNrtypNote,
                            bitmap,
                            mask,
                            KAvkonBitmapFile,
                            EMbmAvkonQgn_prop_nrtyp_note,
                            EMbmAvkonQgn_prop_nrtyp_note_mask );
    CleanupStack::PushL( bitmap );
    CleanupStack::PushL( mask );

    // Ownership is transferred to CGulIcon
    CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
    CleanupStack::Pop( 2 ); // mask, bitmap
    CleanupStack::PushL( icon );
    iconArray->AppendL( icon ); // Ownership is transferred to CAknIconArray
    CleanupStack::Pop( icon ); // icon
	
    // Get old icons and delete those. This is done because SetIconArray will
    // not do it.
    CAknIconArray* oldIcons = 
    	static_cast<CAknIconArray*>( ItemDrawer()->ColumnData()->IconArray());
    	
	delete oldIcons;
	
    //Set New Icons to array
    ItemDrawer()->ColumnData()->SetIconArray( iconArray );  
    CleanupStack::Pop( iconArray );
    	 
	// Enable Marquee scrolling
	ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );	    	    	
    		
    DrawDeferred();
	}
	
// ---------------------------------------------------------------------------
//TPtrC CSimPsyFileSelector::SimulationFileNameL
// ---------------------------------------------------------------------------
//
TPtrC CSimPsyFileSelector::SimulationFileNameL()
	{   	
	return iListBoxModel->SimulationFileNameL( CurrentItemIndex());
	}

// ---------------------------------------------------------------------------
// void CSimPsyFileSelector::HandleResourceChange
// ---------------------------------------------------------------------------
//
void CSimPsyFileSelector::HandleResourceChange( TInt    aType )
    {
    // Pass the event to the base class
    CCoeControl::HandleResourceChange( aType );
    switch( aType )
        {
        // Dynamic Layout switch and Skin Change
        case KEikDynamicLayoutVariantSwitch:
            {
            SetRect( Rect());
            break;
            }
        case KAknsMessageSkinChange:
            {
            TRAP_IGNORE( UpdateIconsL());
            break;
            }
        default:
            {
            break;
            }
        } 
    DrawDeferred();
    }