38 #include "mpxdbcommondef.h" |
38 #include "mpxdbcommondef.h" |
39 #include "mpxdbcommonutil.h" |
39 #include "mpxdbcommonutil.h" |
40 |
40 |
41 // CONSTANTS |
41 // CONSTANTS |
42 _LIT(KPathStart, ":\\"); |
42 _LIT(KPathStart, ":\\"); |
|
43 |
|
44 // ============================ FILE EXTENSION TO MIME MAP ============================== |
|
45 |
|
46 // ---------------------------------------------------------------------------------------------------------- |
|
47 // Statically allocated Mime Map |
|
48 // ---------------------------------------------------------------------------------------------------------- |
|
49 // |
|
50 |
|
51 _LIT( KExtensionAac, "aac" ); |
|
52 _LIT( KExtensionAif, "aif"); |
|
53 _LIT( KExtensionAifc, "aifc"); |
|
54 _LIT( KExtensionAiff, "aiff"); |
|
55 _LIT( KExtensionAmr, "amr" ); |
|
56 _LIT( KExtensionAu, "au" ); |
|
57 _LIT( KExtensionAwb, "awb" ); |
|
58 _LIT( KExtensionMid, "mid" ); |
|
59 _LIT( KExtensionMidi, "midi" ); |
|
60 _LIT( KExtensionMka, "mka" ); |
|
61 _LIT( KExtensionMp3, "mp3" ); |
|
62 _LIT( KExtensionOgg, "ogg"); |
|
63 _LIT( KExtensionRa, "ra"); |
|
64 _LIT( KExtensionRam, "ram"); |
|
65 _LIT( KExtensionRmi, "rmi"); |
|
66 _LIT( KExtensionSnd, "snd" ); |
|
67 _LIT( KExtensionSpMid, "spmid" ); |
|
68 _LIT( KExtensionWav, "wav" ); |
|
69 _LIT( KExtensionWma, "wma" ); |
|
70 |
|
71 _LIT8( KMimeTypeAac, "audio/aac" ); |
|
72 _LIT8( KMimeTypeAiff, "audio/x-aiff"); |
|
73 _LIT8( KMimeTypeAmr, "audio/amr" ); |
|
74 _LIT8( KMimeTypeAu, "audio/au" ); |
|
75 _LIT8( KMimeTypeAwb, "audio/amr-wb" ); |
|
76 _LIT8( KMimeTypeBasic, "audio/basic"); |
|
77 _LIT8( KMimeTypeMatroska, "audio/x-matroska"); |
|
78 _LIT8( KMimeTypeMid, "audio/mid"); |
|
79 _LIT8( KMimeTypeMidi, "audio/midi" ); |
|
80 _LIT8( KMimeTypeMpeg, "audio/mpeg" ); |
|
81 _LIT8( KMimeTypeOgg, "audio/ogg"); |
|
82 _LIT8( KMimeTypeReal, "audio/x-pn-realaudio"); |
|
83 _LIT8( KMimeTypeSpMidi, "audio/sp-midi" ); |
|
84 _LIT8( KMimeTypeWav, "audio/wav" ); |
|
85 _LIT8( KMimeTypeWma, "audio/x-ms-wma"); |
|
86 |
|
87 struct TMimeMapItem { |
|
88 const TDesC * iExt; |
|
89 const TDesC8 * iType; |
|
90 }; |
|
91 |
|
92 // We need to explicitly cast here as LitC::operator& requires writable DLL data (even though it is just a cast) |
|
93 #define MIME_MAP_ITEM(ext,type) { &REINTERPRET_CAST(const TDesC&, ext), &REINTERPRET_CAST(const TDesC8&, type) } |
|
94 |
|
95 // THIS ARRAY MUST BE SORTED BY EXTENSION |
|
96 static const TMimeMapItem KMimeMap [] = { |
|
97 MIME_MAP_ITEM( KExtensionAac, KMimeTypeAac), |
|
98 MIME_MAP_ITEM( KExtensionAif, KMimeTypeAiff ), |
|
99 MIME_MAP_ITEM( KExtensionAifc, KMimeTypeAiff ), |
|
100 MIME_MAP_ITEM( KExtensionAiff, KMimeTypeAiff ), |
|
101 MIME_MAP_ITEM( KExtensionAmr, KMimeTypeAmr ), |
|
102 MIME_MAP_ITEM( KExtensionAu, KMimeTypeAu ), // KMimeTypeAudioBasic? "audio/x-au"? |
|
103 MIME_MAP_ITEM( KExtensionAwb, KMimeTypeAwb ), |
|
104 MIME_MAP_ITEM( KExtensionMid, KMimeTypeMidi ), |
|
105 MIME_MAP_ITEM( KExtensionMidi, KMimeTypeMidi ), |
|
106 MIME_MAP_ITEM( KExtensionMka, KMimeTypeMatroska ), |
|
107 MIME_MAP_ITEM( KExtensionMp3, KMimeTypeMpeg ), |
|
108 MIME_MAP_ITEM( KExtensionOgg, KMimeTypeOgg ), |
|
109 MIME_MAP_ITEM( KExtensionRa, KMimeTypeReal ), |
|
110 MIME_MAP_ITEM( KExtensionRam, KMimeTypeReal ), |
|
111 MIME_MAP_ITEM( KExtensionRmi, KMimeTypeMid ), |
|
112 MIME_MAP_ITEM( KExtensionSnd, KMimeTypeBasic ), |
|
113 MIME_MAP_ITEM( KExtensionSpMid, KMimeTypeSpMidi ), |
|
114 MIME_MAP_ITEM( KExtensionWav, KMimeTypeWav ), // "audio/x-wav"? |
|
115 MIME_MAP_ITEM( KExtensionWma, KMimeTypeWma ) |
|
116 }; |
|
117 |
|
118 // ---------------------------------------------------------------------------------------------------------- |
|
119 // Look for Mime Type from map by file extension |
|
120 // Returns NULL if file extension is not known |
|
121 // ---------------------------------------------------------------------------------------------------------- |
|
122 // |
|
123 static const TDesC8 * FindMimeTypeFromMap ( const TDesC& aFilename ) |
|
124 { |
|
125 // extract extension |
|
126 TPtrC extension; |
|
127 TInt pos = aFilename.LocateReverseF( '.' ); |
|
128 if ( pos < 0 || ++pos >= aFilename.Length() ) |
|
129 { |
|
130 return NULL; |
|
131 } |
|
132 extension.Set( aFilename.Mid( pos ) ); |
|
133 |
|
134 // binary search from Mime Map |
|
135 TUint begin = 0; |
|
136 TUint end = sizeof KMimeMap / sizeof (TMimeMapItem); |
|
137 while (begin < end) |
|
138 { |
|
139 TUint at = (begin + end) / 2; |
|
140 const TMimeMapItem & item = KMimeMap[at]; |
|
141 TUint r = item.iExt->CompareF(extension); |
|
142 if (r == 0) |
|
143 { |
|
144 return item.iType; |
|
145 } |
|
146 else if (r > 0) |
|
147 { |
|
148 end = at; |
|
149 } |
|
150 else |
|
151 { |
|
152 begin = at + 1; |
|
153 } |
|
154 } |
|
155 return NULL; |
|
156 } |
43 |
157 |
44 // ============================ MEMBER FUNCTIONS ============================== |
158 // ============================ MEMBER FUNCTIONS ============================== |
45 |
159 |
46 // ---------------------------------------------------------------------------------------------------------- |
160 // ---------------------------------------------------------------------------------------------------------- |
47 // Set HBufC data member. |
161 // Set HBufC data member. |