diff -r ea43e3e86079 -r a0ee3f735f8b imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailmanagerimpl.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailmanagerimpl.cpp Tue Jun 15 14:30:57 2010 +0100 +++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailmanagerimpl.cpp Thu Jul 22 16:37:07 2010 +0100 @@ -47,7 +47,11 @@ // CThumbnailManagerImpl::~CThumbnailManagerImpl() { - delete iRequestQueue; + TN_DEBUG1( "CThumbnailManagerImpl::~CThumbnailManagerImpl() - start" ); + + delete iRequestQueue; + iRequestQueue = NULL; + iSession.Close(); iFs.Close(); @@ -65,6 +69,9 @@ } delete iMimeTypeList; + iMimeTypeList = NULL; + + TN_DEBUG1( "CThumbnailManagerImpl::~CThumbnailManagerImpl() - end" ); } @@ -89,11 +96,12 @@ // --------------------------------------------------------------------------- // CThumbnailManagerImpl::CThumbnailManagerImpl( MThumbnailManagerObserver& - aObserver ): iObserver( aObserver ), iDisplayMode( + aObserver ): iObserver( aObserver ), iRequestObserver( NULL ), iDisplayMode( KThumbnailDefaultDisplayMode ), iFlags( EDefaultFlags ), iQualityPreference ( EOptimizeForQuality ), iRequestId( 0 ) { // No implementation required + TN_DEBUG1( "CThumbnailManagerImpl::CThumbnailManagerImpl()" ); } @@ -104,6 +112,8 @@ // void CThumbnailManagerImpl::ConstructL() { + TN_DEBUG1( "CThumbnailManagerImpl::ConstructL - start"); + User::LeaveIfError( iSession.Connect()); User::LeaveIfError( iFs.Connect()); User::LeaveIfError( iFs.ShareProtected()); @@ -129,11 +139,14 @@ { // Fbs connection was available in the beginning, no need to // increase the reference count + TN_DEBUG1( "CThumbnailManagerImpl::ConstructL - no need to update sessionCount"); } } // request processor iRequestQueue = CThumbnailRequestQueue::NewL(); + + TN_DEBUG1( "CThumbnailManagerImpl::ConstructL - end"); } @@ -154,7 +167,7 @@ TInt priority = ValidatePriority(aPriority); CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue ); + ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); CleanupStack::PushL( getThumbnailActive ); if(aObjectSource.Id() > 0) @@ -215,7 +228,7 @@ TInt priority = ValidatePriority(aPriority); CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue ); + ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); CleanupStack::PushL( getThumbnailActive ); getThumbnailActive->GetThumbnailL( KNullDesC, aThumbnailId, iFlags, @@ -249,7 +262,7 @@ TInt priority = ValidatePriority(aPriority); CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue ); + ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); CleanupStack::PushL( getThumbnailActive ); if ( aObjectSource.Uri().Length()) @@ -290,16 +303,33 @@ TInt priority = ValidatePriority(aPriority); CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue ); + ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); CleanupStack::PushL( getThumbnailActive ); - if ( aObjectSource.Uri().Length() && - aObjectSource.Buffer() != NULL && - aObjectSource.MimeType() != KNullDesC8) + if (aObjectSource.Uri().Length() && + aObjectSource.TargetUri().Length()) + { + // from path + getThumbnailActive->SetThumbnailL( aObjectSource.Uri(), + aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode, + priority, aClientData, ETrue, aObjectSource.TargetUri(), iThumbnailSize, ETrue); + } + else if (aObjectSource.Uri().Length() && + aObjectSource.Bitmap() != NULL) { + // from bitmap + getThumbnailActive->SetThumbnailL( aObjectSource.GetBitmapOwnership(), + aObjectSource.Id(), KBmpMime, iFlags, iQualityPreference, iSize, iDisplayMode, + priority, aClientData, ETrue, aObjectSource.Uri(), iThumbnailSize, ETrue); + } + else if (aObjectSource.Uri().Length() && + aObjectSource.Buffer() != NULL && + aObjectSource.MimeType() != KNullDesC8) + { + // from buffer getThumbnailActive->SetThumbnailL( aObjectSource.GetBufferOwnership(), aObjectSource.Id(), aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode, - priority, aClientData, EFalse, aObjectSource.Uri(), iThumbnailSize); + priority, aClientData, ETrue, aObjectSource.Uri(), iThumbnailSize, ETrue); } iRequestQueue->AddRequestL( getThumbnailActive ); @@ -329,7 +359,7 @@ TInt priority = ValidatePriority(aPriority); CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue ); + ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); CleanupStack::PushL( getThumbnailActive ); @@ -339,7 +369,7 @@ getThumbnailActive->SetThumbnailL( aObjectSource.GetBitmapOwnership(), aObjectSource.Id(), KBmpMime, iFlags, iQualityPreference, iSize, iDisplayMode, priority, NULL, ETrue, - aObjectSource.Uri(), EUnknownThumbnailSize); + aObjectSource.Uri(), EUnknownThumbnailSize, EFalse); } else if( !aObjectSource.Buffer() ) { @@ -354,7 +384,7 @@ getThumbnailActive->SetThumbnailL( aObjectSource.GetBufferOwnership(), aObjectSource.Id(), aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode, priority, NULL, - ETrue, aObjectSource.Uri(), EUnknownThumbnailSize); + ETrue, aObjectSource.Uri(), EUnknownThumbnailSize, EFalse); } iRequestQueue->AddRequestL( getThumbnailActive ); @@ -491,7 +521,8 @@ __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestId, CActive::EPriorityIdle, iRequestQueue ); + ( iFs, iSession, iObserver, iRequestObserver, iRequestId, CActive::EPriorityIdle, + iRequestQueue ); CleanupStack::PushL( getThumbnailActive ); @@ -533,7 +564,8 @@ __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestId, CActive::EPriorityIdle, iRequestQueue ); + ( iFs, iSession, iObserver, iRequestObserver, iRequestId, CActive::EPriorityIdle, + iRequestQueue ); CleanupStack::PushL( getThumbnailActive ); @@ -620,7 +652,7 @@ TInt priority = ValidatePriority(aPriority); CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue ); + ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); CleanupStack::PushL( getThumbnailActive ); getThumbnailActive->UpdateThumbnailsL( aPath, aItemId, iFlags, iQualityPreference, @@ -648,7 +680,7 @@ TInt priority = ValidatePriority(aPriority); CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue ); + ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); CleanupStack::PushL( getThumbnailActive ); getThumbnailActive->RenameThumbnails( aCurrentPath, aNewPath, priority ); @@ -661,6 +693,32 @@ return iRequestId; } + +// --------------------------------------------------------------------------- +// CThumbnailManagerImpl::SetRequestObserver() +// Adds optional request observer +// --------------------------------------------------------------------------- +// +void CThumbnailManagerImpl::SetRequestObserver( MThumbnailManagerRequestObserver& aObserver ) + { + iRequestObserver = NULL; + iRequestObserver = &aObserver; + } + +// --------------------------------------------------------------------------- +// CThumbnailManagerImpl::RemoveRequestObserver() +// Removes optional request observer +// --------------------------------------------------------------------------- +// +void CThumbnailManagerImpl::RemoveRequestObserver() + { + if (iRequestObserver) + { + iRequestObserver = NULL; + } + } + + // --------------------------------------------------------------------------- // CThumbnailManagerImpl::ValidatePriority() // Check that given priority is in range of CActive::TPriority