--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irxmlparser/inc/irxmlcontenthandler.h Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,288 @@
+/*
+* Copyright (c) 2009 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: The implementation for presentation elements.
+*
+*/
+
+
+#ifndef IRXMLCONTENTHANDLER_H
+#define IRXMLCONTENTHANDLER_H
+
+#include <contenthandler.h>
+
+class CIRAdvertisement;
+class CIRBrowseCatagoryItems;
+class CIRBrowseChannelItems;
+class CIRCacheMgmt;
+class CIRHttpResponseData;
+class CIRIsdsPreset;
+class CIROTAUpdate;
+class MIRCacheObserver;
+class MIRParserObserver;
+
+namespace Xml
+ {
+ class CParser;
+ }
+
+//constant declaration
+_LIT8(KFile,"text/xml");
+const TInt KSessionLogResponse = 5;
+
+using namespace Xml;
+
+/**
+* Parse data from xml file
+*
+* @code
+*
+* classA* ParserObserver;//class classA : public MIRParserObserver
+* classB* CacheObserver;//class classB : public MIRCacheObserver
+* CIRHttpResponseData* ResponseHeader;
+* CIRHttpResponseData* parser = CIRXMLContentHandler::
+* NewL (*ParserObserver,*CacheObserver);
+* parser->ParseXmlL(FilePath,CachePath,ResponseHeader);
+*
+* @endcode
+*
+*/
+
+class CIRXMLContentHandler : public CBase,
+ public MContentHandler
+ {
+public:
+ /**
+ * Gets the Filepath of the XML file
+ * @param aFilePath Contains the filepath of the file
+ * @return ErrorCode if the file cannot be opened
+ */
+ IMPORT_C void ParseXmlL( const TDesC& aFilePath, const TDesC& aCachePath,
+ const CIRHttpResponseData& aResponseHeaders );
+
+ /**
+ * Default Constructor
+ * @param aObserver Contains the reference to the MClass Observer
+ */
+ IMPORT_C static CIRXMLContentHandler* NewL
+ ( MIRParserObserver &aObserver, MIRCacheObserver &aCacheObserver );
+ /**
+ * Destructing the object
+ */
+ ~CIRXMLContentHandler();
+ /**
+ * This method is a callback to indicate the start of the document
+ * @param aDocParam Specifies the various parameters of the document
+ * @param aErrorCode KErrNone if successfull.
+ * @return None
+ */
+ virtual void OnStartDocumentL( const RDocumentParameters &aDocParam,
+ TInt aErrorCode );
+ /**
+ * This method is a callback to indicate the end of the document
+ * @param aErrorCode KErrNone if successfull.
+ * @return None
+ */
+ virtual void OnEndDocumentL( TInt aErrorCode );
+ /**
+ * This method is a callback to indicate an element has been parsed.
+ * @param aElement is a handle to the element's details.
+ * @param aAttributes contains the attributes for the element
+ * @param aErrorCode KErrNone if successfull.
+ */
+ virtual void OnStartElementL( const RTagInfo &aElement,
+ const RAttributeArray &aAttributes, TInt aErrorCode );
+ /**
+ * This method is a callback to indicate the end of
+ * the element has been reached.
+ * @param aElement is a handle to the element's details.
+ * @param aErrorCode KErrNone if successfull.
+ */
+ virtual void OnEndElementL( const RTagInfo &aElement, TInt aErrorCode );
+ /**
+ * This method is a callback that sends the content of the element.
+ * The data may be sent in chunks
+ * @param aBytes is the raw content data for the element.
+ * @param aErrorCode KErrNone if successfull.
+ */
+ virtual void OnContentL( const TDesC8 &aBytes, TInt aErrorCode );
+ /**
+ * This method is a notification of the beginning of the scope
+ *of a prefix-URI Namespace mapping.
+ * @param aPrefix is the Namespace prefix being declared
+ * @param aUri is the Namespace URI the prefix is mapped to
+ * @param aErrorCode KErrNone if successfull.
+ */
+ virtual void OnStartPrefixMappingL( const RString &aPrefix,
+ const RString &aUri, TInt aErrorCode );
+ /**
+ * This method is a notification of the end of the scope
+ * of a prefix-URI mapping
+ * @param aPrefix is the Namespace prefix that was mapped.
+ * @param aErrorCode KErrNone if successfull.
+ */
+ virtual void OnEndPrefixMappingL( const RString &aPrefix, TInt aErrorCode );
+ /**
+ * This method is a notification of ignorable whitespace in element content.
+ * @param aBytes are the ignored bytes from the document being parsed..
+ * @param aErrorCode KErrNone if successfull.
+ */
+ virtual void OnIgnorableWhiteSpaceL( const TDesC8 &aBytes, TInt aErrorCode );
+ /**
+ * This method is a notification of a skipped entity
+ * @param aName is the name of the skipped entity.
+ * @param aErrorCode KErrNone if successfull.
+ */
+ virtual void OnSkippedEntityL( const RString &aName, TInt aErrorCode );
+ /**
+ * This method is a receive notification of a processing instruction.
+ * @param aTarget is the processing instruction target.
+ * @param aData is the processing instruction data.
+ * If empty none was supplied..
+ * @param aErrorCode KErrNone if successfull.
+ */
+ virtual void OnProcessingInstructionL( const TDesC8 &aTarget,
+ const TDesC8 &aData, TInt aErrorCode );
+ /**
+ * This method indicates an error has occurred.
+ * @param aErrorCode contains the errorcode.
+ */
+ virtual void OnError( TInt aErrorCode );
+ /**
+ * This method obtains the interface matching the specified uid.
+ * @param aUid the uid identifying the required interface
+ * @return 0 if no interface matching the uid is found.
+ * Otherwise, the this pointer cast to that interface
+ */
+ virtual TAny *GetExtendedInterface( const TInt32 aUid );
+ /**
+ * This method maps the errorcode
+ * @param aError conatins the errorcode
+ * @return the type of the error
+ */
+ TInt ParseError( TInt aError );
+ /**
+ * This method stringpool handle
+ * @param aError conatins the errorcode
+ * @return the type of the error
+ */
+ RStringPool& StringPool ();
+
+ void ResetValues();
+
+protected:
+
+ /**
+ * Default Constructor
+ * @param aObserver Contains the reference to the MClass Observer
+ */
+ CIRXMLContentHandler( MIRParserObserver &aObserver,
+ MIRCacheObserver &aCacheObserver );
+
+ /**
+ * Two-Phase Constructor
+ */
+ void ConstructL();
+
+ private :
+
+ // Buffer for the URL
+ HBufC* iBufGetOperation;
+
+ // Buffer for Size
+ HBufC* iSize;
+
+ // Count of the bitrates
+ TBool iIRID;
+
+ TInt iBitrateCounter;
+
+ // Indicating for Channels/Preset
+ TInt iFlag;
+
+ // Indicating for Channels
+ TInt iChannelFlag;
+
+ // Bool Value to indicate the class
+ TBool iPresets;
+ TBool iCategories;
+ TBool iCat;
+ TBool iChannels;
+ TBool iChan;
+ TBool iAdvertisement;
+ TBool iOTAUpdate;
+ TBool iTimeStamp; //checks the header has a time stamp
+ TInt iEOD;
+ // Pointer to the PresetData
+ CIRIsdsPreset *iPreset;
+
+ // Pointer to the CategoryData
+ CIRBrowseCatagoryItems *iCategory;
+
+ // Pointer to the ChannelData
+ CIRBrowseChannelItems *iChannel;
+
+ // Pointer to the Advertisement
+
+ CIRAdvertisement *iAdv;
+
+ //! An Handle to Stringpool
+
+ RStringPool iStringPool;
+
+ //! Reference to the CallBack Class
+
+ MIRParserObserver& iParseObserver;
+
+ CParser* iParser;
+
+ //Caching
+ CIRCacheMgmt *iCache;
+
+ MIRCacheObserver &iCacheObserver;
+
+ TBuf<256> iFileToCache;
+
+ // For Advertisement
+ TBool iAdvts;
+ TBool iAdvertisementTagFlag;
+ HBufC* iUrlContentForAds; //to store the content of the tag
+
+
+
+public:
+
+ // Count of the bitrates
+
+ TBuf<30> iRID;
+
+ // Array of Pointers to PresetClass
+
+ CArrayPtrFlat<CIRIsdsPreset>* iPtrPreset;
+
+ // Array of Pointers to CategoryClass
+
+ CArrayPtrFlat<CIRBrowseCatagoryItems>* iPtrCategory;
+
+ // Array of Pointers to BrowseCategoryClass
+
+ CArrayPtrFlat<CIRBrowseChannelItems>* iPtrChannel;
+ // Pointer to the OTAUpdate
+
+ CIROTAUpdate *iOTA;
+
+
+
+};
+
+#endif //IRXMLCONTENTHANDLER_H