diff -r cad71a31b7fc -r e36f3802f733 srsf/vcexecutorapp/src/vcexecutorappui.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/srsf/vcexecutorapp/src/vcexecutorappui.cpp Wed Sep 01 12:29:17 2010 +0100 @@ -0,0 +1,170 @@ +/* +* Copyright (c) 2006-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: vcexecutorapp application UI class +* +*/ + + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include + +#include + +#include "vcexecutorappui.h" +#include "appcontroller.h" +#include "rubydebug.h" + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CVCExecutorAppUi::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CVCExecutorAppUi::ConstructL() + { + RUBY_DEBUG_BLOCKL( "CVCExecutorAppUi::ConstructL" ); + + // Remember the idle status pane resource id + iInitialStatuspaneResourceId = CAknSgcClient::CurrentStatuspaneResource(); + + + // Cannot set ENoScreenFurniture here since after that StatusPane() function + // returns NULL. "Voice mailbox" command requires status pane to be available + // when executing. + // ENoAppResourceFile seems to have no effect -> not setting that either + BaseConstructL( EAknEnableSkin | EAknEnableMSK /*ENoScreenFurniture*/ ); + + // Set the title pane text to empty so that the default "vcexecutorapp" text + // won't be shown when activating applications. + CAknTitlePane* title = + static_cast( StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); + + TResourceReader rReader; + iCoeEnv->CreateResourceReaderLC( rReader, R_EMPTY_TITLE_PANE ); + title->SetFromResourceL( rReader ); + CleanupStack::PopAndDestroy(); // rReader + + // Set this as system application + iEikonEnv->SetSystem( ETrue ); + + UpdateStatusPaneL(); + } + +// ----------------------------------------------------------------------------- +// CVCExecutorAppUi::~CVCExecutorAppUi +// Destructor +// ----------------------------------------------------------------------------- +// +CVCExecutorAppUi::~CVCExecutorAppUi() + { + } + +// ----------------------------------------------------------------------------- +// CVCExecutorAppUi::EikonEnv +// Returns the CEikonEnv +// ----------------------------------------------------------------------------- +// +CEikonEnv* CVCExecutorAppUi::EikonEnv() const + { + return iEikonEnv; + } + +// ----------------------------------------------------------------------------- +// CVCExecutorAppUi::UpdateStatusPaneL +// Switch to initial status pane +// ----------------------------------------------------------------------------- +// +void CVCExecutorAppUi::UpdateStatusPaneL() + { + RUBY_DEBUG_BLOCKL( "CVCExecutorAppUi::UpdateStatusPaneL" ); + + // Use same status pane as idle has + StatusPane()->SwitchLayoutL( iInitialStatuspaneResourceId ); + + // Title pane is set as empty + CAknTitlePane* title = static_cast ( StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); + title->SetTextL( KNullDesC ); + + StatusPane()->MakeVisible( EFalse ); + } + +// ----------------------------------------------------------------------------- +// CVCExecutorAppUi::HandleScreenDeviceChangedL +// Empty implementation to prevent crash when changing screen resolution +// ----------------------------------------------------------------------------- +// +void CVCExecutorAppUi::HandleScreenDeviceChangedL() + { + CAknAppUi::HandleScreenDeviceChangedL(); + } + +// ----------------------------------------------------------------------------- +// CVCExecutorAppUi::HandleCommandL +// Handle events from app framework +// ----------------------------------------------------------------------------- +// +void CVCExecutorAppUi::HandleCommandL( TInt aCommand ) + { + switch ( aCommand ) + { + case EAknSoftkeyExit: + case EAknSoftkeyBack: + case EEikCmdExit: + { + Exit(); + break; + } + + default: + break; + } + } + +// ----------------------------------------------------------------------------- +// CVCExecutorAppUi::ProcessCommandParametersL +// +// ----------------------------------------------------------------------------- +// +TBool CVCExecutorAppUi::ProcessCommandParametersL( CApaCommandLine& aCommandLine ) + { + RUBY_DEBUG_BLOCKL( "CVCExecutorAppUi::ProcessCommandParametersL" ); + + TPtrC8 argumentPtr( aCommandLine.TailEnd() ); + + // Convert argument to TInt + TLex8 lex( argumentPtr ); + TInt commandId; + User::LeaveIfError( lex.Val( commandId ) ); + + // Execute command with CVCApplicationController + CVCApplicationControllerImpl* appController = CVCApplicationControllerImpl::NewL(); + CleanupStack::PushL( appController ); + appController->ExecuteCommandL( commandId, KNullDesC ); + + CleanupStack::PopAndDestroy( appController ); + + // Exit application + Exit(); + + return EFalse; + } + +// End of File