--- /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 );
+ }
+