mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbcommon/src/mpxdbcommonutil.cpp
branchRCL_3
changeset 9 13afc0e517bd
parent 0 ff3acec5bc43
child 11 943ff5625028
equal deleted inserted replaced
5:2a40e88564c8 9:13afc0e517bd
    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.
   807 EXPORT_C TDataType MPXDbCommonUtil::GetMimeTypeForUriL(
   921 EXPORT_C TDataType MPXDbCommonUtil::GetMimeTypeForUriL(
   808     const TDesC& aUri)
   922     const TDesC& aUri)
   809     {
   923     {
   810     MPX_FUNC("MPXDbUtil::GetMimeTypeForUriL");
   924     MPX_FUNC("MPXDbUtil::GetMimeTypeForUriL");
   811 
   925 
   812     TParsePtrC parse(aUri);
   926     if ( const TDesC8 * type = FindMimeTypeFromMap (aUri) )
       
   927         {
       
   928         return TDataType(*type);
       
   929         }
       
   930     
   813     RApaLsSession appArc;
   931     RApaLsSession appArc;
   814     User::LeaveIfError(appArc.Connect());
   932     User::LeaveIfError(appArc.Connect());
   815     CleanupClosePushL(appArc);
   933     CleanupClosePushL(appArc);
   816     TUid dummyUid(KNullUid);
   934     TUid dummyUid(KNullUid);
   817     TDataType mimeType;
   935     TDataType mimeType;