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 |