48 // Destructor |
52 // Destructor |
49 // ----------------------------------------------------------------------------- |
53 // ----------------------------------------------------------------------------- |
50 // |
54 // |
51 CAbstractMediaMtpDataProviderGetObjectPropList::~CAbstractMediaMtpDataProviderGetObjectPropList() |
55 CAbstractMediaMtpDataProviderGetObjectPropList::~CAbstractMediaMtpDataProviderGetObjectPropList() |
52 { |
56 { |
53 |
57 // Do nothing |
54 } |
58 } |
55 |
59 |
56 // ----------------------------------------------------------------------------- |
60 // ----------------------------------------------------------------------------- |
57 // CAbstractMediaMtpDataProviderGetObjectPropList::CAbstractMediaMtpDataProviderGetObjectPropList |
61 // CAbstractMediaMtpDataProviderGetObjectPropList::CAbstractMediaMtpDataProviderGetObjectPropList |
58 // Standard C++ Constructor |
62 // Standard C++ Constructor |
59 // ----------------------------------------------------------------------------- |
63 // ----------------------------------------------------------------------------- |
60 // |
64 // |
61 CAbstractMediaMtpDataProviderGetObjectPropList::CAbstractMediaMtpDataProviderGetObjectPropList( MMTPDataProviderFramework& aFramework, |
65 CAbstractMediaMtpDataProviderGetObjectPropList::CAbstractMediaMtpDataProviderGetObjectPropList( MMTPDataProviderFramework& aFramework, |
62 MMTPConnection& aConnection, |
66 MMTPConnection& aConnection, |
63 MMmMtpDpConfig& aDpConfig ) : |
67 MMmMtpDpConfig& aDpConfig ) : |
64 CGetObjectPropList( aFramework, aConnection, aDpConfig ) |
68 CGetObjectPropList( aFramework, aConnection, aDpConfig ) |
65 { |
69 { |
66 |
70 // Do nothing |
67 } |
71 } |
68 |
72 |
69 // ----------------------------------------------------------------------------- |
73 // ----------------------------------------------------------------------------- |
70 // CAbstractMediaMtpDataProviderGetObjectPropList::ConstructL |
74 // CAbstractMediaMtpDataProviderGetObjectPropList::ConstructL |
71 // 2nd Phase Constructor |
75 // 2nd Phase Constructor |
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" ) ); |
88 return KErrNotSupported; |
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 |
|
113 |
|
114 RFile sampleFile; |
|
115 TInt err = sampleFile.Open( iFramework.Fs(), suid, EFileShareReadersOnly ); |
|
116 PRINT2( _L( "MM MTP <> EMTPObjectPropCodeRepresentativeSampleData open filename=%S, err=%d" ), &suid, err ); |
|
117 |
|
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; |
89 } |
152 } |
90 |
153 |
91 // end of file |
154 // end of file |