logsui/AppSrc/CLogsDocument.cpp
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/AppSrc/CLogsDocument.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,228 @@
+/*
+* 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: 
+*     Logs document class
+*
+*/
+
+
+// INCLUDE FILES
+#include <aknapp.h>
+
+#include "CLogsDocument.h"
+#include "CLogsEngine.h"
+#include "CLogsAppUi.h"
+#include "LogsUID.h"
+#include <featmgr.h>    //Feature manager
+
+#include "LogsDebug.h"
+#include "LogsTraces.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES  
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// ==================== LOCAL FUNCTIONS ====================
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ----------------------------------------------------------------------------
+// CLogsDocument::CLogsDocument
+// ----------------------------------------------------------------------------
+//
+CLogsDocument::CLogsDocument( CAknApplication& aApp )
+    : CAknDocument( aApp )
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsDocument::ConstructL
+// ----------------------------------------------------------------------------
+//
+void CLogsDocument::ConstructL()
+    {
+    TRACE_ENTRY_POINT;
+    CCoeEnv::Static()->AddForegroundObserverL( *this ); 
+    iEngine = CLogsEngine::NewL();
+
+    //Set up  FeatureManager
+    //This must be called in the scope of the thread before calling
+    //any other FeatureManager methods. 
+    FeatureManager::InitializeLibL();
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsDocument::NewL
+// ----------------------------------------------------------------------------
+//
+CLogsDocument* CLogsDocument::NewL( CAknApplication& aApp )
+    {
+    TRACE_ENTRY_POINT;
+    CLogsDocument* self = new( ELeave ) CLogsDocument( aApp );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();  // self
+    
+    TRACE_EXIT_POINT;
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsDocument::~CLogsDocument
+// ----------------------------------------------------------------------------
+//
+CLogsDocument::~CLogsDocument()
+    {
+    TRACE_ENTRY_POINT;
+    CCoeEnv::Static()->RemoveForegroundObserver( *this );
+    delete iEngine;
+
+    //Free allocated FeatureManager
+    FeatureManager::UnInitializeLib();
+
+    //ECom clear up (done here  as in CLogsAppUi dtor is too early as view framework 
+    //destroys the view only after appui has been destroyed).
+
+    //Signal the destruction of interface implementation to ECOM.
+    REComSession::DestroyedImplementation( TUid::Uid(ELogSettingsViewId) ); 
+
+    //Direct users of ECOM plugins must call REComSession::FinalClose() method when all 
+    //implementations they have created have been destroyed.
+    REComSession::FinalClose();
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsDocument::CreateAppUiL
+// ----------------------------------------------------------------------------
+//
+CEikAppUi* CLogsDocument::CreateAppUiL()
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    return ( new( ELeave ) CLogsAppUi( iEngine ) ); //Ownership  transferred to framework.
+    }
+
+
+// ----------------------------------------------------------------------------
+// CLogsDocument::Engine
+// ----------------------------------------------------------------------------
+//
+CLogsEngine* CLogsDocument::Engine()
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    return iEngine; 
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsDocument::HandleGainingForeground
+// ----------------------------------------------------------------------------
+//
+void CLogsDocument::HandleGainingForeground()   //Non-leaving wrapper 
+    {
+    TRACE_ENTRY_POINT;
+    TRAPD( err, HandleGainingForegroundL() );
+    if( err ) 
+        {
+        CCoeEnv::Static()->HandleError( err );
+        }
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsDocument::HandleGainingForegroundL
+// ----------------------------------------------------------------------------
+//
+void CLogsDocument::HandleGainingForegroundL()  //Leaving 
+    {
+    TRACE_ENTRY_POINT;
+    CLogsAppUi* ptr = STATIC_CAST(CLogsAppUi*, iAppUi);
+   
+
+    //Reset execution mode back to foreground
+    ptr->SetExecutionMode( ELogsInForeground );
+        
+    //Update process name from the caption (calls eventually CLogsDocument::UpdateTaskNameL)        
+    CEikonEnv::Static()->UpdateTaskNameL();     
+    TRACE_EXIT_POINT;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CLogsDocument::HandleLosingForeground
+// ----------------------------------------------------------------------------
+//
+void CLogsDocument::HandleLosingForeground()    //Non-leaving wrapper
+    {
+    TRACE_ENTRY_POINT;
+   
+    TRAPD( err, HandleLosingForegroundL() );
+    if( err ) 
+        {
+        CCoeEnv::Static()->HandleError( err );
+        }
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsDocument::HandleLosingForegroundL
+// ----------------------------------------------------------------------------
+//
+void CLogsDocument::HandleLosingForegroundL()   //Leaving version
+    {
+    TRACE_ENTRY_POINT;
+    //Update process name from the caption (calls eventually CLogsDocument::UpdateTaskNameL)        
+    CEikonEnv::Static()->UpdateTaskNameL(); 
+    
+    CLogsAppUi* ptr = STATIC_CAST( CLogsAppUi*, iAppUi );
+    
+    if ( ptr->ExecutionMode() == ELogsInBackground_ExitOrEndPressed )
+        {
+        iEngine->FreeResourcesForBGModeL();  //Deletes objects to free some memory
+        }
+   
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CLogsDocument::UpdateTaskNameL
+// ----------------------------------------------------------------------------
+//
+void CLogsDocument::UpdateTaskNameL( CApaWindowGroupName* aWgName )
+    {
+    TRACE_ENTRY_POINT;
+    CEikDocument::UpdateTaskNameL( aWgName );   //Updates the task name from application's caption
+    TRACE_EXIT_POINT;
+    }
+
+//  End of File
+