imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailmanagerimpl.cpp
branchGCC_SURGE
changeset 32 a0ee3f735f8b
parent 30 b67379558a75
child 39 1a8af2cd6858
equal deleted inserted replaced
26:ea43e3e86079 32:a0ee3f735f8b
    45 // Destructor.
    45 // Destructor.
    46 // ---------------------------------------------------------------------------
    46 // ---------------------------------------------------------------------------
    47 //
    47 //
    48 CThumbnailManagerImpl::~CThumbnailManagerImpl()
    48 CThumbnailManagerImpl::~CThumbnailManagerImpl()
    49     {
    49     {
    50     delete iRequestQueue;   
    50     TN_DEBUG1( "CThumbnailManagerImpl::~CThumbnailManagerImpl() - start" );
       
    51 	
       
    52     delete iRequestQueue;  
       
    53     iRequestQueue = NULL;
       
    54     
    51     iSession.Close();
    55     iSession.Close();
    52     iFs.Close();
    56     iFs.Close();
    53 
    57 
    54     // Check if we need to disconnect Fbs
    58     // Check if we need to disconnect Fbs
    55     TInt sessionCount = (TInt)Dll::Tls(); 
    59     TInt sessionCount = (TInt)Dll::Tls(); 
    63 	    TN_DEBUG2( "CThumbnailManagerImpl::~CThumbnailManagerImpl() - update sessionCount == %d to TLS", sessionCount );
    67 	    TN_DEBUG2( "CThumbnailManagerImpl::~CThumbnailManagerImpl() - update sessionCount == %d to TLS", sessionCount );
    64         Dll::SetTls( (TAny*)sessionCount );
    68         Dll::SetTls( (TAny*)sessionCount );
    65         }
    69         }
    66 
    70 
    67     delete iMimeTypeList;
    71     delete iMimeTypeList;
       
    72     iMimeTypeList = NULL;
       
    73 	
       
    74 	TN_DEBUG1( "CThumbnailManagerImpl::~CThumbnailManagerImpl() - end" );
    68     }
    75     }
    69 
    76 
    70 
    77 
    71 // ---------------------------------------------------------------------------
    78 // ---------------------------------------------------------------------------
    72 // CThumbnailManagerImpl::NewLC()
    79 // CThumbnailManagerImpl::NewLC()
    87 // CThumbnailManagerImpl::CThumbnailManagerImpl()
    94 // CThumbnailManagerImpl::CThumbnailManagerImpl()
    88 // C++ default constructor can NOT contain any code, that might leave.
    95 // C++ default constructor can NOT contain any code, that might leave.
    89 // ---------------------------------------------------------------------------
    96 // ---------------------------------------------------------------------------
    90 //
    97 //
    91 CThumbnailManagerImpl::CThumbnailManagerImpl( MThumbnailManagerObserver&
    98 CThumbnailManagerImpl::CThumbnailManagerImpl( MThumbnailManagerObserver&
    92     aObserver ): iObserver( aObserver ), iDisplayMode(
    99     aObserver ): iObserver( aObserver ), iRequestObserver( NULL ), iDisplayMode(
    93     KThumbnailDefaultDisplayMode ), iFlags( EDefaultFlags ), iQualityPreference
   100     KThumbnailDefaultDisplayMode ), iFlags( EDefaultFlags ), iQualityPreference
    94     ( EOptimizeForQuality ), iRequestId( 0 )
   101     ( EOptimizeForQuality ), iRequestId( 0 )
    95     {
   102     {
    96     // No implementation required
   103     // No implementation required
       
   104     TN_DEBUG1( "CThumbnailManagerImpl::CThumbnailManagerImpl()" );
    97     }
   105     }
    98 
   106 
    99 
   107 
   100 // ---------------------------------------------------------------------------
   108 // ---------------------------------------------------------------------------
   101 // CThumbnailManagerImpl::ConstructL()
   109 // CThumbnailManagerImpl::ConstructL()
   102 // Symbian 2nd phase constructor can leave.
   110 // Symbian 2nd phase constructor can leave.
   103 // ---------------------------------------------------------------------------
   111 // ---------------------------------------------------------------------------
   104 //
   112 //
   105 void CThumbnailManagerImpl::ConstructL()
   113 void CThumbnailManagerImpl::ConstructL()
   106     {
   114     {
       
   115     TN_DEBUG1( "CThumbnailManagerImpl::ConstructL - start");
       
   116     
   107     User::LeaveIfError( iSession.Connect());
   117     User::LeaveIfError( iSession.Connect());
   108     User::LeaveIfError( iFs.Connect());
   118     User::LeaveIfError( iFs.Connect());
   109     User::LeaveIfError( iFs.ShareProtected());
   119     User::LeaveIfError( iFs.ShareProtected());
   110 
   120 
   111     if ( !RFbsSession::GetSession() )
   121     if ( !RFbsSession::GetSession() )
   127             } 
   137             } 
   128         else
   138         else
   129             {
   139             {
   130             // Fbs connection was available in the beginning, no need to
   140             // Fbs connection was available in the beginning, no need to
   131             // increase the reference count
   141             // increase the reference count
       
   142             TN_DEBUG1( "CThumbnailManagerImpl::ConstructL - no need to update sessionCount");
   132             }
   143             }
   133         }
   144         }
   134     
   145     
   135     // request processor
   146     // request processor
   136     iRequestQueue = CThumbnailRequestQueue::NewL();
   147     iRequestQueue = CThumbnailRequestQueue::NewL();
       
   148     
       
   149     TN_DEBUG1( "CThumbnailManagerImpl::ConstructL - end");
   137     }
   150     }
   138 
   151 
   139 
   152 
   140 // ---------------------------------------------------------------------------
   153 // ---------------------------------------------------------------------------
   141 // CThumbnailManagerImpl::GetThumbnailL
   154 // CThumbnailManagerImpl::GetThumbnailL
   152     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   165     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   153 
   166 
   154     TInt priority = ValidatePriority(aPriority);
   167     TInt priority = ValidatePriority(aPriority);
   155     
   168     
   156     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   169     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   157         ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   170         ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue );
   158     CleanupStack::PushL( getThumbnailActive );
   171     CleanupStack::PushL( getThumbnailActive );
   159     
   172     
   160     if(aObjectSource.Id() > 0)
   173     if(aObjectSource.Id() > 0)
   161         {
   174         {
   162         getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
   175         getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
   213     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   226     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   214 
   227 
   215     TInt priority = ValidatePriority(aPriority);
   228     TInt priority = ValidatePriority(aPriority);
   216     
   229     
   217     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   230     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   218         ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   231         ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue );
   219     CleanupStack::PushL( getThumbnailActive );
   232     CleanupStack::PushL( getThumbnailActive );
   220     
   233     
   221     getThumbnailActive->GetThumbnailL( KNullDesC, aThumbnailId, iFlags,
   234     getThumbnailActive->GetThumbnailL( KNullDesC, aThumbnailId, iFlags,
   222                        iQualityPreference, iSize, iDisplayMode, priority, aClientData,
   235                        iQualityPreference, iSize, iDisplayMode, priority, aClientData,
   223                        EFalse, KNullDesC, iThumbnailSize );
   236                        EFalse, KNullDesC, iThumbnailSize );
   247     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   260     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   248 
   261 
   249     TInt priority = ValidatePriority(aPriority);
   262     TInt priority = ValidatePriority(aPriority);
   250     
   263     
   251     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   264     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   252         ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   265         ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue );
   253     CleanupStack::PushL( getThumbnailActive );
   266     CleanupStack::PushL( getThumbnailActive );
   254 
   267 
   255     if ( aObjectSource.Uri().Length())
   268     if ( aObjectSource.Uri().Length())
   256         {
   269         {
   257         getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
   270         getThumbnailActive->GetThumbnailL( aObjectSource.Uri(), aObjectSource.Id(), iFlags,
   288     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   301     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   289 
   302 
   290     TInt priority = ValidatePriority(aPriority);
   303     TInt priority = ValidatePriority(aPriority);
   291     
   304     
   292     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   305     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   293         ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   306         ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue );
   294     CleanupStack::PushL( getThumbnailActive );
   307     CleanupStack::PushL( getThumbnailActive );
   295     
   308     
   296     if ( aObjectSource.Uri().Length() &&
   309     if (aObjectSource.Uri().Length() &&
   297          aObjectSource.Buffer() != NULL &&
   310         aObjectSource.TargetUri().Length())
   298          aObjectSource.MimeType() != KNullDesC8)
   311         {
   299         {
   312         // from path
       
   313         getThumbnailActive->SetThumbnailL( aObjectSource.Uri(),
       
   314             aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode, 
       
   315             priority, aClientData, ETrue, aObjectSource.TargetUri(), iThumbnailSize, ETrue);
       
   316         } 
       
   317     else if (aObjectSource.Uri().Length() &&
       
   318              aObjectSource.Bitmap() != NULL)
       
   319         {
       
   320         // from bitmap
       
   321         getThumbnailActive->SetThumbnailL( aObjectSource.GetBitmapOwnership(),
       
   322             aObjectSource.Id(), KBmpMime, iFlags, iQualityPreference, iSize, iDisplayMode,
       
   323             priority, aClientData, ETrue, aObjectSource.Uri(), iThumbnailSize, ETrue);
       
   324         } 
       
   325     else if (aObjectSource.Uri().Length() &&
       
   326              aObjectSource.Buffer() != NULL &&
       
   327              aObjectSource.MimeType() != KNullDesC8)
       
   328         {
       
   329         // from buffer
   300         getThumbnailActive->SetThumbnailL( aObjectSource.GetBufferOwnership(), aObjectSource.Id(),
   330         getThumbnailActive->SetThumbnailL( aObjectSource.GetBufferOwnership(), aObjectSource.Id(),
   301             aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode,
   331             aObjectSource.MimeType(), iFlags, iQualityPreference, iSize, iDisplayMode,
   302             priority, aClientData, EFalse, aObjectSource.Uri(), iThumbnailSize);
   332             priority, aClientData, ETrue, aObjectSource.Uri(), iThumbnailSize, ETrue);
   303         }
   333         }
   304     
   334     
   305     iRequestQueue->AddRequestL( getThumbnailActive );
   335     iRequestQueue->AddRequestL( getThumbnailActive );
   306     CleanupStack::Pop( getThumbnailActive );
   336     CleanupStack::Pop( getThumbnailActive );
   307 
   337 
   327 		__ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   357 		__ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   328 
   358 
   329 		TInt priority = ValidatePriority(aPriority);
   359 		TInt priority = ValidatePriority(aPriority);
   330 		
   360 		
   331 		CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   361 		CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   332 			( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   362 			( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue );
   333 		
   363 		
   334 		CleanupStack::PushL( getThumbnailActive );
   364 		CleanupStack::PushL( getThumbnailActive );
   335 		
   365 		
   336 		if (aObjectSource.Bitmap())
   366 		if (aObjectSource.Bitmap())
   337 			{
   367 			{
   338 			// from bitmap
   368 			// from bitmap
   339 			getThumbnailActive->SetThumbnailL( aObjectSource.GetBitmapOwnership(),
   369 			getThumbnailActive->SetThumbnailL( aObjectSource.GetBitmapOwnership(),
   340 						 aObjectSource.Id(), KBmpMime, iFlags, iQualityPreference,
   370 						 aObjectSource.Id(), KBmpMime, iFlags, iQualityPreference,
   341 						 iSize, iDisplayMode, priority, NULL, ETrue,
   371 						 iSize, iDisplayMode, priority, NULL, ETrue,
   342 						 aObjectSource.Uri(), EUnknownThumbnailSize);
   372 						 aObjectSource.Uri(), EUnknownThumbnailSize, EFalse);
   343 			}
   373 			}
   344 		else if( !aObjectSource.Buffer() )
   374 		else if( !aObjectSource.Buffer() )
   345 			{        
   375 			{        
   346 			getThumbnailActive->GetThumbnailL( aObjectSource.Id(), 
   376 			getThumbnailActive->GetThumbnailL( aObjectSource.Id(), 
   347 						 aObjectSource.Uri(), iFlags, iQualityPreference, iSize,
   377 						 aObjectSource.Uri(), iFlags, iQualityPreference, iSize,
   352 			{
   382 			{
   353 			// from buffer
   383 			// from buffer
   354 			getThumbnailActive->SetThumbnailL( aObjectSource.GetBufferOwnership(),
   384 			getThumbnailActive->SetThumbnailL( aObjectSource.GetBufferOwnership(),
   355 						 aObjectSource.Id(), aObjectSource.MimeType(), iFlags,
   385 						 aObjectSource.Id(), aObjectSource.MimeType(), iFlags,
   356 						 iQualityPreference, iSize, iDisplayMode, priority, NULL,
   386 						 iQualityPreference, iSize, iDisplayMode, priority, NULL,
   357 						 ETrue, aObjectSource.Uri(), EUnknownThumbnailSize);
   387 						 ETrue, aObjectSource.Uri(), EUnknownThumbnailSize, EFalse);
   358 			}
   388 			}
   359 		
   389 		
   360 		iRequestQueue->AddRequestL( getThumbnailActive );
   390 		iRequestQueue->AddRequestL( getThumbnailActive );
   361 		
   391 		
   362 		CleanupStack::Pop( getThumbnailActive );
   392 		CleanupStack::Pop( getThumbnailActive );
   489 		TN_DEBUG2( "CThumbnailManagerImpl::DeleteThumbnails() URI==%S ", &aObjectSource.Uri() );
   519 		TN_DEBUG2( "CThumbnailManagerImpl::DeleteThumbnails() URI==%S ", &aObjectSource.Uri() );
   490 
   520 
   491 		__ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   521 		__ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   492 		
   522 		
   493 		CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   523 		CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   494 			( iFs, iSession, iObserver, iRequestId, CActive::EPriorityIdle, iRequestQueue );
   524 			( iFs, iSession, iObserver, iRequestObserver, iRequestId, CActive::EPriorityIdle, 
       
   525 			  iRequestQueue );
   495 
   526 
   496 		CleanupStack::PushL( getThumbnailActive );
   527 		CleanupStack::PushL( getThumbnailActive );
   497 		
   528 		
   498 		const TDesC& uri = aObjectSource.Uri();
   529 		const TDesC& uri = aObjectSource.Uri();
   499 		
   530 		
   531 		TN_DEBUG2( "CThumbnailManagerImpl::DeleteThumbnails() aItemId==%d ", aItemId );
   562 		TN_DEBUG2( "CThumbnailManagerImpl::DeleteThumbnails() aItemId==%d ", aItemId );
   532 		
   563 		
   533 		__ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   564 		__ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   534 		
   565 		
   535 		CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   566 		CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   536 			( iFs, iSession, iObserver, iRequestId, CActive::EPriorityIdle, iRequestQueue );
   567 			( iFs, iSession, iObserver, iRequestObserver, iRequestId, CActive::EPriorityIdle, 
       
   568 			  iRequestQueue );
   537 		
   569 		
   538 		CleanupStack::PushL( getThumbnailActive );
   570 		CleanupStack::PushL( getThumbnailActive );
   539 		
   571 		
   540 		getThumbnailActive->DeleteThumbnails( KNullDesC, aItemId, CActive::EPriorityIdle );
   572 		getThumbnailActive->DeleteThumbnails( KNullDesC, aItemId, CActive::EPriorityIdle );
   541 		
   573 		
   618     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   650     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   619     
   651     
   620     TInt priority = ValidatePriority(aPriority);
   652     TInt priority = ValidatePriority(aPriority);
   621     
   653     
   622     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   654     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   623         ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   655         ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue );
   624     CleanupStack::PushL( getThumbnailActive );
   656     CleanupStack::PushL( getThumbnailActive );
   625     
   657     
   626     getThumbnailActive->UpdateThumbnailsL( aPath, aItemId, iFlags, iQualityPreference,
   658     getThumbnailActive->UpdateThumbnailsL( aPath, aItemId, iFlags, iQualityPreference,
   627             iDisplayMode, priority, aOrientation, aModified );
   659             iDisplayMode, priority, aOrientation, aModified );
   628     
   660     
   646     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   678     __ASSERT_DEBUG(( iRequestId > 0 ), ThumbnailPanic( EThumbnailWrongId ));
   647     
   679     
   648     TInt priority = ValidatePriority(aPriority);
   680     TInt priority = ValidatePriority(aPriority);
   649     
   681     
   650     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   682     CThumbnailRequestActive* getThumbnailActive = CThumbnailRequestActive::NewL
   651         ( iFs, iSession, iObserver, iRequestId, priority, iRequestQueue );
   683         ( iFs, iSession, iObserver, iRequestObserver, iRequestId, priority, iRequestQueue );
   652     CleanupStack::PushL( getThumbnailActive );
   684     CleanupStack::PushL( getThumbnailActive );
   653     
   685     
   654     getThumbnailActive->RenameThumbnails( aCurrentPath, aNewPath, priority );
   686     getThumbnailActive->RenameThumbnails( aCurrentPath, aNewPath, priority );
   655     
   687     
   656     iRequestQueue->AddRequestL( getThumbnailActive );
   688     iRequestQueue->AddRequestL( getThumbnailActive );
   659     iRequestQueue->Process();
   691     iRequestQueue->Process();
   660     
   692     
   661     return iRequestId;
   693     return iRequestId;
   662     }
   694     }
   663 
   695 
       
   696 
       
   697 // ---------------------------------------------------------------------------
       
   698 // CThumbnailManagerImpl::SetRequestObserver()
       
   699 // Adds optional request observer
       
   700 // ---------------------------------------------------------------------------
       
   701 //
       
   702 void CThumbnailManagerImpl::SetRequestObserver( MThumbnailManagerRequestObserver& aObserver )
       
   703     {
       
   704     iRequestObserver = NULL;
       
   705     iRequestObserver = &aObserver;
       
   706     }
       
   707 
       
   708 // ---------------------------------------------------------------------------
       
   709 // CThumbnailManagerImpl::RemoveRequestObserver()
       
   710 // Removes optional request observer
       
   711 // ---------------------------------------------------------------------------
       
   712 //
       
   713 void CThumbnailManagerImpl::RemoveRequestObserver()
       
   714     {
       
   715     if (iRequestObserver)
       
   716         {
       
   717         iRequestObserver = NULL;
       
   718         }
       
   719     }
       
   720 
       
   721 
   664 // ---------------------------------------------------------------------------
   722 // ---------------------------------------------------------------------------
   665 // CThumbnailManagerImpl::ValidatePriority()
   723 // CThumbnailManagerImpl::ValidatePriority()
   666 // Check that given priority is in range of CActive::TPriority 
   724 // Check that given priority is in range of CActive::TPriority 
   667 // ---------------------------------------------------------------------------
   725 // ---------------------------------------------------------------------------
   668 //
   726 //