mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovidergetobjectpropvalue.cpp
--- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovidergetobjectpropvalue.cpp Mon Mar 15 12:42:31 2010 +0200
+++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovidergetobjectpropvalue.cpp Wed Mar 31 22:26:09 2010 +0300
@@ -16,6 +16,9 @@
*/
+#include <mtp/cmtptypearray.h>
+#include <f32file.h>
+
#include "cabstractmediamtpdataprovidergetobjectpropvalue.h"
#include "abstractmediamtpdataproviderconst.h"
#include "mmmtpdplogger.h"
@@ -81,13 +84,64 @@
// invoked or invalid propcode
// -----------------------------------------------------------------------------
//
-void CAbstractMediaMtpDataProviderGetObjectPropValue::ServiceSpecificObjectPropertyL( TUint16 /*aPropCode*/ )
+void CAbstractMediaMtpDataProviderGetObjectPropValue::ServiceSpecificObjectPropertyL( TUint16 aPropCode )
{
- PRINT( _L( "MM MTP <> CAbstractMediaMtpDataProviderGetObjectPropValue::ServiceSpecificObjectPropertyL, leave with KErrNotSupported"));
+ PRINT( _L( "MM MTP => CAbstractMediaMtpDataProviderGetObjectPropValue::ServiceSpecificObjectPropertyL" ) );
+ switch ( aPropCode )
+ {
+ case EMTPObjectPropCodeRepresentativeSampleFormat:
+ {
+ iMTPTypeUint16.Set( 0 );
+ SendDataL( iMTPTypeUint16 );
+ }
+ break;
+
+ case EMTPObjectPropCodeRepresentativeSampleSize: // fall through
+ case EMTPObjectPropCodeRepresentativeSampleHeight: // fall through
+ case EMTPObjectPropCodeRepresentativeSampleWidth:
+ {
+ iMTPTypeUint32.Set( 0 );
+ SendDataL( iMTPTypeUint32 );
+ }
+ break;
- // May need add implementation here for further extension.
+ case EMTPObjectPropCodeRepresentativeSampleData:
+ {
+ if ( iMTPTypeArray != NULL )
+ {
+ delete iMTPTypeArray;
+ iMTPTypeArray = NULL;
+ }
+ iMTPTypeArray = CMTPTypeArray::NewL( EMTPTypeAUINT8 );
+
+ const TDesC& suid = iObjectInfo->DesC( CMTPObjectMetaData::ESuid );
+ PRINT1( _L( "MM MTP <> EMTPObjectPropCodeRepresentativeSampleData file suid=%S" ), &suid );
+ RFile sampleFile;
+ User::LeaveIfError( sampleFile.Open( iFramework.Fs(), suid, EFileShareReadersOnly ) );
+ CleanupClosePushL( sampleFile ); // + sampleFile
+
+ TInt size = 0;
+ User::LeaveIfError( sampleFile.Size( size ) );
+ PRINT1( _L( "MM MTP <> EMTPObjectPropCodeRepresentativeSampleData sampleFile.Size() size=%d" ), size );
- User::Leave( KErrNotSupported );
+ if( size > 0 )
+ {
+ HBufC8* sampleData = HBufC8::NewLC( size * sizeof(TUint8) ); // + sampleData
+ TPtr8 samplePtr = sampleData->Des();
+ User::LeaveIfError( sampleFile.Read( samplePtr ) );
+ iMTPTypeArray->SetByDesL( samplePtr );
+ CleanupStack::PopAndDestroy( sampleData ); // - sampleData
+ }
+ CleanupStack::PopAndDestroy( &sampleFile ); // - sampleFile
+
+ SendDataL( *iMTPTypeArray );
+ }
+ break;
+
+ default:
+ PRINT( _L( "MM MTP <> CAbstractMediaMtpDataProviderGetObjectPropValue::ServiceSpecificObjectPropertyL, leave with KErrNotSupported"));
+ User::Leave( KErrNotSupported );
+ }
}
// end of file