diff -r 522cd55cc3d7 -r 13ae750350c9 landmarksui/engine/src/CLmkAddToCatOperation.cpp --- a/landmarksui/engine/src/CLmkAddToCatOperation.cpp Tue Feb 02 00:16:03 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,239 +0,0 @@ -/* -* Copyright (c) 2002 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: LandmarksUi Content File - -* -*/ - - - - - - - - -// INCLUDE FILES -#include "CLmkAddToCatOperation.h" -#include "CLmkAOOperation.h" -#include -#include -#include - -#if defined(_DEBUG) -// CONSTANTS -/// Unnamed namespace for local definitions -namespace { - -_LIT( KPanicMsg, "CLmkAddToCatOperation" ); - -void Panic( TPanicCode aReason ) - { - User::Panic( KPanicMsg, aReason ); - } -} // namespace -#endif -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CLmkAddToCatOperation::CLmkAddToCatOperation -// C++ constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CLmkAddToCatOperation::CLmkAddToCatOperation( - CPosLmCategoryManager& aCategoryMgr ) - : iCategoryMgr( aCategoryMgr ) - { - } - -// ----------------------------------------------------------------------------- -// CLmkAddToCatOperation::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CLmkAddToCatOperation::ConstructL( - const RArray& aLandmarkIdArray, - const RArray& aCategoryIdArray ) - { - TInt lmCount = aLandmarkIdArray.Count(); - for ( TInt i( 0 ); i < lmCount; ++i ) - { - User::LeaveIfError( iLmIdArray.Append( aLandmarkIdArray[i] ) ); - } - TInt catCount = aCategoryIdArray.Count(); - for ( TInt k( 0 ); k < catCount; ++k ) - { - User::LeaveIfError( iCatIdArray.Append( aCategoryIdArray[k] ) ); - } - } - -// ----------------------------------------------------------------------------- -// CLmkAddToCatOperation::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CLmkAddToCatOperation* CLmkAddToCatOperation::NewL( - CPosLmCategoryManager& aCategoryMgr, - const RArray& aLandmarkIdArray, - const RArray& aCategoryIdArray ) - { - CLmkAddToCatOperation* self = - new ( ELeave ) CLmkAddToCatOperation( aCategoryMgr ); - - CleanupStack::PushL( self ); - self->ConstructL( aLandmarkIdArray, aCategoryIdArray ); - CleanupStack::Pop(); - - return self; - } - -// ----------------------------------------------------------------------------- -// CLmkAddToCatOperation::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CLmkAddToCatOperation* CLmkAddToCatOperation::NewL( - CPosLmCategoryManager& aCategoryMgr, - TPosLmItemId aLandmarkId, - const RArray& aCategoryIdArray ) - { - CLmkAddToCatOperation* self = - new ( ELeave ) CLmkAddToCatOperation( aCategoryMgr ); - - CleanupStack::PushL( self ); - // For users of this class we provide two NewL interfaces but internally - // we create an array also in case of just one landmark item. - RArray tmpArray = RArray( 1 ); - CleanupClosePushL( tmpArray ); - User::LeaveIfError( tmpArray.Append( aLandmarkId ) ); - self->ConstructL( tmpArray, aCategoryIdArray ); - CleanupStack::PopAndDestroy(); // tmpArray - CleanupStack::Pop(); - - return self; - } - -// ----------------------------------------------------------------------------- -// CLmkAddToCatOperation::~CLmkAddToCatOperation -// ----------------------------------------------------------------------------- -// -CLmkAddToCatOperation::~CLmkAddToCatOperation() - { - if (iStatus) - { - if (*iStatus == KRequestPending ) - { - User::RequestComplete( iStatus, KErrCancel ); - } - } - iLmIdArray.Close(); - iCatIdArray.Close(); - delete iAddOperation; - } - -// ----------------------------------------------------------------------------- -// CLmkAddToCatOperation::NextStep -// ----------------------------------------------------------------------------- -// -void CLmkAddToCatOperation::NextStep( TRequestStatus& aStatus, - TReal32& aProgress ) - { - aStatus = KRequestPending; - iStatus = &aStatus; - iProgress = &aProgress; - - TInt count = iCatIdArray.Count(); - // Index should be smaller than count if NextStep called properly: - __ASSERT_DEBUG( iCurrentIndex < count, Panic( KLmkPanicIllegalMethodCall ) ); - - TInt err( KErrNone ); - - // Do one step: - if ( iCurrentIndex < count ) - { - TRAP( err, DoAddToCatStepL( iCatIdArray[iCurrentIndex++] ) ); - } - - if ( err != KErrNone ) - { // error occurred already when preparing for asynch. operation - --iCurrentIndex; - *iProgress = 1; - User::RequestComplete( iStatus, err ); - } - } - -// ----------------------------------------------------------------------------- -// CLmkAddToCatOperation::ExecuteL -// ----------------------------------------------------------------------------- -// -void CLmkAddToCatOperation::ExecuteL() - { - // We never use asynchronous methods in synchronous way and therefore - // don't need to support this method - User::Leave( KErrNotSupported ); - } - -// ----------------------------------------------------------------------------- -// CLmkAddToCatOperation::HandleOperationL -// ----------------------------------------------------------------------------- -// -void CLmkAddToCatOperation::HandleOperationL( - TOperationTypes /*aType*/, - TReal32 /*aProgress*/, - TInt aStatus ) - { - // Operation (adding one category to landmarks) finished: - delete iAddOperation; - iAddOperation = NULL; - - TInt result( KErrNone ); - TInt count = iCatIdArray.Count(); - - // Check result: - if ( aStatus != KErrNone || iCurrentIndex == count ) - { - *iProgress = 1; - result = aStatus; - } - else - { - result = KPosLmOperationNotComplete; - // Neither divider nor dividend can be zero in this if-branch: - __ASSERT_DEBUG( ( iCurrentIndex > 0 ) && ( count > 0 ), - Panic( KLmkPanicMathError ) ); - *iProgress = static_cast( iCurrentIndex ) / count; - } - User::RequestComplete( iStatus, result ); - } - -// ----------------------------------------------------------------------------- -// CLmkAddToCatOperation::DoAddToCatStepL -// ----------------------------------------------------------------------------- -// -void CLmkAddToCatOperation::DoAddToCatStepL( TPosLmItemId aCategoryId ) - { - CPosLmOperation* operation = - iCategoryMgr.AddCategoryToLandmarksL( aCategoryId, - iLmIdArray ); - - __ASSERT_DEBUG( !iAddOperation, Panic( KLmkPanicAlreadyActive ) ); - - iAddOperation = - CLmkAOOperation::NewL( operation, - *this, - MLmkAOOperationObserver::EAddToCategory, - EFalse ); - iAddOperation->StartOperation(); - } - -// End of File