--- 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