photosgallery/viewframework/medialists/src/glxcachemanager.cpp
changeset 1 9ba538e329bd
parent 0 4e91876724a2
child 2 7d9067c6fcb1
equal deleted inserted replaced
0:4e91876724a2 1:9ba538e329bd
    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);
  1366     User::LeaveIfError( session.Connect() );
  1412     User::LeaveIfError( session.Connect() );
  1367     CleanupClosePushL( session );
  1413     CleanupClosePushL( session );
  1368 
  1414 
  1369     TUid uid;
  1415     TUid uid;
  1370     User::LeaveIfError( session.AppForDocument( aFileName, uid, aMimeType ) );
  1416     User::LeaveIfError( session.AppForDocument( aFileName, uid, aMimeType ) );
  1371     CleanupStack::PopAndDestroy(); // session
  1417     CleanupStack::PopAndDestroy(&session);
  1372 
  1418 
  1373     }
  1419     }
  1374 void CGlxCacheManager::ImageReadyL(const TInt& aError, const TSize aSz)
  1420 void CGlxCacheManager::ImageReadyL(const TInt& aError, const TSize aSz)
  1375     {
  1421     {
  1376     if(iSchedulerWait)
  1422     if(iSchedulerWait)