diff -r 000000000000 -r ba25891c3a9e iaupdate/IAD/engine/controller/src/iaupdatenormalcontentoperation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iaupdate/IAD/engine/controller/src/iaupdatenormalcontentoperation.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,199 @@ +/* +* Copyright (c) 2007-2008 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: CIAUpdateNormalContentOperation +* +*/ + + + +#include +#include +#include + +#include "iaupdatenormalcontentoperation.h" +#include "iaupdatenodeimpl.h" +#include "iaupdatedebug.h" + + +// --------------------------------------------------------------------------- +// CIAUpdateNormalContentOperation::CIAUpdateNormalContentOperation +// +// --------------------------------------------------------------------------- +// +CIAUpdateNormalContentOperation::CIAUpdateNormalContentOperation( + CIAUpdateBaseNode& aNode, + MIAUpdateContentOperationObserver& aObserver ) +: CIAUpdateContentOperation( aNode, aObserver ) + { + IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNormalContentOperation::CIAUpdateNormalContentOperation"); + } + + +// --------------------------------------------------------------------------- +// CIAUpdateNormalContentOperation::ConstructL +// +// --------------------------------------------------------------------------- +// +void CIAUpdateNormalContentOperation::ConstructL() + { + IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNormalContentOperation::ConstructL() begin"); + + CIAUpdateContentOperation::ConstructL(); + + IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNormalContentOperation::ConstructL() end"); + } + + +// --------------------------------------------------------------------------- +// CIAUpdateNormalContentOperation::~CIAUpdateNormalContentOperation +// +// --------------------------------------------------------------------------- +// +CIAUpdateNormalContentOperation::~CIAUpdateNormalContentOperation() + { + IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNormalContentOperation::~CIAUpdateNormalContentOperation begin"); + + // Do not call CancelOperation here because its implementation depends on + // child class implementations. So, this object is deleted, the child classes + // are already deleted and their implementation is not available. + // So, call CancelOperation in child classes. + + // Operation is created by using the HandleContentL function. + // If operation is created, it will be released when child class calls + // CancelOperation. + + IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNormalContentOperation::~CIAUpdateNormalContentOperation end"); + } + + +// --------------------------------------------------------------------------- +// CIAUpdateNormalContentOperation::StartOperationL +// +// --------------------------------------------------------------------------- +// +TBool CIAUpdateNormalContentOperation::StartOperationL() + { + // Init variables by using the parent. + CIAUpdateContentOperation::StartOperationL(); + + // Start new active object round. + TBool started( EFalse ); + + // Start the operation and set the pointer to it. + // Operation pointer needs to be set for the possible cancellation. + SetOperation( HandleContentL() ); + + if ( iOperation ) + { + // Operation exists. So, start it. + iOperation->StartOperationL(); + SetOperationInUse( ETrue ); + started = ETrue; + } + + return started; + } + + +// --------------------------------------------------------------------------- +// CIAUpdateNormalContentOperation::CancelOperation +// +// --------------------------------------------------------------------------- +// +void CIAUpdateNormalContentOperation::CancelOperation() + { + if ( iOperation ) + { + // Cancel the operation and release the current operation. + // Notice, that this will result to call to ContentOperationComplete + iOperation->CancelOperation(); + } + } + + +// --------------------------------------------------------------------------- +// CIAUpdateNormalContentOperation::ContentQueryReceived +// +// --------------------------------------------------------------------------- +// +void CIAUpdateNormalContentOperation::ContentQueryReceived( + MNcdOperation& aOperation, + MNcdQuery* aQuery ) + { + IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNormalContentOperation::ContentQueryReceived() begin"); + + // Operation query received. Always accept queries. + // Queries should not be requested from this client. + TInt trapError( KErrNone ); + if ( aQuery ) + { + TRAP ( trapError, + aQuery->SetResponseL( MNcdQuery::EAccepted ); + aOperation.CompleteQueryL( *aQuery ); ); + // Release needs to be called to the query after it is not used. + aQuery->Release(); + } + + if ( ( trapError != KErrNone ) || ( !aQuery ) ) + { + // Error occurred when query was handled. + // So, operation can not continue. + // Cancel operation. Notice, that OperationComplete will be called + // by the operation when cancel is called. + aOperation.CancelOperation(); + } + + IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNormalContentOperation::ContentQueryReceived() end"); + } + + +// --------------------------------------------------------------------------- +// CIAUpdateContentOperation::ContentOperationComplete +// +// --------------------------------------------------------------------------- +// +void CIAUpdateNormalContentOperation::ContentOperationComplete( + MNcdOperation& /*aOperation*/, + TInt aError ) + { + IAUPDATE_TRACE("[IAUPDATE] CIAUpdateContentOperation::ContentOperationComplete() begin"); + + // Notice, that this releases the old operation. + SetOperation( NULL ); + OperationComplete( aError ); + + IAUPDATE_TRACE("[IAUPDATE] CIAUpdateContentOperation::ContentOperationComplete() end"); + } + + +// --------------------------------------------------------------------------- +// CIAUpdateNormalContentOperation::SetOperation +// +// --------------------------------------------------------------------------- +// +void CIAUpdateNormalContentOperation::SetOperation( + MNcdOperation* aOperation ) + { + IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNormalContentOperation::SetOperation() begin"); + + if ( iOperation ) + { + IAUPDATE_TRACE("[IAUPDATE] Release old operation before setting new one"); + iOperation->Release(); + } + + iOperation = aOperation; + + IAUPDATE_TRACE("[IAUPDATE] CIAUpdateNormalContentOperation::SetOperation() end"); + }