email/emailnotificationhandler/inc/EMNXMLContentHandler.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/emailnotificationhandler/inc/EMNXMLContentHandler.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2005 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: Extracts needed attributes from received EMN message.
+*		
+*
+*/
+
+
+
+#ifndef EMNXMLCONTENTHANDLER_H
+#define EMNXMLCONTENTHANDLER_H
+
+#include <xml/contenthandler.h>
+#include <xml/wbxmlextensionhandler.h>
+#include <AlwaysOnlineManagerCommon.h>
+
+#include "EMNHandler.h" // For common EMN error codes
+
+using namespace Xml;
+
+/*
+* This class extracts needed attributes from received EMN message, which can
+* be either in XML or in WBXML form.
+*
+*  @since S60 v3.1
+*/
+class CEMNXMLContentHandler : 
+    public CBase, 
+    public MWbxmlExtensionHandler, 
+    public Xml::MContentHandler
+	{
+
+    public:
+        /**
+        * Creates object from CEMNXMLContentHandler
+        * @since S60 v3.1
+        * @return, Constructed object
+        */
+        static CEMNXMLContentHandler* NewL( 
+            TEMNElement& aElement, TBool aIsAscii );
+            
+        /**
+        * Creates object from CEMNXMLContentHandler and leaves it to 
+        * cleanup stack
+        * @since S60 v3.1
+        * @return, Constructed object
+        */
+        static CEMNXMLContentHandler* NewLC( 
+            TEMNElement& aElement, TBool aIsAscii );
+        
+        /**
+        * Destructor
+        * @since S60 v3.1
+        */
+        virtual ~CEMNXMLContentHandler();
+        
+        /**
+        * Symbian 2-phase constructor
+        * @since S60 v3.1
+        */
+        void ConstructL();
+    
+    public: // Following public functions are all from MContentHandler
+    	
+    	void OnStartDocumentL(
+    	    const RDocumentParameters& aDocParam, TInt aErrorCode );
+    	    
+    	void OnEndDocumentL( TInt aErrorCode );
+    	
+    	void OnStartElementL(
+    	    const RTagInfo& aElement, 
+    	    const RAttributeArray& aAttributes,
+    	    TInt aErrorCode );
+    	    
+    	void OnEndElementL( const RTagInfo& aElement, TInt aErrorCode );
+    	
+    	void OnContentL( const TDesC8& aBytes, TInt aErrorCode );
+    	
+    	void OnStartPrefixMappingL( 
+    	    const RString& aPrefix, 
+    	    const RString& aUri, 
+    	    TInt aErrorCode );
+    	    
+    	void OnEndPrefixMappingL(
+    	    const RString& aPrefix, 
+    	    TInt aErrorCode );
+    	    
+    	void OnIgnorableWhiteSpaceL(
+    	    const TDesC8& aBytes, 
+    	    TInt aErrorCode );
+    	    
+    	void OnSkippedEntityL(
+    	    const RString& aName, 
+    	    TInt aErrorCode );
+    	    
+    	void OnProcessingInstructionL(
+    	    const TDesC8& aTarget, 
+    	    const TDesC8& aData, 
+    	    TInt aErrorCode );
+    	    
+    	void OnError( TInt aErrorCode );
+    	
+    	TAny* GetExtendedInterface( const TInt32 aUid );
+
+    public: // From MWbxmlExtensionHandler
+	    
+	    void OnExtensionL( 
+	        const RString& aData, 
+	        TInt aToken, 
+	        TInt aErrorCode );
+	    
+    private:
+        /**
+        * Default constructor for class CEMNXMLContentHandler
+        * @since S60 v3.1
+        * @return, Constructed object
+        */
+    	CEMNXMLContentHandler( TEMNElement& aElement, TBool aIsAscii );
+    	
+    	/**
+    	* Extracts given attribute from XML message.
+    	* @param aAttributeName8 name of the attribute (8-bit)
+    	* @param aAttributeValue8 value of the attribute (8-bit)
+    	* @since S60 v3.1
+    	*/
+    	void HandleXMLAttributesL( 
+    	    const TDesC8& aAttributeName8, const TDesC8& aAttributeValue8 );
+
+    	/**
+    	* Extracts given attribute from WBXML message.
+    	* @param aAttributeName8 name of the attribute (8-bit)
+    	* @param aAttributeValue8 value of the attribute (8-bit)
+    	* @since S60 v3.1
+    	*/
+    	void HandleWBXMLAttributesL( 
+    	    const TDesC8& aAttributeName8, const TDesC8& aAttributeValue8 );
+
+    private:
+        // Contains mailbox and timestamp
+        TEMNElement&    iElement;
+        // Is message XML or WBXML
+        TBool           iIsAscii;
+        // Mandatory attribute: mailbox
+        TBool           iFoundMailboxAttribute;
+    };
+    
+#endif  // EMNXMLCONTENTHANDLER_H