diff -r 000000000000 -r 14df0fbfcc4e sapi_applicationmanager/appmanagerservice/src/launcherobserver.cpp --- /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 ); + } +