imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailmanagerimpl.cpp
branchRCL_3
changeset 9 dea39715fc05
parent 0 2014ca87e772
child 10 ee674526fac5
equal deleted inserted replaced
8:7403edfcf0fb 9:dea39715fc05
   107     User::LeaveIfError( iSession.Connect());
   107     User::LeaveIfError( iSession.Connect());
   108     User::LeaveIfError( iFs.Connect());
   108     User::LeaveIfError( iFs.Connect());
   109     User::LeaveIfError( iFs.ShareProtected());
   109     User::LeaveIfError( iFs.ShareProtected());
   110 
   110 
   111     if ( !RFbsSession::GetSession() )
   111     if ( !RFbsSession::GetSession() )
       
   112         {
       
   113         // We need to connect to Fbs (first user in this thread)
       
   114         // Maintain a reference count in TLS
       
   115         User::LeaveIfError( iFbsSession.Connect()); 
       
   116         Dll::SetTls( (TAny*)1 ); 
       
   117         TN_DEBUG2( "CThumbnailManagerImpl::ConstructL() - update sessionCount == %d to TLS", 1 );
       
   118         }
       
   119     else
       
   120         {
       
   121         TInt sessionCount = (TInt)Dll::Tls(); 
       
   122         if( sessionCount++ > 0 )
   112             {
   123             {
   113             // We need to connect to Fbs (first user in this thread)
   124             // Increase the reference count in TLS
   114             // Maintain a reference count in TLS
   125             Dll::SetTls( (TAny*)sessionCount );
   115             User::LeaveIfError( iFbsSession.Connect()); 
   126             TN_DEBUG2( "CThumbnailManagerImpl::ConstructL() - update sessionCount == %d to TLS", sessionCount );
   116             Dll::SetTls( (TAny*)1 ); 
   127             } 
   117 		    TN_DEBUG2( "CThumbnailManagerImpl::ConstructL() - update sessionCount == %d to TLS", 1 );
       
   118             }
       
   119         else
   128         else
   120             {
   129             {
   121             TInt sessionCount = (TInt)Dll::Tls(); 
   130             // Fbs connection was available in the beginning, no need to
   122             if( sessionCount++ > 0 )
   131             // increase the reference count
   123                 {
       
   124                 // Increase the reference count in TLS
       
   125                 Dll::SetTls( (TAny*)sessionCount );
       
   126 			    TN_DEBUG2( "CThumbnailManagerImpl::ConstructL() - update sessionCount == %d to TLS", sessionCount );
       
   127                 } 
       
   128             else
       
   129                 {
       
   130                 // Fbs connection was available in the beginning, no need to
       
   131                 // increase the reference count
       
   132                 }
       
   133             }
   132             }
       
   133         }
   134     
   134     
   135     // request processor
   135     // request processor
   136     iRequestQueue = CThumbnailRequestQueue::NewL();
   136     iRequestQueue = CThumbnailRequestQueue::NewL();
   137     }
   137     }
   138 
   138 
   149     iRequestId++;
   149     iRequestId++;
   150     TN_DEBUG4( "CThumbnailManagerImpl::GetThumbnailL() URI==%S, iThumbnailSize==%d %d", &aObjectSource.Uri(), iThumbnailSize, iRequestId );
   150     TN_DEBUG4( "CThumbnailManagerImpl::GetThumbnailL() URI==%S, iThumbnailSize==%d %d", &aObjectSource.Uri(), iThumbnailSize, iRequestId );
   151     
   151     
   152     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   152     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   153 
   153 
       
   154     TInt priority = ValidatePriority(aPriority);
       
   155     
   154     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   156     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   155         ( iFs, iSession, iObserver, iRequestId, aPriority, iRequestQueue );
   157         ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   156     CleanupStack::PushL( getThumbnailActive );
   158     CleanupStack::PushL( getThumbnailActive );
   157     
   159     
   158     if(aObjectSource.Id() > 0)
   160     if(aObjectSource.Id() > 0)
   159         {
   161         {
   160         getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
   162         getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
   161             iQualityPreference, iSize, iDisplayMode, aPriority, aClientData, aGeneratePersistentSizesOnly,
   163             iQualityPreference, iSize, iDisplayMode, priority, aClientData, aGeneratePersistentSizesOnly,
   162             KNullDesC, iThumbnailSize);
   164             KNullDesC, iThumbnailSize);
   163         }
   165         }
   164     else if ( aObjectSource.Uri().Length())
   166     else if ( aObjectSource.Uri().Length())
   165         {
   167         {
   166         getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
   168         getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
   167             iQualityPreference, iSize, iDisplayMode, aPriority, aClientData, aGeneratePersistentSizesOnly,
   169             iQualityPreference, iSize, iDisplayMode, priority, aClientData, aGeneratePersistentSizesOnly,
   168             KNullDesC, iThumbnailSize );
   170             KNullDesC, iThumbnailSize );
   169         }
   171         }
   170     else
   172     else
   171         {
   173         {
   172         getThumbnailActive->GetThumbnailL( aObjectSource.FileHandle(), aObjectSource.Id(), iFlags,
   174         getThumbnailActive->GetThumbnailL( aObjectSource.FileHandle(), aObjectSource.Id(), iFlags,
   173             iQualityPreference, iSize, iDisplayMode, aPriority, aClientData, aGeneratePersistentSizesOnly,
   175             iQualityPreference, iSize, iDisplayMode, priority, aClientData, aGeneratePersistentSizesOnly,
   174             KNullDesC, iThumbnailSize );
   176             KNullDesC, iThumbnailSize );
   175         }
   177         }
   176     
   178     
   177     iRequestQueue->AddRequestL( getThumbnailActive );
   179     iRequestQueue->AddRequestL( getThumbnailActive );
   178     CleanupStack::Pop( getThumbnailActive );
   180     CleanupStack::Pop( getThumbnailActive );
   208     iRequestId++;
   210     iRequestId++;
   209     TN_DEBUG5( "CThumbnailManagerImpl::GetThumbnailL() reqid==%d, aThumbnailId==%d, iThumbnailSize==%d %d", iRequestId, aThumbnailId, iThumbnailSize, iRequestId );
   211     TN_DEBUG5( "CThumbnailManagerImpl::GetThumbnailL() reqid==%d, aThumbnailId==%d, iThumbnailSize==%d %d", iRequestId, aThumbnailId, iThumbnailSize, iRequestId );
   210 
   212 
   211     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   213     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   212 
   214 
       
   215     TInt priority = ValidatePriority(aPriority);
       
   216     
   213     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   217     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   214         ( iFs, iSession, iObserver, iRequestId, aPriority, iRequestQueue );
   218         ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   215     CleanupStack::PushL( getThumbnailActive );
   219     CleanupStack::PushL( getThumbnailActive );
   216     
   220     
   217     getThumbnailActive->GetThumbnailL( KNullDesC, aThumbnailId, iFlags,
   221     getThumbnailActive->GetThumbnailL( KNullDesC, aThumbnailId, iFlags,
   218                        iQualityPreference, iSize, iDisplayMode, aPriority, aClientData,
   222                        iQualityPreference, iSize, iDisplayMode, priority, aClientData,
   219                        EFalse, KNullDesC, iThumbnailSize );
   223                        EFalse, KNullDesC, iThumbnailSize );
   220     
   224     
   221     iRequestQueue->AddRequestL( getThumbnailActive );
   225     iRequestQueue->AddRequestL( getThumbnailActive );
   222     CleanupStack::Pop( getThumbnailActive );
   226     CleanupStack::Pop( getThumbnailActive );
   223     
   227     
   240     {
   244     {
   241     iRequestId++;
   245     iRequestId++;
   242 
   246 
   243     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   247     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   244 
   248 
       
   249     TInt priority = ValidatePriority(aPriority);
       
   250     
   245     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   251     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   246         ( iFs, iSession, iObserver, iRequestId, aPriority, iRequestQueue );
   252         ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   247     CleanupStack::PushL( getThumbnailActive );
   253     CleanupStack::PushL( getThumbnailActive );
   248 
   254 
   249     if ( aObjectSource.Uri().Length())
   255     if ( aObjectSource.Uri().Length())
   250         {
   256         {
   251         getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
   257         getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
   252             iQualityPreference, iSize, iDisplayMode, aPriority, aClientData,
   258             iQualityPreference, iSize, iDisplayMode, priority, aClientData,
   253             EFalse, aTargetUri, iThumbnailSize );
   259             EFalse, aTargetUri, iThumbnailSize );
   254         }
   260         }
   255     else
   261     else
   256         {
   262         {
   257         getThumbnailActive->GetThumbnailL( aObjectSource.FileHandle(), aObjectSource.Id(), 
   263         getThumbnailActive->GetThumbnailL( aObjectSource.FileHandle(), aObjectSource.Id(), 
   258             iFlags, iQualityPreference, iSize, iDisplayMode, aPriority, aClientData,
   264             iFlags, iQualityPreference, iSize, iDisplayMode, priority, aClientData,
   259             EFalse, aTargetUri, iThumbnailSize );
   265             EFalse, aTargetUri, iThumbnailSize );
   260         }
   266         }
   261     
   267     
   262     iRequestQueue->AddRequestL( getThumbnailActive );
   268     iRequestQueue->AddRequestL( getThumbnailActive );
   263     CleanupStack::Pop( getThumbnailActive );
   269     CleanupStack::Pop( getThumbnailActive );
   279     {
   285     {
   280     iRequestId++;
   286     iRequestId++;
   281 
   287 
   282     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   288     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   283 
   289 
       
   290     TInt priority = ValidatePriority(aPriority);
       
   291     
   284     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   292     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   285         ( iFs, iSession, iObserver, iRequestId, aPriority, iRequestQueue );
   293         ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   286     CleanupStack::PushL( getThumbnailActive );
   294     CleanupStack::PushL( getThumbnailActive );
   287     
   295     
   288     if ( aObjectSource.Uri().Length() &&
   296     if ( aObjectSource.Uri().Length() &&
   289          aObjectSource.Buffer() != NULL &&
   297          aObjectSource.Buffer() != NULL &&
   290          aObjectSource.MimeType() != KNullDesC8)
   298          aObjectSource.MimeType() != KNullDesC8)
   291         {
   299         {
   292         getThumbnailActive->SetThumbnailL( aObjectSource.GetBufferOwnership(), aObjectSource.Id(),
   300         getThumbnailActive->SetThumbnailL( aObjectSource.GetBufferOwnership(), aObjectSource.Id(),
   293             aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode,
   301             aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode,
   294             aPriority, aClientData, EFalse, aObjectSource.Uri(), iThumbnailSize);
   302             priority, aClientData, EFalse, aObjectSource.Uri(), iThumbnailSize);
   295         }
   303         }
   296     
   304     
   297     iRequestQueue->AddRequestL( getThumbnailActive );
   305     iRequestQueue->AddRequestL( getThumbnailActive );
   298     CleanupStack::Pop( getThumbnailActive );
   306     CleanupStack::Pop( getThumbnailActive );
   299 
   307 
   316 		TN_DEBUG2( "CThumbnailManagerImpl::CreateThumbnails() aObjectSource==%S ", &aObjectSource.Uri() );
   324 		TN_DEBUG2( "CThumbnailManagerImpl::CreateThumbnails() aObjectSource==%S ", &aObjectSource.Uri() );
   317 		iRequestId++;
   325 		iRequestId++;
   318 
   326 
   319 		__ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   327 		__ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   320 
   328 
       
   329 		TInt priority = ValidatePriority(aPriority);
       
   330 		
   321 		CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   331 		CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   322 			( iFs, iSession, iObserver, iRequestId, aPriority, iRequestQueue );
   332 			( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   323 		
   333 		
   324 		CleanupStack::PushL( getThumbnailActive );
   334 		CleanupStack::PushL( getThumbnailActive );
   325 		
   335 		
   326 		if (aObjectSource.Bitmap())
   336 		if (aObjectSource.Bitmap())
   327 			{
   337 			{
   328 			// from bitmap
   338 			// from bitmap
   329 			getThumbnailActive->SetThumbnailL( aObjectSource.GetBitmapOwnership(),
   339 			getThumbnailActive->SetThumbnailL( aObjectSource.GetBitmapOwnership(),
   330 						 aObjectSource.Id(), KBmpMime, iFlags, iQualityPreference,
   340 						 aObjectSource.Id(), KBmpMime, iFlags, iQualityPreference,
   331 						 iSize, iDisplayMode, aPriority, NULL, ETrue,
   341 						 iSize, iDisplayMode, priority, NULL, ETrue,
   332 						 aObjectSource.Uri(), EUnknownThumbnailSize);
   342 						 aObjectSource.Uri(), EUnknownThumbnailSize);
   333 			}
   343 			}
   334 		else if( !aObjectSource.Buffer() )
   344 		else if( !aObjectSource.Buffer() )
   335 			{        
   345 			{        
   336 			getThumbnailActive->GetThumbnailL( aObjectSource.Id(), 
   346 			getThumbnailActive->GetThumbnailL( aObjectSource.Id(), 
   337 						 aObjectSource.Uri(), iFlags, iQualityPreference, iSize,
   347 						 aObjectSource.Uri(), iFlags, iQualityPreference, iSize,
   338 						 iDisplayMode, aPriority, NULL, ETrue, aObjectSource.Uri(), 
   348 						 iDisplayMode, priority, NULL, ETrue, aObjectSource.Uri(), 
   339 						 EUnknownThumbnailSize);      
   349 						 EUnknownThumbnailSize);      
   340 			}
   350 			}
   341 		else
   351 		else
   342 			{
   352 			{
   343 			// from buffer
   353 			// from buffer
   344 			getThumbnailActive->SetThumbnailL( aObjectSource.GetBufferOwnership(),
   354 			getThumbnailActive->SetThumbnailL( aObjectSource.GetBufferOwnership(),
   345 						 aObjectSource.Id(), aObjectSource.MimeType(), iFlags,
   355 						 aObjectSource.Id(), aObjectSource.MimeType(), iFlags,
   346 						 iQualityPreference, iSize, iDisplayMode, aPriority, NULL,
   356 						 iQualityPreference, iSize, iDisplayMode, priority, NULL,
   347 						 ETrue, aObjectSource.Uri(), EUnknownThumbnailSize);
   357 						 ETrue, aObjectSource.Uri(), EUnknownThumbnailSize);
   348 			}
   358 			}
   349 		
   359 		
   350 		iRequestQueue->AddRequestL( getThumbnailActive );
   360 		iRequestQueue->AddRequestL( getThumbnailActive );
   351 		
   361 		
   561 TInt CThumbnailManagerImpl::ChangePriority( const TThumbnailRequestId aId,
   571 TInt CThumbnailManagerImpl::ChangePriority( const TThumbnailRequestId aId,
   562     const TInt aNewPriority )
   572     const TInt aNewPriority )
   563     {
   573     {
   564     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   574     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   565     
   575     
       
   576     TInt priority = ValidatePriority(aNewPriority);
       
   577     
   566     TN_DEBUG2( "CThumbnailManagerImpl::ChangePriority() - request ID: %d", aId );
   578     TN_DEBUG2( "CThumbnailManagerImpl::ChangePriority() - request ID: %d", aId );
   567     
   579     
   568     return iRequestQueue->ChangePriority(aId, aNewPriority);
   580     return iRequestQueue->ChangePriority(aId, priority);
   569     }
   581     }
   570 
   582 
   571 // ---------------------------------------------------------------------------
   583 // ---------------------------------------------------------------------------
   572 // Get the list of supported file systems from server
   584 // Get the list of supported file systems from server
   573 // ---------------------------------------------------------------------------
   585 // ---------------------------------------------------------------------------
   603     iRequestId++;
   615     iRequestId++;
   604     TN_DEBUG4( "CThumbnailManagerImpl::UpdateThumbnailsL() URI==%S, aItemId==%d %d", &aPath, aItemId, iRequestId); 
   616     TN_DEBUG4( "CThumbnailManagerImpl::UpdateThumbnailsL() URI==%S, aItemId==%d %d", &aPath, aItemId, iRequestId); 
   605     
   617     
   606     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   618     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   607     
   619     
       
   620     TInt priority = ValidatePriority(aPriority);
       
   621     
   608     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   622     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   609         ( iFs, iSession, iObserver, iRequestId, aPriority, iRequestQueue );
   623         ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   610     CleanupStack::PushL( getThumbnailActive );
   624     CleanupStack::PushL( getThumbnailActive );
   611     
   625     
   612     getThumbnailActive->UpdateThumbnailsL( aPath, aItemId, iFlags, iQualityPreference,
   626     getThumbnailActive->UpdateThumbnailsL( aPath, aItemId, iFlags, iQualityPreference,
   613             iDisplayMode, aPriority, aOrientation, aModified );
   627             iDisplayMode, priority, aOrientation, aModified );
   614     
   628     
   615     iRequestQueue->AddRequestL( getThumbnailActive );
   629     iRequestQueue->AddRequestL( getThumbnailActive );
   616     CleanupStack::Pop( getThumbnailActive );
   630     CleanupStack::Pop( getThumbnailActive );
   617     
   631     
   618     iRequestQueue->Process();
   632     iRequestQueue->Process();
   619     }
   633     }
   620 
   634 
       
   635 // ---------------------------------------------------------------------------
       
   636 // CThumbnailManagerImpl::ValidatePriority()
       
   637 // Check that given priority is in range of CActive::TPriority 
       
   638 // ---------------------------------------------------------------------------
       
   639 //
       
   640 TInt CThumbnailManagerImpl::ValidatePriority( const TInt aPriority )
       
   641     {
       
   642     if (aPriority < CActive::EPriorityIdle)
       
   643         {
       
   644         TN_DEBUG2( "CThumbnailManagerImpl::ValidatePriority() - priority %d too low for CActive", aPriority );
       
   645         return CActive::EPriorityIdle;
       
   646         }
       
   647     else if (aPriority > CActive::EPriorityHigh)
       
   648         {
       
   649         TN_DEBUG2( "CThumbnailManagerImpl::ValidatePriority() - priority %d too high for CActive", aPriority );
       
   650         return CActive::EPriorityHigh;
       
   651         }
       
   652     else
       
   653         {
       
   654         return aPriority;
       
   655         }
       
   656     }
       
   657 
   621 // End of file
   658 // End of file