84 CThumbnailRequestActive::CThumbnailRequestActive( RFs& aFs, RThumbnailSession& |
84 CThumbnailRequestActive::CThumbnailRequestActive( RFs& aFs, RThumbnailSession& |
85 aThumbnailSession, MThumbnailManagerObserver& aObserver, |
85 aThumbnailSession, MThumbnailManagerObserver& aObserver, |
86 TThumbnailRequestId aId, TInt aPriority, CThumbnailRequestQueue* aQueue ): |
86 TThumbnailRequestId aId, TInt aPriority, CThumbnailRequestQueue* aQueue ): |
87 CActive( aPriority ), iSession( aThumbnailSession ), iParamsPckg( iParams ), |
87 CActive( aPriority ), iSession( aThumbnailSession ), iParamsPckg( iParams ), |
88 iObserver( aObserver ), iFs( aFs ), iBitmapHandle( 0 ), iRequestId( aId ), |
88 iObserver( aObserver ), iFs( aFs ), iBitmapHandle( 0 ), iRequestId( aId ), |
89 iRequestQueue( aQueue ) |
89 iRequestQueue( aQueue ), iCanceled( EFalse ) |
90 { |
90 { |
91 CActiveScheduler::Add( this ); |
91 CActiveScheduler::Add( this ); |
92 TN_DEBUG2( "CThumbnaiRequestActive::CThumbnailRequestActive() AO's priority = %d", Priority()); |
92 TN_DEBUG2( "CThumbnaiRequestActive::CThumbnailRequestActive() AO's priority = %d", Priority()); |
93 |
93 |
94 iBitmap = NULL; |
94 iBitmap = NULL; |
161 break; |
161 break; |
162 } |
162 } |
163 case EReqGetThumbnailHandleLater: |
163 case EReqGetThumbnailHandleLater: |
164 { |
164 { |
165 // open file handle |
165 // open file handle |
|
166 iFile.Close(); |
166 User::LeaveIfError( iFile.Open( iFs, iTargetUri, EFileShareReadersOrWriters ) ); |
167 User::LeaveIfError( iFile.Open( iFs, iTargetUri, EFileShareReadersOrWriters ) ); |
167 |
168 |
168 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iTargetUri ); |
169 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iTargetUri ); |
169 |
170 |
170 CleanupClosePushL( iFile ); |
171 CleanupClosePushL( iFile ); |
217 iRequestCompleted = ETrue; |
218 iRequestCompleted = ETrue; |
218 } |
219 } |
219 |
220 |
220 iTimer->Cancel(); |
221 iTimer->Cancel(); |
221 |
222 |
222 if (iRequestType == EReqDeleteThumbnails) |
223 if (iRequestType == EReqDeleteThumbnails || iCanceled) |
223 { |
224 { |
224 // no action for delete |
225 iFile.Close(); |
|
226 iMyFileHandle.Close(); |
|
227 |
|
228 // no action for delete or canceled request |
225 iRequestQueue->RequestComplete(this); |
229 iRequestQueue->RequestComplete(this); |
226 |
230 |
227 #ifdef _DEBUG |
231 #ifdef _DEBUG |
228 TTime stop; |
232 TTime stop; |
229 stop.UniversalTime(); |
233 stop.UniversalTime(); |
237 TN_DEBUG2( "CThumbnaiRequestActive::RunL() - no thumbnail found - lets try with file handle %S", &iParams.iFileName ); |
241 TN_DEBUG2( "CThumbnaiRequestActive::RunL() - no thumbnail found - lets try with file handle %S", &iParams.iFileName ); |
238 iRequestCompleted = EFalse; |
242 iRequestCompleted = EFalse; |
239 |
243 |
240 // We tried to get thumbnail using file path, but it was not found in |
244 // We tried to get thumbnail using file path, but it was not found in |
241 // the database. We need to open the file now (on the client side) and |
245 // the database. We need to open the file now (on the client side) and |
242 // use file handle. |
246 // use file handle. |
243 |
247 iFile.Close(); |
244 TInt err = iFile.Open( iFs, iParams.iFileName, EFileShareReadersOrWriters ); |
248 TInt err = iFile.Open( iFs, iParams.iFileName, EFileShareReadersOrWriters ); |
245 TN_DEBUG2( "CThumbnaiRequestActive::RunL() - file handle open err = %d", err ); |
249 TN_DEBUG2( "CThumbnaiRequestActive::RunL() - file handle open err = %d", err ); |
246 User::LeaveIfError( err ); |
250 User::LeaveIfError( err ); |
247 |
251 |
248 CleanupClosePushL( iFile ); |
252 CleanupClosePushL( iFile ); |
271 |
275 |
272 TN_DEBUG2( "CThumbnaiRequestActive::RunL() - iObserver.ThumbnailReady %d", iParams.iRequestId ); |
276 TN_DEBUG2( "CThumbnaiRequestActive::RunL() - iObserver.ThumbnailReady %d", iParams.iRequestId ); |
273 iObserver.ThumbnailReady( iStatus.Int(), *iCallbackThumbnail, iParams.iRequestId ); |
277 iObserver.ThumbnailReady( iStatus.Int(), *iCallbackThumbnail, iParams.iRequestId ); |
274 |
278 |
275 ReleaseServerBitmap(); |
279 ReleaseServerBitmap(); |
|
280 |
|
281 iFile.Close(); |
|
282 iMyFileHandle.Close(); |
|
283 |
276 iRequestQueue->RequestComplete(this); |
284 iRequestQueue->RequestComplete(this); |
277 |
285 |
278 #ifdef _DEBUG |
286 #ifdef _DEBUG |
279 TTime stop; |
287 TTime stop; |
280 stop.UniversalTime(); |
288 stop.UniversalTime(); |
294 |
302 |
295 iProcessingPreview = EFalse; |
303 iProcessingPreview = EFalse; |
296 |
304 |
297 ReleaseServerBitmap(); |
305 ReleaseServerBitmap(); |
298 |
306 |
|
307 iFile.Close(); |
|
308 |
299 //set flags so that EThumbnailGeneratePersistentSizesOnly is done aka check all missing sizes |
309 //set flags so that EThumbnailGeneratePersistentSizesOnly is done aka check all missing sizes |
300 iParams.iQualityPreference = CThumbnailManager::EOptimizeForQuality; |
310 iParams.iQualityPreference = CThumbnailManager::EOptimizeForQuality; |
301 iParams.iControlFlags = EThumbnailGeneratePersistentSizesOnly; |
311 iParams.iControlFlags = EThumbnailGeneratePersistentSizesOnly; |
302 iRequestType = EReqUpdateThumbnails; |
312 iRequestType = EReqUpdateThumbnails; |
303 |
313 |
348 } |
358 } |
349 |
359 |
350 if ( iProcessingPreview ) |
360 if ( iProcessingPreview ) |
351 { |
361 { |
352 TN_DEBUG2( "CThumbnailRequestActive::RunL() - iObserver.ThumbnailPreviewReady %d", iParams.iRequestId ); |
362 TN_DEBUG2( "CThumbnailRequestActive::RunL() - iObserver.ThumbnailPreviewReady %d", iParams.iRequestId ); |
353 //increase priority of 2nd round (both, AO and request itself) |
363 |
|
364 //increase priority of 2nd round (both, AO and request itself) |
354 this->SetPriority(this->Priority() + 1); |
365 this->SetPriority(this->Priority() + 1); |
355 iParams.iPriority++; |
366 iParams.iPriority++; |
356 iObserver.ThumbnailPreviewReady( *iCallbackThumbnail, iParams.iRequestId ); |
367 iObserver.ThumbnailPreviewReady( *iCallbackThumbnail, iParams.iRequestId ); |
357 iProcessingPreview = EFalse; |
368 iProcessingPreview = EFalse; |
|
369 |
358 ReleaseServerBitmap(); |
370 ReleaseServerBitmap(); |
|
371 |
|
372 iFile.Close(); |
|
373 |
359 Get2ndPhaseThumbnailL(); |
374 Get2ndPhaseThumbnailL(); |
360 } |
375 } |
361 else |
376 else |
362 { |
377 { |
363 TN_DEBUG2( "CThumbnailRequestActive::RunL() - iObserver.ThumbnailReady %d", iParams.iRequestId ); |
378 TN_DEBUG2( "CThumbnailRequestActive::RunL() - iObserver.ThumbnailReady %d", iParams.iRequestId ); |
364 |
379 |
365 iObserver.ThumbnailReady( iStatus.Int(), * iCallbackThumbnail, iParams.iRequestId ); |
380 iObserver.ThumbnailReady( iStatus.Int(), * iCallbackThumbnail, iParams.iRequestId ); |
366 ReleaseServerBitmap(); |
381 ReleaseServerBitmap(); |
|
382 |
|
383 iFile.Close(); |
|
384 iMyFileHandle.Close(); |
367 |
385 |
368 iRequestQueue->RequestComplete(this); |
386 iRequestQueue->RequestComplete(this); |
369 |
387 |
370 #ifdef _DEBUG |
388 #ifdef _DEBUG |
371 TTime stop; |
389 TTime stop; |