diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/common/src/CamCollectionManagerAo.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/common/src/CamCollectionManagerAo.cpp Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,274 @@ +/* +* Copyright (c) 2007 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: Implementation of Collection Manager asynchronous operation +* + + Copyright (c) 2007 Nokia Corporation. +* This material, including documentation and any related +* computer programs, is protected by copyright controlled by +* Nokia Corporation. All rights are reserved. Copying, +* including reproducing, storing, adapting or translating, any +* or all of this material requires the prior written consent of +* Nokia Corporation. This material also contains confidential +* information which may not be disclosed to others without the +* prior written consent of Nokia Corporation. +* +* +*/ + + +#include "CamCollectionManagerAo.h" +#include +#include +#include "MCamAddToAlbumObserver.h" +#include "CamLogger.h" +#include "Cam.hrh" +#include "CamUtility.h" + + +// --------------------------------------------------------------------------- +// CCamCollectionManagerAO::CCamCollectionManagerAO() +// --------------------------------------------------------------------------- +// +CCamCollectionManagerAO::CCamCollectionManagerAO( MCamAddToAlbumObserver& aObserver ) +:CActive(EPriorityStandard),iObserver(aObserver) + { + CActiveScheduler::Add(this); + } + + +// --------------------------------------------------------------------------- +// CCamCollectionManagerAO::~CCamCollectionManagerAO() +// --------------------------------------------------------------------------- +// +CCamCollectionManagerAO::~CCamCollectionManagerAO() + { + Cancel(); + if ( iCollectionManager ) + { + delete iCollectionManager; + iCollectionManager = NULL; + } + if ( iCollectionInfo ) + { + delete iCollectionInfo; + iCollectionInfo = NULL; + } + iSelectedAlbumIds.Close(); + } + +// --------------------------------------------------------------------------- +// CCamCollectionManagerAO::StartAddtoAlbumOperationL +// +// Initiates Callback Mechanism for adding Images/Videos to albums +// --------------------------------------------------------------------------- +// +void CCamCollectionManagerAO::StartCallBackAddToAlbumL( + const RArray& aSelectedAlbumIds, + const TDesC& aUri + ) + { + PRINT( _L("Camera => CCamCollectionManagerAO::StartCallBackAddToAlbumL") ); + PRINT( _L("Camera <> CCamCollectionManagerAO::StartCallBackAddToAlbumL ... Calling CGlxCollectionManager::NewL()") ); + if (!iCollectionManager) + { + iCollectionManager = CGlxCollectionManager::NewL(); + } + PRINT( _L("Camera <> CCamCollectionManagerAO::StartCallBackAddToAlbumL ... CGlxCollectionManager::NewL() Success ") ); + iUri = aUri; + iSelectedAlbumIds.Reset(); + + for ( TInt i = 0; i < aSelectedAlbumIds.Count(); i++ ) + { + iSelectedAlbumIds.AppendL( aSelectedAlbumIds[i] ); + } + iCurrentAlbumIndex = 0; + PRINT( _L("Camera <> CCamCollectionManagerAO::StartCallBackAddToAlbumL ... Calling iCollectionManager->AddToCollectionL()") ); + iCollectionManager->AddToCollectionL( + aUri, + aSelectedAlbumIds[iCurrentAlbumIndex], + iStatus ); + PRINT( _L("Camera <> CCamCollectionManagerAO::StartCallBackAddToAlbumL ... iCollectionManager->AddToCollectionL() : Success") ); + iCurrentAlbumIndex++; + iAddToAlbum = ETrue; + SetActive(); + PRINT( _L("Camera <= CCamCollectionManagerAO::StartCallBackAddToAlbumL") ); + } + + + +// --------------------------------------------------------------------------- +// CCamCollectionManagerAO::CheckForAlbumExistenceL +// +// Initiates Callback Mechanism for checking if the album really exists +// --------------------------------------------------------------------------- +// +void CCamCollectionManagerAO::CheckForAlbumExistenceL( + const TUint32 aDefaultAlbumId ) + { + PRINT( _L("Camera => CCamCollectionManagerAO::CheckForAlbumExistenceL") ); + if (!iCollectionManager) + { + iCollectionManager = CGlxCollectionManager::NewL(); + } + if ( iCollectionInfo ) + { + delete iCollectionInfo; + iCollectionInfo = NULL; + } + iCollectionInfo = CGlxCollectionInfo::NewL( aDefaultAlbumId ); + iCollectionManager->CollectionInfoL( *iCollectionInfo, iStatus ); + iCheckForAlbum = ETrue; + SetActive(); + PRINT( _L("Camera <= CCamCollectionManagerAO::CheckForAlbumExistenceL") ); + } + +// --------------------------------------------------------------------------- +// CCamCollectionManagerAO::RunL() +// --------------------------------------------------------------------------- +// +void CCamCollectionManagerAO::RunL() + { + PRINT( _L("Camera => CCamCollectionManagerAO::RunL") ); + if ( iAddToAlbum ) + { + iAddToAlbum = EFalse; + if ( iStatus.Int() == KErrNone) + { + PRINT( _L("Camera <> CCamCollectionManagerAO::RunL() Finalizing") ); + DoAddToAlbumOperationL(); + } + else + { + // if there is any error, we pass and handle there + PRINT( _L("Camera <> CCamCollectionManagerAO::RunL() add to album has problems") ); + RunError( iStatus.Int() ); + } + } + else if ( iCheckForAlbum ) + { + iCheckForAlbum = EFalse; + if ( iStatus.Int() == KErrNone) + { + DoCheckAlbumOperationCompleteL(); + } + else + { + // if there is any error, we pass and handle there + RunError( iStatus.Int() ); + } + } + else + { + // Handling special cases if any + } + PRINT( _L("Camera <= CCamCollectionManagerAO::RunL") ); + } + + +// --------------------------------------------------------------------------- +// CCamCollectionManagerAO::DoAddToAlbumOperationL() +// --------------------------------------------------------------------------- +// +void CCamCollectionManagerAO::DoAddToAlbumOperationL() + { + PRINT( _L("Camera => CCamCollectionManagerAO::DoAddToAlbumOperationL") ); + PRINT1( _L("Camera <> CCamCollectionManagerAO::DoAddToAlbumOperationL ... iCurrentAlbumIndex (%d)"), iCurrentAlbumIndex ) + PRINT1( _L("Camera <> CCamCollectionManagerAO::DoAddToAlbumOperationL ... iSelectedAlbumIds.Count() (%d)"), iSelectedAlbumIds.Count() ) + if ( iCurrentAlbumIndex < iSelectedAlbumIds.Count() ) + { + PRINT( _L("Camera <> CCamCollectionManagerAO::DoAddToAlbumOperationL ... Enters If Loop") ); + iCollectionManager->AddToCollectionL( + iUri, + iSelectedAlbumIds[iCurrentAlbumIndex], + iStatus ); + iCurrentAlbumIndex++; + iAddToAlbum = ETrue; + SetActive(); + } + else + { + PRINT( _L("Camera <> CCamCollectionManagerAO::DoAddToAlbumOperationL ... Enters Else Loop") ); + iAddToAlbum = EFalse; + iSelectedAlbumIds.Reset(); + iObserver.AddToAlbumIdOperationComplete(); + } + PRINT1( _L("Camera <= CCamCollectionManagerAO::DoAddToAlbumOperationL ... Before leaving iCurrentAlbumIndex (%d)"), iCurrentAlbumIndex ) + } + + + +// --------------------------------------------------------------------------- +// CCamCollectionManagerAO::CheckAlbumOperationComplete +// --------------------------------------------------------------------------- +// +void CCamCollectionManagerAO::DoCheckAlbumOperationCompleteL() + { + PRINT( _L("Camera => CCamCollectionManagerAO::DoCheckAlbumOperationCompleteL") ); + if ( iCollectionInfo ) + { + iObserver.CheckAlbumIdOperationCompleteL( iCollectionInfo->Exists(), + iCollectionInfo->Title() ); + } + PRINT( _L("Camera <= CCamCollectionManagerAO::DoCheckAlbumOperationCompleteL") ); + } + + +// --------------------------------------------------------------------------- +// CCamCollectionManagerAO::DoCancel() +// +// Cancels the active object +// --------------------------------------------------------------------------- +// +void CCamCollectionManagerAO::DoCancel() + { + PRINT( _L("Camera => CCamCollectionManagerAO::DoCancel") ); + if ( iCollectionManager ) + { + iCollectionManager->Cancel(); + } + iSelectedAlbumIds.Reset(); + PRINT( _L("Camera <= CCamCollectionManagerAO::DoCancel") ); + } + + +// --------------------------------------------------------------------------- +// CCamCollectionManagerAO::RunError() +// +// Handles all leaves and its safe to handle them in this method +// --------------------------------------------------------------------------- +// +TInt CCamCollectionManagerAO::RunError( TInt /*aError*/ ) + { + PRINT( _L("Camera => CCamCollectionManagerAO::RunError") ); + // We make sure that if any error occurs, we cancel, + // the ongoing request and delete all the pointers + // so that no memory leaks occurs + if ( iCollectionManager ) + { + delete iCollectionManager; + iCollectionManager = NULL; + } + if ( iCollectionInfo ) + { + delete iCollectionInfo; + iCollectionManager = NULL; + } + iSelectedAlbumIds.Reset(); + + PRINT( _L("Camera <= CCamCollectionManagerAO::RunError") ); + return KErrNone; + } + +//End of file