diff -r 4bc7b118b3df -r 397d00875918 tstaskmonitor/client/s60/src/tstaskmonitorclientimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tstaskmonitor/client/s60/src/tstaskmonitorclientimpl.cpp Thu May 27 13:11:12 2010 +0300 @@ -0,0 +1,85 @@ +/* +* Copyright (c) 2009 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: +* +*/ + +#include + +#include "tsfswentry.h" +#include "tstaskmonitorclientimpl.h" +#include "tstaskmonitorobserver.h" + +CTsTaskMonitorClientImpl* CTsTaskMonitorClientImpl::NewL() +{ + CTsTaskMonitorClientImpl* self = NewLC(); + CleanupStack::Pop(self); + return self; +} + +CTsTaskMonitorClientImpl* CTsTaskMonitorClientImpl::NewLC() +{ + CTsTaskMonitorClientImpl* self = new (ELeave) CTsTaskMonitorClientImpl; + CleanupStack::PushL(self); + self->ConstructL(); + return self; +} + +CTsTaskMonitorClientImpl::CTsTaskMonitorClientImpl() : CActive(CActive::EPriorityStandard) +{ + CActiveScheduler::Add(this); +} + +CTsTaskMonitorClientImpl::~CTsTaskMonitorClientImpl() +{ + Cancel(); + iSession.Close(); +} + +void CTsTaskMonitorClientImpl::ConstructL() +{ + User::LeaveIfError(iSession.Connect()); +} + +void CTsTaskMonitorClientImpl::TaskListL(RTsFswArray& tasks) +{ + iSession.TaskListL(tasks); +} + +void CTsTaskMonitorClientImpl::Subscribe(MTsTaskMonitorObserver& aObserver) +{ + Cancel(); + iObserver = &aObserver; + iSession.Subscribe(iStatus); + SetActive(); +} + +void CTsTaskMonitorClientImpl::CancelSubscribe() +{ + Cancel(); +} + +void CTsTaskMonitorClientImpl::RunL() +{ + if (iStatus == KErrNone && iObserver) { + iSession.Subscribe(iStatus); + SetActive(); + iObserver->HandleRunningAppChange(); + } +} + +void CTsTaskMonitorClientImpl::DoCancel() +{ + iSession.CancelSubscribe(); +}