upnpframework/upnputilities/src/upnpcommonutils.cpp
branchnew development branch with rendering state machine and other goodies
changeset 38 5360b7ddc251
parent 0 7f85d04be362
equal deleted inserted replaced
32:3785f754ee62 38:5360b7ddc251
    34 #include <upnpcontainer.h>
    34 #include <upnpcontainer.h>
    35 #include <upnpitem.h>
    35 #include <upnpitem.h>
    36 #include <upnpdevice.h>
    36 #include <upnpdevice.h>
    37 
    37 
    38 // upnpframework / avcontroller helper api
    38 // upnpframework / avcontroller helper api
    39 #include <upnpconstantdefs.h>
    39 #include "upnpconstantdefs.h"
    40 
    40 
    41 // utilities internal
    41 // utilities internal
    42 #include "upnpfileutilitytypes.h"
    42 #include "upnpfileutilitytypes.h"
    43 #include "upnpcommonutils.h"
    43 #include "upnpcommonutils.h"
    44 
    44 
    62 _LIT16( KMpeg16,            ".MPEG" );
    62 _LIT16( KMpeg16,            ".MPEG" );
    63 _LIT16( KMpg16,             ".MPG" );
    63 _LIT16( KMpg16,             ".MPG" );
    64 _LIT16( KMpeg416,           ".MPEG4" );
    64 _LIT16( KMpeg416,           ".MPEG4" );
    65 _LIT16( KAvi16,             ".AVI" );
    65 _LIT16( KAvi16,             ".AVI" );
    66 _LIT16( KMp316,             ".MP3" );
    66 _LIT16( KMp316,             ".MP3" );
       
    67 _LIT16( KMp416,             ".MP4" );
    67 _LIT16( KAac16,             ".AAC" );
    68 _LIT16( KAac16,             ".AAC" );
    68 _LIT16( KWma16,             ".WMA" );
    69 _LIT16( KWma16,             ".WMA" );
       
    70 _LIT16( KTs16,              ".TS" );
       
    71 _LIT16( KMts16,             ".MTS" );
       
    72 _LIT16( KM2ts16,            ".M2TS" );
    69 _LIT8( KXHtml,              "application/vnd.pwg-xhtml-print" );
    73 _LIT8( KXHtml,              "application/vnd.pwg-xhtml-print" );
    70 _LIT8( KHtml,               "text/html" );
    74 _LIT8( KHtml,               "text/html" );
    71 _LIT8( KXml,                "text/xml" );
    75 _LIT8( KXml,                "text/xml" );
    72 _LIT8( KTxt,                "text/plain" );
    76 _LIT8( KTxt,                "text/plain" );
    73 _LIT8( KJpg,                "image/jpeg" );
    77 _LIT8( KJpg,                "image/jpeg" );
    74 _LIT8( KGif,                "image/gif" );
    78 _LIT8( KGif,                "image/gif" );
    75 _LIT8( KPng,                "image/png" );
    79 _LIT8( KPng,                "image/png" );
    76 _LIT8( KMpeg,               "video/mpeg" );
    80 _LIT8( KMpeg,               "video/mpeg" );
    77 _LIT8( KMpeg4,              "video/mpeg4" );
    81 _LIT8( KMpeg4,              "video/mpeg4" );
    78 _LIT8( KMp3,                "audio/mpeg" );
    82 _LIT8( KMp3,                "audio/mpeg" );
       
    83 _LIT8( KMp4,                "video/mp4" );
    79 _LIT8( KAac,                "audio/aac" );
    84 _LIT8( KAac,                "audio/aac" );
    80 _LIT8( KWma,                "audio/x-ms-wma" );
    85 _LIT8( KWma,                "audio/x-ms-wma" );
    81 _LIT8( KAvi,                "video/x-msvideo" );
    86 _LIT8( KAvi,                "video/x-msvideo" );
    82 
    87 _LIT8( KTs,                 "video/mpeg" );
       
    88 _LIT8( KM2ts,               "video/vnd.dlna.mpeg-tts" );
    83 
    89 
    84 _LIT(  KLineFeed,           "\r\n");
    90 _LIT(  KLineFeed,           "\r\n");
    85 _LIT8( KHttpDes,            "http://" );
    91 _LIT8( KHttpDes,            "http://" );
    86 _LIT( KTemp,                "upnpfwtemp");
    92 _LIT( KTemp,                "upnpfwtemp");
    87 
    93 
   135 _LIT8( KVideoWmvm,         	"=WMVMED_" );
   141 _LIT8( KVideoWmvm,         	"=WMVMED_" );
   136 _LIT8( KVideoVmvh,          "=WMVHIGH_" );
   142 _LIT8( KVideoVmvh,          "=WMVHIGH_" );
   137 _LIT8( KVideoWmvh,          "=WMVHM_" );
   143 _LIT8( KVideoWmvh,          "=WMVHM_" );
   138 _LIT8( KVideoWmvspll,       "=WMVSPLL_" );
   144 _LIT8( KVideoWmvspll,       "=WMVSPLL_" );
   139 _LIT8( KVideoWmvspml,       "=WMVSPML_" );
   145 _LIT8( KVideoWmvspml,       "=WMVSPML_" );
       
   146 
       
   147 
       
   148 
   140 // ============================ LOCAL FUNCTIONS =============================
   149 // ============================ LOCAL FUNCTIONS =============================
   141 
   150 
   142 // --------------------------------------------------------------------------
   151 // --------------------------------------------------------------------------
   143 // UPnPCommonUtils::MemoryCardStateL
   152 // UPnPCommonUtils::MemoryCardStateL
   144 //---------------------------------------------------------------------------
   153 //---------------------------------------------------------------------------
   229     tempFilename = NULL;
   238     tempFilename = NULL;
   230 
   239 
   231     // FindC and length calculation is used,
   240     // FindC and length calculation is used,
   232     // because compareC does not work for undefined reason  
   241     // because compareC does not work for undefined reason  
   233 
   242 
   234     if ( ext.FindC( KHtml16 ) == 0 && 
   243     GetMimeTypeforImageExtensionsL( ext,&mimetype );
   235          ext.Length() == KHtml16().Length() )
   244     GetMimeTypeforAudioVideoExtensionsL( ext,&mimetype );
   236         {
   245     GetMimeTypeforExtensionsL( ext,&mimetype );
   237         mimetype = HBufC8::NewLC( KHtml().Length() );
       
   238         mimetype->Des().Zero();
       
   239         mimetype->Des().Append( KHtml() );
       
   240         }
       
   241     else if ( ext.FindC( KXml16 ) == 0 && 
       
   242               ext.Length() == KXml16().Length() )
       
   243         {
       
   244         mimetype = HBufC8::NewLC( KXml().Length() );
       
   245         mimetype->Des().Zero();
       
   246         mimetype->Des().Append( KXml() );
       
   247         }
       
   248     else if ( ext.FindC( KTxt16 ) == 0 && 
       
   249               ext.Length() == KTxt16().Length() )
       
   250         {
       
   251         mimetype = HBufC8::NewLC( KTxt().Length() );
       
   252         mimetype->Des().Zero();
       
   253         mimetype->Des().Append( KTxt() );
       
   254         }
       
   255     else if ( ( ext.FindC( KJpg16 ) == 0 && 
       
   256                 ext.Length() == KJpg16().Length() ) ||
       
   257                 ( ext.FindC( KJpeg16 ) == 0 && 
       
   258                   ext.Length() == KJpeg16().Length() ) )
       
   259         {
       
   260         mimetype = HBufC8::NewLC( KJpg().Length() );
       
   261         mimetype->Des().Zero();
       
   262         mimetype->Des().Append( KJpg() );
       
   263         }       
       
   264     else if ( ext.FindC( KGif16 ) == 0 && 
       
   265               ext.Length() == KGif16().Length() )
       
   266         {
       
   267         mimetype = HBufC8::NewLC( KGif().Length() );
       
   268         mimetype->Des().Zero();
       
   269         mimetype->Des().Append( KGif() );
       
   270         }   
       
   271     else if ( ext.FindC( KPng16 ) == 0 && 
       
   272               ext.Length() == KPng16().Length() )
       
   273         {
       
   274         mimetype = HBufC8::NewLC( KPng().Length() );
       
   275         mimetype->Des().Zero();
       
   276         mimetype->Des().Append( KPng() );
       
   277         }
       
   278     else if ( ( ext.FindC( KMpg16 ) == 0 &&
       
   279                 ext.Length() == KMpg16().Length() ) ||
       
   280                 ( ext.FindC( KMpeg16 ) == 0 &&
       
   281                   ext.Length() == KMpeg16().Length() ) )
       
   282         {
       
   283         mimetype = HBufC8::NewLC( KMpeg().Length() );
       
   284         mimetype->Des().Zero();
       
   285         mimetype->Des().Append( KMpeg() );
       
   286         }
       
   287     else if ( ( ext.FindC( KMpeg416 ) == 0 && 
       
   288                 ext.Length() == KMpeg416().Length() ) )
       
   289         {
       
   290         mimetype = HBufC8::NewLC( KMpeg4().Length() );
       
   291         mimetype->Des().Zero();
       
   292         mimetype->Des().Append( KMpeg4() );
       
   293         }
       
   294     else if ( ext.FindC( KAvi16 ) == 0 && 
       
   295               ext.Length() == KAvi16().Length() )
       
   296         {
       
   297         mimetype = HBufC8::NewLC( KAvi().Length() );
       
   298         mimetype->Des().Zero();
       
   299         mimetype->Des().Append( KAvi() );
       
   300         }
       
   301     else if ( ext.FindC( KMp316 ) == 0 && 
       
   302               ext.Length() == KMp316().Length() )
       
   303         {
       
   304         mimetype = HBufC8::NewLC( KMp3().Length() );
       
   305         mimetype->Des().Zero();
       
   306         mimetype->Des().Append( KMp3() );
       
   307         }
       
   308     else if ( ext.FindC( KXHtml16 ) == 0 && 
       
   309               ext.Length() == KXHtml16().Length() )
       
   310         {
       
   311         mimetype = HBufC8::NewLC( KXHtml().Length() );
       
   312         mimetype->Des().Zero();
       
   313         mimetype->Des().Append( KXHtml() );
       
   314         }
       
   315     else if ( ext.FindC( KAac16 ) == 0 && 
       
   316               ext.Length() == KAac16().Length() )
       
   317         {
       
   318         mimetype = HBufC8::NewLC( KAac().Length() );
       
   319         mimetype->Des().Zero();
       
   320         mimetype->Des().Append( KAac() );
       
   321         }
       
   322     else if ( ext.FindC( KWma16 ) == 0 && 
       
   323               ext.Length() == KWma16().Length() )
       
   324         {
       
   325         mimetype = HBufC8::NewLC( KWma().Length() );
       
   326         mimetype->Des().Zero();
       
   327         mimetype->Des().Append( KWma() );
       
   328         }
       
   329     else
       
   330         {
       
   331         // Mime type not recognized. Return NULL.        
       
   332         }
       
   333 
       
   334     if( mimetype )
       
   335         {
       
   336         CleanupStack::Pop( mimetype );
       
   337         }
       
   338 
   246 
   339     return mimetype;
   247     return mimetype;
   340     }
   248     }
   341 
   249 
   342 // --------------------------------------------------------------------------
   250 // --------------------------------------------------------------------------
   926 //
   834 //
   927 EXPORT_C HBufC* UPnPCommonUtils::FileExtensionByMimeTypeL(
   835 EXPORT_C HBufC* UPnPCommonUtils::FileExtensionByMimeTypeL(
   928     const TDesC8& aMimeType )
   836     const TDesC8& aMimeType )
   929     {
   837     {
   930     HBufC* fileExt = NULL;
   838     HBufC* fileExt = NULL;
   931 
   839     
       
   840     GetFileExtensionForImageMimeTypesL( aMimeType,&fileExt );
       
   841     
       
   842     if(!fileExt)
       
   843         {
       
   844         GetFileExtensionForAudioMimeTypesL( aMimeType,&fileExt );
       
   845         }
       
   846     if(!fileExt)
       
   847         {
       
   848         GetFileExtensionForVideoMimeTypesL( aMimeType,&fileExt );
       
   849         }
       
   850     if(!fileExt)
       
   851         {
       
   852         GetFileExtensionForMimeTypesL( aMimeType,&fileExt );
       
   853         }
       
   854     if(!fileExt)
       
   855         {
       
   856         // AMR
       
   857          if( aMimeType.CompareC( KAudioAMR )  == 0 )
       
   858             {
       
   859             fileExt = KAmrExt().AllocL();
       
   860             }
       
   861         // Real audio    
       
   862         else if ( aMimeType.CompareC( KRAMime8 )  == 0 )
       
   863             {
       
   864             fileExt = KRAExt().AllocL();
       
   865             }
       
   866         }
       
   867     
       
   868     return fileExt;
       
   869     }
       
   870 
       
   871 //---------------------------------------------------------------------------
       
   872 // UPnPCommonUtils::FixListboxItemTextL
       
   873 // Removes the tab character of the given text
       
   874 // and returns a new fixed text string. 8bit version.
       
   875 //---------------------------------------------------------------------------
       
   876 //
       
   877 EXPORT_C HBufC8* UPnPCommonUtils::FixListboxItemTextL( const TDesC8& aText )
       
   878     {
       
   879     HBufC8* fixedText = HBufC8::NewLC( aText.Length() );
       
   880     TPtr8 ptr = fixedText->Des();
       
   881     ptr.Copy( aText );
       
   882     
       
   883     UpnpString::StringReplaceInPlaceL( ptr, 
       
   884                                        KTab(),
       
   885                                        KSpace() );   
       
   886     CleanupStack::Pop(); // Can't pop by name, name invalid now
       
   887     return fixedText;
       
   888     }
       
   889 
       
   890 // --------------------------------------------------------------------------
       
   891 // UPnPCommonUtils::FileTypeByMimeTypeL
       
   892 // Get the file type based on MIME type of the file. Leaves in error cases.
       
   893 // --------------------------------------------------------------------------
       
   894 EXPORT_C TUPnPItemType UPnPCommonUtils::FileTypeByMimeTypeL(
       
   895         const TDesC8& aMimeType )
       
   896     {
       
   897     TUPnPItemType returnValue = ETypeOther;
       
   898 
       
   899     if( aMimeType != KNullDesC8 )
       
   900         {
       
   901         if( aMimeType.Find( KMimeImage() ) >= 0 )
       
   902             {
       
   903             returnValue = ETypeImage;
       
   904             }
       
   905         else if( aMimeType.Find( KMimePlaylist() ) >= 0 )
       
   906             {
       
   907             returnValue = ETypePlaylist;
       
   908             }
       
   909         else if( aMimeType.Find( KMimeAudio() ) >= 0 )
       
   910             {
       
   911             returnValue = ETypeAudio;
       
   912             }
       
   913         else if( aMimeType.Find( KMimeVideo() ) >= 0 )
       
   914             {
       
   915             returnValue = ETypeVideo;
       
   916             }
       
   917         else
       
   918             {
       
   919             returnValue = ETypeOther;
       
   920             }
       
   921         }
       
   922     else
       
   923         {
       
   924         User::Leave( KErrArgument );
       
   925         }
       
   926 
       
   927     return returnValue;
       
   928     }
       
   929 
       
   930 void UPnPCommonUtils::GetMimeTypeforImageExtensionsL( const TDesC& aExt , HBufC8** aMimeType)
       
   931     {
       
   932     if(*aMimeType != NULL)
       
   933          return;
       
   934     // FindC and length calculation is used,
       
   935     // because compareC does not work for undefined reason
       
   936     if ( ( aExt.FindC( KJpg16 ) == 0 && 
       
   937             aExt.Length() == KJpg16().Length() ) ||
       
   938                     ( aExt.FindC( KJpeg16 ) == 0 && 
       
   939                             aExt.Length() == KJpeg16().Length() ) )
       
   940             {
       
   941             *aMimeType = HBufC8::NewLC( KJpg().Length() );
       
   942             (*aMimeType)->Des().Zero();
       
   943             (*aMimeType)->Des().Append( KJpg() );
       
   944             }       
       
   945         else if ( aExt.FindC( KGif16 ) == 0 && 
       
   946                 aExt.Length() == KGif16().Length() )
       
   947             {
       
   948             *aMimeType = HBufC8::NewLC( KGif().Length() );
       
   949             (*aMimeType)->Des().Zero();
       
   950             (*aMimeType)->Des().Append( KGif() );
       
   951             }   
       
   952         else if ( aExt.FindC( KPng16 ) == 0 && 
       
   953                 aExt.Length() == KPng16().Length() )
       
   954             {
       
   955             *aMimeType = HBufC8::NewLC( KPng().Length() );
       
   956             (*aMimeType)->Des().Zero();
       
   957             (*aMimeType)->Des().Append( KPng() );
       
   958             }
       
   959     if( *aMimeType )
       
   960         {
       
   961         CleanupStack::Pop( *aMimeType );
       
   962         }
       
   963     
       
   964     }
       
   965     
       
   966 void UPnPCommonUtils::GetMimeTypeforAudioVideoExtensionsL( const TDesC& aExt , HBufC8** aMimeType)
       
   967     {
       
   968     if(*aMimeType != NULL)
       
   969          return;
       
   970     
       
   971     // FindC and length calculation is used,
       
   972     // because compareC does not work for undefined reason
       
   973     if ( ( aExt.FindC( KMpg16 ) == 0 &&
       
   974                 aExt.Length() == KMpg16().Length() ) ||
       
   975                 ( aExt.FindC( KMpeg16 ) == 0 &&
       
   976                   aExt.Length() == KMpeg16().Length() ) )
       
   977             {
       
   978             *aMimeType = HBufC8::NewLC( KMpeg().Length() );
       
   979             (*aMimeType)->Des().Zero();
       
   980             (*aMimeType)->Des().Append( KMpeg() );
       
   981             }
       
   982         else if ( ( aExt.FindC( KMpeg416 ) == 0 && 
       
   983                     aExt.Length() == KMpeg416().Length() ) )
       
   984             {
       
   985             *aMimeType = HBufC8::NewLC( KMpeg4().Length() );
       
   986             (*aMimeType)->Des().Zero();
       
   987             (*aMimeType)->Des().Append( KMpeg4() );
       
   988             }
       
   989         else if ( aExt.FindC( KAvi16 ) == 0 && 
       
   990                   aExt.Length() == KAvi16().Length() )
       
   991             {
       
   992             *aMimeType = HBufC8::NewLC( KAvi().Length() );
       
   993             (*aMimeType)->Des().Zero();
       
   994             (*aMimeType)->Des().Append( KAvi() );
       
   995             }
       
   996         else if ( aExt.FindC( KMp316 ) == 0 && 
       
   997                   aExt.Length() == KMp316().Length() )
       
   998             {
       
   999             *aMimeType = HBufC8::NewLC( KMp3().Length() );
       
  1000             (*aMimeType)->Des().Zero();
       
  1001             (*aMimeType)->Des().Append( KMp3() );
       
  1002             }
       
  1003         else if ( aExt.FindC( KMp416 ) == 0 && 
       
  1004                   aExt.Length() == KMp416().Length() )
       
  1005             {
       
  1006             *aMimeType = HBufC8::NewLC( KMp4().Length() );
       
  1007             (*aMimeType)->Des().Zero();
       
  1008             (*aMimeType)->Des().Append( KMp4() );
       
  1009             }
       
  1010         else if ( aExt.FindC( KAac16 ) == 0 && 
       
  1011                   aExt.Length() == KAac16().Length() )
       
  1012             {
       
  1013             *aMimeType = HBufC8::NewLC( KAac().Length() );
       
  1014             (*aMimeType)->Des().Zero();
       
  1015             (*aMimeType)->Des().Append( KAac() );
       
  1016             }
       
  1017         else if ( aExt.FindC( KWma16 ) == 0 && 
       
  1018                   aExt.Length() == KWma16().Length() )
       
  1019             {
       
  1020             *aMimeType = HBufC8::NewLC( KWma().Length() );
       
  1021             (*aMimeType)->Des().Zero();
       
  1022             (*aMimeType)->Des().Append( KWma() );
       
  1023             }
       
  1024         else if ( aExt.FindC( KTs16 ) == 0 &&
       
  1025                   aExt.Length() == KTs16().Length() )
       
  1026             {
       
  1027             *aMimeType = HBufC8::NewLC( KTs().Length() );
       
  1028             (*aMimeType)->Des().Zero();
       
  1029             (*aMimeType)->Des().Append( KTs() );            
       
  1030             }
       
  1031         else if ( ( aExt.FindC( KMts16 ) == 0 &&
       
  1032                     aExt.Length() == KMts16().Length() ) ||
       
  1033                   ( aExt.FindC( KM2ts16 ) == 0 &&
       
  1034                     aExt.Length() == KM2ts16().Length() ) )
       
  1035             {
       
  1036             *aMimeType = HBufC8::NewLC( KM2ts().Length() );
       
  1037             (*aMimeType)->Des().Zero();
       
  1038             (*aMimeType)->Des().Append( KM2ts() );            
       
  1039             }
       
  1040     if( *aMimeType )
       
  1041         {
       
  1042         CleanupStack::Pop( *aMimeType );
       
  1043         }
       
  1044     }
       
  1045     
       
  1046 void UPnPCommonUtils::GetMimeTypeforExtensionsL( const TDesC& aExt , HBufC8** aMimeType)
       
  1047     {
       
  1048     if(*aMimeType != NULL)
       
  1049         return;
       
  1050     
       
  1051     // FindC and length calculation is used,
       
  1052     // because compareC does not work for undefined reason
       
  1053     if ( aExt.FindC( KHtml16 ) == 0 && 
       
  1054             aExt.Length() == KHtml16().Length() )
       
  1055         {
       
  1056         *aMimeType = HBufC8::NewLC( KHtml().Length() );
       
  1057         (*aMimeType)->Des().Zero();
       
  1058         (*aMimeType)->Des().Append( KHtml() );
       
  1059         }
       
  1060     else if ( aExt.FindC( KXml16 ) == 0 && 
       
  1061             aExt.Length() == KXml16().Length() )
       
  1062         {
       
  1063         *aMimeType = HBufC8::NewLC( KXml().Length() );
       
  1064         (*aMimeType)->Des().Zero();
       
  1065         (*aMimeType)->Des().Append( KXml() );
       
  1066         }
       
  1067     else if ( aExt.FindC( KTxt16 ) == 0 && 
       
  1068             aExt.Length() == KTxt16().Length() )
       
  1069         {
       
  1070         *aMimeType = HBufC8::NewLC( KTxt().Length() );
       
  1071         (*aMimeType)->Des().Zero();
       
  1072         (*aMimeType)->Des().Append( KTxt() );
       
  1073         }
       
  1074     else if ( aExt.FindC( KXHtml16 ) == 0 && 
       
  1075                       aExt.Length() == KXHtml16().Length() )
       
  1076         {
       
  1077         *aMimeType = HBufC8::NewLC( KXHtml().Length() );
       
  1078         (*aMimeType)->Des().Zero();
       
  1079         (*aMimeType)->Des().Append( KXHtml() );
       
  1080         }
       
  1081     
       
  1082     if( *aMimeType )
       
  1083         {
       
  1084         CleanupStack::Pop( *aMimeType );
       
  1085         }
       
  1086     }
       
  1087 
       
  1088 void UPnPCommonUtils::GetFileExtensionForMimeTypesL(const TDesC8& aMimeType,HBufC** aFileExt)
       
  1089     {
       
  1090     if(*aFileExt != NULL)
       
  1091           return;
   932     // XHTML
  1092     // XHTML
   933     if( aMimeType.CompareC( KXHtmlMime ) == 0 )
  1093     if( aMimeType.CompareC( KXHtmlMime ) == 0 )
   934         {
  1094         {
   935         fileExt = KXHtmlExt().AllocL();
  1095         *aFileExt = KXHtmlExt().AllocL();
   936         }
  1096         }
   937     // HTML
  1097     // HTML
   938     else if( aMimeType.CompareC( KHtmlMime ) == 0 )
  1098     else if( aMimeType.CompareC( KHtmlMime ) == 0 )
   939         {
  1099         {
   940         fileExt = KHtmlExt().AllocL();
  1100         *aFileExt = KHtmlExt().AllocL();
   941         }
  1101         }
   942     // XML
  1102     // XML
   943     else if( aMimeType.CompareC( KXmlMime1 ) == 0 ||
  1103     else if( aMimeType.CompareC( KXmlMime1 ) == 0 ||
   944              aMimeType.CompareC( KXmlMime2 ) == 0 ||
  1104              aMimeType.CompareC( KXmlMime2 ) == 0 ||
   945              aMimeType.CompareC( KXmlMime3 ) == 0  )
  1105              aMimeType.CompareC( KXmlMime3 ) == 0  )
   946         {
  1106         {
   947         fileExt = KXmlExt().AllocL();
  1107         *aFileExt = KXmlExt().AllocL();
   948         }
  1108         }
   949     // TXT    
  1109     // TXT    
   950     else if( aMimeType.CompareC( KTxtMime )  == 0 ||
  1110     else if( aMimeType.CompareC( KTxtMime )  == 0 ||
   951              aMimeType.CompareC( KTxtMime2 ) == 0 ||
  1111              aMimeType.CompareC( KTxtMime2 ) == 0 ||
   952              aMimeType.CompareC( KTxtMime3 ) == 0 ||
  1112              aMimeType.CompareC( KTxtMime3 ) == 0 ||
   953              aMimeType.CompareC( KTxtMime4 ) == 0 ||
  1113              aMimeType.CompareC( KTxtMime4 ) == 0 ||
   954              aMimeType.CompareC( KTxtMime5 ) == 0 ||
  1114              aMimeType.CompareC( KTxtMime5 ) == 0 ||
   955              aMimeType.CompareC( KTxtMime6 ) == 0  )
  1115              aMimeType.CompareC( KTxtMime6 ) == 0  )
   956         {
  1116         {
   957         fileExt = KTxtExt().AllocL();
  1117         *aFileExt = KTxtExt().AllocL();
   958         }
  1118         }
       
  1119     }
       
  1120    
       
  1121 void UPnPCommonUtils::GetFileExtensionForImageMimeTypesL(const TDesC8& aMimeType,HBufC** aFileExt)
       
  1122     {
   959     // JPEG
  1123     // JPEG
   960     else if( aMimeType.CompareC( KJpegMime ) == 0 )
  1124     if( aMimeType.CompareC( KJpegMime ) == 0 )
   961         {
  1125         {
   962         fileExt = KJpegExt().AllocL();
  1126         *aFileExt = KJpegExt().AllocL();
   963         }
  1127         }
   964     // JPG
  1128     // JPG
   965     else if( aMimeType.CompareC( KJpegMime2 ) == 0 ||
  1129     else if( aMimeType.CompareC( KJpegMime2 ) == 0 ||
   966              aMimeType.CompareC( KJpegMime3 ) == 0 ||
  1130              aMimeType.CompareC( KJpegMime3 ) == 0 ||
   967              aMimeType.CompareC( KJpegMime4 ) == 0 ||
  1131              aMimeType.CompareC( KJpegMime4 ) == 0 ||
   968              aMimeType.CompareC( KJpegMime5 ) == 0  )
  1132              aMimeType.CompareC( KJpegMime5 ) == 0  )
   969         {
  1133         {
   970         fileExt = KJpgExt().AllocL();
  1134         *aFileExt = KJpgExt().AllocL();
   971         }
  1135         }
   972     // GIF    
  1136     // GIF    
   973     else if( aMimeType.CompareC( KGifMime )  == 0 ||
  1137     else if( aMimeType.CompareC( KGifMime )  == 0 ||
   974              aMimeType.CompareC( KGifMime2 ) == 0 ||
  1138              aMimeType.CompareC( KGifMime2 ) == 0 ||
   975              aMimeType.CompareC( KGifMime3 ) == 0  )
  1139              aMimeType.CompareC( KGifMime3 ) == 0  )
   976         {
  1140         {
   977         fileExt = KGifExt().AllocL();
  1141         *aFileExt = KGifExt().AllocL();
   978         }
  1142         }
   979     // PNG    
  1143     // PNG    
   980     else if( aMimeType.CompareC( KPngMime )  == 0 ||
  1144     else if( aMimeType.CompareC( KPngMime )  == 0 ||
   981              aMimeType.CompareC( KPngMime2 ) == 0 ||
  1145              aMimeType.CompareC( KPngMime2 ) == 0 ||
   982              aMimeType.CompareC( KPngMime3 ) == 0  )
  1146              aMimeType.CompareC( KPngMime3 ) == 0  )
   983         {
  1147         {
   984         fileExt = KPngExt().AllocL();
  1148         *aFileExt = KPngExt().AllocL();
   985         }
  1149         }
   986     // MPG    
  1150     else
   987     else if( aMimeType.CompareC( KMpgMime1 )  == 0 ||
  1151         {
   988              aMimeType.CompareC( KMpgMime2 )  == 0 ||
  1152         GetFileExtensionForBMPandMP3MimeTypesL( aMimeType,aFileExt );
   989              aMimeType.CompareC( KMpgMime3 )  == 0 ||
  1153         }
   990              aMimeType.CompareC( KMpgMime4 )  == 0 ||
  1154     
   991              aMimeType.CompareC( KMpgMime5 )  == 0 ||
  1155     }
   992              aMimeType.CompareC( KMpgMime6 )  == 0 ||
  1156 
   993              aMimeType.CompareC( KMpgMime7 )  == 0 ||
  1157 void UPnPCommonUtils::GetFileExtensionForBMPandMP3MimeTypesL(const TDesC8& aMimeType,HBufC** aFileExt)
   994              aMimeType.CompareC( KMpgMime10 ) == 0  )
  1158     {
   995         {
  1159     if( aMimeType.CompareC( KBmpMime )  == 0 ||
   996         fileExt = KMpgExt1().AllocL();
  1160              aMimeType.CompareC( KBmpMime2 ) == 0 ||
   997         }
  1161              aMimeType.CompareC( KBmpMime3 ) == 0 ||
   998     // MPEG4    
  1162              aMimeType.CompareC( KBmpMime4 ) == 0 ||
   999     else if( aMimeType.CompareC( KMpeg4Mime )  == 0 )
  1163              aMimeType.CompareC( KBmpMime5 ) == 0 ||
  1000         {
  1164              aMimeType.CompareC( KBmpMime6 ) == 0 ||
  1001         fileExt = KMpeg4Ext().AllocL();
  1165              aMimeType.CompareC( KBmpMime7 ) == 0 ||
  1002         }
  1166              aMimeType.CompareC( KBmpMime8 ) == 0 ||
  1003     // MP4        
  1167              aMimeType.CompareC( KBmpMime9 ) == 0  )
  1004     else if( aMimeType.CompareC( KMp4Mime )  == 0 ||
  1168         {
  1005              aMimeType.CompareC( KMp4Mime2 ) == 0 ||
  1169         *aFileExt = KBmpExt().AllocL();
  1006              aMimeType.CompareC( KMp4Mime3 ) == 0  )
       
  1007         {
       
  1008         fileExt = KMp4Ext().AllocL();
       
  1009         }
       
  1010     // AVI
       
  1011     else if( aMimeType.CompareC( KAviMime1 ) == 0 ||
       
  1012              aMimeType.CompareC( KAviMime2 ) == 0 ||
       
  1013              aMimeType.CompareC( KAviMime3 ) == 0 ||
       
  1014              aMimeType.CompareC( KAviMime4 ) == 0 ||
       
  1015              aMimeType.CompareC( KAviMime5 ) == 0 ||
       
  1016              aMimeType.CompareC( KAviMime6 ) == 0 ||
       
  1017              aMimeType.CompareC( KAviMime7 ) == 0 ||
       
  1018              aMimeType.CompareC( KAviMime8 ) == 0 ||
       
  1019              aMimeType.CompareC( KAviMime9 ) == 0 )
       
  1020         {
       
  1021         fileExt = KAviExt().AllocL();
       
  1022         }
  1170         }
  1023     // MP3
  1171     // MP3
  1024     else if( aMimeType.CompareC( KMp3Mime1 )  == 0 ||
  1172     else if( aMimeType.CompareC( KMp3Mime1 )  == 0 ||
  1025              aMimeType.CompareC( KMp3Mime2 )  == 0 ||
  1173              aMimeType.CompareC( KMp3Mime2 )  == 0 ||
  1026              aMimeType.CompareC( KMp3Mime3 )  == 0 ||
  1174              aMimeType.CompareC( KMp3Mime3 )  == 0 ||
  1030              aMimeType.CompareC( KMp3Mime7 )  == 0 ||
  1178              aMimeType.CompareC( KMp3Mime7 )  == 0 ||
  1031              aMimeType.CompareC( KMp3Mime8 )  == 0 ||
  1179              aMimeType.CompareC( KMp3Mime8 )  == 0 ||
  1032              aMimeType.CompareC( KMp3Mime9 )  == 0 ||
  1180              aMimeType.CompareC( KMp3Mime9 )  == 0 ||
  1033              aMimeType.CompareC( KMp3Mime10 ) == 0 )
  1181              aMimeType.CompareC( KMp3Mime10 ) == 0 )
  1034         {
  1182         {
  1035         fileExt = KMp3Ext().AllocL();
  1183         *aFileExt = KMp3Ext().AllocL();
       
  1184         }
       
  1185     
       
  1186     }
       
  1187 
       
  1188    
       
  1189 void UPnPCommonUtils::GetFileExtensionForAudioMimeTypesL(const TDesC8& aMimeType,HBufC** aFileExt)
       
  1190     {
       
  1191     // MPG
       
  1192     if( aMimeType.CompareC( KMpgMime1 )  == 0 ||
       
  1193              aMimeType.CompareC( KMpgMime2 )  == 0 ||
       
  1194              aMimeType.CompareC( KMpgMime3 )  == 0 ||
       
  1195              aMimeType.CompareC( KMpgMime4 )  == 0 ||
       
  1196              aMimeType.CompareC( KMpgMime5 )  == 0 ||
       
  1197              aMimeType.CompareC( KMpgMime6 )  == 0 ||
       
  1198              aMimeType.CompareC( KMpgMime7 )  == 0 ||
       
  1199              aMimeType.CompareC( KMpgMime10 ) == 0  )
       
  1200         {
       
  1201         *aFileExt = KMpgExt1().AllocL();
  1036         }
  1202         }
  1037     // AAC    
  1203     // AAC    
  1038     else if( aMimeType.CompareC( KAacMime )   == 0 ||
  1204     else if( aMimeType.CompareC( KAacMime )   == 0 ||
  1039              aMimeType.CompareC( KAacMime2 )  == 0 ||
  1205              aMimeType.CompareC( KAacMime2 )  == 0 ||
  1040              aMimeType.CompareC( KAacMime3 )  == 0 ||
  1206              aMimeType.CompareC( KAacMime3 )  == 0 ||
  1041              aMimeType.CompareC( KAacMime4 )  == 0 )
  1207              aMimeType.CompareC( KAacMime4 )  == 0 )
  1042         {
  1208         {
  1043         fileExt = KAacExt().AllocL();
  1209         *aFileExt = KAacExt().AllocL();
  1044         }
  1210         }
  1045     //M4a
  1211     //M4a
  1046     else if( aMimeType.CompareC( KM4aMime )   == 0 )
  1212     else if( aMimeType.CompareC( KM4aMime )   == 0 )
  1047        {
  1213        {
  1048        fileExt = KM4aExt().AllocL();
  1214        *aFileExt = KM4aExt().AllocL();
  1049        }
  1215        }
  1050     // WMA    
       
  1051     else if( aMimeType.CompareC( KWmaMime )   == 0 ||
       
  1052              aMimeType.CompareC( KWmaMime2 )  == 0 )
       
  1053         {
       
  1054         fileExt = KWmaExt().AllocL();
       
  1055         }
       
  1056     // BMP
       
  1057     else if( aMimeType.CompareC( KBmpMime )  == 0 ||
       
  1058              aMimeType.CompareC( KBmpMime2 ) == 0 ||
       
  1059              aMimeType.CompareC( KBmpMime3 ) == 0 ||
       
  1060              aMimeType.CompareC( KBmpMime4 ) == 0 ||
       
  1061              aMimeType.CompareC( KBmpMime5 ) == 0 ||
       
  1062              aMimeType.CompareC( KBmpMime6 ) == 0 ||
       
  1063              aMimeType.CompareC( KBmpMime7 ) == 0 ||
       
  1064              aMimeType.CompareC( KBmpMime8 ) == 0 ||
       
  1065              aMimeType.CompareC( KBmpMime9 ) == 0  )
       
  1066         {
       
  1067         fileExt = KBmpExt().AllocL();
       
  1068         }
       
  1069     // 3GP
       
  1070     else if( aMimeType.CompareC( KAudio3gpp ) == 0 ||
       
  1071              aMimeType.CompareC( KVideo3gpp ) == 0 ) 
       
  1072         {
       
  1073         fileExt = K3gpExt().AllocL();
       
  1074         }
       
  1075     // AMR
       
  1076     else if( aMimeType.CompareC( KAudioAMR )  == 0 )
       
  1077         {
       
  1078         fileExt = KAmrExt().AllocL();
       
  1079         }
       
  1080     // WAV
  1216     // WAV
  1081     else if( aMimeType.CompareC( KAudioWav ) == 0 ||
  1217     else if( aMimeType.CompareC( KAudioWav ) == 0 ||
  1082              aMimeType.CompareC( KAudioXWav ) == 0 ||
  1218              aMimeType.CompareC( KAudioXWav ) == 0 ||
  1083              aMimeType.FindC( KAudioL16 ) != KErrNotFound )
  1219              aMimeType.FindC( KAudioL16 ) != KErrNotFound )
  1084         {
  1220         {
  1085         fileExt = KWavExt().AllocL();
  1221         *aFileExt = KWavExt().AllocL();
  1086         }
  1222         }
  1087     // Real audio    
  1223     // WMA    
  1088     else if ( aMimeType.CompareC( KRAMime8 )  == 0 )
  1224     else if( aMimeType.CompareC( KWmaMime )   == 0 ||
  1089         {
  1225              aMimeType.CompareC( KWmaMime2 )  == 0 )
  1090         fileExt = KRAExt().AllocL();
  1226         {
       
  1227         *aFileExt = KWmaExt().AllocL();
       
  1228         }
       
  1229     
       
  1230     }
       
  1231 
       
  1232 void UPnPCommonUtils::GetFileExtensionForVideoMimeTypesL(const TDesC8& aMimeType,HBufC** aFileExt)
       
  1233     {
       
  1234     // MPEG4    
       
  1235     if( aMimeType.CompareC( KMpeg4Mime )  == 0 )
       
  1236         {
       
  1237         *aFileExt = KMpeg4Ext().AllocL();
       
  1238         }
       
  1239     // MP4        
       
  1240     else if( aMimeType.CompareC( KMp4Mime )  == 0 ||
       
  1241              aMimeType.CompareC( KMp4Mime2 ) == 0 ||
       
  1242              aMimeType.CompareC( KMp4Mime3 ) == 0  )
       
  1243         {
       
  1244         *aFileExt = KMp4Ext().AllocL();
       
  1245         }
       
  1246     // AVI
       
  1247     else if( aMimeType.CompareC( KAviMime1 ) == 0 ||
       
  1248              aMimeType.CompareC( KAviMime2 ) == 0 ||
       
  1249              aMimeType.CompareC( KAviMime3 ) == 0 ||
       
  1250              aMimeType.CompareC( KAviMime4 ) == 0 ||
       
  1251              aMimeType.CompareC( KAviMime5 ) == 0 ||
       
  1252              aMimeType.CompareC( KAviMime6 ) == 0 ||
       
  1253              aMimeType.CompareC( KAviMime7 ) == 0 ||
       
  1254              aMimeType.CompareC( KAviMime8 ) == 0 ||
       
  1255              aMimeType.CompareC( KAviMime9 ) == 0 )
       
  1256         {
       
  1257         *aFileExt = KAviExt().AllocL();
       
  1258         }
       
  1259     // 3GP
       
  1260     else if( aMimeType.CompareC( KAudio3gpp ) == 0 ||
       
  1261              aMimeType.CompareC( KVideo3gpp ) == 0 ) 
       
  1262         {
       
  1263         *aFileExt = K3gpExt().AllocL();
  1091         }
  1264         }
  1092     // TTS    
  1265     // TTS    
  1093     else if( aMimeType.CompareC( KVideoTts )  == 0 )
  1266     else if( aMimeType.CompareC( KVideoTts )  == 0 )
  1094         {
  1267         {
  1095         fileExt = KTtsExt().AllocL();
  1268         *aFileExt = KTtsExt().AllocL();
  1096         }
  1269         }
  1097     // WMV    
  1270     // WMV    
  1098     else if( aMimeType.CompareC( KWmvMime )  == 0 )
  1271     else if( aMimeType.CompareC( KWmvMime )  == 0 )
  1099         {
  1272         {
  1100         fileExt = KWmvExt().AllocL();        
  1273         *aFileExt = KWmvExt().AllocL();        
  1101         }
  1274         }
  1102     return fileExt;
  1275     }
  1103     }
  1276 
  1104 
  1277 EXPORT_C HBufC8* UPnPCommonUtils::ReplaceIllegalDirNameCharactersL( 
  1105 //---------------------------------------------------------------------------
  1278                                         const TDesC8& aDirName )
  1106 // UPnPCommonUtils::FixListboxItemTextL
  1279     {
  1107 // Removes the tab character of the given text
  1280     HBufC8* replacedDirName = ReplaceIllegalFilenameCharactersL( aDirName );
  1108 // and returns a new fixed text string. 8bit version.
  1281     TPtr8 ptr( replacedDirName->Des() );
  1109 //---------------------------------------------------------------------------
  1282             
  1110 //
  1283     // In case of a dir name, if the last char is a dot, it must be
  1111 EXPORT_C HBufC8* UPnPCommonUtils::FixListboxItemTextL( const TDesC8& aText )
  1284     // replaced
  1112     {
  1285     TInt length( aDirName.Length() );
  1113     HBufC8* fixedText = HBufC8::NewLC( aText.Length() );
  1286     TChar dot( KCodeDot );
  1114     TPtr8 ptr = fixedText->Des();
  1287     if( length > 0 && ptr.LocateReverse( dot ) == length - 1 )        
  1115     ptr.Copy( aText );
  1288         {
  1116     
  1289         ptr.Replace( length - 1, 1, KUnderScore() );
  1117     UpnpString::StringReplaceInPlaceL( ptr, 
  1290         }
  1118                                        KTab(),
  1291     
  1119                                        KSpace() );   
  1292     return replacedDirName;
  1120     CleanupStack::Pop(); // Can't pop by name, name invalid now
  1293     }
  1121     return fixedText;
  1294 
       
  1295 EXPORT_C HBufC* UPnPCommonUtils::ReplaceIllegalDirNameCharactersL( 
       
  1296                                         const TDesC& aDirName )
       
  1297     {
       
  1298     HBufC8* convertedParam = NULL;
       
  1299     convertedParam = UpnpString::FromUnicodeL( aDirName );
       
  1300     CleanupStack::PushL( convertedParam );
       
  1301     
       
  1302     HBufC8* replacedDirName8 = NULL;
       
  1303     replacedDirName8 = ReplaceIllegalDirNameCharactersL( *convertedParam );
       
  1304     CleanupStack::PushL( replacedDirName8 );
       
  1305 
       
  1306     HBufC* replacedDirName16 = NULL;
       
  1307     replacedDirName16 = UpnpString::ToUnicodeL( *replacedDirName8 );
       
  1308     
       
  1309     // Clean up
       
  1310     CleanupStack::PopAndDestroy( replacedDirName8 );
       
  1311     CleanupStack::PopAndDestroy( convertedParam );
       
  1312                                             
       
  1313     return replacedDirName16; 
  1122     }
  1314     }
  1123 
  1315 
  1124 //  End of File
  1316 //  End of File