srsf/vcexecutorapp/src/vcexecutorappui.cpp
branchRCL_3
changeset 19 e36f3802f733
parent 0 bf1d17376201
--- /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 <aknenv.h>
+#include <akntitle.h>
+#include <f32file.h>
+#include <apgwgnam.h>
+#include <AknSgcc.h>
+#include <data_caging_path_literals.hrh>
+
+#include <vcexecutorapp.rsg>
+
+#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<CAknTitlePane*>( 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<CAknTitlePane*> ( 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