diff -r 000000000000 -r b497e44ab2fc syncmlfw/ds/settings/inc/NSmlProfileContentHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/ds/settings/inc/NSmlProfileContentHandler.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,310 @@ +/* +* 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 "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: XML parser call back implementation to read profile setting from xml file +* +*/ + + + +#ifndef __NSmlProfileContentHandler_H +#define __NSmlProfileContentHandler_H + +// INCLUDES +#include +#include +#include //JIM is this needed ?? +#include "MXMLAttributes.h" +#include "MXMLContentHandler.h" + +#include "nsmldssettings.h" +//#include "nsmldsresourceprofiledefs.h" +#include +#include + +enum TDSparameterState + { + //Management operations + EProfileDisplayName, + EProfileServerURL, + EProfileIAPId, + EProfileTransportId, + EProfileSyncServerUsername, + EProfileSyncServerPassword, + EProfileServerAlertedAction, + EProfileDeleteAllowed, + EProfileHidden, + EProfileHttpAuthUsed, + EProfileHttpAuthUsername, + EProfileHttpAuthPassword, + EProfileAutoChangeIAP, + EProfileCreatorId, + EProfileServerId, + EProfileProtocolVersion, + ESyncType, + EDefaultProfile, + EAdapterImplementationId, + EAdapterServerDataSource, + EStateHandled + }; + +// CLASS DECLARATION + +/** +* Interface for SAX Parser Callback events. +* If an application (client) needs to be informed of basic parsing events, +* it implements this interface and registers an instance with the SAX parser using the SetContentHandler() method. +* The parser uses the instance to report basic document-related events like the start and end of elements. +* +* @lib ?library +* @since ?Series60_version +*/ +class CNSmlProfileContentHandler: public CBase, public MXMLContentHandler +{ +public: + + + /** + * Two-phased constructor. + */ + static CNSmlProfileContentHandler* NewL(CNSmlDSSettings* aSettings ,CNSmlProfileArray* aArray); + + static CNSmlProfileContentHandler* NewLC(); + + /** + * Destructor. + */ + virtual ~CNSmlProfileContentHandler(); + +/** +* Receive notification of the beginning of a document. +* @since ?Series60_version +* @param none +* @return none +*/ + TInt StartDocument(); + +/** +* Receive notification of the end of a document. +* @since ?Series60_version +* @param none +* @return none +*/ + TInt EndDocument(); + +/** +* Receive notification of the beginning of an element. +* @since ?Series60_version +* @param aURI: The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace +* processing is not being performed. +* @param aLocalName: The local name (without prefix), or the empty string if Namespace processing is not being +* performed. +* @param aName: The qualified name, or the empty string if qualified names are not available. +* @param aAttributeList: The attributes attached to the element. If there are no attributes, it shall be an +* empty Attributes object. +* +* @return none +*/ + TInt StartElement(TDesC& aURI, TDesC& aLocalName, TDesC& aName, MXMLAttributes *aAttributeList); + +/** +* Receive notification void ConstructL( TResourceReader& aReader, CNSmlDSSettings* aSettings );of the end of an element. +* @since ?Series60_version +* @param aURI: The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace +* processing is not being performed. +* @param aLocalName: The local name (without prefix), or the empty string if Namespace processing is not being +* performed. +* @param aName: The qualified name, or the empty string if qualified names are not available. +* @return none +*/ + TInt EndElement(TDesC& aURI, TDesC& aLocalName, TDesC& aName); + +/** +* Receive notification of the start of a CDATA section. +* The contents of the CDATA section will be reported through the Characters() event. +* @since ?Series60_version +* @param none. +* @return none. +*/ + TInt StartCDATA(); + +/** +* Receive notification of the end of a CDATA section. +* @since ?Series60_version +* @param none. +* @return none. +*/ + TInt EndCDATA(); + +/** +* Receive notification of character data inside an element. +* @since ?Series60_version +* @param aBuff: The characters. +* @param aStart: The start position in the character buffer. +* @param aLength: The number of characters to use from the character buffer. +* @return none +*/ + TInt Charecters(TDesC& aBuf, TInt aStart, TInt aLength); + +/** +* Receive notification of XML comment. +* @since ?Series60_version +* @param aComment: Buffer containing the comment. +* @return none +*/ + TInt Comment(TDesC& aComment); // JIM might need start and end index as params. + +/** +* Receive notification of a processing instruction +* @since ?Series60_version +* @param aTarget: The processing instruction target. +* @param aData: The processing instruction data, or null if none is supplied. +* @return none +*/ + TInt ProcessingInstructions(TDesC& aTarget, TDesC& aData); + +/** +* Receive notification of ignorable whitespace in element content. +* @since ?Series60_version +* @param aString: The whitespace characters. +* @return none +*/ + TInt IgnoreWhiteSpace(TDesC& aString); // JIM might need start and end index as params. + +/** +* Receive notification of beginning of some internal and external XML entities. +* @since ?Series60_version +* @param aName: The name of the entity. +* @return none +*/ + TInt StartEntity(TDesC& aName); + +/** +* Receive notification of end of XML entities. +* @since ?Series60_version +* @param aName: The name of the entity. +* @return none +*/ + TInt EndEntity(TDesC& aName); + +/** +* Receive notification of a skipped entity. +* @since ?Series60_version +* @param aName: The name of the skipped entity. +* @return none +*/ + TInt SkippedEntity(TDesC& aName); + +/** +* Receive notification of error situation during parsing. +* @since ?Series60_version +* @param aErrorCode: Error status code. +* @param aSeverity: Error Severity. +* @return none. +*/ + TInt Error(TInt aErrorCode, TInt aSeverity); + +/** +* Create a content type +* @param none +* @return none. +*/ + void CreateContentTypeL(); + +/** +* Check whether a content type is already created for the same profile +* @param adapter ID +* @return ETrue/EFalse. +*/ + TBool IsContentAdded(TInt aAdapter); + +/** +* Convert XML value to a valid server alert type +* @param TInt xml value +* @return TSmlServerAlertedAction type +*/ + TSmlServerAlertedAction ServerAlertType(TInt aType); + +/** +* Convert XML value to a valid sync type +* @param xml value +* @return TSmlSyncType type +*/ + TSmlSyncType SyncType(TDesC& aBuf); + +/** +* Get the resolved access point ID for a string entered in XML +* @param xml value +* @return TInt access point ID +*/ + TInt AccessPointIdL(TDesC& aBuf); + +/** +* Check mandatory settings for content defention +* @param none +* @return ETrue/EFalse +*/ + TBool CheckXMLContentSetting(); + +/** +* Configure visibility based on value entered in xml +* @param value +* @return none +*/ + void SetVisibility(TInt aValue); + +/** +* Configure visibility based on value entered in xml +* @param value +* @return none +*/ + + void SetServerURL(TDesC &aBuf); + +protected: + + CNSmlProfileContentHandler(); + + + private: + void ConstructL(CNSmlDSSettings* aSettings ,CNSmlProfileArray* aArray); + +private: + + // List of attributes +// CXMLAttributes *iAttr; + RFile iFile; + RFs iSession; + TBuf<255> ifilename; + TLex16 iLex; + + TDSparameterState iState; + TInt iCounter; + TInt iContentCounter; + + TBool iDSSettingInProgress; + TBool iDSContentInProgress; + + TBool iInvalidContent; + + CNSmlDSSettings* iSettings; + CArrayFixFlat* iSyncTypeArray; + CArrayPtrFlat* iCustomProfileArray; + CArrayPtrFlat* iContentArray; + +}; + + +#endif // __NSmlProfileContentHandler_H + +// End of File