diff -r 1fc85118c3ae -r 870918037e16 locationlandmarksrefappfors60/Src/LandmarksLmOpWrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationlandmarksrefappfors60/Src/LandmarksLmOpWrapper.cpp Wed Sep 01 12:31:27 2010 +0100 @@ -0,0 +1,131 @@ +/* +* Copyright (c) 2004-2005 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: Implements the CLandmarksLmOpWrapper class +* +*/ + + + +#include +#include + +#include "LandmarksLmOpWrapper.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +CLandmarksLmOpWrapper::CLandmarksLmOpWrapper() +: CActive(CActive::EPriorityStandard) + { + CActiveScheduler::Add(this); + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +CLandmarksLmOpWrapper::~CLandmarksLmOpWrapper() + { + Cancel(); + delete iLmOperation; + iLmOperation = NULL; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +void CLandmarksLmOpWrapper::StartOperation( + CPosLmOperation* aLmOperation, + TRequestStatus& aStatus, + TBool aReportProgress) + { + delete iLmOperation; + iLmOperation = aLmOperation; + iCallerStatus = &aStatus; + iReportProgress = aReportProgress; + iProgress = 0; + + ExecuteNextStep(); + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +CPosLmOperation* CLandmarksLmOpWrapper::LmOperationPtr() + { + return iLmOperation; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +void CLandmarksLmOpWrapper::ExecuteNextStep(TRequestStatus& aStatus) + { + iCallerStatus = &aStatus; + ExecuteNextStep(); + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +TInt CLandmarksLmOpWrapper::Progress() + { + return (TInt) (iProgress * 100); + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +void CLandmarksLmOpWrapper::DoCancel() + { + delete iLmOperation; + iLmOperation = NULL; + User::RequestComplete(iCallerStatus, KErrCancel); + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +void CLandmarksLmOpWrapper::RunL() + { + if (iStatus == KErrNone) + { + // Operation finished. + User::RequestComplete(iCallerStatus, KErrNone); + } + else if (iStatus == KPosLmOperationNotComplete) + { + if (iReportProgress) + { + User::RequestComplete(iCallerStatus, KPosLmOperationNotComplete); + } + else + { + ExecuteNextStep(); + } + } + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +void CLandmarksLmOpWrapper::ExecuteNextStep() + { + iStatus = KRequestPending; + iLmOperation->NextStep(iStatus, iProgress); + SetActive(); + } + +