upnpavcontroller/upnpxmlparser/inc/upnpitemtoxml.h
author samhuttu
Mon, 01 Nov 2010 12:37:49 +0200
branchnew development branch with rendering state machine and other goodies
changeset 38 5360b7ddc251
parent 0 7f85d04be362
permissions -rw-r--r--
New development branch with e.g. rendering state machine and a simple Qt example application using it.

/*
* Copyright (c) 2006-2007 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:      Generates XML from an UPNP Item
*
*/






#ifndef C_UPNPITEMTOXML_H
#define C_UPNPITEMTOXML_H

// INCLUDES
#include <e32base.h>
#include <s32mem.h>

// CONSTANTS
// None

// MACROS
// None

// FORWARD DECLARATIONS
class CUpnpItem;

/**
 * Converts an UPnP item to xml document
 *
 * @since Series 60 3.2
 * @lib upnpxmlparser.lib
 */
NONSHARABLE_CLASS( CUpnpItemToXML ) : public CBase
    {
public:  // Constructors and destructor

    /**
     * Two-phased constructor.
     *
     * @param aItem
     * @return new instance
     */
    static CUpnpItemToXML* NewL( const CUpnpItem& aItem );
    
    /**
     * Two-phased constructor.
     *
     * @param aItem
     * @return new instance
     */
    static CUpnpItemToXML* NewLC( const CUpnpItem& aItem );

    /**
     * Destructor.
     */
    virtual ~CUpnpItemToXML();


public: // Functions from CUPnPObject

    /**
     * Returns object's XML description
     * Leaves in case of errors.
     * @since Series 60 3.1
     * @param none
     * @return HBufC8 pointer to buffer containing XML data
     */
    HBufC8* AsXmlL( const TBool aIncludeChilds = ETrue );

    /**
     * Returns object's XML description. This version of the method
     * is used to create the XML with empty <res> tag
     * Leaves in case of errors.
     * @since Series 60 3.1
     * @param None
     * @return HBufC8 pointer to buffer containing XML data
     */
    HBufC8* AsXmlEmptyL();


    /**
     * CUpnpItemToXML::AsResultArgumentL
     * Returns object's XML description that is embedded inside a
     * DIDL-LITE tag. The <res> tag of xml description is empty.
     * The returned value is xml encoded can therefore be used
     * for example when creating a CreateObject action.
     * @since Series 60 3.1
     * @param none
     * @return TDesC8& the date string
     */
    HBufC8* AsResultArgumentL();

    /**
     * Creates valid XML headers to source data. Do not decode the XML.
     *
     * @since Series 60 3.1
     * @param TDesC8 reference to source data
     * @return HBufC8 buffer to valid XML
     */
    HBufC8* CreateUnDecodedXmlL( const TDesC8& aData );

private:

    /**
     * Return value from an element
     *
     * @param aElemenName (const TDesC8&) name of the element
     * @return (const TDesC8&) value of the element
     */
    const TDesC8& GetValueFromElement(
                                const TDesC8& aElementName );

    /**
     * Validates format of dc:date
     *
     * @param aDate dc:date string
     * @return ETrue if format of dc:date is valid
     */
    TBool ValidateDateL( const TDesC8& aDate );
    
    /**
     * Validates format of res@duration
     *
     * @param aDuration res@duration string
     * @return ETrue if format of res@duration is valid
     */
    TBool ValidateDurationL( const TDesC8& aDuration );
    
    /**
     * Parse to a delimeter
     *
     * @param aLexer lexer
     * @param aDelimeter delimeter character
     */
    void ParseToDelimeter( TLex8& aLex, TChar aDelimeter );    

    void FillMetaDataL(RBufWriteStream& aStream);
	
private:

    /**
     * C++ default constructor.
     */
    CUpnpItemToXML( const CUpnpItem& aItem );

    /**
     * By default Symbian 2nd phase constructor is private.
     */
    void ConstructL();

private:    // Data

    CUpnpItem*  iItem; // Not own
    };

#endif      // C_UPNPITEMTOXML_H
            
// End of File