messagingapp/msgutils/unidatautils/unidatamodel/inc/ConformanceChecker.h
changeset 25 84d9eb65b26f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgutils/unidatautils/unidatamodel/inc/ConformanceChecker.h	Mon May 03 12:29:07 2010 +0300
@@ -0,0 +1,188 @@
+/*
+* Copyright (c) 2003 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: 
+*
+*/
+
+
+
+#ifndef CONFORMANCECHECKER_H
+#define CONFORMANCECHECKER_H
+
+
+//  INCLUDES
+#include <e32base.h>
+#include <e32std.h>
+
+#include <gmxmldocument.h>
+#include <gmxmlelement.h>
+
+
+// CONSTANTS
+_LIT(KMetaTag,"meta");
+_LIT(KPercent,"%");
+_LIT(KPx,"px");
+_LIT(KMs,"ms");
+_LIT(KImage,"Image");
+_LIT(KText,"Text");
+
+const TInt KUSAsciiMinCode = 0;
+const TInt KUSAsciiMaxCode = 127;
+
+//Type for the version of the Conformance Document
+enum TMmsSmilVersion
+	{
+	EMmsSmil_v2_0=2,
+	EMmsSmil_v3_0
+	};
+
+
+enum TFlags
+	{
+	EAllowVideoTag=1,				//Allowing  video tag as media
+	EAllowAllAttributes=2,			//Not checking the attribute name of the elements
+	EAllowNonMilliseconds=4,		//Allows other  timing specifications then 'ms' (e.g. 's')
+	EAllowNonUsAscii=8,				//Allows other  than us-ascii values for src attribute
+									//for media elements
+	EAllowMixedRegionDimensions=16,	//Allows mixed region dimensions (pixel and percent)
+	EAllowSeqTag=32,				//Allows one <seq> tag right after the <body> tag
+	EAllowAnyRegionNames=64			//Allows any name for the regions
+	};
+
+
+
+// CLASS DECLARATION
+
+/**
+*  Class for checking the the content of a DOM tree against the Conformance Document.
+*  (Checking legacy content.)
+*
+*  @lib smileng.lib
+*  @since 2.0
+*/
+class CConformanceChecker : public CBase
+	{
+
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+		* @param aStrict - value of the checking mode flag
+        */
+        IMPORT_C static CConformanceChecker* NewL();
+
+        /**
+        * Destructor.
+        */
+        ~CConformanceChecker();
+
+    public: // New functions
+
+        /**
+	    * Checks if the DOM tree's content is legacy content or not.
+        * @param aXmldoc - the root of the DOM tree
+		* @aVersion - the version of the Conformance Document
+		* @aFlags - the flags to gide the checking (combination of TFlags values)
+        * @return - true if the content is legacy
+				  - false  if the content is not legacy
+        */
+        TBool Check(CMDXMLDocument* aXmldoc, TMmsSmilVersion aVersion, TInt aFlags);
+
+    private:
+
+		/** Checks the structure of the head element: allowed to contain only layout and meta element
+		* @param aHead - the root of head subtree
+		* @param aStrict - flag for checking mode (true strict checking, false loose checking)
+		* @return  - true - if head has legacy structure
+		*		   - false - otherwise
+		*/
+		TBool CheckHeadStructure(CMDXMLNode* aHead);
+
+
+		/** Checks the structure of the body element:
+								- allowed to contain only par elements
+		*						(one including seq element right after the body is allowed)
+		* @param aBody - the root of body subtree
+		* @return  - true - if body has legacy structure
+		*		   - false - otherwise
+		*/
+		TBool CheckBodyStructure(CMDXMLNode* aBody);
+
+
+		/** Checks the content of the layout element
+		*						- root-layout and max. 2 region elements are allowed
+		* @param aLayout - the root of layout subtree
+		* @return  - true - if layout has legacy content
+		*		   - false - otherwise
+		*/
+		TBool CheckLayoutContent(CMDXMLNode* aLayout);
+
+
+		/** Checks the content of the body element
+		* @param aBody - the root of body subtree
+		* @return - true - if body has legacy content
+		*		  - false - otherwise
+		*/
+		TBool CheckBodyContent(CMDXMLNode* aBody);
+
+
+		/** Checks the content of the par element
+		* @param aPar - the root of par subtree
+		* @return  - true - if par has legacy content
+		*		   - false - otherwise
+		*/
+		TBool CheckParContent(CMDXMLNode* aPar);
+
+
+		/** Checks if  a descriptor is ending with 'ms'
+		* @param aValue - value to check
+		* @return  - true if the ending is ms
+		*		   - false otherwise
+		*/
+
+		TBool IsInMilliseconds(TDesC& aValue) const;
+
+
+		/** Checks if the given value is ending with percent or pixel
+		* and if this is conforming to the already set pixel and percent values.
+		* @param aValue - value to check,
+		*				- should be the value of 'width', 'height', 'top', 'left'
+		*				   attributes for a region
+		* @param aPercent - true if the value should end with percent
+		* @param aPixel - true if the value should be in pixel
+		* @return  true - if the value is not mixed (regarding aPercent,aPixel)
+		*		   false - if mixed
+		*/
+		TBool CheckMixedRegionAttribute(TDesC& aValue,TBool& aPercent,TBool& aPixel) const;
+
+		/** Checks if the given value is exactly "Image" or "Text" and if it
+		* is duplicated (checking the transmitted boolean parameters).
+		* @param aValue - value to check,
+		* @param aFoundImage - true if the "Image" value will be duplicate
+		* @param aFoundText - true if the "Text" value will be duplicate
+		* @return  true - if the value is "Image" or "Text" and it's not duplicated
+		*		   false - otherwise
+		*/
+		TBool CheckRegionNames(TDesC& aValue,TBool& aFoundImage,TBool& aFoundText) const;
+
+
+    private:    // Data
+
+
+		TInt iFlags; //contains the flags to guide the checking
+    };
+
+#endif      // CONFORMANCECHECKER_H
+
+// End of File