diff -r e8c1ea2c6496 -r 8758140453c0 lbs/lbstestutils/src/ctlbsagpsmoduleeventlistener.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbs/lbstestutils/src/ctlbsagpsmoduleeventlistener.cpp Thu Jan 21 12:53:44 2010 +0000 @@ -0,0 +1,67 @@ +// Copyright (c) 2007-2009 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 "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + +#include "ctlbsagpsmoduleeventlistener.h" + +EXPORT_C CT_AgpsModuleEventListener* CT_AgpsModuleEventListener::NewL(MT_AgpsModuleEventHandler& aHandler) + { + CT_AgpsModuleEventListener* self = new(ELeave) CT_AgpsModuleEventListener(aHandler); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +EXPORT_C CT_AgpsModuleEventListener::~CT_AgpsModuleEventListener() + { + Cancel(); + iModeChangesProperty.Close(); + } + +CT_AgpsModuleEventListener::CT_AgpsModuleEventListener(MT_AgpsModuleEventHandler& aHandler) + : CActive(EPriorityHigh), iHandler(aHandler) + { + CActiveScheduler::Add(this); + } + +void CT_AgpsModuleEventListener::ConstructL() + { + User::LeaveIfError(iModeChangesProperty.Attach(KUidSystemCategory, ELbsTestAGpsModuleModeChanges)); + iModeChangesProperty.Subscribe(iStatus); + SetActive(); + } + +void CT_AgpsModuleEventListener::RunL() + { + TInt err = iStatus.Int(); + iModeChangesProperty.Subscribe(iStatus); + SetActive(); + if(KErrNone == err) + { + TLbsGpsOptionsArray options; + TPckg pckgOptions(options); + err = iModeChangesProperty.Get(pckgOptions); + if(KErrNone == err) + { + iHandler.OnSetGpsOptions(options); + } + } + } + +void CT_AgpsModuleEventListener::DoCancel() + { + iModeChangesProperty.Cancel(); + }