48 #include <thumbnaildata.h> |
48 #include <thumbnaildata.h> |
49 const TInt KMaxGridThumbnailWidth = 200; |
49 const TInt KMaxGridThumbnailWidth = 200; |
50 _LIT(KFileIdentifier, ":\\"); |
50 _LIT(KFileIdentifier, ":\\"); |
51 #endif |
51 #endif |
52 |
52 |
|
53 _LIT(KDefaultType, "image/jpg"); |
53 /// How long to wait before rechecking for cleared temporary errors |
54 /// How long to wait before rechecking for cleared temporary errors |
54 /// @todo Find optimal value for this |
55 /// @todo Find optimal value for this |
55 const TInt KGlxTemporaryErrorRecheckPeriodInSeconds = 5; |
56 const TInt KGlxTemporaryErrorRecheckPeriodInSeconds = 5; |
56 |
57 |
57 const TInt KGlxLowerMemoryLimitForCleanUp = 15000000; |
58 const TInt KGlxLowerMemoryLimitForCleanUp = 15000000; |
627 GLX_DEBUG1("MaintainCacheL() - Fetch TN attrib - EOptimizeForQualityWithPreview"); |
628 GLX_DEBUG1("MaintainCacheL() - Fetch TN attrib - EOptimizeForQualityWithPreview"); |
628 } |
629 } |
629 |
630 |
630 if (list->Collection().UidL().iUid == KGlxCollectionPluginImageViewerImplementationUid) |
631 if (list->Collection().UidL().iUid == KGlxCollectionPluginImageViewerImplementationUid) |
631 { |
632 { |
632 RDebug::Printf("void CGlxCacheManager::MaintainCacheL:ABC: IV TN"); |
|
633 _LIT( KPrivateFolder, "\\Private\\" ); // Platsec private folder |
633 _LIT( KPrivateFolder, "\\Private\\" ); // Platsec private folder |
634 TParsePtrC parse( item.Uri() ); |
634 TParsePtrC parse( item.Uri() ); |
635 if( parse.PathPresent() && |
635 if( parse.PathPresent() && |
636 parse.Path().Length() > KPrivateFolder().Length() && |
636 parse.Path().Length() > KPrivateFolder().Length() && |
637 parse.Path().Left( KPrivateFolder().Length() ).CompareF( KPrivateFolder ) == 0 ) |
637 parse.Path().Left( KPrivateFolder().Length() ).CompareF( KPrivateFolder ) == 0 ) |
638 { |
638 { |
639 RDebug::Printf("void CGlxCacheManager::MaintainCacheL:ABC: In if"); |
|
640 GLX_DEBUG1("KGlxCollectionPluginImageViewerImplementationUid - Fetch (Private) TN!"); |
639 GLX_DEBUG1("KGlxCollectionPluginImageViewerImplementationUid - Fetch (Private) TN!"); |
641 CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(iImageViewerInstance->ImageFileHandle()); |
640 CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(iImageViewerInstance->ImageFileHandle()); |
642 iThumbnailRequestIds.AppendL(TLoadingTN(iTnEngine->GetThumbnailL(*source), spaceId, tnSize, itemId)); |
641 iThumbnailRequestIds.AppendL(TLoadingTN(iTnEngine->GetThumbnailL(*source), spaceId, tnSize, itemId)); |
643 CleanupStack::PopAndDestroy(); |
642 CleanupStack::PopAndDestroy(source); |
644 |
|
645 } |
643 } |
646 else |
644 else |
647 { |
645 { |
648 RDebug::Printf("void CGlxCacheManager::MaintainCacheL:ABC: In else"); |
|
649 GLX_DEBUG1("KGlxCollectionPluginImageViewerImplementationUid - Fetch TN!"); |
646 GLX_DEBUG1("KGlxCollectionPluginImageViewerImplementationUid - Fetch TN!"); |
650 CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(item.Uri(), 0); |
647 CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(item.Uri(), 0); |
651 iThumbnailRequestIds.AppendL(TLoadingTN(iTnEngine->GetThumbnailL(*source), spaceId, tnSize, itemId)); |
648 iThumbnailRequestIds.AppendL(TLoadingTN(iTnEngine->GetThumbnailL(*source), spaceId, tnSize, itemId)); |
652 CleanupStack::PopAndDestroy(); |
649 CleanupStack::PopAndDestroy(source); |
653 } |
650 } |
654 } |
651 } |
655 else |
652 else |
656 { |
653 { |
657 #ifdef MEDIA_ID_BASED_TN_FETCH_ENABLED |
654 #ifdef MEDIA_ID_BASED_TN_FETCH_ENABLED |
658 iThumbnailRequestIds.AppendL(TLoadingTN(iTnEngine->GetThumbnailL(itemId.Value()), spaceId, tnSize, itemId)); |
655 iThumbnailRequestIds.AppendL(TLoadingTN(iTnEngine->GetThumbnailL(itemId.Value()), spaceId, tnSize, itemId)); |
659 #else |
656 #else |
660 CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(item.Uri(), 0); |
657 CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(item.Uri(), 0); |
661 iThumbnailRequestIds.AppendL(TLoadingTN(iTnEngine->GetThumbnailL(*source), spaceId, tnSize, itemId)); |
658 iThumbnailRequestIds.AppendL(TLoadingTN(iTnEngine->GetThumbnailL(*source), spaceId, tnSize, itemId)); |
662 CleanupStack::PopAndDestroy(); |
659 CleanupStack::PopAndDestroy(source); |
663 #endif |
660 #endif |
664 } |
661 } |
665 iThumbnailId = itemId; |
662 iThumbnailId = itemId; |
666 } |
663 } |
667 else |
664 else |
702 // Use list's isolated collection |
699 // Use list's isolated collection |
703 MMPXCollection& collection = list->Collection(); |
700 MMPXCollection& collection = list->Collection(); |
704 if (collection.UidL().iUid == KGlxCollectionPluginImageViewerImplementationUid) |
701 if (collection.UidL().iUid == KGlxCollectionPluginImageViewerImplementationUid) |
705 { |
702 { |
706 TInt mediaCnt = list->Count(); |
703 TInt mediaCnt = list->Count(); |
707 |
704 TInt errInImage = KErrNone; |
708 |
705 |
709 |
706 |
710 GLX_DEBUG3("Image Viewer Collection - Attrib population! mediaCnt=%d, Media Id=%d", |
707 GLX_DEBUG3("Image Viewer Collection - Attrib population! mediaCnt=%d, Media Id=%d", |
711 mediaCnt, itemId.Value()); |
708 mediaCnt, itemId.Value()); |
712 |
709 |
713 delete iMPXMedia; |
710 delete iMPXMedia; |
714 iMPXMedia = NULL; |
711 iMPXMedia = NULL; |
715 |
712 |
716 TFileName fileName; |
713 TFileName fileName; |
717 fileName.Append(iImageViewerInstance->ImageUri()->Des()); |
714 //retrieve the filename as per the caller app. |
718 |
715 if(!iImageViewerInstance->IsPrivate()) |
|
716 { |
|
717 //filemngr |
|
718 fileName.Append(iImageViewerInstance->ImageUri()->Des()); |
|
719 } |
|
720 else |
|
721 { |
|
722 //msging |
|
723 fileName.Append(iImageViewerInstance->ImageFileHandle().FullName(fileName)); |
|
724 } |
719 iMPXMedia = CMPXMedia::NewL(); |
725 iMPXMedia = CMPXMedia::NewL(); |
720 if(!iReader) |
726 if(!iReader) |
721 { |
727 { |
722 iReader = CGlxImageReader::NewL(*this); |
728 TRAP(errInImage,iReader = CGlxImageReader::NewL(*this)); |
723 iSchedulerWait->Start(); |
729 if(errInImage == KErrNone) |
|
730 { |
|
731 iSchedulerWait->Start(); |
|
732 } |
724 } |
733 } |
725 |
734 |
726 for ( TInt i = 0; i < iRequestedAttrs.Count(); i++ ) |
735 for ( TInt i = 0; i < iRequestedAttrs.Count(); i++ ) |
727 { |
736 { |
728 if ( iRequestedAttrs[i] == KMPXMediaGeneralId ) |
737 if ( iRequestedAttrs[i] == KMPXMediaGeneralId ) |
729 { |
738 { |
730 iMPXMedia->SetTObjectValueL<TMPXItemId>(KMPXMediaGeneralId, |
739 iMPXMedia->SetTObjectValueL<TMPXItemId>(KMPXMediaGeneralId, |
759 time.HomeTime(); |
768 time.HomeTime(); |
760 iMPXMedia->SetTObjectValueL(KGlxMediaGeneralLastModifiedDate, time.Int64()); |
769 iMPXMedia->SetTObjectValueL(KGlxMediaGeneralLastModifiedDate, time.Int64()); |
761 } |
770 } |
762 else if ( iRequestedAttrs[i] == KMPXMediaGeneralSize ) |
771 else if ( iRequestedAttrs[i] == KMPXMediaGeneralSize ) |
763 { |
772 { |
764 iMPXMedia->SetTObjectValueL(KMPXMediaGeneralSize, 1000); |
773 if(errInImage == KErrNone) |
|
774 { |
|
775 RFs fs; |
|
776 TInt err = fs.Connect(); |
|
777 if(err == KErrNone) |
|
778 { |
|
779 TEntry entry; |
|
780 fs.Entry(fileName,entry); |
|
781 TInt sz; |
|
782 sz = entry.iSize; |
|
783 fs.Close(); |
|
784 iMPXMedia->SetTObjectValueL(KMPXMediaGeneralSize, sz); |
|
785 } |
|
786 else |
|
787 { |
|
788 iMPXMedia->SetTObjectValueL(KMPXMediaGeneralSize, 0); |
|
789 } |
|
790 } |
|
791 // If any error while image is being decoded by image decorder, Need to set |
|
792 // default vaule for that image. Typical case is corrupted image. |
|
793 else |
|
794 { |
|
795 iMPXMedia->SetTObjectValueL(KMPXMediaGeneralSize, 0); |
|
796 } |
765 } |
797 } |
766 else if ( iRequestedAttrs[i] == KMPXMediaGeneralDrive ) |
798 else if ( iRequestedAttrs[i] == KMPXMediaGeneralDrive ) |
767 { |
799 { |
768 TParsePtrC parser(fileName); |
800 TParsePtrC parser(fileName); |
769 iMPXMedia->SetTextValueL(KMPXMediaGeneralDrive, parser.Drive()); |
801 iMPXMedia->SetTextValueL(KMPXMediaGeneralDrive, parser.Drive()); |
770 } |
802 } |
771 else if ( iRequestedAttrs[i] == KMPXMediaGeneralMimeType ) |
803 else if ( iRequestedAttrs[i] == KMPXMediaGeneralMimeType ) |
772 { |
804 { |
773 TDataType dataType; |
805 if(errInImage == KErrNone) |
774 GetMimeType(fileName, dataType); |
806 { |
775 iMPXMedia->SetTextValueL(KMPXMediaGeneralMimeType, dataType.Des()); |
807 TDataType dataType; |
|
808 GetMimeType(fileName, dataType); |
|
809 iMPXMedia->SetTextValueL(KMPXMediaGeneralMimeType, dataType.Des()); |
|
810 } |
|
811 else |
|
812 { |
|
813 iMPXMedia->SetTextValueL(KMPXMediaGeneralMimeType, KDefaultType); |
|
814 } |
776 } |
815 } |
777 else if ( iRequestedAttrs[i] == KMPXMediaGeneralDuration ) |
816 else if ( iRequestedAttrs[i] == KMPXMediaGeneralDuration ) |
778 { |
817 { |
779 iMPXMedia->SetTObjectValueL(KMPXMediaGeneralDuration, 0); |
818 iMPXMedia->SetTObjectValueL(KMPXMediaGeneralDuration, 0); |
780 } |
819 } |
782 { |
821 { |
783 iMPXMedia->SetTObjectValueL(KGlxMediaGeneralSystemItem, EFalse); |
822 iMPXMedia->SetTObjectValueL(KGlxMediaGeneralSystemItem, EFalse); |
784 } |
823 } |
785 else if ( iRequestedAttrs[i] == KGlxMediaGeneralDimensions ) |
824 else if ( iRequestedAttrs[i] == KGlxMediaGeneralDimensions ) |
786 { |
825 { |
787 //need to fetch the original file dimensions |
826 if(errInImage == KErrNone) |
788 TSize dimensions(iImgSz.iWidth,iImgSz.iHeight); |
827 { |
789 |
828 //need to fetch the original file dimensions |
790 iMPXMedia->SetTObjectValueL(KGlxMediaGeneralDimensions, dimensions); |
829 TSize dimensions(iImgSz.iWidth,iImgSz.iHeight); |
|
830 iMPXMedia->SetTObjectValueL(KGlxMediaGeneralDimensions, dimensions); |
|
831 } |
|
832 else |
|
833 { |
|
834 TSize dimensions(0,0); |
|
835 iMPXMedia->SetTObjectValueL(KGlxMediaGeneralDimensions, dimensions); |
|
836 } |
791 } |
837 } |
792 else if ( iRequestedAttrs[i] == KGlxMediaGeneralFramecount ) |
838 else if ( iRequestedAttrs[i] == KGlxMediaGeneralFramecount ) |
793 { |
839 { |
794 TInt fcount = 1; |
840 TInt fcount = 1; |
795 iMPXMedia->SetTObjectValueL(KGlxMediaGeneralFramecount, fcount); |
841 iMPXMedia->SetTObjectValueL(KGlxMediaGeneralFramecount, fcount); |