diff -r 2e2a89493e2b -r 48dd0f169f0d imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailmanagerimpl.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailmanagerimpl.cpp Fri Sep 03 10:29:37 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,775 +0,0 @@ -/* -* Copyright (c) 2006-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 class of Thumbnail Manager. - * -*/ - - -#include -#include -#include -#include -#include - -#include - -#include "thumbnailmanagerimpl.h" -#include "thumbnailrequestactive.h" -#include "thumbnailprovider.h" -#include "thumbnailsession.h" -#include "thumbnailmanageruids.hrh" -#include "thumbnailmanagerprivatecrkeys.h" -#include "thumbnailpanic.h" - -#include "thumbnaildata.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "thumbnailmanagerimplTraces.h" -#endif - - -const TInt KThumbnailMimeTypeListGranularity = 8; - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::~CThumbnailManagerImpl() -// Destructor. -// --------------------------------------------------------------------------- -// -CThumbnailManagerImpl::~CThumbnailManagerImpl() - { - TN_DEBUG1( "CThumbnailManagerImpl::~CThumbnailManagerImpl() - start" ); - OstTrace0( TRACE_NORMAL, CTHUMBNAILMANAGERIMPL_CTHUMBNAILMANAGERIMPL, "CThumbnailManagerImpl::~CThumbnailManagerImpl - start" ); - - delete iRequestQueue; - iRequestQueue = NULL; - - iSession.Close(); - iFs.Close(); - - // Check if we need to disconnect Fbs - TInt sessionCount = (TInt)Dll::Tls(); - if ( sessionCount > 0) - { - if( --sessionCount == 0 ) - { - TN_DEBUG1( "CThumbnailManagerImpl::~CThumbnailManagerImpl() - Disconnect FBS" ); - OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILMANAGERIMPL_CTHUMBNAILMANAGERIMPL, "CThumbnailManagerImpl::~CThumbnailManagerImpl - Disconnect FBS" ); - iFbsSession.Disconnect(); - } - TN_DEBUG2( "CThumbnailManagerImpl::~CThumbnailManagerImpl() - update sessionCount == %d to TLS", sessionCount ); - OstTrace1( TRACE_NORMAL, DUP2_CTHUMBNAILMANAGERIMPL_CTHUMBNAILMANAGERIMPL, "CThumbnailManagerImpl::~CThumbnailManagerImpl - update sessionCount == %d to TLS", sessionCount ); - Dll::SetTls( (TAny*)sessionCount ); - } - - delete iMimeTypeList; - iMimeTypeList = NULL; - - TN_DEBUG1( "CThumbnailManagerImpl::~CThumbnailManagerImpl() - end" ); - OstTrace0( TRACE_NORMAL, DUP3_CTHUMBNAILMANAGERIMPL_CTHUMBNAILMANAGERIMPL, "CThumbnailManagerImpl::~CThumbnailManagerImpl - end" ); - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::NewLC() -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CThumbnailManagerImpl* CThumbnailManagerImpl::NewLC( MThumbnailManagerObserver& - aObserver ) - { - CThumbnailManagerImpl* self = new( ELeave )CThumbnailManagerImpl( aObserver ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::CThumbnailManagerImpl() -// C++ default constructor can NOT contain any code, that might leave. -// --------------------------------------------------------------------------- -// -CThumbnailManagerImpl::CThumbnailManagerImpl( MThumbnailManagerObserver& - aObserver ): iObserver( aObserver ), iRequestObserver( NULL ), iDisplayMode( - KThumbnailDefaultDisplayMode ), iFlags( EDefaultFlags ), iQualityPreference - ( EOptimizeForQuality ), iRequestId( 0 ) - { - // No implementation required - TN_DEBUG1( "CThumbnailManagerImpl::CThumbnailManagerImpl()" ); - OstTrace0( TRACE_NORMAL, DUP4_CTHUMBNAILMANAGERIMPL_CTHUMBNAILMANAGERIMPL, "CThumbnailManagerImpl::CThumbnailManagerImpl" ); - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::ConstructL() -// Symbian 2nd phase constructor can leave. -// --------------------------------------------------------------------------- -// -void CThumbnailManagerImpl::ConstructL() - { - TN_DEBUG1( "CThumbnailManagerImpl::ConstructL - start"); - OstTrace0( TRACE_NORMAL, CTHUMBNAILMANAGERIMPL_CONSTRUCTL, "CThumbnailManagerImpl::ConstructL - start" ); - - User::LeaveIfError( iSession.Connect()); - User::LeaveIfError( iFs.Connect()); - User::LeaveIfError( iFs.ShareProtected()); - - if ( !RFbsSession::GetSession() ) - { - // We need to connect to Fbs (first user in this thread) - // Maintain a reference count in TLS - User::LeaveIfError( iFbsSession.Connect()); - Dll::SetTls( (TAny*)1 ); - TN_DEBUG2( "CThumbnailManagerImpl::ConstructL() - update sessionCount == %d to TLS", 1 ); - OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILMANAGERIMPL_CONSTRUCTL, "CThumbnailManagerImpl::ConstructL - update sessionCount == %d to TLS", 1 ); - } - else - { - TInt sessionCount = (TInt)Dll::Tls(); - if( sessionCount++ > 0 ) - { - // Increase the reference count in TLS - Dll::SetTls( (TAny*)sessionCount ); - TN_DEBUG2( "CThumbnailManagerImpl::ConstructL() - update sessionCount == %d to TLS", sessionCount ); - OstTrace1( TRACE_NORMAL, DUP2_CTHUMBNAILMANAGERIMPL_CONSTRUCTL, "CThumbnailManagerImpl::ConstructL - update sessionCount == %d to TLS", sessionCount ); - } - else - { - // Fbs connection was available in the beginning, no need to - // increase the reference count - TN_DEBUG1( "CThumbnailManagerImpl::ConstructL - no need to update sessionCount"); - OstTrace0( TRACE_NORMAL, DUP3_CTHUMBNAILMANAGERIMPL_CONSTRUCTL, "CThumbnailManagerImpl::ConstructL - no need to update sessionCount" ); - } - } - - // request processor - iRequestQueue = CThumbnailRequestQueue::NewL(); - - TN_DEBUG1( "CThumbnailManagerImpl::ConstructL - end"); - OstTrace0( TRACE_NORMAL, DUP4_CTHUMBNAILMANAGERIMPL_CONSTRUCTL, "CThumbnailManagerImpl::ConstructL - end" ); - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::GetThumbnailL -// Get a thumbnail for an object file. -// --------------------------------------------------------------------------- -// -TThumbnailRequestId CThumbnailManagerImpl::GetThumbnailL( - CThumbnailObjectSource& aObjectSource, TAny* aClientData /*= NULL*/, const - TInt aPriority, TBool aGeneratePersistentSizesOnly) - { - iRequestId++; - TN_DEBUG4( "CThumbnailManagerImpl::GetThumbnailL() URI==%S, iThumbnailSize==%d, req %d", &aObjectSource.Uri(), iThumbnailSize, iRequestId ); - OstTraceExt3( TRACE_NORMAL, CTHUMBNAILMANAGERIMPL_GETTHUMBNAILL, "CThumbnailManagerImpl::GetThumbnailL;aObjectSource.Uri()=%S;iThumbnailSize=%d;iRequestId=%d", aObjectSource.Uri(), iThumbnailSize, iRequestId ); - - __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); - - TInt priority = ValidatePriority(aPriority); - - CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); - CleanupStack::PushL( getThumbnailActive ); - - if(aObjectSource.Id() > 0) - { - getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), - aObjectSource.MimeType(),iFlags, iQualityPreference, iSize, iDisplayMode, - priority, aClientData, aGeneratePersistentSizesOnly, KNullDesC, iThumbnailSize); - } - else if ( aObjectSource.Uri().Length()) - { - getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), - aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode, - priority, aClientData, aGeneratePersistentSizesOnly, KNullDesC, iThumbnailSize ); - } - else - { - getThumbnailActive->GetThumbnailL( aObjectSource.FileHandle(), aObjectSource.Id(), - aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode, - priority, aClientData, aGeneratePersistentSizesOnly, KNullDesC, iThumbnailSize ); - } - - iRequestQueue->AddRequestL( getThumbnailActive ); - CleanupStack::Pop( getThumbnailActive ); - - iRequestQueue->Process(); - - TN_DEBUG2( "CThumbnailManagerImpl::GetThumbnailL() - request ID: %d", iRequestId ); - OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILMANAGERIMPL_GETTHUMBNAILL, "CThumbnailManagerImpl::GetThumbnailL;iRequestId=%u", iRequestId ); - - return iRequestId; - } - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::GetThumbnailL -// Get a thumbnail for an object file. -// --------------------------------------------------------------------------- -// -TThumbnailRequestId CThumbnailManagerImpl::GetThumbnailL( - CThumbnailObjectSource& aObjectSource, TAny* aClientData /*= NULL*/, const - TInt aPriority ) - { - return GetThumbnailL( aObjectSource, aClientData, aPriority, EFalse ); - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::GetThumbnailL -// Get a thumbnail for an object file. -// --------------------------------------------------------------------------- -// -TThumbnailRequestId CThumbnailManagerImpl::GetThumbnailL( const TThumbnailId - aThumbnailId, TAny* aClientData /*= NULL*/, TInt aPriority) - { - iRequestId++; - TN_DEBUG4( "CThumbnailManagerImpl::GetThumbnailL() aThumbnailId==%d, iThumbnailSize==%d, req %d", aThumbnailId, iThumbnailSize, iRequestId ); - OstTraceExt3( TRACE_NORMAL, DUP2_CTHUMBNAILMANAGERIMPL_GETTHUMBNAILL, "CThumbnailManagerImpl::GetThumbnailL;aThumbnailId=%u;iThumbnailSize=%u;iRequestId=%u", aThumbnailId, iThumbnailSize, iRequestId ); - - __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); - - TInt priority = ValidatePriority(aPriority); - - CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); - CleanupStack::PushL( getThumbnailActive ); - - getThumbnailActive->GetThumbnailL( KNullDesC, aThumbnailId, KNullDesC8, - iFlags, iQualityPreference, iSize, iDisplayMode, priority, aClientData, - EFalse, KNullDesC, iThumbnailSize ); - - iRequestQueue->AddRequestL( getThumbnailActive ); - CleanupStack::Pop( getThumbnailActive ); - - iRequestQueue->Process(); - - TN_DEBUG2( "CThumbnailManagerImpl::GetThumbnailL() - request ID: %d", iRequestId ); - OstTrace1( TRACE_NORMAL, DUP3_CTHUMBNAILMANAGERIMPL_GETTHUMBNAILL, "CThumbnailManagerImpl::GetThumbnailL;iRequestId=%u", iRequestId ); - - return iRequestId; - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::ImportThumbnailL -// Import an image to be used as thumbnail for an object. -// --------------------------------------------------------------------------- -// -TThumbnailRequestId CThumbnailManagerImpl::ImportThumbnailL( - CThumbnailObjectSource& aObjectSource, const TDesC& aTargetUri, - TAny* aClientData /*= NULL*/, const TInt aPriority) - { - iRequestId++; - - __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); - - TInt priority = ValidatePriority(aPriority); - - CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); - CleanupStack::PushL( getThumbnailActive ); - - if ( aObjectSource.Uri().Length()) - { - getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), - aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode, - priority, aClientData, EFalse, aTargetUri, iThumbnailSize ); - } - else - { - getThumbnailActive->GetThumbnailL( aObjectSource.FileHandle(), aObjectSource.Id(), - aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode, - priority, aClientData, EFalse, aTargetUri, iThumbnailSize ); - } - - iRequestQueue->AddRequestL( getThumbnailActive ); - CleanupStack::Pop( getThumbnailActive ); - - iRequestQueue->Process(); - - TN_DEBUG2( "CThumbnailManagerImpl::ImportThumbnailL() - request ID: %d", iRequestId ); - OstTrace1( TRACE_NORMAL, CTHUMBNAILMANAGERIMPL_IMPORTTHUMBNAILL, "CThumbnailManagerImpl::ImportThumbnailL;iRequestId=%u", iRequestId ); - - return iRequestId; - } - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::SetThumbnailL -// Import an image to be used as thumbnail for an object. -// --------------------------------------------------------------------------- -// -TThumbnailRequestId CThumbnailManagerImpl::SetThumbnailL( CThumbnailObjectSource& aObjectSource, - TAny* aClientData, TInt aPriority ) - { - iRequestId++; - - __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); - - TInt priority = ValidatePriority(aPriority); - - CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); - CleanupStack::PushL( getThumbnailActive ); - - 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, ETrue, aObjectSource.Uri(), iThumbnailSize, ETrue); - } - - iRequestQueue->AddRequestL( getThumbnailActive ); - CleanupStack::Pop( getThumbnailActive ); - - iRequestQueue->Process(); - - TN_DEBUG2( "CThumbnailManagerImpl::SetThumbnailL() - request ID: %d", iRequestId ); - OstTrace1( TRACE_NORMAL, CTHUMBNAILMANAGERIMPL_SETTHUMBNAILL, "CThumbnailManagerImpl::SetThumbnailL;iRequestId=%u", iRequestId ); - - return iRequestId; - } - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::CreateThumbnails -// Create persistent size thumbnails for an object. -// --------------------------------------------------------------------------- -// -TThumbnailRequestId CThumbnailManagerImpl::CreateThumbnails( - CThumbnailObjectSource& aObjectSource, TInt aPriority ) - { - TRAPD(err, - TN_DEBUG2( "CThumbnailManagerImpl::CreateThumbnails() aObjectSource==%S ", &aObjectSource.Uri() ); - OstTraceExt1( TRACE_NORMAL, CTHUMBNAILMANAGERIMPL_CREATETHUMBNAILS, "CThumbnailManagerImpl::CreateThumbnails;aObjectSource.Uri()=%S", aObjectSource.Uri() ); - iRequestId++; - - __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); - - TInt priority = ValidatePriority(aPriority); - - CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); - - CleanupStack::PushL( getThumbnailActive ); - - if (aObjectSource.Bitmap()) - { - // from bitmap - getThumbnailActive->SetThumbnailL( aObjectSource.GetBitmapOwnership(), - aObjectSource.Id(), KBmpMime, iFlags, iQualityPreference, - iSize, iDisplayMode, priority, NULL, ETrue, - aObjectSource.Uri(), EUnknownThumbnailSize, EFalse); - } - else if( !aObjectSource.Buffer() ) - { - getThumbnailActive->GetThumbnailL( aObjectSource.Id(), - aObjectSource.Uri(), aObjectSource.MimeType(), iFlags, - iQualityPreference, iSize, iDisplayMode, priority, NULL, - ETrue, aObjectSource.Uri(), EUnknownThumbnailSize); - } - else - { - // from buffer - getThumbnailActive->SetThumbnailL( aObjectSource.GetBufferOwnership(), - aObjectSource.Id(), aObjectSource.MimeType(), iFlags, - iQualityPreference, iSize, iDisplayMode, priority, NULL, - ETrue, aObjectSource.Uri(), EUnknownThumbnailSize, EFalse); - } - - iRequestQueue->AddRequestL( getThumbnailActive ); - - CleanupStack::Pop( getThumbnailActive ); - - iRequestQueue->Process(); - - TN_DEBUG2( "CThumbnailManagerImpl::CreateThumbnails() - request ID: %d", iRequestId ); - OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILMANAGERIMPL_CREATETHUMBNAILS, "CThumbnailManagerImpl::CreateThumbnails;iRequestId=%u", iRequestId ); - ); - - if( err != KErrNone) - { - return err; - } - - return iRequestId; - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::DisplayMode() -// Get the current display mode for thumbnail bitmaps. -// --------------------------------------------------------------------------- -// -TDisplayMode CThumbnailManagerImpl::DisplayMode()const - { - return iDisplayMode; - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::SetDisplayModeL() -// Set the current display mode for thumbnail bitmaps. -// --------------------------------------------------------------------------- -// -void CThumbnailManagerImpl::SetDisplayModeL( const TDisplayMode aDisplayMode ) - { - iDisplayMode = aDisplayMode; - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::QualityPreference() -// Get the current quality versus performance preference. -// --------------------------------------------------------------------------- -// -CThumbnailManager::TThumbnailQualityPreference CThumbnailManagerImpl - ::QualityPreference()const - { - return iQualityPreference; - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::SetQualityPreferenceL() -// Set quality versus performance preference. -// --------------------------------------------------------------------------- -// -void CThumbnailManagerImpl::SetQualityPreferenceL( const - TThumbnailQualityPreference aQualityPreference ) - { - iQualityPreference = aQualityPreference; - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::ThumbnailSize() -// Get the current desired size for thumbnail bitmaps. -// --------------------------------------------------------------------------- -// -const TSize& CThumbnailManagerImpl::ThumbnailSize()const - { - return iSize; - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::SetThumbnailSizeL() -// Set desired size for thumbnail bitmaps. -// --------------------------------------------------------------------------- -// -void CThumbnailManagerImpl::SetThumbnailSizeL( const TSize& aThumbnailSize ) - { - iSize = aThumbnailSize; - iThumbnailSize = ECustomThumbnailSize; - } - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::SetThumbnailSizeL() -// Set desired size for thumbnail bitmaps. -// --------------------------------------------------------------------------- -// -void CThumbnailManagerImpl::SetThumbnailSizeL( const TThumbnailSize aThumbnailSize ) - { - iThumbnailSize = aThumbnailSize; - } - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::Flags() -// Get current flags for thumbnail generation. -// --------------------------------------------------------------------------- -// -CThumbnailManager::TThumbnailFlags CThumbnailManagerImpl::Flags()const - { - return iFlags; - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::SetFlagsL() -// Set flags for thumbnail generation. Several flags may be enabled -// by combining the values using bitwise or. -// --------------------------------------------------------------------------- -// -void CThumbnailManagerImpl::SetFlagsL( const TThumbnailFlags aFlags ) - { - iFlags = aFlags; - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::DeleteThumbnails() -// Delete all thumbnails for a given object. -// --------------------------------------------------------------------------- -// -void CThumbnailManagerImpl::DeleteThumbnails( CThumbnailObjectSource& - aObjectSource ) - { - TRAP_IGNORE( - iRequestId++; - TN_DEBUG2( "CThumbnailManagerImpl::DeleteThumbnails() URI==%S ", &aObjectSource.Uri() ); - OstTraceExt1( TRACE_NORMAL, CTHUMBNAILMANAGERIMPL_DELETETHUMBNAILS, "CThumbnailManagerImpl::DeleteThumbnails;aObjectSource.Uri()=%S", aObjectSource.Uri() ); - - __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); - - CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestObserver, iRequestId, CActive::EPriorityIdle, - iRequestQueue ); - - CleanupStack::PushL( getThumbnailActive ); - - const TDesC& uri = aObjectSource.Uri(); - - if ( uri.Length()) - { - getThumbnailActive->DeleteThumbnails( uri, 0, CActive::EPriorityIdle ); - } - else - { - TInt err = aObjectSource.FileHandle().FullName( iFileNameBuf ); - if ( !err ) - { - getThumbnailActive->DeleteThumbnails( iFileNameBuf, 0, CActive::EPriorityIdle ); - } - } - - iRequestQueue->AddRequestL( getThumbnailActive ); - - CleanupStack::Pop( getThumbnailActive ); - - iRequestQueue->Process(); - ); - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::DeleteThumbnailsL() -// Delete thumbnails by TThumbnailId. -// --------------------------------------------------------------------------- -// -void CThumbnailManagerImpl::DeleteThumbnails( const TThumbnailId aItemId ) - { - TRAP_IGNORE( - iRequestId++; - TN_DEBUG2( "CThumbnailManagerImpl::DeleteThumbnails() aItemId==%d ", aItemId ); - OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILMANAGERIMPL_DELETETHUMBNAILS, "CThumbnailManagerImpl::DeleteThumbnails;aItemId=%u", aItemId ); - - __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); - - CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestObserver, iRequestId, CActive::EPriorityIdle, - iRequestQueue ); - - CleanupStack::PushL( getThumbnailActive ); - - getThumbnailActive->DeleteThumbnails( KNullDesC, aItemId, CActive::EPriorityIdle ); - - iRequestQueue->AddRequestL( getThumbnailActive ); - - CleanupStack::Pop( getThumbnailActive ); - - iRequestQueue->Process(); - ); - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::CancelRequest() -// Cancel a thumbnail operation. -// --------------------------------------------------------------------------- -// -TInt CThumbnailManagerImpl::CancelRequest( const TThumbnailRequestId aId ) - { - __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); - - TN_DEBUG2( "CThumbnailManagerImpl::CancelRequest() - request ID: %d", aId ); - OstTrace1( TRACE_NORMAL, CTHUMBNAILMANAGERIMPL_CANCELREQUEST, "CThumbnailManagerImpl::CancelRequest;aId=%u", aId ); - - return iRequestQueue->CancelRequest(aId); - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::ChangePriority() -// Change the priority of a queued thumbnail operation. -// --------------------------------------------------------------------------- -// -TInt CThumbnailManagerImpl::ChangePriority( const TThumbnailRequestId aId, - const TInt aNewPriority ) - { - __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); - - TInt priority = ValidatePriority(aNewPriority); - - TN_DEBUG2( "CThumbnailManagerImpl::ChangePriority() - request ID: %d", aId ); - OstTrace1( TRACE_NORMAL, CTHUMBNAILMANAGERIMPL_CHANGEPRIORITY, "CThumbnailManagerImpl::ChangePriority;aId=%u", aId ); - - return iRequestQueue->ChangePriority(aId, priority); - } - -// --------------------------------------------------------------------------- -// Get the list of supported file systems from server -// --------------------------------------------------------------------------- -// -const CDesCArray& CThumbnailManagerImpl::GetSupportedMimeTypesL() - { - if ( !iMimeTypeList ) - { - iMimeTypeList = new( ELeave )CDesCArraySeg( - KThumbnailMimeTypeListGranularity ); - HBufC* buf = iSession.GetMimeTypeListL(); - CleanupStack::PushL( buf ); - TLex lex( *buf ); - while ( !lex.Eos()) - { - iMimeTypeList->AppendL( lex.NextToken()); - } - CleanupStack::PopAndDestroy( buf ); - } - return * iMimeTypeList; - } - - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::UpdateThumbnails() -// Update thumbnails by given ID -// --------------------------------------------------------------------------- -// -void CThumbnailManagerImpl::UpdateThumbnailsL( const TThumbnailId aItemId, const TDesC& aPath, - const TInt aOrientation, const TInt64 aModified, - TInt aPriority ) - { - iRequestId++; - TN_DEBUG4( "CThumbnailManagerImpl::UpdateThumbnailsL() URI==%S, aItemId==%d, req %d", &aPath, aItemId, iRequestId); - OstTraceExt3( TRACE_NORMAL, CTHUMBNAILMANAGERIMPL_UPDATETHUMBNAILSL, "CThumbnailManagerImpl::UpdateThumbnailsL;aPath=%S;aItemId=%d;iRequestId=%d", aPath, aItemId, iRequestId ); - - __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); - - TInt priority = ValidatePriority(aPriority); - - CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); - CleanupStack::PushL( getThumbnailActive ); - - getThumbnailActive->UpdateThumbnailsL( aPath, aItemId, iFlags, iQualityPreference, - iDisplayMode, priority, aOrientation, aModified ); - - iRequestQueue->AddRequestL( getThumbnailActive ); - CleanupStack::Pop( getThumbnailActive ); - - iRequestQueue->Process(); - } - -// --------------------------------------------------------------------------- -// CThumbnailManagerImpl::RenameThumbnailsL() -// Renames thumbnails by given path -// --------------------------------------------------------------------------- -// -TThumbnailRequestId CThumbnailManagerImpl::RenameThumbnailsL( const TDesC& aCurrentPath, - const TDesC& aNewPath, TInt aPriority ) - { - iRequestId++; - TN_DEBUG3( "CThumbnailManagerImpl::RenameThumbnailsL() URI==%S, req %d", &aCurrentPath, iRequestId); - OstTraceExt1( TRACE_NORMAL, CTHUMBNAILMANAGERIMPL_RENAMETHUMBNAILSL, "CThumbnailManagerImpl::RenameThumbnailsL;aCurrentPath=%S", aCurrentPath ); - - __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId )); - - TInt priority = ValidatePriority(aPriority); - - CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL - ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue ); - CleanupStack::PushL( getThumbnailActive ); - - getThumbnailActive->RenameThumbnails( aCurrentPath, aNewPath, priority ); - - iRequestQueue->AddRequestL( getThumbnailActive ); - CleanupStack::Pop( getThumbnailActive ); - - iRequestQueue->Process(); - - 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 -// --------------------------------------------------------------------------- -// -TInt CThumbnailManagerImpl::ValidatePriority( const TInt aPriority ) - { - if (aPriority < CActive::EPriorityIdle) - { - TN_DEBUG2( "CThumbnailManagerImpl::ValidatePriority() - priority %d too low for CActive", aPriority ); - OstTrace1( TRACE_NORMAL, CTHUMBNAILMANAGERIMPL_VALIDATEPRIORITY, "CThumbnailManagerImpl::ValidatePriority - priority too low for CActive;aPriority=%d", aPriority ); - return CActive::EPriorityIdle; - } - else if (aPriority > CActive::EPriorityHigh) - { - TN_DEBUG2( "CThumbnailManagerImpl::ValidatePriority() - priority %d too high for CActive", aPriority ); - OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILMANAGERIMPL_VALIDATEPRIORITY, "CThumbnailManagerImpl::ValidatePriority - priority too high for CActive;aPriority=%d", aPriority ); - return CActive::EPriorityHigh; - } - else - { - return aPriority; - } - } - -// End of file