extras/about/src/AboutAppUi.cpp
changeset 0 3ee3dfdd8d69
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/about/src/AboutAppUi.cpp	Mon Jan 18 20:20:33 2010 +0200
@@ -0,0 +1,144 @@
+/*
+* Copyright (c) 2002 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: Application UI. 
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "AboutAppUi.h"
+#include "AboutContainer.h" 
+#include <avkon.hrh>
+#include <sysversioninfo.h>                       
+
+// local constant
+const TUint32 KSettingAppID = 0x100058EC;
+
+// ================= MEMBER FUNCTIONS =======================
+//
+// ----------------------------------------------------------
+// CAboutAppUi::ConstructL()
+// Default constructor
+// ----------------------------------------------------------
+//
+void CAboutAppUi::ConstructL()
+    {
+    BaseConstructL();
+    
+    // Gets whether server is required or not.
+    iSettingType = iEikonEnv->StartedAsServerApp();
+    
+    iAppContainer = new( ELeave ) CAboutContainer;
+    iAppContainer->SetMopParent( this );
+    iAppContainer->ConstructL( ClientRect() );
+    AddToStackL( iAppContainer );
+    SetNaviPaneLabelL();                                     
+    }
+
+// ----------------------------------------------------
+// CAboutAppUi::~CAboutAppUi()
+// Destructor
+// Frees reserved resources
+// ----------------------------------------------------
+//
+CAboutAppUi::~CAboutAppUi()
+    {
+    if ( iAppContainer )
+        {
+        RemoveFromStack( iAppContainer );
+        delete iAppContainer;
+        }
+    if ( iNaviDecorator )
+        {
+        delete iNaviDecorator;
+        iNaviDecorator = NULL;
+        }
+    }
+
+// ----------------------------------------------------
+// CAboutAppUi::HandleCommandL( TInt aCommand )
+// Takes care of command handling
+// ----------------------------------------------------
+//
+void CAboutAppUi::HandleCommandL( TInt aCommand )
+    {
+    switch ( aCommand )
+        {
+        case EAknSoftkeyExit:
+        case EAknSoftkeyBack:
+        	{
+            Exit();
+            break;        	
+        	}
+        case EEikCmdExit:
+            {
+            // Close Ctrl.panel after pressing call terminal key.
+            if ( iSettingType )
+                {
+                RWsSession& ws = iCoeEnv->WsSession();
+                TApaTaskList taskList( ws );
+                TUid appUid = { KSettingAppID };
+                TApaTask task = taskList.FindApp( appUid );
+                if ( task.Exists() )
+                    {
+                    task.SendToBackground();
+                    task.EndTask();
+                    }
+                }
+            Exit();
+            break;
+            }
+
+        default:
+            break;
+        }
+    }
+
+// ----------------------------------------------------
+// CAboutAppUi::SetNaviPaneLabel()
+// Set the name of the product to navi pane.
+// ----------------------------------------------------
+//    
+void CAboutAppUi::SetNaviPaneLabelL()
+    {
+    TUid naviPaneUid;
+    naviPaneUid.iUid = EEikStatusPaneUidNavi;
+    CEikStatusPane* statusPane = StatusPane();
+    CEikStatusPaneBase::TPaneCapabilities subPane = statusPane->PaneCapabilities( naviPaneUid );
+  
+    if ( subPane.IsPresent() && subPane.IsAppOwned() )
+        {
+        CAknNavigationControlContainer* naviPane = dynamic_cast<CAknNavigationControlContainer*>
+                                ( statusPane->ControlL( naviPaneUid ) );
+        if ( naviPane )
+            {    
+            TBuf<KSysVersionInfoTextLength> name;
+            SysVersionInfo::TProductVersion info;
+            SysVersionInfo::GetVersionInfo( info );
+            name.Append( info.iModel );
+            
+            if ( iNaviDecorator )
+                {
+                delete iNaviDecorator;
+                iNaviDecorator = NULL;
+                }
+           
+            //set label for the pane
+            iNaviDecorator = naviPane->CreateNavigationLabelL( name );      
+            naviPane->PushL( *iNaviDecorator );      
+            }
+        }
+    }
+// End of File