--- /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 <e32std.h>
+#include <f32file.h>
+#include <eikenv.h> //JIM is this needed ??
+#include "MXMLAttributes.h"
+#include "MXMLContentHandler.h"
+
+#include "nsmldssettings.h"
+//#include "nsmldsresourceprofiledefs.h"
+#include <nsmldsconstants.h>
+#include <nsmlconstants.h>
+
+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<TInt>* iSyncTypeArray;
+ CArrayPtrFlat<CNSmlDSProfile>* iCustomProfileArray;
+ CArrayPtrFlat<CNSmlDSContentSettingType>* iContentArray;
+
+};
+
+
+#endif // __NSmlProfileContentHandler_H
+
+// End of File