162 User::LeaveIfError( iFile.Open( iFs, iPath, EFileShareReadersOrWriters ) ); |
161 User::LeaveIfError( iFile.Open( iFs, iPath, EFileShareReadersOrWriters ) ); |
163 |
162 |
164 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iPath ); |
163 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iPath ); |
165 |
164 |
166 CleanupClosePushL( iFile ); |
165 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 |
|
175 iSession.RequestThumbnailL( iFile, iPath, iParamsPckg, iStatus ); |
166 iSession.RequestThumbnailL( iFile, iPath, iParamsPckg, iStatus ); |
176 CleanupStack::PopAndDestroy( &iFile ); |
167 CleanupStack::PopAndDestroy( &iFile ); |
177 } |
168 } |
178 else |
169 else |
179 { |
170 { |
204 User::LeaveIfError( iFile.Open( iFs, iTargetUri, EFileShareReadersOrWriters ) ); |
195 User::LeaveIfError( iFile.Open( iFs, iTargetUri, EFileShareReadersOrWriters ) ); |
205 |
196 |
206 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iTargetUri ); |
197 TN_DEBUG2( "CThumbnailRequestActive::StartL() - file handle opened for %S", &iTargetUri ); |
207 |
198 |
208 CleanupClosePushL( iFile ); |
199 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 |
|
217 iSession.RequestThumbnailL( iFile, iTargetUri, iParamsPckg, iStatus ); |
200 iSession.RequestThumbnailL( iFile, iTargetUri, iParamsPckg, iStatus ); |
218 CleanupStack::PopAndDestroy( &iFile ); |
201 CleanupStack::PopAndDestroy( &iFile ); |
219 break; |
202 break; |
220 } |
203 } |
221 case EReqDeleteThumbnails: |
204 case EReqDeleteThumbnails: |
235 case EReqRenameThumbnails: |
218 case EReqRenameThumbnails: |
236 { |
219 { |
237 iSession.RenameThumbnails( iParamsPckg, iStatus ); |
220 iSession.RenameThumbnails( iParamsPckg, iStatus ); |
238 break; |
221 break; |
239 } |
222 } |
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 |
|
263 default: |
223 default: |
264 { |
224 { |
265 break; |
225 break; |
266 } |
226 } |
267 } |
227 } |
657 // CThumbnailRequestActive::GetThumbnailL() |
617 // CThumbnailRequestActive::GetThumbnailL() |
658 // Get a thumbnail for an object file. |
618 // Get a thumbnail for an object file. |
659 // --------------------------------------------------------------------------- |
619 // --------------------------------------------------------------------------- |
660 // |
620 // |
661 void CThumbnailRequestActive::GetThumbnailL( const RFile64& aFile, TThumbnailId aThumbnailId, |
621 void CThumbnailRequestActive::GetThumbnailL( const RFile64& aFile, TThumbnailId aThumbnailId, |
662 const TDesC8& aMimeType, CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager |
622 CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager |
663 ::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const |
623 ::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const |
664 TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, TBool aGeneratePersistentSizesOnly, |
624 TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, TBool aGeneratePersistentSizesOnly, |
665 const TDesC& aTargetUri, TThumbnailSize aThumbnailSize) |
625 const TDesC& aTargetUri, TThumbnailSize aThumbnailSize) |
666 { |
626 { |
667 iRequestType = EReqGetThumbnailHandle; |
627 iRequestType = EReqGetThumbnailHandle; |
678 iClientData = aClientData; |
638 iClientData = aClientData; |
679 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
639 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
680 EThumbnailGeneratePersistentSizesOnly : |
640 EThumbnailGeneratePersistentSizesOnly : |
681 EThumbnailNoControlFlags); |
641 EThumbnailNoControlFlags); |
682 iParams.iOriginalControlFlags = iParams.iControlFlags; |
642 iParams.iOriginalControlFlags = iParams.iControlFlags; |
683 iParams.iMimeType = TDataType( aMimeType ); |
|
684 iParams.iBitmapHandle = 0; |
643 iParams.iBitmapHandle = 0; |
685 iParams.iSize = aSize; |
644 iParams.iSize = aSize; |
686 iParams.iDisplayMode = aDisplayMode; |
645 iParams.iDisplayMode = aDisplayMode; |
687 User::LeaveIfError( aFile.FullName( iParams.iFileName )); |
646 User::LeaveIfError( aFile.FullName( iParams.iFileName )); |
688 iParams.iRequestId = iRequestId; |
647 iParams.iRequestId = iRequestId; |
690 iParams.iFlags = aFlags; |
649 iParams.iFlags = aFlags; |
691 iParams.iQualityPreference = aQualityPreference; |
650 iParams.iQualityPreference = aQualityPreference; |
692 iParams.iThumbnailSize = aThumbnailSize; |
651 iParams.iThumbnailSize = aThumbnailSize; |
693 iParams.iThumbnailId = aThumbnailId; |
652 iParams.iThumbnailId = aThumbnailId; |
694 iParams.iOverwrite = EFalse; |
653 iParams.iOverwrite = EFalse; |
695 iParams.iImport = EFalse; |
|
696 |
654 |
697 User::LeaveIfError( iFile.Duplicate( aFile )); |
655 User::LeaveIfError( iFile.Duplicate( aFile )); |
698 |
656 |
699 iTargetUri = aTargetUri; |
657 iTargetUri = aTargetUri; |
700 |
|
701 if (iParams.iFileName.Length() && IsVirtualUri(iParams.iFileName)) |
|
702 { |
|
703 iParams.iVirtualUri = ETrue; |
|
704 } |
|
705 else |
|
706 { |
|
707 iParams.iVirtualUri = EFalse; |
|
708 } |
|
709 } |
658 } |
710 |
659 |
711 |
660 |
712 // --------------------------------------------------------------------------- |
661 // --------------------------------------------------------------------------- |
713 // CThumbnailRequestActive::GetThumbnailL() |
662 // CThumbnailRequestActive::GetThumbnailL() |
714 // Get a thumbnail opening an object file later. |
663 // Get a thumbnail opening an object file later. |
715 // --------------------------------------------------------------------------- |
664 // --------------------------------------------------------------------------- |
716 // |
665 // |
717 void CThumbnailRequestActive::GetThumbnailL( TThumbnailId aThumbnailId, |
666 void CThumbnailRequestActive::GetThumbnailL( TThumbnailId aThumbnailId, |
718 const TDesC& aPath, const TDesC8& aMimeType, CThumbnailManager::TThumbnailFlags aFlags, |
667 const TDesC& aPath, CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager |
719 CThumbnailManager::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const |
668 ::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const |
720 TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, TBool aGeneratePersistentSizesOnly, |
669 TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, TBool aGeneratePersistentSizesOnly, |
721 const TDesC& aTargetUri, TThumbnailSize aThumbnailSize) |
670 const TDesC& aTargetUri, TThumbnailSize aThumbnailSize) |
722 { |
671 { |
723 iRequestType = EReqGetThumbnailHandleLater; |
672 iRequestType = EReqGetThumbnailHandleLater; |
724 |
673 |
725 iClientData = aClientData; |
674 iClientData = aClientData; |
726 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
675 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
727 EThumbnailGeneratePersistentSizesOnly : |
676 EThumbnailGeneratePersistentSizesOnly : |
728 EThumbnailNoControlFlags); |
677 EThumbnailNoControlFlags); |
729 iParams.iOriginalControlFlags = iParams.iControlFlags; |
678 iParams.iOriginalControlFlags = iParams.iControlFlags; |
730 iParams.iMimeType = TDataType( aMimeType ); |
|
731 iParams.iBitmapHandle = 0; |
679 iParams.iBitmapHandle = 0; |
732 iParams.iSize = aSize; |
680 iParams.iSize = aSize; |
733 iParams.iDisplayMode = aDisplayMode; |
681 iParams.iDisplayMode = aDisplayMode; |
734 iParams.iFileName = aPath; |
682 iParams.iFileName = aPath; |
735 iParams.iRequestId = iRequestId; |
683 iParams.iRequestId = iRequestId; |
737 iParams.iFlags = aFlags; |
685 iParams.iFlags = aFlags; |
738 iParams.iQualityPreference = aQualityPreference; |
686 iParams.iQualityPreference = aQualityPreference; |
739 iParams.iThumbnailSize = aThumbnailSize; |
687 iParams.iThumbnailSize = aThumbnailSize; |
740 iParams.iThumbnailId = aThumbnailId; |
688 iParams.iThumbnailId = aThumbnailId; |
741 iParams.iOverwrite = EFalse; |
689 iParams.iOverwrite = EFalse; |
742 iParams.iImport = EFalse; |
|
743 |
690 |
744 iTargetUri = aTargetUri; |
691 iTargetUri = aTargetUri; |
745 |
|
746 if (iPath.Length() && IsVirtualUri(iPath)) |
|
747 { |
|
748 iParams.iVirtualUri = ETrue; |
|
749 } |
|
750 else |
|
751 { |
|
752 iParams.iVirtualUri = EFalse; |
|
753 } |
|
754 } |
692 } |
755 |
693 |
756 |
694 |
757 // --------------------------------------------------------------------------- |
695 // --------------------------------------------------------------------------- |
758 // CThumbnailRequestActive::GetThumbnailL() |
696 // CThumbnailRequestActive::GetThumbnailL() |
759 // Get a thumbnail for an object file. |
697 // Get a thumbnail for an object file. |
760 // --------------------------------------------------------------------------- |
698 // --------------------------------------------------------------------------- |
761 // |
699 // |
762 void CThumbnailRequestActive::GetThumbnailL( const TDesC& aPath, TThumbnailId aThumbnailId, |
700 void CThumbnailRequestActive::GetThumbnailL( const TDesC& aPath, TThumbnailId aThumbnailId, |
763 const TDesC8& aMimeType, CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager |
701 CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager |
764 ::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const |
702 ::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const |
765 TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, TBool aGeneratePersistentSizesOnly, |
703 TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, TBool aGeneratePersistentSizesOnly, |
766 const TDesC& aTargetUri, TThumbnailSize aThumbnailSize) |
704 const TDesC& aTargetUri, TThumbnailSize aThumbnailSize) |
767 { |
705 { |
768 iRequestType = EReqGetThumbnailPath; |
706 iRequestType = EReqGetThumbnailPath; |
770 iClientData = aClientData; |
708 iClientData = aClientData; |
771 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
709 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
772 EThumbnailGeneratePersistentSizesOnly : |
710 EThumbnailGeneratePersistentSizesOnly : |
773 EThumbnailNoControlFlags); |
711 EThumbnailNoControlFlags); |
774 iParams.iOriginalControlFlags = iParams.iControlFlags; |
712 iParams.iOriginalControlFlags = iParams.iControlFlags; |
775 iParams.iMimeType = TDataType( aMimeType ); |
|
776 iParams.iBitmapHandle = 0; |
713 iParams.iBitmapHandle = 0; |
777 iParams.iSize = aSize; |
714 iParams.iSize = aSize; |
778 iParams.iDisplayMode = aDisplayMode; |
715 iParams.iDisplayMode = aDisplayMode; |
779 iParams.iRequestId = iRequestId; |
716 iParams.iRequestId = iRequestId; |
780 iParams.iPriority = aPriority; |
717 iParams.iPriority = aPriority; |
782 iParams.iQualityPreference = aQualityPreference; |
719 iParams.iQualityPreference = aQualityPreference; |
783 iParams.iThumbnailSize = aThumbnailSize; |
720 iParams.iThumbnailSize = aThumbnailSize; |
784 iParams.iThumbnailId = aThumbnailId; |
721 iParams.iThumbnailId = aThumbnailId; |
785 iParams.iFileName = aPath; |
722 iParams.iFileName = aPath; |
786 iParams.iOverwrite = EFalse; |
723 iParams.iOverwrite = EFalse; |
787 iParams.iImport = EFalse; |
|
788 |
724 |
789 iPath = aPath; |
725 iPath = aPath; |
790 iTargetUri = aTargetUri; |
726 iTargetUri = aTargetUri; |
791 |
|
792 if (iPath.Length() && IsVirtualUri(iPath)) |
|
793 { |
|
794 iParams.iVirtualUri = ETrue; |
|
795 } |
|
796 else |
|
797 { |
|
798 iParams.iVirtualUri = EFalse; |
|
799 } |
|
800 } |
727 } |
801 |
728 |
802 // --------------------------------------------------------------------------- |
729 // --------------------------------------------------------------------------- |
803 // CThumbnailRequestActive::SetThumbnailL() |
730 // CThumbnailRequestActive::SetThumbnailL() |
804 // Get a thumbnail for an object file. |
731 // Get a thumbnail for an object file. |
828 iParams.iPriority = aPriority; |
755 iParams.iPriority = aPriority; |
829 iParams.iFlags = aFlags; |
756 iParams.iFlags = aFlags; |
830 iParams.iQualityPreference = aQualityPreference; |
757 iParams.iQualityPreference = aQualityPreference; |
831 iParams.iThumbnailId = aThumbnailId; |
758 iParams.iThumbnailId = aThumbnailId; |
832 iParams.iOverwrite = aOverwrite; |
759 iParams.iOverwrite = aOverwrite; |
833 iParams.iImport = EFalse; |
|
834 |
760 |
835 iTargetUri = aTargetUri; |
761 iTargetUri = aTargetUri; |
836 |
|
837 if (iTargetUri.Length() && IsVirtualUri(iTargetUri)) |
|
838 { |
|
839 iParams.iVirtualUri = ETrue; |
|
840 } |
|
841 else |
|
842 { |
|
843 iParams.iVirtualUri = EFalse; |
|
844 } |
|
845 } |
762 } |
846 |
763 |
847 // --------------------------------------------------------------------------- |
764 // --------------------------------------------------------------------------- |
848 // CThumbnailRequestActive::SetThumbnailL() |
765 // CThumbnailRequestActive::SetThumbnailL() |
849 // Get a thumbnail for an object file. |
766 // Get a thumbnail for an object file. |
870 iParams.iFlags = aFlags; |
787 iParams.iFlags = aFlags; |
871 iParams.iQualityPreference = aQualityPreference; |
788 iParams.iQualityPreference = aQualityPreference; |
872 iParams.iThumbnailId = aThumbnailId; |
789 iParams.iThumbnailId = aThumbnailId; |
873 iParams.iFileName = aTargetUri; |
790 iParams.iFileName = aTargetUri; |
874 iParams.iOverwrite = aOverwrite; |
791 iParams.iOverwrite = aOverwrite; |
875 iParams.iImport = EFalse; |
|
876 |
792 |
877 iTargetUri = aTargetUri; |
793 iTargetUri = aTargetUri; |
878 |
|
879 if (iTargetUri.Length() && IsVirtualUri(iTargetUri)) |
|
880 { |
|
881 iParams.iVirtualUri = ETrue; |
|
882 } |
|
883 else |
|
884 { |
|
885 iParams.iVirtualUri = EFalse; |
|
886 } |
|
887 |
794 |
888 TInt memoryFree( 0 ); |
795 TInt memoryFree( 0 ); |
889 HAL::Get( HALData::EMemoryRAMFree, memoryFree ); |
796 HAL::Get( HALData::EMemoryRAMFree, memoryFree ); |
890 |
797 |
891 TN_DEBUG2( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memoryFree %d", memoryFree ); |
798 TN_DEBUG2( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memoryFree %d", memoryFree ); |
895 // save parameter bitmap, it will be deleted when request is complete |
802 // save parameter bitmap, it will be deleted when request is complete |
896 iBitmap = aBitmap; |
803 iBitmap = aBitmap; |
897 iParams.iMimeType = TDataType( aMimeType ); |
804 iParams.iMimeType = TDataType( aMimeType ); |
898 iRequestType = EReqSetThumbnailBitmap; |
805 iRequestType = EReqSetThumbnailBitmap; |
899 } |
806 } |
900 else if (!iParams.iVirtualUri) |
807 else |
901 { |
808 { |
902 // memory low, create thumbs using filehandle |
809 // memory low, create thumbs using filehandle |
903 TN_DEBUG1( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memory low, create thumbs using filehandle!" ); |
810 TN_DEBUG1( "CThumbnaiRequestActive::SetThumbnailbyBitmap() - memory low, create thumbs using filehandle!" ); |
904 delete aBitmap; |
811 delete aBitmap; |
905 aBitmap = NULL; |
812 aBitmap = NULL; |
906 iParams.iPriority = aPriority - 1; |
813 iParams.iPriority = aPriority - 1; |
907 iRequestType = EReqGetThumbnailHandleLater; |
814 iRequestType = EReqGetThumbnailHandleLater; |
908 } |
|
909 else |
|
910 { |
|
911 User::Leave(KErrNoMemory); |
|
912 } |
815 } |
913 } |
816 } |
914 |
817 |
915 // --------------------------------------------------------------------------- |
818 // --------------------------------------------------------------------------- |
916 // CThumbnailRequestActive::UpdateThumbnailsL() |
819 // CThumbnailRequestActive::UpdateThumbnailsL() |
933 iParams.iPriority = aPriority; |
836 iParams.iPriority = aPriority; |
934 iParams.iFlags = aFlags; |
837 iParams.iFlags = aFlags; |
935 iParams.iQualityPreference = aQualityPreference; |
838 iParams.iQualityPreference = aQualityPreference; |
936 iParams.iThumbnailId = aThumbnailId; |
839 iParams.iThumbnailId = aThumbnailId; |
937 iParams.iOverwrite = EFalse; |
840 iParams.iOverwrite = EFalse; |
938 iParams.iVirtualUri = EFalse; |
|
939 iParams.iImport = EFalse; |
|
940 |
841 |
941 iPath = aPath; |
842 iPath = aPath; |
942 iOrientation = aOrientation; |
843 iOrientation = aOrientation; |
943 iModified = aModified; |
844 iModified = aModified; |
944 } |
845 } |
975 iParams.iFileName = aCurrentPath; |
876 iParams.iFileName = aCurrentPath; |
976 iParams.iTargetUri = aNewPath; |
877 iParams.iTargetUri = aNewPath; |
977 } |
878 } |
978 |
879 |
979 // --------------------------------------------------------------------------- |
880 // --------------------------------------------------------------------------- |
980 // CThumbnailRequestActive::SetThumbnailL() |
|
981 // Set thumbnail from file path. |
|
982 // --------------------------------------------------------------------------- |
|
983 // |
|
984 void CThumbnailRequestActive::SetThumbnailL( const TDesC& aPath, const TDesC8& aMimeType, |
|
985 CThumbnailManager::TThumbnailFlags aFlags, CThumbnailManager |
|
986 ::TThumbnailQualityPreference aQualityPreference, const TSize& aSize, const |
|
987 TDisplayMode aDisplayMode, const TInt aPriority, TAny* aClientData, |
|
988 TBool aGeneratePersistentSizesOnly, const TDesC& aTargetUri, |
|
989 TThumbnailSize aThumbnailSize, TBool aOverwrite) |
|
990 { |
|
991 iRequestType = EReqSetThumbnailPath; |
|
992 |
|
993 iClientData = aClientData; |
|
994 iParams.iControlFlags = (aGeneratePersistentSizesOnly ? |
|
995 EThumbnailGeneratePersistentSizesOnly : |
|
996 EThumbnailNoControlFlags); |
|
997 iParams.iOriginalControlFlags = iParams.iControlFlags; |
|
998 iParams.iMimeType = TDataType( aMimeType ); |
|
999 iParams.iBitmapHandle = 0; |
|
1000 iParams.iSize = aSize; |
|
1001 iParams.iDisplayMode = aDisplayMode; |
|
1002 iParams.iFileName = aPath; |
|
1003 iParams.iRequestId = iRequestId; |
|
1004 iParams.iPriority = aPriority; |
|
1005 iParams.iFlags = aFlags; |
|
1006 iParams.iQualityPreference = aQualityPreference; |
|
1007 iParams.iThumbnailSize = aThumbnailSize; |
|
1008 iParams.iOverwrite = aOverwrite; |
|
1009 |
|
1010 iTargetUri = aTargetUri; |
|
1011 |
|
1012 if (iTargetUri.Length() && IsVirtualUri(iTargetUri)) |
|
1013 { |
|
1014 iParams.iVirtualUri = ETrue; |
|
1015 } |
|
1016 else |
|
1017 { |
|
1018 iParams.iVirtualUri = EFalse; |
|
1019 } |
|
1020 |
|
1021 iParams.iImport = ETrue; |
|
1022 } |
|
1023 |
|
1024 // --------------------------------------------------------------------------- |
|
1025 // Request 2nd phase thumbnail |
881 // Request 2nd phase thumbnail |
1026 // --------------------------------------------------------------------------- |
882 // --------------------------------------------------------------------------- |
1027 // |
883 // |
1028 void CThumbnailRequestActive::Get2ndPhaseThumbnailL() |
884 void CThumbnailRequestActive::Get2ndPhaseThumbnailL() |
1029 { |
885 { |