--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/common/src/CamCollectionManagerAo.cpp Thu Jan 07 16:18:56 2010 +0200
@@ -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 <glxcollectionmanager.h>
+#include <glxcollectioninfo.h>
+#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<TUint32>& 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