upnpframework/upnputilities/inc/upnpcommonutils.h
author Sampo Huttunen <sampo.huttunen@nokia.com>
Wed, 24 Nov 2010 09:39:46 +0200
branchIOP_Improvements
changeset 45 a6c41ca11adf
parent 38 5360b7ddc251
permissions -rw-r--r--
Updated the SIS package, there was some BC issue with the earlier version. Also updated the platform UID to S^3 version.

/*
* Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  UPnP framework's common utility functions
*
*/


#ifndef UPNPCOMMONUTILS_H
#define UPNPCOMMONUTILS_H

//  INCLUDES
#include <e32base.h>
#include <upnpobject.h>
#include <f32file.h>

// DATA TYPES
enum TUPnPItemType
    {
    ETypeAudio = 0,
    ETypeVideo,
    ETypeImage,
    ETypePlaylist,
    ETypeOther
    };

// FORWARD DECLARATIONS
class CUpnpItem;
class CUpnpContainer;
class CUpnpContainerList;
class CUpnpAttribute;
class TInetAddr;

// CONSTANTS
// upload directory
_LIT( KUpnpUploadDirectory, "Download\\Media\\" );

// CLASS DECLARATION

/**
* UPnP Framework's common utility functions
*
* @lib upnputilities.lib
* @since S60 3.0
*/
class UPnPCommonUtils
    {

public: // Business logic methods

    /**
     * Returns status whether memory card is inserted or not.
     *
     * @since S60 3.0
     * @return TBool indicating the status of memory card
     */
    IMPORT_C static TBool MemoryCardStateL();

    /**
     * Resolves the MIME type of a file by it's content, using the 
     * platform MIME recognizer. Leaves in error cases.
     *
     * @since S60 3.0
     * @param TDesC8& file name (with full path info)
     * @return HBufC8* mime type
     */
    IMPORT_C static HBufC8* ResolveMimeTypeL(
                                const TDesC& aFileName );

    /**
     * Resolves the MIME type of a file by it's extension. Leaves in error
     * cases.
     *
     * @since S60 3.0
     * @param TDesC& const, file name (with full path info)
     * @return HBufC8* mime type
     */
    IMPORT_C static HBufC8* GetMimeTypeByExtensionL( 
                                const TDesC& aFileName );

    /**
     * Resolves the type of a file. Leaves in error cases.
     *
     * @since S60 3.0
     * @param TDesC8& file name (with full path info)
     * @return TUPnPItemType file type
     */
    IMPORT_C static TUPnPItemType ResolveFileTypeL( 
                                const TDesC& aFileName );

    /**
     * Replaces IP address and port number placeholders of the RES
     * element's URI string of the given item.
     *
     * @since S60 3.1
     * @param aItem (CUpnpItem&) the item which RES element's URI is to be
     *        updated
     * @param aAddress (const TInetAddr&) the address and port number of
     *        the updated URI
     */
    IMPORT_C static void ReplacePlaceHolderInURIL( 
                                CUpnpItem& aItem,
                                const TInetAddr& aAddress );

    /**
     * Replaces the illegal filename characters of the given filename
     * string and returns a new fixed filename string. The following
     * characters are replaced with an underscore: >, <, ", \, /, *, |, 
     * : and ?. 8bit version.
     *
     * @since S60 3.1
     * @param aFileName (const TDesC8&) filename to be checked
     * @return HBufC8* fixed filename string
     **/
    IMPORT_C static HBufC8* ReplaceIllegalFilenameCharactersL( 
                                const TDesC8& aFileName );
                    
    /**
     * Replaces the illegal filename characters of the given filename
     * string and returns a new fixed filename string. The following
     * characters are replaced with an underscore: >, <, ", \, /, *, |, 
     * : and ?. 16bit version.
     *
     * @since S60 3.1
     * @param aFileName (const TDesC&) filename to be checked
     * @return HBufC* fixed filename string
     **/
    IMPORT_C static HBufC* ReplaceIllegalFilenameCharactersL( 
                                const TDesC& aFileName );

    /**
     * Checks if the given CUpnpObject is a playlist container. Leaves if
     * the given object is not correctly formed. 
     *
     * @since S60 3.1
     * @param aContainer (const CUpnpObject&) filename to be checked
     * @return TBool
     **/
    IMPORT_C static TBool IsPlaylistContainerL( 
                                const CUpnpObject& aContainer );

    /** 
     * Return container with given title from list of containers
     *
     * @since S60 3.1
     * @param aList List containig containers to search
     * @param aTitle Title to search for
     * @return CUpnpContainer* The pointer to container, NULL if
     * not found
     **/
    IMPORT_C static CUpnpContainer* FindContainerByTitle(
        const CUpnpContainerList& aList, const TDesC8& aTitle );

    /**
     * Convert TInt to TDesC8
     * @since S60 3.1
     * @param aObject TInt to convert
     */
    IMPORT_C static HBufC8* IntToDesC8LC( const TInt& aObject );

    /**
     * Convert TDesC8 to TInt
     * @since S60 3.1
     * @param aObject Descriptor to convert
     */
    IMPORT_C static TInt DesC8ToInt( const TDesC8& aObject );
    
    /**
     * Converts TTime to UPnP date string
     *
     * @since S60 3.1
     * @param aTime time
     * @return UPnP date as a heap descriptor
     */
    IMPORT_C static HBufC* TTimeToUPnPDateL( TTime aTime );

    
    /**
     * Rename the downloaded file to %s_upnpfwtemp(%s is original filename)
     * used in play remote item on local device
     * @since S60 3.1
     *
     * @param aFilePath original file path
     * @return HBufC pointer to the new filepath
     */
    IMPORT_C static HBufC* UPnPCommonUtils::RenameFileL( const TDesC& aFilePath );
    
    /**
     * Delete upnp genereated temporary files from download locations
     * both from phone memory and memory card
     * Leave in case of fatal errors
     * @since S60 3.1
     *
     */
    IMPORT_C static void DeleteTempFilesL();


     /**
     * Checks if device supports images 
     *
     * @since S60 3.1
     * @param TDesC8& protocolinfo
     * @return TBool
     */
    IMPORT_C static TBool IsImageSupported(
                                const TDesC8& aProtocolInfo );
                                
                                
     /**
     * Checks if device supports audio 
     *
     * @since S60 3.1
     * @param TDesC8& protocolinfo
     * @return TBool
     */
    IMPORT_C static TBool IsAudioSupported(
                                const TDesC8& aProtocolInfo );
                                
                                
     /**
     * Checks if device supports video 
     *
     * @since S60 3.1
     * @param TDesC8& protocolinfo
     * @return TBool
     */
    IMPORT_C static TBool IsVideoSupported(
                                const TDesC8& aProtocolInfo );
                                
     /**
     * Return the file extension according a mime type
     *
     * @since S60 3.2
     * @param const TDesC8& mime type
     * @return file extension
     */
    IMPORT_C static HBufC* FileExtensionByMimeTypeL(
        const TDesC8& aMimeType );
    
    /**
     * Removes the tab character of the given text
     * string and returns a new fixed file title string.
     *
     * @since S60 3.2.3
     * @param aText (const TDesC8&) listboxe item text to be checked
     * @return HBufC8* fixed text string
     **/
    IMPORT_C static HBufC8* FixListboxItemTextL( 
                                const TDesC8& aText );
    
    /**
    * Returns the file type according a mime type
    *
    * @param const TDesC8& mime type
    * @return TUPnPItemType file type
    */
   IMPORT_C static TUPnPItemType FileTypeByMimeTypeL(
       const TDesC8& aMimeType );
   
   /**
    * Same as ReplaceIllegalFilenameCharactersL(), but also replaces the last
    * character by underscore if it's a dot ('.'). 8bit version.
    * 
    * @param aDirName (const TDesC8&) directory name to be checked
    * @return HBufC8* fixed directory name string
    */
   IMPORT_C static HBufC8* ReplaceIllegalDirNameCharactersL( 
       const TDesC8& aDirName );
      
   /**
    * Same as ReplaceIllegalFilenameCharactersL(), but also replaces the last
    * character by underscore if it's a dot ('.'). 16bit version.
    * 
    * @param aDirName (const TDesC&) directory name to be checked
    * @return HBufC* fixed directory name string
    */   
   IMPORT_C static HBufC* ReplaceIllegalDirNameCharactersL( 
       const TDesC& aDirName );
   
   
private:
    
    static void GetMimeTypeforImageExtensionsL( const TDesC& aExt ,HBufC8** aMimeType);
    
    static void GetMimeTypeforAudioVideoExtensionsL(  const TDesC& aExt ,HBufC8** aMimeType);
    
    static void GetMimeTypeforExtensionsL(  const TDesC& aExt ,HBufC8** aMimeType);
    
    static void GetFileExtensionForMimeTypesL(const TDesC8& aMimeType,HBufC** aFileExt);
    
    static void GetFileExtensionForImageMimeTypesL(const TDesC8& aMimeType,HBufC** aFileExt);
    
    static void GetFileExtensionForBMPandMP3MimeTypesL(const TDesC8& aMimeType,HBufC** aFileExt);
    
    static void GetFileExtensionForAudioMimeTypesL(const TDesC8& aMimeType,HBufC** aFileExt);
    
    static void GetFileExtensionForVideoMimeTypesL(const TDesC8& aMimeType,HBufC** aFileExt);
   
};


#endif  // UPNPCOMMONUTILS_H

// End of File