imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailserver.cpp
changeset 17 ffa62e555b02
parent 15 7197e789b953
child 19 b790c5b3d11f
--- 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()
 // -----------------------------------------------------------------------------
 //