mpserviceplugins/mpxsqlitedbcommon/src/mpxdbcommonutil.cpp
changeset 22 ecf06a08d4d9
parent 19 4e84c994a771
child 45 612c4815aebe
child 48 af3740e3753f
equal deleted inserted replaced
20:82baf59ce8dd 22:ecf06a08d4d9
    39 #include "mpxdbcommonutil.h"
    39 #include "mpxdbcommonutil.h"
    40 
    40 
    41 // CONSTANTS
    41 // CONSTANTS
    42 _LIT(KPathStart, ":\\");
    42 _LIT(KPathStart, ":\\");
    43 
    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         TInt 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 }
       
   157 
    44 // ============================ MEMBER FUNCTIONS ==============================
   158 // ============================ MEMBER FUNCTIONS ==============================
    45 
   159 
    46 // ----------------------------------------------------------------------------------------------------------
   160 // ----------------------------------------------------------------------------------------------------------
    47 // Set HBufC data member.
   161 // Set HBufC data member.
    48 // ----------------------------------------------------------------------------------------------------------
   162 // ----------------------------------------------------------------------------------------------------------
   367     aMessage.SetTObjectValueL<TMPXGeneralCategory>(KMPXMessageMediaGeneralCategory, aCategory);
   481     aMessage.SetTObjectValueL<TMPXGeneralCategory>(KMPXMessageMediaGeneralCategory, aCategory);
   368     aMessage.SetTObjectValueL<TMPXItemId>(KMPXMessageMediaGeneralId, aId);
   482     aMessage.SetTObjectValueL<TMPXItemId>(KMPXMessageMediaGeneralId, aId);
   369 
   483 
   370     if ((aDeprecatedId != 0) && (aId != aDeprecatedId))
   484     if ((aDeprecatedId != 0) && (aId != aDeprecatedId))
   371         {
   485         {
   372         if ( aCategory == EMPXAlbum && aChangeType == EMPXItemModified )
   486         aMessage.SetTObjectValueL<TMPXItemId>(KMPXMessageMediaDeprecatedId, aDeprecatedId);
   373             {
       
   374             aMessage.SetTObjectValueL<TMPXItemId>(KMPXMessageMediaDeprecatedId, aId);
       
   375             }
       
   376         else
       
   377             {
       
   378             aMessage.SetTObjectValueL<TMPXItemId>(KMPXMessageMediaDeprecatedId, aDeprecatedId);
       
   379             }
       
   380         }
   487         }
   381     }
   488     }
   382 
   489 
   383 // ----------------------------------------------------------------------------
   490 // ----------------------------------------------------------------------------
   384 // Add an item changed message to the message array
   491 // Add an item changed message to the message array
   807 EXPORT_C TDataType MPXDbCommonUtil::GetMimeTypeForUriL(
   914 EXPORT_C TDataType MPXDbCommonUtil::GetMimeTypeForUriL(
   808     const TDesC& aUri)
   915     const TDesC& aUri)
   809     {
   916     {
   810     MPX_FUNC("MPXDbUtil::GetMimeTypeForUriL");
   917     MPX_FUNC("MPXDbUtil::GetMimeTypeForUriL");
   811 
   918 
   812     TParsePtrC parse(aUri);
   919     if ( const TDesC8 * type = FindMimeTypeFromMap (aUri) )
       
   920         {
       
   921         return TDataType(*type);
       
   922         }
       
   923     
   813     RApaLsSession appArc;
   924     RApaLsSession appArc;
   814     User::LeaveIfError(appArc.Connect());
   925     User::LeaveIfError(appArc.Connect());
   815     CleanupClosePushL(appArc);
   926     CleanupClosePushL(appArc);
   816     TUid dummyUid(KNullUid);
   927     TUid dummyUid(KNullUid);
   817     TDataType mimeType;
   928     TDataType mimeType;
  1165 		}	
  1276 		}	
  1166 
  1277 
  1167     return text;
  1278     return text;
  1168 	}
  1279 	}
  1169 
  1280 
  1170 
  1281 // ----------------------------------------------------------------------------
       
  1282 // Add an album item changed message to the message array
       
  1283 // ----------------------------------------------------------------------------
       
  1284 //
       
  1285 EXPORT_C void MPXDbCommonUtil::AddItemAlbumChangedMessageL(
       
  1286     CMPXMessageArray& aMessageArray,
       
  1287     TMPXItemId aId,
       
  1288     TMPXChangeEventType aChangeType,
       
  1289     TMPXGeneralCategory aCategory,
       
  1290     TUint aUid,
       
  1291     TBool aAlbumArt,
       
  1292     TMPXItemId aDeprecatedId)
       
  1293     {
       
  1294     MPX_FUNC("MPXDbCommonUtil::AddItemChangedMessageL");
       
  1295     CMPXMessage* message = CMPXMedia::NewL();
       
  1296     CleanupStack::PushL(message);
       
  1297 
       
  1298     FillItemChangedMessageL(*message, aId, aChangeType, aCategory, aUid,
       
  1299     		aDeprecatedId );
       
  1300     if ( aAlbumArt )
       
  1301         {
       
  1302         message->SetTObjectValueL<TMPXItemId>(KMPXMessageMediaDeprecatedId, aId);
       
  1303         }
       
  1304     if (FindItemChangedMessageL(aMessageArray, *message) == KErrNotFound)
       
  1305         {
       
  1306         aMessageArray.AppendL(*message); // ownership xfer
       
  1307         }
       
  1308     CleanupStack::PopAndDestroy(message);
       
  1309     }
  1171 // End of File
  1310 // End of File