www.pudn.com > ExeLauncher.zip > ExeLauncherContainer.cpp


/* 
* ============================================================================ 
*  Name     : CExeLauncherContainer from ExeLauncherContainer.h 
*  Part of  : ExeLauncher 
*  Created  : 01.09.2005 by Artem Marchenko 
*  Implementation notes: 
*     Container of the file list control 
*  Version  : 1.0 
*  Copyright: Artem Marchenko 2005 
* ============================================================================ 
*/ 
 
// INCLUDE FILES 
#include "ExeLauncherContainer.h" 
#include  
 
#include   // for example label control 
#include   
#include "ExeLauncher.hrh" 
#include "ExeLauncher.loc" 
 
 
// ================= MEMBER FUNCTIONS ======================= 
 
// --------------------------------------------------------- 
// CExeLauncherContainer::ConstructL(const TRect& aRect) 
// EPOC two phased constructor 
// --------------------------------------------------------- 
// 
void CExeLauncherContainer::ConstructL(const TRect& aRect) 
    { 
    CreateWindowL(); 
 
	iFileList = new (ELeave) CSettingItemList; 
	iFileList->ConstructFromResourceL( R_EXELAUNCHER_FILE_LIST ); 
	// Fills file list with the default values 
	iFileList->LoadSettingsL(); 
	iFileList->ActivateL(); 
 
    SetRect(aRect); 
    ActivateL(); 
    } 
 
// Destructor 
CExeLauncherContainer::~CExeLauncherContainer() 
    { 
	delete iFileList; 
    } 
 
// --------------------------------------------------------- 
// CExeLauncherContainer::CountComponentControls() const 
// --------------------------------------------------------- 
// 
TInt CExeLauncherContainer::CountComponentControls() const 
    { 
    return 1; // return number of controls inside this container 
    } 
 
// --------------------------------------------------------- 
// CExeLauncherContainer::ComponentControl(TInt aIndex) const 
// --------------------------------------------------------- 
// 
CCoeControl* CExeLauncherContainer::ComponentControl(TInt aIndex) const 
    { 
    switch ( aIndex ) 
        { 
        case 0: 
			return iFileList; 
        default: 
            return NULL; 
        } 
    } 
 
 
// --------------------------------------------------------- 
// CExeLauncherContainer::HandleControlEventL( 
//     CCoeControl* aControl,TCoeEvent aEventType) 
// --------------------------------------------------------- 
// 
void CExeLauncherContainer::HandleControlEventL( 
    CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/) 
    { 
	// nothing 
    } 
 
TKeyResponse CExeLauncherContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode /*aType*/) 
	{ 
	RDebug::Print( _L( "CExeLauncherContainer::OfferKeyEventL iCode [%d]" ), aKeyEvent.iCode ); 
	TKeyResponse result = EKeyWasNotConsumed; 
	TInt current = iFileList->ListBox()->CurrentItemIndex(); 
	const TInt bottomIndex = iFileList->ListBox()->BottomItemIndex(); 
	const TInt topIndex = iFileList->ListBox()->TopItemIndex(); 
	switch ( aKeyEvent.iCode ) 
		{ 
		case EKeyOK: 
			iFileList->EditItemL(current, ETrue); 
			result = EKeyWasConsumed; 
			break; 
		case EKeyUpArrow: 
			RDebug::Print( _L( "CExeLauncherContainer::OfferKeyEventL DOWN iCode [%d]" ), aKeyEvent.iCode ); 
			current = current - 1 < topIndex ? topIndex : current - 1; 
			iFileList->ListBox()->SetCurrentItemIndexAndDraw( current ); 
			break; 
		case EKeyDownArrow: 
			RDebug::Print( _L( "CExeLauncherContainer::OfferKeyEventL UP iCode [%d]" ), aKeyEvent.iCode ); 
			current = current + 1 > bottomIndex ? bottomIndex : current + 1; 
			iFileList->ListBox()->SetCurrentItemIndexAndDraw( current ); 
			break; 
		} 
	return result; 
	} 
 
 
// This is the main function to create editors for each item 
// in the settings item list. We are setting default values for 
// filenames here 
CAknSettingItem* CSettingItemList::CreateSettingItemL(TInt aIdentifier) 
{ 
	CAknSettingItem* settingitem = NULL; 
	 
	switch ( aIdentifier ) 
	{ 
		case EELFileItem1: 
		{ 
			settingitem = new (ELeave) CAknTextSettingItem( aIdentifier, iText1 ); 
		} 
		break; 
		case EELFileItem2: 
		{ 
			settingitem = new (ELeave) CAknTextSettingItem( aIdentifier, iText2 ); 
		} 
		break; 
		case EELFileItem3: 
		{ 
			settingitem = new (ELeave) CAknTextSettingItem( aIdentifier, iText3 ); 
		} 
		break; 
	} 
	 
	return settingitem; 
} 
 
CSettingItemList::CSettingItemList() 
{ 
	// Read default file names from resources 
	iEikonEnv->ReadResource( iText1, R_EXEL_ITEM1_TEXT ); 
	iEikonEnv->ReadResource( iText2, R_EXEL_ITEM2_TEXT ); 
	iEikonEnv->ReadResource( iText3, R_EXEL_ITEM3_TEXT ); 
} 
 
 
// End of File