sapi_applicationmanager/appmanagerservice/src/launcherobserver.cpp
changeset 0 14df0fbfcc4e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sapi_applicationmanager/appmanagerservice/src/launcherobserver.cpp	Mon Mar 30 12:51:10 2009 +0300
@@ -0,0 +1,122 @@
+/*
+* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:  This Class is observer for the Launching Application
+*
+*/
+
+#include "launcherobserver.h"
+#include "asynchrequestmanager.h"
+#include "appobserver.h"
+#include "appmanagercommon.h"
+
+
+// -----------------------------------------------------------------------------
+// launcherObserver::NewL
+// Returns the instance of CLauncherObserver.
+// -----------------------------------------------------------------------------
+CLauncherObserver* CLauncherObserver::NewL(  MAppObserver* aObserver ,TInt32& aTransactionID, CAsynchRequestManager* aAsynchRequestManager )
+	{
+	CLauncherObserver* self = new ( ELeave )CLauncherObserver( aObserver ,aTransactionID, aAsynchRequestManager );
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CLauncherObserver::~CLauncherObserver()
+	{
+
+    iAppThread.Close();
+	}
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CLauncherObserver::CLauncherObserver(MAppObserver* aObserver ,TInt32& aTransactionID, CAsynchRequestManager* aAsynchRequestManager ):
+                   CActive( EPriorityStandard ),
+                   iAppObserver ( aObserver ),
+                   iTransactionID( aTransactionID ),
+                   iAsynchRequestManager ( aAsynchRequestManager )
+ 	
+	{
+	CActiveScheduler::Add( this );
+	}
+
+	
+
+
+// ---------------------------------------------------------------------------
+// Activates the asynchronous request
+// ---------------------------------------------------------------------------
+//
+void CLauncherObserver::ActivateRequestL( TThreadId& aThreadId  )
+	{
+	
+	User::LeaveIfError( iAppThread.Open( aThreadId ) );
+	iStatus = KRequestPending;
+	SetActive();
+	iAppThread.Logon( iStatus );
+	}
+
+// ---------------------------------------------------------------------------
+// sets the observer pointer 
+// ---------------------------------------------------------------------------
+//
+void CLauncherObserver::SetAppObserver ( MAppObserver* aAppObserver )
+	{
+	
+	iAppObserver = aAppObserver;
+	}
+
+// ---------------------------------------------------------------------------
+// Notifies callback the result for asynchronous request.
+// ---------------------------------------------------------------------------
+//
+void CLauncherObserver::NotifyRequestResultL( TInt aReason , TAppOperationEvent& aOperationEvent )
+	{
+     //Inform core class for completing the reuqest 
+     iAsynchRequestManager->RequestComplete( iTransactionID );
+     
+     if( iAppObserver )
+        {
+        iAppObserver->AppNotifyCallbackL( aReason , iTransactionID , aOperationEvent  );
+        }
+
+     if( aOperationEvent != EAppCancel ) // If this is called because of cancel then skip the deletion
+     delete this;    
+
+	}
+// ---------------------------------------------------------------------------
+// Inherited from CActive class 
+// ---------------------------------------------------------------------------
+//
+void CLauncherObserver::DoCancel()
+	{
+	iAppThread.LogonCancel( iStatus );
+	TAppOperationEvent appEvent = EAppCancel;
+	TRAP_IGNORE( NotifyRequestResultL( KErrCancel , appEvent ) );
+	}
+
+// ---------------------------------------------------------------------------
+// Inherited from CActive class 
+// ---------------------------------------------------------------------------
+//
+void CLauncherObserver::RunL()
+	{
+	TAppOperationEvent appEvent = EAppComplete;
+	NotifyRequestResultL( iStatus.Int(), appEvent );
+	}
+