pushmtm/Plugins/PushContentHandler/CSIContentHandler.h
changeset 51 48e827313edd
parent 37 481242ead638
child 53 f427d27b98d8
--- a/pushmtm/Plugins/PushContentHandler/CSIContentHandler.h	Tue Feb 02 00:12:41 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,436 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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:  Declaration of CSIContentHandler.
-*
-*/
-
-
-
-#ifndef __CSICONTENTHANDLER_H__
-#define __CSICONTENTHANDLER_H__
-
-
-// INCLUDE FILES
-
-#include "CPushContentHandlerBase.h"
-#include "PushContentHandlerDef.hrh"
-#include <E32Base.h>
-#include <msvstd.h>
-#include <nw_dom_attribute.h>
-#include <CharConv.h>
-
-// CONSTANTS
-
-const TUid KUidPushSIContentHandler	= { EUidPushSIContentHandler };
-_LIT(KSIContentHandlerData,"text/vnd.wap.si||application/vnd.wap.sic");
-
-// FORWARD DECLARATIONS
-
-class CSIPushMsgEntry;
-
-// CLASS DECLARATION
-
-/** 
-* CSIContentHandler handles Service Indication content  
-*
-* This handler takes ownership of the SI message and processes it
-* according to the Reception rules 
-* [WAP Service Indication version 31-July-2001]
-* and either stores the message or deletes it.
-* Also S60 specific requirements are applied.
-*
-* OVERVIEW:
-*	The main body of this class and its functionality lies within
-*	HandleMessage (asynchonous). This :
-*		1. takes ownership of the push message
-*		2. validates the message and generates a parsed document tree
-*		3. extracts the message attribute values from document tree 
-*		4. processes the received message
-*		5. finishes
-*
-* NB: A received message with no creation date will be stored (unless 
-* its action is set to delete or the expiry condition is met). This 
-* means that the si-id in the message store will not be unique.
-*/
-class CSIContentHandler : public CPushContentHandlerBase
-	{
-    public: // Constructors and destructor
-
-        /**
-        * Two-phased constructor. Leaves on failure.
-        * @return The constructed object.
-        */
-	    static CSIContentHandler* NewL();
-
-        /**
-        * Destructor.
-        */
-	    virtual ~CSIContentHandler();
-
-    private: // Constructors
-
-        /**
-        * Constructor.
-        */
-	    CSIContentHandler();
-
-        /**
-        * Symbian OS constructor.
-        */
-	    void  ConstructL();
-
-    private: // New functions
-
-        /**
-        * Do Garbage Collection synchronously.
-        * @return None.
-        */
-	    void  CollectGarbageL();
-
-        /**
-        * Parse the current message. If the SI is wbxml encoded then it is 
-        * decoded first to XML format. Then the message details (attributes) 
-        * are earned from the XML tree.
-        * @return None.
-        */
-	    void  ParsePushMsgL();
-
-        /**
-        * Parse the indication element.
-        * @param aIndication The element to be parsed.
-        * @return None.
-        */
-	    void  ParseIndicationL( NW_DOM_ElementNode_t& aIndication );
-
-        /**
-        * Parse an attribute of the indication element.
-        * @param aAttrHandle The attribute to be parsed.
-        * @return None.
-        */
-	    void  ParseIndAttributeL( NW_DOM_AttributeHandle_t& aAttrHandle );
-
-        /**
-        * Parse the text of the indication element.
-        * @param aTextNode The text node to be parsed.
-        * @return None.
-        */
-	    void  ParseTextL( NW_DOM_TextNode_t& aTextNode );
-
-
-        /**
-        * Converts the given buffer to unicode (UCS-2).
-        * @param aSrc Source text.
-        * @param aCharSetId Character set ID.
-        * @return The UCS-2 unicode buffer.
-        */
-	    HBufC16*  ConvertToUnicodeL( const TDesC8& aSrc, TUint aCharSetId );
-
-        /**
-        * Converts the given buffer to unicode (UCS-2).
-        * @param aString Source text.
-        * @param aCharEncoding Character encoding.
-        * @return The UCS-2 unicode buffer.
-        */
-	    HBufC16*  ConvertToUnicodeL( NW_String_t& aString, NW_Uint32 aCharEncoding );
-
-        /**
-        * Initialise the converter. 
-        * @return None.
-        */
-        void InitialiseCharacterSetConverterL();
-
-
-        /**
-        * Convert the action string to a representative numeric value to 
-        * facilitate storing the message.
-        * @param aActionString The attribute value indicating the action level 
-        *        eg 'signal-high'
-        * @return TUint: a value representing the action type.
-        */
-	    TUint ConvertActionString( const TDesC8& aActionString ) const;
-
-        /**
-        * The entry fields are set to the correct values.
-        * @return None.
-        */
-	    void  SetSIPushMsgEntryFieldsL( CSIPushMsgEntry& aSIPushMsgEntry );
-
-        /**
-        * Do the final processing of the message according to the OMA and S60 
-        * requirements.
-        * @return None.
-        */
-	    void  ProcessingPushMsgEntryL();
-
-        /**
-        * Store the new message to Messaging.
-        * @param aMatchingEntryId ID of the matching SI entry.
-        * @return None.
-        */
-	    void StoreSIMessageL( TMsvId aMatchingEntryId );
-
-        /**
-        * Handle message order reception.
-        * NB: A received message with no creation date will be stored (unless 
-        * its action is set to delete or the expiry condition is met). This 
-        * means that the si-id in the message store will not be unique.
-        * @param aMatchingEntryId ID of the matching SI entry.
-        *        It is changed only if the function returns EFalse (replace)!
-        * @return ETrue if the entry has to be discarded.
-        */
-	    TBool HandleMsgOrderReceptionL( TMsvId& aMatchingEntryId );
-
-	    // conversion utilities
-
-        /** 
-        * Convert UTC date time into native TTime format. Method can leave.
-        * @param aDateTime The UTC string representing the date and time.
-        * @param aConvertedDate Member date variable passed in to accept 
-        *        converted UTC date as TTime varaible.
-        * @return TBool indicates if conversion successful (ETrue) or 
-        *         conversion failed (EFalse)
-        */
-	    TBool ConvertDateTimeL( const TDesC& aDateTime, 
-                                TTime& aConvertedDate ) const;
-
-        /** 
-        * Convert OPAQUE data to UTC date time as specified in SI spec.
-        * @param aOpaque OPAQUE data.
-        * @return The UTC time.
-        */
-	    HBufC* ConvertOpaqueToUtcL( const TDesC8& aOpaque ) const;
-
-        /**
-        * Check given UTC time string conforms to expected format:
-        * YYYY-MM-DDTHH:MM:SSZ and strip out formatting characters
-        * then validate the remaining characters are all digits.
-        * If validated then add TTime formating character so final
-        * string returned will be of the format YYYYMMDD:HHMMSS.
-        * @param aDateTime UTC string which is validated and returned.
-        * @return boolean: indicates if given date is valid (ETrue) 
-        *         or not (EFalse)
-        */
-	    TBool IsValidUTCTime( TDes& aDateTime ) const;
-
-        /** 
-        * Convert OPAQUE or STRING attribute to TTime.
-        * @param aAttrHandle Handle to the attribute.
-        * @param aConvertedDate The resulted TTime.
-        * @return ETrue if the conversion succeeded.
-        */
-	    TBool AttributeToTTimeL( NW_DOM_AttributeHandle_t& aAttrHandle, 
-                                 TTime& aConvertedDate ) const;
-
-	    // Attribute flags
-
-        /**
-        * Flag whether message has an action attribute
-        * @param aAction boolean to set flag to - 
-        *                ETrue for action attrib present
-        *                EFalse for no action attrib.
-        */ 
-	    inline void SetActionFlag( TBool aAction );
-
-        /**
-        * Check status of action flag to see if message has an action 
-        * attribute.
-        * @return TBool ETrue - action attribute present in message
-        *               EFalse - no action attribute.
-        */
-	    inline TBool ActionFlag() const;
-
-        /**
-        * Flag whether message has a created date attribute.
-        * @param aCreated boolean to set flag to - 
-        *                 ETrue for si-created attrib present
-        *                 EFalse for no si-created attrib
-        */ 
-	    inline void SetCreatedFlag( TBool aCreated );
-
-        /**
-        * Check status of created flag to see if message has a si-created 
-        * attribute.
-        * @return TBool ETrue - si-created attribute present in message
-        *               EFalse - no si-created attribute
-        */
-	    inline TBool CreatedFlag() const;
-
-        /**
-        * Flag whether message has a Href attribute
-        * @param aHref boolean to set flag to - 
-        *              ETrue for Href attrib present
-        *              EFalse for no href attrib
-        */ 
-	    inline void SetHrefFlag( TBool aHref );
-
-        /**
-        * Check status of href flag to see if message has an href attribute.
-        * @return TBool
-        *         ETrue - href attribute present in message
-        *         EFalse - no href attribute
-        */
-	    inline TBool HrefFlag() const;
-
-        /**
-        * Flag whether message has an expiry date attribute (si-expires).
-        * @param aExpires boolean to set flag to - 
-        *                 ETrue for si-expires present
-        *                 EFalse for no si-expires date
-        */ 
-	    inline void SetExpiresFlag( TBool aExpires );
-
-        /**
-        * Check status of flag to see if message has an expiry date attribute.
-        * @return TBool
-        *         ETrue - si-expires attribute present in message
-        *         EFalse - no si-expires attribute
-        */
-	    inline TBool ExpiresFlag() const;
-	    
-        /**
-        * Flag whether message has a si-id attribute
-        * @param aSiId boolean to set flag to - 
-        *              ETrue for si-id attrib present
-        *              EFalse for no si-id attrib
-        */ 
-	    inline void SetSiIdFlag( TBool aSiId );
-
-        /**
-        * Check status of flag to see if message has an si-id attribute.
-        * @return TBool
-        *         ETrue - si-id attribute present in message
-        *         EFalse - no si-id attribute
-        */
-	    inline TBool SiIdFlag() const;
-
-        /**
-        * Flag whether message has a Data attribute (text)
-        * @param aData
-        *        boolean to set flag to - ETrue for data attrib present
-        *                                 EFalse for no data attrib
-        */ 
-	    inline void SetDataFlag( TBool aData );
-
-        /**
-        * Check status of data flag to see if message has any data.
-        * @return TBool
-        *         ETrue - data attribute present in message
-        *         EFalse - no data attribute
-        */
-	    inline TBool DataFlag() const;
-
-    private: // Methods from CPushHandlerBase
-	    
-        /**
-        * HandleMessage Async. Version. Takes ownership of Push Message and 
-        * sets self active to continue processing message.
-        * @param aPushMsg CPushMessage to process.
-        * @param aStatus Request status variable for use in asynchronous 
-        *        operations.
-        * @return None.
-        */
-	    void HandleMessageL( CPushMessage* aPushMsg, TRequestStatus& aStatus );
-
-        /**
-        * HandleMessage Sync. Version. Takes ownership of Push Message and 
-        * sets self active to continue processing message.
-        * Initial State: Set data members then go to the next state 
-        * @param aPushMsg CPushMessage to process.
-        */
-	    void HandleMessageL( CPushMessage* aPushMsg );
-
-        /** 
-        * Same functionality as DoCancel()
-        */
-	    void CancelHandleMessage();
-
-        /**
-        * Reserved function.
-        */
-	    void CPushHandlerBase_Reserved1();
-
-        /**
-        * Reserved function.
-        */
-	    void CPushHandlerBase_Reserved2();
-
-    private: // Methods from CActive
-
-        /**
-        * Terminates any activity
-        * @return None.
-        */
-	    void DoCancel();
-
-        /**
-        * Step through the various representative states for handling a message 
-        * States:
-        *  EGarbageCollecting - Deleting expired SI msgs from messaging
-        *  EFilteringAndParsing - Filter push msg according to Service message 
-        *                settings and Parses SI push message (retrieving the 
-        *                attributes)
-        *  EProcessing - Processing the current entry. OMA and S60 rules are 
-        *                applied, then save or update SI msg in the Msg store
-        *  EDone - Clean up, complete observer
-        * @return None.
-        */
-	    void RunL();
-
-        /**
-        * This is invoked when RunL Leaves with an error so clean up and 
-        * return.
-        * @return Error code to scheduler.
-        */
-	    TInt RunError(TInt aError);
-
-    private: // Data
-
-	    enum
-            {
-            EAction = 0x01, 
-            ECreated = 0x02, 
-            EHref = 0x04, 
-            EExpires = 0x08, 
-            ESiId = 0x10, 
-            EData = 0x20
-            };
-
-	    enum TState
-            {
-            EGarbageCollecting, 
-            EFilteringAndParsing, 
-            EProcessing, 
-            EDone
-            };
-
-        TMsvId          iSavedMsgId; ///< ID of the message saved.
-	    TUint32         iAttributes; ///< Attribute indication (set or not).
-	    TInt            iPushMsgAction;	///< Action attribute
-	    HBufC*          iHrefBuf; ///< Href attribute. Has.
-	    HBufC*          iSiIdBuf; ///< Si-id attribute. Has.
-	    TTime           iExpiresTime; ///< Expiration attribute.
-	    TTime           iCreatedTime; ///< Created attribute.
-	    HBufC*          iData; ///< Message text. Has.
-
-        NW_Uint32       iCharEncoding; ///< Char encoding of the current msg.
-
-        //
-        CCnvCharacterSetConverter* iCharacterSetConverter; ///< Owned.
-        CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* iCharacterSetsAvailable; ///< Owned.
-    };
-
-#include "CSIContentHandler.inl"
-
-#endif	// __CSICONTENTHANDLER_H__
-