63 // Two-phased constructor. |
67 // Two-phased constructor. |
64 // --------------------------------------------------------------------------- |
68 // --------------------------------------------------------------------------- |
65 // |
69 // |
66 CThumbnailRequestActive* CThumbnailRequestActive::NewL( RFs& aFs, |
70 CThumbnailRequestActive* CThumbnailRequestActive::NewL( RFs& aFs, |
67 RThumbnailSession& aThumbnailSession, MThumbnailManagerObserver& aObserver, |
71 RThumbnailSession& aThumbnailSession, MThumbnailManagerObserver& aObserver, |
|
72 MThumbnailManagerRequestObserver* aRequestObserver, |
68 TThumbnailRequestId aId, TInt aPriority, CThumbnailRequestQueue* aQueue ) |
73 TThumbnailRequestId aId, TInt aPriority, CThumbnailRequestQueue* aQueue ) |
69 { |
74 { |
70 CThumbnailRequestActive* self = new( ELeave )CThumbnailRequestActive( aFs, |
75 CThumbnailRequestActive* self = new( ELeave )CThumbnailRequestActive( aFs, |
71 aThumbnailSession, aObserver, aId, aPriority, aQueue ); |
76 aThumbnailSession, aObserver, aRequestObserver, aId, aPriority, aQueue ); |
72 CleanupStack::PushL( self ); |
77 CleanupStack::PushL( self ); |
73 self->ConstructL(); |
78 self->ConstructL(); |
74 CleanupStack::Pop( self ); |
79 CleanupStack::Pop( self ); |
75 return self; |
80 return self; |
76 } |
81 } |
81 // C++ default constructor can NOT contain any code, that might leave. |
86 // C++ default constructor can NOT contain any code, that might leave. |
82 // --------------------------------------------------------------------------- |
87 // --------------------------------------------------------------------------- |
83 // |
88 // |
84 CThumbnailRequestActive::CThumbnailRequestActive( RFs& aFs, RThumbnailSession& |
89 CThumbnailRequestActive::CThumbnailRequestActive( RFs& aFs, RThumbnailSession& |
85 aThumbnailSession, MThumbnailManagerObserver& aObserver, |
90 aThumbnailSession, MThumbnailManagerObserver& aObserver, |
|
91 MThumbnailManagerRequestObserver* aRequestObserver, |
86 TThumbnailRequestId aId, TInt aPriority, CThumbnailRequestQueue* aQueue ): |
92 TThumbnailRequestId aId, TInt aPriority, CThumbnailRequestQueue* aQueue ): |
87 CActive( aPriority ), iSession( aThumbnailSession ), iParamsPckg( iParams ), |
93 CActive( aPriority ), iSession( aThumbnailSession ), iParamsPckg( iParams ), |
88 iObserver( aObserver ), iFs( aFs ), iBitmapHandle( 0 ), iRequestId( aId ), |
94 iObserver( aObserver ), iRequestObserver( aRequestObserver ), iFs( aFs ), iBitmapHandle( 0 ), |
89 iRequestQueue( aQueue ), iCanceled( EFalse ) |
95 iRequestId( aId ), iRequestQueue( aQueue ), iCanceled( EFalse ) |
|
96 #ifdef __RETRY_ON_SERVERCRASH |
|
97 ,iRetry(0) |
|
98 #endif |
90 { |
99 { |
91 CActiveScheduler::Add( this ); |
100 CActiveScheduler::Add( this ); |
92 TN_DEBUG2( "CThumbnaiRequestActive::CThumbnailRequestActive() AO's priority = %d", Priority()); |
101 TN_DEBUG2( "CThumbnaiRequestActive::CThumbnailRequestActive() AO's priority = %d", Priority()); |
93 |
102 |
94 iBitmap = NULL; |
103 iBitmap = NULL; |
149 TN_DEBUG1( "CThumbnaiRequestActive::StartL()- custom size request" ); |
158 TN_DEBUG1( "CThumbnaiRequestActive::StartL()- custom size request" ); |
150 |
159 |
151 iFile.Close(); |
160 iFile.Close(); |
152 User::LeaveIfError( iFile.Open( iFs, iPath, EFileShareReadersOrWriters ) ); |
161 User::LeaveIfError( iFile.Open( iFs, iPath, EFileShareReadersOrWriters ) ); |
153 |
162 |
154 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iTargetUri ); |
163 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iPath ); |
155 |
164 |
156 CleanupClosePushL( iFile ); |
165 CleanupClosePushL( iFile ); |
|
166 |
|
167 if ( iParams.iQualityPreference == CThumbnailManager::EOptimizeForQualityWithPreview ) |
|
168 { |
|
169 // We may need the file handle later for the 2nd phase thumbnail |
|
170 iMyFileHandle.Close(); |
|
171 User::LeaveIfError( iMyFileHandle.Duplicate( iFile )); |
|
172 } |
|
173 |
157 iSession.RequestThumbnailL( iFile, iPath, iParamsPckg, iStatus ); |
174 iSession.RequestThumbnailL( iFile, iPath, iParamsPckg, iStatus ); |
158 CleanupStack::PopAndDestroy( &iFile ); |
175 CleanupStack::PopAndDestroy( &iFile ); |
159 } |
176 } |
160 else |
177 else |
161 { |
178 { |
186 User::LeaveIfError( iFile.Open( iFs, iTargetUri, EFileShareReadersOrWriters ) ); |
203 User::LeaveIfError( iFile.Open( iFs, iTargetUri, EFileShareReadersOrWriters ) ); |
187 |
204 |
188 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iTargetUri ); |
205 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iTargetUri ); |
189 |
206 |
190 CleanupClosePushL( iFile ); |
207 CleanupClosePushL( iFile ); |
|
208 |
|
209 if ( iParams.iQualityPreference == CThumbnailManager::EOptimizeForQualityWithPreview ) |
|
210 { |
|
211 // We may need the file handle later for the 2nd phase thumbnail |
|
212 iMyFileHandle.Close(); |
|
213 User::LeaveIfError( iMyFileHandle.Duplicate( iFile )); |
|
214 } |
|
215 |
191 iSession.RequestThumbnailL( iFile, iTargetUri, iParamsPckg, iStatus ); |
216 iSession.RequestThumbnailL( iFile, iTargetUri, iParamsPckg, iStatus ); |
192 CleanupStack::PopAndDestroy( &iFile ); |
217 CleanupStack::PopAndDestroy( &iFile ); |
193 break; |
218 break; |
194 } |
219 } |
195 case EReqDeleteThumbnails: |
220 case EReqDeleteThumbnails: |
209 case EReqRenameThumbnails: |
234 case EReqRenameThumbnails: |
210 { |
235 { |
211 iSession.RenameThumbnails( iParamsPckg, iStatus ); |
236 iSession.RenameThumbnails( iParamsPckg, iStatus ); |
212 break; |
237 break; |
213 } |
238 } |
|
239 case EReqSetThumbnailPath: |
|
240 { |
|
241 // open file handle |
|
242 iFile.Close(); |
|
243 User::LeaveIfError( iFile.Open( iFs, iParams.iFileName, EFileShareReadersOrWriters ) ); |
|
244 |
|
245 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iParams.iFileName ); |
|
246 |
|
247 CleanupClosePushL( iFile ); |
|
248 |
|
249 if ( iParams.iQualityPreference == CThumbnailManager::EOptimizeForQualityWithPreview ) |
|
250 { |
|
251 // We may need the file handle later for the 2nd phase thumbnail |
|
252 iMyFileHandle.Close(); |
|
253 User::LeaveIfError( iMyFileHandle.Duplicate( iFile )); |
|
254 } |
|
255 |
|
256 iSession.RequestThumbnailL( iFile, iTargetUri, iParamsPckg, iStatus ); |
|
257 CleanupStack::PopAndDestroy( &iFile ); |
|
258 |
|
259 break; |
|
260 } |
|
261 |
214 default: |
262 default: |
215 { |
263 { |
216 break; |
264 break; |
217 } |
265 } |
218 } |
266 } |
242 iRequestCompleted = ETrue; |
290 iRequestCompleted = ETrue; |
243 } |
291 } |
244 |
292 |
245 iTimer->Cancel(); |
293 iTimer->Cancel(); |
246 |
294 |
247 if (iRequestType == EReqDeleteThumbnails || iCanceled || |
295 if (iRequestType == EReqDeleteThumbnails) |
248 iRequestType == EReqRenameThumbnails) |
296 { |
249 { |
297 TN_DEBUG1( "CThumbnailRequestActive::RunL() - delete" ); |
250 TN_DEBUG1( "CThumbnailRequestActive::RunL() - rename/delete/canceled" ); |
298 |
|
299 if (iRequestObserver) |
|
300 { |
|
301 iRequestObserver->ThumbnailRequestReady(iStatus.Int(), ERequestDeleteThumbnails ,iParams.iRequestId); |
|
302 } |
|
303 |
|
304 iFile.Close(); |
|
305 iMyFileHandle.Close(); |
|
306 |
|
307 // no action for delete/rename or canceled request |
|
308 iRequestQueue->RequestComplete(this); |
|
309 |
|
310 #ifdef _DEBUG |
|
311 TTime stop; |
|
312 stop.UniversalTime(); |
|
313 TN_DEBUG3( "CThumbnailRequestActive::RunL() total execution time of req %d is %d ms", |
|
314 iParams.iRequestId, (TInt)stop.MicroSecondsFrom(iStartExecTime).Int64()/1000 ); |
|
315 #endif |
|
316 } |
|
317 else if (iCanceled || iRequestType == EReqRenameThumbnails) |
|
318 { |
|
319 if (iCanceled) |
|
320 { |
|
321 TN_DEBUG1( "CThumbnailRequestActive::RunL() - canceled" ); |
|
322 } |
|
323 else if (iRequestType == EReqRenameThumbnails) |
|
324 { |
|
325 TN_DEBUG1( "CThumbnailRequestActive::RunL() - rename" ); |
|
326 } |
251 |
327 |
252 iFile.Close(); |
328 iFile.Close(); |
253 iMyFileHandle.Close(); |
329 iMyFileHandle.Close(); |
254 |
330 |
255 // no action for delete/rename or canceled request |
331 // no action for delete/rename or canceled request |
285 |
361 |
286 iTimer->Start( KClientRequestTimeout, KClientRequestTimeout, |
362 iTimer->Start( KClientRequestTimeout, KClientRequestTimeout, |
287 TCallBack(TimerCallBack, this)); |
363 TCallBack(TimerCallBack, this)); |
288 SetActive(); |
364 SetActive(); |
289 } |
365 } |
290 else if ( iStatus.Int()) |
366 else if ( iStatus.Int() ) |
291 { |
367 { |
292 TN_DEBUG2( "CThumbnailRequestActive::RunL() - error (%d) occured", iStatus.Int() ); |
368 TN_DEBUG2( "CThumbnailRequestActive::RunL() - error (%d) occured", iStatus.Int() ); |
293 // An error occurred |
369 // An error occurred |
294 iError = iStatus.Int(); |
370 iError = iStatus.Int(); |
295 HandleError(); |
371 HandleError(); |
525 else |
601 else |
526 { |
602 { |
527 TN_DEBUG1( "CThumbnailRequestActive::HandleError() - session reconnected"); |
603 TN_DEBUG1( "CThumbnailRequestActive::HandleError() - session reconnected"); |
528 } |
604 } |
529 } |
605 } |
530 iCallbackThumbnail->Set( NULL, iClientData ); |
606 |
531 |
607 if (iRequestObserver && iRequestType == EReqDeleteThumbnails) |
532 // don't leak internal TNM codes |
608 { |
533 if (iError == KThumbnailErrThumbnailNotFound) |
609 TN_DEBUG2( "CThumbnaiRequestActive::HandleError() - iRequestObserver->ThumbnailRequestReady %d", iParams.iRequestId ); |
534 { |
610 iRequestObserver->ThumbnailRequestReady(iError, ERequestDeleteThumbnails ,iParams.iRequestId); |
535 iError = KErrNotFound; |
611 } |
|
612 else |
|
613 { |
|
614 iCallbackThumbnail->Set( NULL, iClientData ); |
|
615 |
|
616 // don't leak internal TNM codes |
|
617 if (iError == KThumbnailErrThumbnailNotFound) |
|
618 { |
|
619 iError = KErrNotFound; |
|
620 } |
|
621 |
|
622 #ifdef __RETRY_ON_SERVERCRASH |
|
623 if(iError == KErrServerTerminated ) |
|
624 { |
|
625 |
|
626 if(iRetry < KMaxRequestRetryCount ) |
|
627 { |
|
628 iRetry++; |
|
629 TN_DEBUG2( "CThumbnaiRequestActive::HandleError() - KErrServerTerminated, retry %d", iRetry); |
|
630 iError = KErrNone; |
|
631 TRAPD(err, StartL()); |
|
632 return; |
|
633 } |
|
634 } |
|
635 #endif |
|
636 TN_DEBUG2( "CThumbnaiRequestActive::HandleError() - iObserver.ThumbnailReady %d", iParams.iRequestId ); |
|
637 iObserver.ThumbnailReady( iError, *iCallbackThumbnail, iParams.iRequestId ); |
|
638 |
536 } |
639 } |
537 |
|
538 TN_DEBUG2( "CThumbnaiRequestActive::HandleError() - iObserver.ThumbnailReady %d", iParams.iRequestId ); |
|
539 iObserver.ThumbnailReady( iError, *iCallbackThumbnail, iParams.iRequestId ); |
|
540 |
640 |
541 iError = KErrNone; |
641 iError = KErrNone; |
542 } |
642 } |
543 |
643 |
544 ReleaseServerBitmap(); |
644 ReleaseServerBitmap(); |
587 iParams.iPriority = aPriority; |
687 iParams.iPriority = aPriority; |
588 iParams.iFlags = aFlags; |
688 iParams.iFlags = aFlags; |
589 iParams.iQualityPreference = aQualityPreference; |
689 iParams.iQualityPreference = aQualityPreference; |
590 iParams.iThumbnailSize = aThumbnailSize; |
690 iParams.iThumbnailSize = aThumbnailSize; |
591 iParams.iThumbnailId = aThumbnailId; |
691 iParams.iThumbnailId = aThumbnailId; |
|
692 iParams.iOverwrite = EFalse; |
|
693 iParams.iImport = EFalse; |
592 |
694 |
593 User::LeaveIfError( iFile.Duplicate( aFile )); |
695 User::LeaveIfError( iFile.Duplicate( aFile )); |
594 |
696 |
595 iTargetUri = aTargetUri; |
697 iTargetUri = aTargetUri; |
|
698 |
|
699 if (iParams.iFileName.Length() && IsVirtualUri(iParams.iFileName)) |
|
700 { |
|
701 iParams.iVirtualUri = ETrue; |
|
702 } |
|
703 else |
|
704 { |
|
705 iParams.iVirtualUri = EFalse; |
|
706 } |
596 } |
707 } |
597 |
708 |
598 |
709 |
599 // --------------------------------------------------------------------------- |
710 // --------------------------------------------------------------------------- |
600 // CThumbnailRequestActive::GetThumbnailL() |
711 // CThumbnailRequestActive::GetThumbnailL() |
622 iParams.iPriority = aPriority; |
733 iParams.iPriority = aPriority; |
623 iParams.iFlags = aFlags; |
734 iParams.iFlags = aFlags; |
624 iParams.iQualityPreference = aQualityPreference; |
735 iParams.iQualityPreference = aQualityPreference; |
625 iParams.iThumbnailSize = aThumbnailSize; |
736 iParams.iThumbnailSize = aThumbnailSize; |
626 iParams.iThumbnailId = aThumbnailId; |
737 iParams.iThumbnailId = aThumbnailId; |
|
738 iParams.iOverwrite = EFalse; |
|
739 iParams.iImport = EFalse; |
627 |
740 |
628 iTargetUri = aTargetUri; |
741 iTargetUri = aTargetUri; |
|
742 |
|
743 if (iPath.Length() && IsVirtualUri(iPath)) |
|
744 { |
|
745 iParams.iVirtualUri = ETrue; |
|
746 } |
|
747 else |
|
748 { |
|
749 iParams.iVirtualUri = EFalse; |
|
750 } |
629 } |
751 } |
630 |
752 |
631 |
753 |
632 // --------------------------------------------------------------------------- |
754 // --------------------------------------------------------------------------- |
633 // CThumbnailRequestActive::GetThumbnailL() |
755 // CThumbnailRequestActive::GetThumbnailL() |
655 iParams.iFlags = aFlags; |
777 iParams.iFlags = aFlags; |
656 iParams.iQualityPreference = aQualityPreference; |
778 iParams.iQualityPreference = aQualityPreference; |
657 iParams.iThumbnailSize = aThumbnailSize; |
779 iParams.iThumbnailSize = aThumbnailSize; |
658 iParams.iThumbnailId = aThumbnailId; |
780 iParams.iThumbnailId = aThumbnailId; |
659 iParams.iFileName = aPath; |
781 iParams.iFileName = aPath; |
|
782 iParams.iOverwrite = EFalse; |
|
783 iParams.iImport = EFalse; |
660 |
784 |
661 iPath = aPath; |
785 iPath = aPath; |
662 iTargetUri = aTargetUri; |
786 iTargetUri = aTargetUri; |
|
787 |
|
788 if (iPath.Length() && IsVirtualUri(iPath)) |
|
789 { |
|
790 iParams.iVirtualUri = ETrue; |
|
791 } |
|
792 else |
|
793 { |
|
794 iParams.iVirtualUri = EFalse; |
|
795 } |
663 } |
796 } |
664 |
797 |
665 // --------------------------------------------------------------------------- |
798 // --------------------------------------------------------------------------- |
666 // CThumbnailRequestActive::SetThumbnailL() |
799 // CThumbnailRequestActive::SetThumbnailL() |
667 // Get a thumbnail for an object file. |
800 // Get a thumbnail for an object file. |
669 // |
802 // |
670 void CThumbnailRequestActive::SetThumbnailL( TDesC8* aBuffer, TThumbnailId aThumbnailId, |
803 void CThumbnailRequestActive::SetThumbnailL( TDesC8* aBuffer, TThumbnailId aThumbnailId, |
671 const TDesC8& aMimeType, CThumbnailManager::TThumbnailFlags aFlags, |
804 const TDesC8& aMimeType, CThumbnailManager::TThumbnailFlags aFlags, |
672 CThumbnailManager::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, |
805 CThumbnailManager::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, |
673 const TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, |
806 const TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, |
674 TBool aGeneratePersistentSizesOnly, const TDesC& aTargetUri, TThumbnailSize aThumbnailSize ) |
807 TBool aGeneratePersistentSizesOnly, const TDesC& aTargetUri, TThumbnailSize aThumbnailSize, |
|
808 TBool aOverwrite) |
675 { |
809 { |
676 iRequestType = EReqSetThumbnailBuffer; |
810 iRequestType = EReqSetThumbnailBuffer; |
677 |
811 |
678 iClientData = aClientData; |
812 iClientData = aClientData; |
679 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
813 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
689 iParams.iRequestId = iRequestId; |
823 iParams.iRequestId = iRequestId; |
690 iParams.iPriority = aPriority; |
824 iParams.iPriority = aPriority; |
691 iParams.iFlags = aFlags; |
825 iParams.iFlags = aFlags; |
692 iParams.iQualityPreference = aQualityPreference; |
826 iParams.iQualityPreference = aQualityPreference; |
693 iParams.iThumbnailId = aThumbnailId; |
827 iParams.iThumbnailId = aThumbnailId; |
|
828 iParams.iOverwrite = aOverwrite; |
|
829 iParams.iImport = EFalse; |
694 |
830 |
695 iTargetUri = aTargetUri; |
831 iTargetUri = aTargetUri; |
|
832 |
|
833 if (iTargetUri.Length() && IsVirtualUri(iTargetUri)) |
|
834 { |
|
835 iParams.iVirtualUri = ETrue; |
|
836 } |
|
837 else |
|
838 { |
|
839 iParams.iVirtualUri = EFalse; |
|
840 } |
696 } |
841 } |
697 |
842 |
698 // --------------------------------------------------------------------------- |
843 // --------------------------------------------------------------------------- |
699 // CThumbnailRequestActive::SetThumbnailL() |
844 // CThumbnailRequestActive::SetThumbnailL() |
700 // Get a thumbnail for an object file. |
845 // Get a thumbnail for an object file. |
702 // |
847 // |
703 void CThumbnailRequestActive::SetThumbnailL( CFbsBitmap* aBitmap, TThumbnailId aThumbnailId, |
848 void CThumbnailRequestActive::SetThumbnailL( CFbsBitmap* aBitmap, TThumbnailId aThumbnailId, |
704 const TDesC8& aMimeType, CThumbnailManager::TThumbnailFlags aFlags, |
849 const TDesC8& aMimeType, CThumbnailManager::TThumbnailFlags aFlags, |
705 CThumbnailManager::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, |
850 CThumbnailManager::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, |
706 const TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, |
851 const TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, |
707 TBool aGeneratePersistentSizesOnly, const TDesC& aTargetUri, TThumbnailSize aThumbnailSize ) |
852 TBool aGeneratePersistentSizesOnly, const TDesC& aTargetUri, TThumbnailSize aThumbnailSize, |
|
853 TBool aOverwrite) |
708 { |
854 { |
709 iClientData = aClientData; |
855 iClientData = aClientData; |
710 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
856 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
711 EThumbnailGeneratePersistentSizesOnly : |
857 EThumbnailGeneratePersistentSizesOnly : |
712 EThumbnailNoControlFlags); |
858 EThumbnailNoControlFlags); |
719 iParams.iPriority = aPriority; |
865 iParams.iPriority = aPriority; |
720 iParams.iFlags = aFlags; |
866 iParams.iFlags = aFlags; |
721 iParams.iQualityPreference = aQualityPreference; |
867 iParams.iQualityPreference = aQualityPreference; |
722 iParams.iThumbnailId = aThumbnailId; |
868 iParams.iThumbnailId = aThumbnailId; |
723 iParams.iFileName = aTargetUri; |
869 iParams.iFileName = aTargetUri; |
|
870 iParams.iOverwrite = aOverwrite; |
|
871 iParams.iImport = EFalse; |
724 |
872 |
725 iTargetUri = aTargetUri; |
873 iTargetUri = aTargetUri; |
|
874 |
|
875 if (iTargetUri.Length() && IsVirtualUri(iTargetUri)) |
|
876 { |
|
877 iParams.iVirtualUri = ETrue; |
|
878 } |
|
879 else |
|
880 { |
|
881 iParams.iVirtualUri = EFalse; |
|
882 } |
726 |
883 |
727 TInt memoryFree( 0 ); |
884 TInt memoryFree( 0 ); |
728 HAL::Get( HALData::EMemoryRAMFree, memoryFree ); |
885 HAL::Get( HALData::EMemoryRAMFree, memoryFree ); |
729 |
886 |
730 TN_DEBUG2( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memoryFree %d", memoryFree ); |
887 TN_DEBUG2( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memoryFree %d", memoryFree ); |
734 // save parameter bitmap, it will be deleted when request is complete |
891 // save parameter bitmap, it will be deleted when request is complete |
735 iBitmap = aBitmap; |
892 iBitmap = aBitmap; |
736 iParams.iMimeType = TDataType( aMimeType ); |
893 iParams.iMimeType = TDataType( aMimeType ); |
737 iRequestType = EReqSetThumbnailBitmap; |
894 iRequestType = EReqSetThumbnailBitmap; |
738 } |
895 } |
739 else |
896 else if (!iParams.iVirtualUri) |
740 { |
897 { |
741 // memory low, create thumbs using filehandle |
898 // memory low, create thumbs using filehandle |
742 TN_DEBUG1( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memory low, create thumbs using filehandle!" ); |
899 TN_DEBUG1( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memory low, create thumbs using filehandle!" ); |
743 delete aBitmap; |
900 delete aBitmap; |
744 aBitmap = NULL; |
901 aBitmap = NULL; |
745 iParams.iPriority = aPriority - 1; |
902 iParams.iPriority = aPriority - 1; |
746 iRequestType = EReqGetThumbnailHandleLater; |
903 iRequestType = EReqGetThumbnailHandleLater; |
|
904 } |
|
905 else |
|
906 { |
|
907 User::Leave(KErrNoMemory); |
747 } |
908 } |
748 } |
909 } |
749 |
910 |
750 // --------------------------------------------------------------------------- |
911 // --------------------------------------------------------------------------- |
751 // CThumbnailRequestActive::UpdateThumbnailsL() |
912 // CThumbnailRequestActive::UpdateThumbnailsL() |
767 iParams.iRequestId = iRequestId; |
928 iParams.iRequestId = iRequestId; |
768 iParams.iPriority = aPriority; |
929 iParams.iPriority = aPriority; |
769 iParams.iFlags = aFlags; |
930 iParams.iFlags = aFlags; |
770 iParams.iQualityPreference = aQualityPreference; |
931 iParams.iQualityPreference = aQualityPreference; |
771 iParams.iThumbnailId = aThumbnailId; |
932 iParams.iThumbnailId = aThumbnailId; |
|
933 iParams.iOverwrite = EFalse; |
|
934 iParams.iVirtualUri = EFalse; |
|
935 iParams.iImport = EFalse; |
772 |
936 |
773 iPath = aPath; |
937 iPath = aPath; |
774 iOrientation = aOrientation; |
938 iOrientation = aOrientation; |
775 iModified = aModified; |
939 iModified = aModified; |
776 } |
940 } |
807 iParams.iFileName = aCurrentPath; |
971 iParams.iFileName = aCurrentPath; |
808 iParams.iTargetUri = aNewPath; |
972 iParams.iTargetUri = aNewPath; |
809 } |
973 } |
810 |
974 |
811 // --------------------------------------------------------------------------- |
975 // --------------------------------------------------------------------------- |
|
976 // CThumbnailRequestActive::SetThumbnailL() |
|
977 // Set thumbnail from file path. |
|
978 // --------------------------------------------------------------------------- |
|
979 // |
|
980 void CThumbnailRequestActive::SetThumbnailL( const TDesC& aPath, const TDesC8& aMimeType, |
|
981 CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager |
|
982 ::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const |
|
983 TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, |
|
984 TBool aGeneratePersistentSizesOnly, const TDesC& aTargetUri, |
|
985 TThumbnailSize aThumbnailSize, TBool aOverwrite) |
|
986 { |
|
987 iRequestType = EReqSetThumbnailPath; |
|
988 |
|
989 iClientData = aClientData; |
|
990 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
|
991 EThumbnailGeneratePersistentSizesOnly : |
|
992 EThumbnailNoControlFlags); |
|
993 iParams.iOriginalControlFlags = iParams.iControlFlags; |
|
994 iParams.iMimeType = TDataType( aMimeType ); |
|
995 iParams.iBitmapHandle = 0; |
|
996 iParams.iSize = aSize; |
|
997 iParams.iDisplayMode = aDisplayMode; |
|
998 iParams.iFileName = aPath; |
|
999 iParams.iRequestId = iRequestId; |
|
1000 iParams.iPriority = aPriority; |
|
1001 iParams.iFlags = aFlags; |
|
1002 iParams.iQualityPreference = aQualityPreference; |
|
1003 iParams.iThumbnailSize = aThumbnailSize; |
|
1004 iParams.iOverwrite = aOverwrite; |
|
1005 |
|
1006 iTargetUri = aTargetUri; |
|
1007 |
|
1008 if (iTargetUri.Length() && IsVirtualUri(iTargetUri)) |
|
1009 { |
|
1010 iParams.iVirtualUri = ETrue; |
|
1011 } |
|
1012 else |
|
1013 { |
|
1014 iParams.iVirtualUri = EFalse; |
|
1015 } |
|
1016 |
|
1017 iParams.iImport = ETrue; |
|
1018 } |
|
1019 |
|
1020 // --------------------------------------------------------------------------- |
812 // Request 2nd phase thumbnail |
1021 // Request 2nd phase thumbnail |
813 // --------------------------------------------------------------------------- |
1022 // --------------------------------------------------------------------------- |
814 // |
1023 // |
815 void CThumbnailRequestActive::Get2ndPhaseThumbnailL() |
1024 void CThumbnailRequestActive::Get2ndPhaseThumbnailL() |
816 { |
1025 { |