mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovidergetobjectproplist.cpp
branchRCL_3
changeset 17 780c925249c1
parent 9 bee149131e4b
child 55 6c1dfe4da5dd
equal deleted inserted replaced
15:d240f0a77280 17:780c925249c1
    13 *
    13 *
    14 * Description:  Implement the operation: getobjectproplist
    14 * Description:  Implement the operation: getobjectproplist
    15  *
    15  *
    16 */
    16 */
    17 
    17 
       
    18 
       
    19 #include <mtp/cmtptypeobjectproplist.h>
       
    20 #include <mtp/cmtptypearray.h>
       
    21 #include <f32file.h>
    18 
    22 
    19 #include "cabstractmediamtpdataprovidergetobjectproplist.h"
    23 #include "cabstractmediamtpdataprovidergetobjectproplist.h"
    20 #include "abstractmediamtpdataproviderconst.h"
    24 #include "abstractmediamtpdataproviderconst.h"
    21 #include "mmmtpdplogger.h"
    25 #include "mmmtpdplogger.h"
    22 #include "mmmtpdpdefs.h"
    26 #include "mmmtpdpdefs.h"
    79 // -----------------------------------------------------------------------------
    83 // -----------------------------------------------------------------------------
    80 // CAbstractMediaMtpDataProviderGetObjectPropList::ServiceSpecificObjectPropertyL
    84 // CAbstractMediaMtpDataProviderGetObjectPropList::ServiceSpecificObjectPropertyL
    81 // do nothing here, just leave, as this should never be invoked or invalid propcode
    85 // do nothing here, just leave, as this should never be invoked or invalid propcode
    82 // -----------------------------------------------------------------------------
    86 // -----------------------------------------------------------------------------
    83 //
    87 //
    84 TInt CAbstractMediaMtpDataProviderGetObjectPropList::ServiceSpecificObjectPropertyL( TUint16 /*aPropCode*/,
    88 TInt CAbstractMediaMtpDataProviderGetObjectPropList::ServiceSpecificObjectPropertyL( TUint16 aPropCode,
    85     TUint32 /*aHandle*/ )
    89     TUint32 aHandle )
    86     {
    90     {
    87     PRINT( _L( "MM MTP <> CAbstractMediaMtpDataProviderGetObjectPropList::ServiceSpecificObjectPropertyL, leave with KErrNotSupported" ) );
    91     PRINT( _L( "MM MTP => CAbstractMediaMtpDataProviderGetObjectPropList::ServiceSpecificObjectPropertyL" ) );
       
    92     TInt err = KErrNone;
       
    93     switch ( aPropCode )
       
    94         {
       
    95         case EMTPObjectPropCodeRepresentativeSampleFormat:
       
    96             {
       
    97             iPropertyElement = &( iPropertyList->ReservePropElemL( aHandle, aPropCode ) );
       
    98             iPropertyElement->SetUint16L( CMTPTypeObjectPropListElement::EValue, 0 );
       
    99             }
       
   100             break;
       
   101         case EMTPObjectPropCodeRepresentativeSampleSize:
       
   102         case EMTPObjectPropCodeRepresentativeSampleHeight:
       
   103         case EMTPObjectPropCodeRepresentativeSampleWidth:
       
   104             {
       
   105             iPropertyElement = &( iPropertyList->ReservePropElemL( aHandle, aPropCode ) );
       
   106             iPropertyElement->SetUint32L( CMTPTypeObjectPropListElement::EValue, 0 );
       
   107             }
       
   108             break;
       
   109         case EMTPObjectPropCodeRepresentativeSampleData:
       
   110             {
       
   111             const TDesC& suid( iObject->DesC( CMTPObjectMetaData::ESuid ) );
       
   112             CMTPTypeArray* desData = CMTPTypeArray::NewLC( EMTPTypeAUINT8 );    // + desData
    88 
   113 
    89     // Do nothing now.
   114             RFile sampleFile;
    90     // May need add implementation here for further extension.
   115             TInt err = sampleFile.Open( iFramework.Fs(), suid, EFileShareReadersOnly );
       
   116             PRINT2( _L( "MM MTP <> EMTPObjectPropCodeRepresentativeSampleData open filename=%S, err=%d" ), &suid, err );
    91 
   117 
    92     return KErrNotSupported;
   118             CleanupClosePushL( sampleFile );    // + sampleFile
       
   119             TInt size = 0;
       
   120             if( err == KErrNone )
       
   121                 {
       
   122                 err = sampleFile.Size( size );
       
   123                 }
       
   124             PRINT2( _L( "MM MTP <> EMTPObjectPropCodeRepresentativeSampleData sampleFile.Size size=%d, err=%d" ), size, err );
       
   125             if( err == KErrNone && size > 0 )
       
   126                 {
       
   127                 HBufC8* sampleData = HBufC8::NewLC( size * sizeof( TUint8 ) );    // + sampleData
       
   128                 TPtr8 samplePtr = sampleData->Des();
       
   129                 err = sampleFile.Read( samplePtr );
       
   130                 PRINT1( _L( "MM MTP <> EMTPObjectPropCodeRepresentativeSampleData sampleFile.Read err=%d" ), err );
       
   131                 PRINT1( _L( "MM MTP <> EMTPObjectPropCodeRepresentativeSampleData samplePtr.Size=%d" ), samplePtr.Size() );
       
   132                 if( err == KErrNone )
       
   133                     {
       
   134                     desData->SetByDesL( samplePtr );
       
   135                     }
       
   136                 CleanupStack::PopAndDestroy( sampleData );    // - sampleData
       
   137                 }
       
   138             iPropertyElement = &(iPropertyList->ReservePropElemL(aHandle, aPropCode));
       
   139             iPropertyElement->SetArrayL( CMTPTypeObjectPropListElement::EValue, *desData );
       
   140 
       
   141             CleanupStack::PopAndDestroy( &sampleFile );    // - sampleFile
       
   142             CleanupStack::PopAndDestroy( desData );        // - desData
       
   143             }
       
   144             break;
       
   145 
       
   146         default:
       
   147             err = KErrNotSupported;
       
   148         }
       
   149 
       
   150     PRINT1( _L( "MM MTP <= CAbstractMediaMtpDataProviderGetObjectPropList::ServiceSpecificObjectPropertyL, err = %d" ), err );
       
   151     return err;
    93     }
   152     }
    94 
   153 
    95 // end of file
   154 // end of file