imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp
branchRCL_3
changeset 38 2b4b06654caa
parent 28 ff2fb7658ff7
child 40 6257223ede8a
equal deleted inserted replaced
37:f759b6186ab5 38:2b4b06654caa
    45     
    45     
    46     if(iTimer)
    46     if(iTimer)
    47         {
    47         {
    48         iTimer->Cancel();
    48         iTimer->Cancel();
    49         }
    49         }
       
    50     
    50     delete iTimer;
    51     delete iTimer;
    51     iTimer = NULL;
    52     iTimer = NULL;
    52     
    53     
    53     ReleaseServerBitmap();
    54     ReleaseServerBitmap();
    54     delete iCallbackThumbnail;
    55     delete iCallbackThumbnail;
   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     {
   968     TN_DEBUG1( "CThumbnailRequestActive::TimerCallBack() - end");
  1109     TN_DEBUG1( "CThumbnailRequestActive::TimerCallBack() - end");
   969     
  1110     
   970     return KErrNone;
  1111     return KErrNone;
   971     }
  1112     }
   972 
  1113 
       
  1114 // ---------------------------------------------------------------------------
       
  1115 // CThumbnailRequestActive::IsVirtualUri()
       
  1116 // Checks if URI is virtual.
       
  1117 // ---------------------------------------------------------------------------
       
  1118 //
       
  1119 TBool CThumbnailRequestActive::IsVirtualUri( const TDesC& aPath )
       
  1120     {
       
  1121     TInt pos = aPath.Find(KBackSlash);
       
  1122     
       
  1123     // normal URI
       
  1124     if ( pos == 2 )
       
  1125         {
       
  1126         return EFalse;
       
  1127         }
       
  1128     // virtual URI
       
  1129     else
       
  1130         {
       
  1131         TN_DEBUG1( "CThumbnailRequestActive::IsVirtualUri() - yes");
       
  1132         return ETrue;
       
  1133         }    
       
  1134     }
       
  1135 
   973 // End of file
  1136 // End of file