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


/* 
* ============================================================================ 
*  Name     : CExeLauncherAppUi from ExeLauncherAppui.cpp 
*  Part of  : ExeLauncher 
*  Created  : 01.09.2005 by Artem Marchenko 
*  Version  : 1.0 
*  Copyright: Artem Marchenko 2005 
* ============================================================================ 
*/ 
 
// INCLUDE FILES 
#include "ExeLauncherAppui.h" 
#include "ExeLauncherContainer.h"  
#include  
#include "ExeLauncher.hrh" 
 
#include  
#include   
#include  
#include  
#include  
 
// ================= MEMBER FUNCTIONS ======================= 
// 
// ---------------------------------------------------------- 
// CExeLauncherAppUi::ConstructL() 
//  
// ---------------------------------------------------------- 
// 
void CExeLauncherAppUi::ConstructL() 
    { 
    BaseConstructL(); 
 
    iAppContainer = new (ELeave) CExeLauncherContainer; 
    iAppContainer->SetMopParent( this ); 
    iAppContainer->ConstructL( ClientRect() ); 
    AddToStackL( iAppContainer ); 
    } 
 
// ---------------------------------------------------- 
// CExeLauncherAppUi::~CExeLauncherAppUi() 
// Destructor 
// Frees reserved resources 
// ---------------------------------------------------- 
// 
CExeLauncherAppUi::~CExeLauncherAppUi() 
    { 
    if (iAppContainer) 
        { 
        RemoveFromStack( iAppContainer ); 
        delete iAppContainer; 
        } 
   } 
 
// ------------------------------------------------------------------------------ 
// CExeLauncherAppUi::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane) 
//  This function is called by the EIKON framework just before it displays 
//  a menu pane. Its default implementation is empty, and by overriding it, 
//  the application can set the state of menu items dynamically according 
//  to the state of application data. 
// ------------------------------------------------------------------------------ 
// 
void CExeLauncherAppUi::DynInitMenuPaneL( 
    TInt /*aResourceId*/,CEikMenuPane* /*aMenuPane*/) 
    { 
    } 
 
// ---------------------------------------------------- 
// CExeLauncherAppUi::HandleKeyEventL( 
//     const TKeyEvent& aKeyEvent,TEventCode /*aType*/) 
// takes care of key event handling 
// ---------------------------------------------------- 
// 
TKeyResponse CExeLauncherAppUi::HandleKeyEventL( 
    const TKeyEvent& /*aKeyEvent*/,TEventCode /*aType*/) 
    { 
    return EKeyWasNotConsumed; 
    } 
 
// ---------------------------------------------------- 
// CExeLauncherAppUi::HandleCommandL(TInt aCommand) 
// takes care of command handling 
// ---------------------------------------------------- 
// 
void CExeLauncherAppUi::HandleCommandL(TInt aCommand) 
    { 
    switch ( aCommand ) 
        { 
		// Menu item "Exit" 
        case EEikCmdExit: 
		// RSK "Exit" 
		case EAknSoftkeyExit: 
            { 
            Exit(); 
            break; 
            } 
        case EExeLauncherCmdAppRun: 
            { 
			// Get file name from the current item 
			CAknSettingItemArray* items = iAppContainer->FileList()->SettingItemArray(); 
			TInt currentIndex = iAppContainer->FileList()->ListBox()->CurrentItemIndex(); 
			CAknSettingItem* item = items->At( currentIndex ); 
			const TDesC& fileName = item->SettingTextL(); 
			RFile file; 
			// Check for file existance 
			TInt err = file.Open( iEikonEnv->FsSession(), fileName, EFileShareAny ); 
			if ( (err == KErrNotFound) || ( err == KErrPathNotFound ) ) // file does not exist - create it 
				{ 
				// Load a string from the resource file. 
                HBufC* errorString = StringLoader::LoadLC( R_EXEL_ERROR_NOT_FOUND ); 
 
                // Create Error Note object via CAknGlobalNote API 
                CAknGlobalNote* globalNote = CAknGlobalNote::NewLC(); 
                globalNote->ShowNoteL( EAknGlobalErrorNote, *errorString ); 
 
                // Clean-up 
                CleanupStack::PopAndDestroy( globalNote ); 
                CleanupStack::PopAndDestroy( errorString ); 
				}  
			else  
				{ 
				// File exists. Close used RFile resource and try to run it 
				file.Close(); 
				// No additional error handling in a tutorial-like application 
				// In commerical project, we would also check if there are arguments 
				// in the item content and handle them appropriately 
				EikDll::StartExeL( fileName ); 
				} 
			 
            break; 
            } 
		case EExeLauncherCmdAppEdit: 
            { 
            CSettingItemList* list = iAppContainer->FileList(); 
			const TInt current = list->ListBox()->CurrentItemIndex(); 
			list->EditItemL(current, ETrue); 
            break; 
            } 
        default: 
            break;       
        } 
    } 
 
 
// End of File