161 User::LeaveIfError( iFile.Open( iFs, iPath, EFileShareReadersOrWriters ) ); |
162 User::LeaveIfError( iFile.Open( iFs, iPath, EFileShareReadersOrWriters ) ); |
162 |
163 |
163 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iPath ); |
164 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iPath ); |
164 |
165 |
165 CleanupClosePushL( iFile ); |
166 CleanupClosePushL( iFile ); |
|
167 |
|
168 if ( iParams.iQualityPreference == CThumbnailManager::EOptimizeForQualityWithPreview ) |
|
169 { |
|
170 // We may need the file handle later for the 2nd phase thumbnail |
|
171 iMyFileHandle.Close(); |
|
172 User::LeaveIfError( iMyFileHandle.Duplicate( iFile )); |
|
173 } |
|
174 |
166 iSession.RequestThumbnailL( iFile, iPath, iParamsPckg, iStatus ); |
175 iSession.RequestThumbnailL( iFile, iPath, iParamsPckg, iStatus ); |
167 CleanupStack::PopAndDestroy( &iFile ); |
176 CleanupStack::PopAndDestroy( &iFile ); |
168 } |
177 } |
169 else |
178 else |
170 { |
179 { |
195 User::LeaveIfError( iFile.Open( iFs, iTargetUri, EFileShareReadersOrWriters ) ); |
204 User::LeaveIfError( iFile.Open( iFs, iTargetUri, EFileShareReadersOrWriters ) ); |
196 |
205 |
197 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iTargetUri ); |
206 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iTargetUri ); |
198 |
207 |
199 CleanupClosePushL( iFile ); |
208 CleanupClosePushL( iFile ); |
|
209 |
|
210 if ( iParams.iQualityPreference == CThumbnailManager::EOptimizeForQualityWithPreview ) |
|
211 { |
|
212 // We may need the file handle later for the 2nd phase thumbnail |
|
213 iMyFileHandle.Close(); |
|
214 User::LeaveIfError( iMyFileHandle.Duplicate( iFile )); |
|
215 } |
|
216 |
200 iSession.RequestThumbnailL( iFile, iTargetUri, iParamsPckg, iStatus ); |
217 iSession.RequestThumbnailL( iFile, iTargetUri, iParamsPckg, iStatus ); |
201 CleanupStack::PopAndDestroy( &iFile ); |
218 CleanupStack::PopAndDestroy( &iFile ); |
202 break; |
219 break; |
203 } |
220 } |
204 case EReqDeleteThumbnails: |
221 case EReqDeleteThumbnails: |
218 case EReqRenameThumbnails: |
235 case EReqRenameThumbnails: |
219 { |
236 { |
220 iSession.RenameThumbnails( iParamsPckg, iStatus ); |
237 iSession.RenameThumbnails( iParamsPckg, iStatus ); |
221 break; |
238 break; |
222 } |
239 } |
|
240 case EReqSetThumbnailPath: |
|
241 { |
|
242 // open file handle |
|
243 iFile.Close(); |
|
244 User::LeaveIfError( iFile.Open( iFs, iParams.iFileName, EFileShareReadersOrWriters ) ); |
|
245 |
|
246 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iParams.iFileName ); |
|
247 |
|
248 CleanupClosePushL( iFile ); |
|
249 |
|
250 if ( iParams.iQualityPreference == CThumbnailManager::EOptimizeForQualityWithPreview ) |
|
251 { |
|
252 // We may need the file handle later for the 2nd phase thumbnail |
|
253 iMyFileHandle.Close(); |
|
254 User::LeaveIfError( iMyFileHandle.Duplicate( iFile )); |
|
255 } |
|
256 |
|
257 iSession.RequestThumbnailL( iFile, iTargetUri, iParamsPckg, iStatus ); |
|
258 CleanupStack::PopAndDestroy( &iFile ); |
|
259 |
|
260 break; |
|
261 } |
|
262 |
223 default: |
263 default: |
224 { |
264 { |
225 break; |
265 break; |
226 } |
266 } |
227 } |
267 } |
592 TRAPD(err, StartL()); |
632 TRAPD(err, StartL()); |
593 return; |
633 return; |
594 } |
634 } |
595 } |
635 } |
596 #endif |
636 #endif |
597 TN_DEBUG2( "CThumbnaiRequestActive::HandleError() - iObserver.ThumbnailReady %d", iParams.iRequestId ); |
637 TN_DEBUG3( "CThumbnaiRequestActive::HandleError() - iObserver.ThumbnailReady req=%d err=%d", iParams.iRequestId, iError ); |
598 iObserver.ThumbnailReady( iError, *iCallbackThumbnail, iParams.iRequestId ); |
638 iObserver.ThumbnailReady( iError, *iCallbackThumbnail, iParams.iRequestId ); |
599 |
639 |
600 } |
640 } |
601 |
641 |
602 iError = KErrNone; |
642 iError = KErrNone; |
649 iParams.iFlags = aFlags; |
689 iParams.iFlags = aFlags; |
650 iParams.iQualityPreference = aQualityPreference; |
690 iParams.iQualityPreference = aQualityPreference; |
651 iParams.iThumbnailSize = aThumbnailSize; |
691 iParams.iThumbnailSize = aThumbnailSize; |
652 iParams.iThumbnailId = aThumbnailId; |
692 iParams.iThumbnailId = aThumbnailId; |
653 iParams.iOverwrite = EFalse; |
693 iParams.iOverwrite = EFalse; |
|
694 iParams.iImport = EFalse; |
654 |
695 |
655 User::LeaveIfError( iFile.Duplicate( aFile )); |
696 User::LeaveIfError( iFile.Duplicate( aFile )); |
656 |
697 |
657 iTargetUri = aTargetUri; |
698 iTargetUri = aTargetUri; |
|
699 |
|
700 if (iParams.iFileName.Length() && IsVirtualUri(iParams.iFileName)) |
|
701 { |
|
702 iParams.iVirtualUri = ETrue; |
|
703 } |
|
704 else |
|
705 { |
|
706 iParams.iVirtualUri = EFalse; |
|
707 } |
658 } |
708 } |
659 |
709 |
660 |
710 |
661 // --------------------------------------------------------------------------- |
711 // --------------------------------------------------------------------------- |
662 // CThumbnailRequestActive::GetThumbnailL() |
712 // CThumbnailRequestActive::GetThumbnailL() |
685 iParams.iFlags = aFlags; |
735 iParams.iFlags = aFlags; |
686 iParams.iQualityPreference = aQualityPreference; |
736 iParams.iQualityPreference = aQualityPreference; |
687 iParams.iThumbnailSize = aThumbnailSize; |
737 iParams.iThumbnailSize = aThumbnailSize; |
688 iParams.iThumbnailId = aThumbnailId; |
738 iParams.iThumbnailId = aThumbnailId; |
689 iParams.iOverwrite = EFalse; |
739 iParams.iOverwrite = EFalse; |
|
740 iParams.iImport = EFalse; |
690 |
741 |
691 iTargetUri = aTargetUri; |
742 iTargetUri = aTargetUri; |
|
743 |
|
744 if (iPath.Length() && IsVirtualUri(iPath)) |
|
745 { |
|
746 iParams.iVirtualUri = ETrue; |
|
747 } |
|
748 else |
|
749 { |
|
750 iParams.iVirtualUri = EFalse; |
|
751 } |
692 } |
752 } |
693 |
753 |
694 |
754 |
695 // --------------------------------------------------------------------------- |
755 // --------------------------------------------------------------------------- |
696 // CThumbnailRequestActive::GetThumbnailL() |
756 // CThumbnailRequestActive::GetThumbnailL() |
719 iParams.iQualityPreference = aQualityPreference; |
779 iParams.iQualityPreference = aQualityPreference; |
720 iParams.iThumbnailSize = aThumbnailSize; |
780 iParams.iThumbnailSize = aThumbnailSize; |
721 iParams.iThumbnailId = aThumbnailId; |
781 iParams.iThumbnailId = aThumbnailId; |
722 iParams.iFileName = aPath; |
782 iParams.iFileName = aPath; |
723 iParams.iOverwrite = EFalse; |
783 iParams.iOverwrite = EFalse; |
|
784 iParams.iImport = EFalse; |
724 |
785 |
725 iPath = aPath; |
786 iPath = aPath; |
726 iTargetUri = aTargetUri; |
787 iTargetUri = aTargetUri; |
|
788 |
|
789 if (iPath.Length() && IsVirtualUri(iPath)) |
|
790 { |
|
791 iParams.iVirtualUri = ETrue; |
|
792 } |
|
793 else |
|
794 { |
|
795 iParams.iVirtualUri = EFalse; |
|
796 } |
727 } |
797 } |
728 |
798 |
729 // --------------------------------------------------------------------------- |
799 // --------------------------------------------------------------------------- |
730 // CThumbnailRequestActive::SetThumbnailL() |
800 // CThumbnailRequestActive::SetThumbnailL() |
731 // Get a thumbnail for an object file. |
801 // Get a thumbnail for an object file. |
755 iParams.iPriority = aPriority; |
825 iParams.iPriority = aPriority; |
756 iParams.iFlags = aFlags; |
826 iParams.iFlags = aFlags; |
757 iParams.iQualityPreference = aQualityPreference; |
827 iParams.iQualityPreference = aQualityPreference; |
758 iParams.iThumbnailId = aThumbnailId; |
828 iParams.iThumbnailId = aThumbnailId; |
759 iParams.iOverwrite = aOverwrite; |
829 iParams.iOverwrite = aOverwrite; |
|
830 iParams.iImport = EFalse; |
760 |
831 |
761 iTargetUri = aTargetUri; |
832 iTargetUri = aTargetUri; |
|
833 |
|
834 if (iTargetUri.Length() && IsVirtualUri(iTargetUri)) |
|
835 { |
|
836 iParams.iVirtualUri = ETrue; |
|
837 } |
|
838 else |
|
839 { |
|
840 iParams.iVirtualUri = EFalse; |
|
841 } |
762 } |
842 } |
763 |
843 |
764 // --------------------------------------------------------------------------- |
844 // --------------------------------------------------------------------------- |
765 // CThumbnailRequestActive::SetThumbnailL() |
845 // CThumbnailRequestActive::SetThumbnailL() |
766 // Get a thumbnail for an object file. |
846 // Get a thumbnail for an object file. |
787 iParams.iFlags = aFlags; |
867 iParams.iFlags = aFlags; |
788 iParams.iQualityPreference = aQualityPreference; |
868 iParams.iQualityPreference = aQualityPreference; |
789 iParams.iThumbnailId = aThumbnailId; |
869 iParams.iThumbnailId = aThumbnailId; |
790 iParams.iFileName = aTargetUri; |
870 iParams.iFileName = aTargetUri; |
791 iParams.iOverwrite = aOverwrite; |
871 iParams.iOverwrite = aOverwrite; |
|
872 iParams.iImport = EFalse; |
792 |
873 |
793 iTargetUri = aTargetUri; |
874 iTargetUri = aTargetUri; |
|
875 |
|
876 if (iTargetUri.Length() && IsVirtualUri(iTargetUri)) |
|
877 { |
|
878 iParams.iVirtualUri = ETrue; |
|
879 } |
|
880 else |
|
881 { |
|
882 iParams.iVirtualUri = EFalse; |
|
883 } |
794 |
884 |
795 TInt memoryFree( 0 ); |
885 TInt memoryFree( 0 ); |
796 HAL::Get( HALData::EMemoryRAMFree, memoryFree ); |
886 HAL::Get( HALData::EMemoryRAMFree, memoryFree ); |
797 |
887 |
798 TN_DEBUG2( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memoryFree %d", memoryFree ); |
888 TN_DEBUG2( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memoryFree %d", memoryFree ); |
802 // save parameter bitmap, it will be deleted when request is complete |
892 // save parameter bitmap, it will be deleted when request is complete |
803 iBitmap = aBitmap; |
893 iBitmap = aBitmap; |
804 iParams.iMimeType = TDataType( aMimeType ); |
894 iParams.iMimeType = TDataType( aMimeType ); |
805 iRequestType = EReqSetThumbnailBitmap; |
895 iRequestType = EReqSetThumbnailBitmap; |
806 } |
896 } |
807 else |
897 else if (!iParams.iVirtualUri) |
808 { |
898 { |
809 // memory low, create thumbs using filehandle |
899 // memory low, create thumbs using filehandle |
810 TN_DEBUG1( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memory low, create thumbs using filehandle!" ); |
900 TN_DEBUG1( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memory low, create thumbs using filehandle!" ); |
811 delete aBitmap; |
901 delete aBitmap; |
812 aBitmap = NULL; |
902 aBitmap = NULL; |
813 iParams.iPriority = aPriority - 1; |
903 iParams.iPriority = aPriority - 1; |
814 iRequestType = EReqGetThumbnailHandleLater; |
904 iRequestType = EReqGetThumbnailHandleLater; |
|
905 } |
|
906 else |
|
907 { |
|
908 User::Leave(KErrNoMemory); |
815 } |
909 } |
816 } |
910 } |
817 |
911 |
818 // --------------------------------------------------------------------------- |
912 // --------------------------------------------------------------------------- |
819 // CThumbnailRequestActive::UpdateThumbnailsL() |
913 // CThumbnailRequestActive::UpdateThumbnailsL() |
836 iParams.iPriority = aPriority; |
930 iParams.iPriority = aPriority; |
837 iParams.iFlags = aFlags; |
931 iParams.iFlags = aFlags; |
838 iParams.iQualityPreference = aQualityPreference; |
932 iParams.iQualityPreference = aQualityPreference; |
839 iParams.iThumbnailId = aThumbnailId; |
933 iParams.iThumbnailId = aThumbnailId; |
840 iParams.iOverwrite = EFalse; |
934 iParams.iOverwrite = EFalse; |
|
935 iParams.iVirtualUri = EFalse; |
|
936 iParams.iImport = EFalse; |
841 |
937 |
842 iPath = aPath; |
938 iPath = aPath; |
843 iOrientation = aOrientation; |
939 iOrientation = aOrientation; |
844 iModified = aModified; |
940 iModified = aModified; |
845 } |
941 } |
876 iParams.iFileName = aCurrentPath; |
972 iParams.iFileName = aCurrentPath; |
877 iParams.iTargetUri = aNewPath; |
973 iParams.iTargetUri = aNewPath; |
878 } |
974 } |
879 |
975 |
880 // --------------------------------------------------------------------------- |
976 // --------------------------------------------------------------------------- |
|
977 // CThumbnailRequestActive::SetThumbnailL() |
|
978 // Set thumbnail from file path. |
|
979 // --------------------------------------------------------------------------- |
|
980 // |
|
981 void CThumbnailRequestActive::SetThumbnailL( const TDesC& aPath, const TDesC8& aMimeType, |
|
982 CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager |
|
983 ::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const |
|
984 TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, |
|
985 TBool aGeneratePersistentSizesOnly, const TDesC& aTargetUri, |
|
986 TThumbnailSize aThumbnailSize, TBool aOverwrite) |
|
987 { |
|
988 iRequestType = EReqSetThumbnailPath; |
|
989 |
|
990 iClientData = aClientData; |
|
991 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
|
992 EThumbnailGeneratePersistentSizesOnly : |
|
993 EThumbnailNoControlFlags); |
|
994 iParams.iOriginalControlFlags = iParams.iControlFlags; |
|
995 iParams.iMimeType = TDataType( aMimeType ); |
|
996 iParams.iBitmapHandle = 0; |
|
997 iParams.iSize = aSize; |
|
998 iParams.iDisplayMode = aDisplayMode; |
|
999 iParams.iFileName = aPath; |
|
1000 iParams.iRequestId = iRequestId; |
|
1001 iParams.iPriority = aPriority; |
|
1002 iParams.iFlags = aFlags; |
|
1003 iParams.iQualityPreference = aQualityPreference; |
|
1004 iParams.iThumbnailSize = aThumbnailSize; |
|
1005 iParams.iOverwrite = aOverwrite; |
|
1006 |
|
1007 iTargetUri = aTargetUri; |
|
1008 |
|
1009 if (iTargetUri.Length() && IsVirtualUri(iTargetUri)) |
|
1010 { |
|
1011 iParams.iVirtualUri = ETrue; |
|
1012 } |
|
1013 else |
|
1014 { |
|
1015 iParams.iVirtualUri = EFalse; |
|
1016 } |
|
1017 |
|
1018 iParams.iImport = ETrue; |
|
1019 } |
|
1020 |
|
1021 // --------------------------------------------------------------------------- |
881 // Request 2nd phase thumbnail |
1022 // Request 2nd phase thumbnail |
882 // --------------------------------------------------------------------------- |
1023 // --------------------------------------------------------------------------- |
883 // |
1024 // |
884 void CThumbnailRequestActive::Get2ndPhaseThumbnailL() |
1025 void CThumbnailRequestActive::Get2ndPhaseThumbnailL() |
885 { |
1026 { |