imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailmanagerimpl.cpp
branchGCC_SURGE
changeset 32 a0ee3f735f8b
parent 30 b67379558a75
child 39 1a8af2cd6858
--- 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