diff -r 7197e789b953 -r ffa62e555b02 imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserver.cpp --- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserver.cpp Fri Apr 16 15:16:16 2010 +0300 +++ b/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserver.cpp Mon May 03 12:48:51 2010 +0300 @@ -36,6 +36,7 @@ #include "thumbnailcenrep.h" #include "thumbnailmemorycardobserver.h" #include "tmgetimei.h" +#include "thumbnailfetchedchecker.h" _LIT8( KThumbnailMimeWildCard, "*" ); @@ -73,7 +74,7 @@ ERequestThumbByBufferAsync, ERequestSetThumbnailByBuffer, EDeleteThumbnailsById, - EReserved1, + ERenameThumbnails, EUpdateThumbnails, ERequestSetThumbnailByBitmap, EThumbnailServerRequestCount, @@ -96,7 +97,7 @@ CPolicyServer::ECustomCheck, // ERequestThumbByBufferAsync CPolicyServer::ECustomCheck, // ERequestSetThumbnailByBuffer CPolicyServer::ECustomCheck, // EDeleteThumbnailsById - CPolicyServer::ECustomCheck, + CPolicyServer::ECustomCheck, // ERenameThumbnails CPolicyServer::ECustomCheck, // EUpdateThumbnails CPolicyServer::ECustomCheck, // ERequestSetThumbnailByBitmap CPolicyServer::ECustomCheck, // EThumbnailServerRequestCount @@ -142,7 +143,8 @@ case EGetMimeTypeList: case ERequestSetThumbnailByBuffer: case EDeleteThumbnailsById: - case EUpdateThumbnails: + case EUpdateThumbnails: + case ERenameThumbnails: case ERequestSetThumbnailByBitmap: { if( aMsg.HasCapability( ECapabilityReadDeviceData ) && @@ -152,8 +154,6 @@ } break; } - - case EReserved1: case EThumbnailServerRequestCount: default: { @@ -254,6 +254,7 @@ //OpenStoresL(); AddUnmountObserversL(); + iFetchedChecker = CThumbnailFetchedChecker::NewL(); } @@ -267,6 +268,7 @@ iShutdown = ETrue; + delete iFetchedChecker; delete iShutdownObserver; delete iProcessor; @@ -536,6 +538,10 @@ { TN_DEBUG1( "CThumbnailServer::StoreThumbnailL() - file doesn't exists anymore, skip store!"); } + if( iFetchedChecker ) + { + iFetchedChecker->SetFetchResult( aPath, KErrNone ); + } } @@ -547,8 +553,23 @@ aThumbnail, TDesC8* & aData, const TThumbnailSize aThumbnailSize, TSize &aOriginalSize ) { TN_DEBUG3( "CThumbnailServer::FetchThumbnailL(aPath=%S aThumbnailSize=%d)", &aPath, aThumbnailSize ); - - StoreForPathL( aPath )->FetchThumbnailL( aPath, aThumbnail, aData, aThumbnailSize, aOriginalSize); + if( iFetchedChecker ) + { + TInt err( iFetchedChecker->LastFetchResult( aPath ) ); + if ( err == KErrNone ) // To avoid useless sql gets that fails for sure + { + TRAP( err, StoreForPathL( aPath )->FetchThumbnailL( aPath, aThumbnail, aData, aThumbnailSize, aOriginalSize) ); + if ( err != KErrNone ) + { + iFetchedChecker->SetFetchResult( aPath, err ); + } + } + User::LeaveIfError( err ); + } + else + { + StoreForPathL( aPath )->FetchThumbnailL( aPath, aThumbnail, aData, aThumbnailSize, aOriginalSize); + } } @@ -600,6 +621,11 @@ TN_DEBUG2( "CThumbnailServer::DeleteThumbnailsL(%S)", &aPath); StoreForPathL( aPath )->DeleteThumbnailsL( aPath ); + + if( iFetchedChecker ) + { + iFetchedChecker->SetFetchResult( aPath, KErrNone ); + } } // ----------------------------------------------------------------------------- @@ -911,16 +937,14 @@ // CThumbnailStore::PersistentSizeL() // --------------------------------------------------------------------------- // -TThumbnailPersistentSize & CThumbnailServer::PersistentSizeL( TThumbnailSize - aThumbnailSize ) +TThumbnailPersistentSize & CThumbnailServer::PersistentSizeL( TThumbnailSize aThumbnailSize ) { if ( !iCenrep ) - { - iCenrep = CThumbnailCenRep::NewL(); - } + { + iCenrep = CThumbnailCenRep::NewL(); + } - return iCenrep->PersistentSizeL( aThumbnailSize ); - + return iCenrep->PersistentSizeL( aThumbnailSize ); } // ----------------------------------------------------------------------------- @@ -1175,6 +1199,11 @@ // delete old thumbs store->DeleteThumbnailsL(aPath, ETrue); + if( iFetchedChecker ) + { + iFetchedChecker->SetFetchResult( aPath, KErrNone ); + } + // need to create new thumbs } else @@ -1193,6 +1222,23 @@ } // ----------------------------------------------------------------------------- +// Renames thumbnails. +// ----------------------------------------------------------------------------- +// +void CThumbnailServer::RenameThumbnailsL( const TDesC& aCurrentPath, const TDesC& aNewPath ) + { + TN_DEBUG2( "CThumbnailServer::RenameThumbnailsL(%S)", &aCurrentPath); + + StoreForPathL( aCurrentPath )->RenameThumbnailsL( aCurrentPath, aNewPath ); + + if( iFetchedChecker ) + { + iFetchedChecker->SetFetchResult( aNewPath, iFetchedChecker->LastFetchResult(aCurrentPath) ); + iFetchedChecker->SetFetchResult( aCurrentPath, KErrNone ); + } + } + +// ----------------------------------------------------------------------------- // CThumbnailServer::MimeTypeFromFileExt() // ----------------------------------------------------------------------------- //