--- a/srsf/vcommandmanager/src/vcxmlparser.h Thu Aug 19 09:56:14 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,537 +0,0 @@
-/*
-* Copyright (c) 2005-2007 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: Parser class for Voice Commands XML
-*
-*/
-
-
-#ifndef VCXMLPARSER_H
-#define VCXMLPARSER_H
-
-// INCLUDES
-#include <e32base.h>
-#include <contenthandler.h>
-#include <parser.h>
-
-// DATA TYPES
-
-// Enumeration that is used when saving information
-// of last found xml tag
-enum TVcXmlTagNesting
- {
- EXmlStarted = 0,
- EXmlDocument,
- EXmlFolder,
- EXmlVCommand,
- EXmlSpoken,
- EXmlWritten,
- EXmlExecutes,
- EXmlCmdlineparams,
- EXmlIcon,
- EXmlTooltip
- };
-
-// FORWARD DECLARATIONS
-class CVcResource;
-
-// CLASS DECLARATION
-
-/**
-* Observer mixin class for Voice Commands XML parser
-*
-* @lib nssvcommandmanager.exe
-*
-*/
-NONSHARABLE_CLASS( MVcXmlParserObserver )
- {
- public: // New functions
-
- /**
- * Callback when voice command data has been completely resolved.
- *
- * @param aWrittenText Voice Command text in written form
- * @param aSpokenText Voice Command text in spoken form
- * @param aTooltipText Tooltip text
- * @param aFolder Folder where Voice Command should be placed
- * in the UI
- * @param aFolderTitle String which is used in folder title pane
- * @param aParameters Command line parameters for the application
- * which is started
- * @param aIcon Icon which is used when showing the voice command
- * @param aAppId UID of the application which will be started
- * @param aAppName Name of the application which will be started
- * @param aStartImmediately ETrue if no TTS verification is needed when
- * command has been recognized
- * @param aUserCanModify ETrue if user can modify the command
- * @param aFolderIconFile Full path to the MBM file where to get the folder icon from
- * or KNullDesC if not defined
- * @param aFolderIconIndex Index of the folder icon in the aFolderIconFile.
- * or -1 if not defined
- */
- virtual void MvcxpoVoiceCommandFound( const TDesC& aWrittenText,
- const TDesC& aSpokenText,
- const TDesC& aTooltipText,
- const TDesC& aFolder,
- const TDesC& aFolderTitle,
- const TDesC& aParameters,
- TUid aIcon,
- TUid aAppId,
- const TDesC& aAppName,
- TBool aStartImmediately,
- TBool aUserCanModify,
- const TDesC& aFolderIconFile,
- TInt aFolderIconIndex
- ) = 0;
-
- };
-
-
-/**
-* Parser class for Voice Commands XML
-*
-* @lib nssvcommandmanager.exe
-*
-*/
-NONSHARABLE_CLASS( CVcXmlParser ) : public CBase, public Xml::MContentHandler
- {
- public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- */
- static CVcXmlParser* NewL( RFs& aRFs, MVcXmlParserObserver& aObserver );
-
- /**
- * Destructor.
- */
- virtual ~CVcXmlParser();
-
- public: // New functions
-
- /**
- * Parses one XML file
- *
- * @param aFileName XML file name
- */
- void ParseFileL( const TFileName& aFileName );
-
-
-
- public: // From Xml::MContentHandler
-
- /**
- This method is a callback to indicate the start of the document.
- @param aDocParam Specifies the various parameters of the document.
- @param aDocParam.iCharacterSetName The character encoding of the document.
- @param aErrorCode is the error code.
- If this is not KErrNone then special action may be required.
- */
- void OnStartDocumentL( const Xml::RDocumentParameters& aDocParam,
- TInt aErrorCode );
-
- /**
- This method is a callback to indicate the end of the document.
- @param aErrorCode is the error code.
- If this is not KErrNone then special action may be required.
- */
- void OnEndDocumentL( TInt aErrorCode );
-
- /**
- This method is a callback to indicate an element has been parsed.
- @param aElement is a handle to the element's details.
- @param aAttributes contains the attributes for the element.
- @param aErrorCode is the error code.
- If this is not KErrNone then special action may be required.
- */
- void OnStartElementL( const Xml::RTagInfo& aElement,
- const Xml::RAttributeArray& aAttributes,
- TInt aErrorCode );
-
- /**
- This method is a callback to indicate the end of the element has been reached.
- @param aElement is a handle to the element's details.
- @param aErrorCode is the error code.
- If this is not KErrNone then special action may be required.
- */
- void OnEndElementL( const Xml::RTagInfo& aElement, TInt aErrorCode );
-
- /**
- This method is a callback that sends the content of the element.
- Not all the content may be returned in one go. The data may be sent in chunks.
- When an OnEndElementL is received this means there is no more content to be sent.
- @param aBytes is the raw content data for the element.
- The client is responsible for converting the data to the
- required character set if necessary.
- In some instances the content may be binary and must not be converted.
- @param aErrorCode is the error code.
- If this is not KErrNone then special action may be required.
- */
- void OnContentL( const TDesC8& aBytes, TInt aErrorCode );
-
- /**
- This method is a notification of the beginning of the scope of a prefix-URI Namespace mapping.
- This method is always called before the corresponding OnStartElementL method.
- @param aPrefix is the Namespace prefix being declared.
- @param aUri is the Namespace URI the prefix is mapped to.
- @param aErrorCode is the error code.
- If this is not KErrNone then special action may be required.
- */
- void OnStartPrefixMappingL( const RString& aPrefix,
- const RString& aUri,
- TInt aErrorCode );
-
- /**
- This method is a notification of the end of the scope of a prefix-URI mapping.
- This method is called after the corresponding DoEndElementL method.
- @param aPrefix is the Namespace prefix that was mapped.
- @param aErrorCode is the error code.
- If this is not KErrNone then special action may be required.
- */
- void OnEndPrefixMappingL( const RString& aPrefix, TInt aErrorCode );
-
- /**
- This method is a notification of ignorable whitespace in element content.
- @param aBytes are the ignored bytes from the document being parsed.
- @param aErrorCode is the error code.
- If this is not KErrNone then special action may be required.
- */
- void OnIgnorableWhiteSpaceL( const TDesC8& aBytes, TInt aErrorCode );
-
- /**
- This method is a notification of a skipped entity. If the parser encounters an
- external entity it does not need to expand it - it can return the entity as aName
- for the client to deal with.
- @param aName is the name of the skipped entity.
- @param aErrorCode is the error code.
- If this is not KErrNone then special action may be required.
- */
- void OnSkippedEntityL( const RString& aName, TInt aErrorCode );
-
- /**
- This method is a receive notification of a processing instruction.
- @param aTarget is the processing instruction target.
- @param aData is the processing instruction data. If empty none was supplied.
- @param aErrorCode is the error code.
- If this is not KErrNone then special action may be required.
- */
- void OnProcessingInstructionL( const TDesC8& aTarget,
- const TDesC8& aData,
- TInt aErrorCode );
-
- /**
- This method indicates an error has occurred.
- @param aError is the error code
- */
- void OnError( TInt aErrorCode );
-
- /**
- This method obtains the interface matching the specified uid.
- @return 0 if no interface matching the uid is found.
- Otherwise, the this pointer cast to that interface.
- @param aUid the uid identifying the required interface.
- */
- TAny* GetExtendedInterface( const TInt32 aUid );
-
-
- private:
-
- /**
- * C++ default constructor.
- */
- CVcXmlParser( RFs& aRFs, MVcXmlParserObserver& aObserver );
-
- /**
- * By default Symbian 2nd phase constructor is private.
- */
- void ConstructL();
-
- /**
- * Checks if attribute value equals to the expected. If no value is given, just
- * checks that the attribute exists.
- *
- * @param aAttributes List of attributes
- * @param aAttribute Name of the attribute which is searched
- * @param aValue Needed value.
- * @return ETrue if attribute was found, EFalse otherwise
- */
- TBool CheckAttributeL( const Xml::RAttributeArray& aAttributes,
- const TDesC8& aAttribute, const TDesC8& aValue = KNullDesC8 );
-
-
- /**
- * Resolves content of <nssvcommands> element.
- *
- * @param aName Element name
- * @param aAttributes Attribute list
- * @return ETrue if document tag was resolved
- */
- TBool ResolveDocumentTagL( const TDesC8& aName,
- const Xml::RAttributeArray& aAttributes );
-
- /**
- * Resolves content of <vcommandfolder> element.
- *
- * @param aName Element name
- * @param aAttributes Attribute list
- * @return ETrue if folder tag was resolved
- */
- TBool ResolveFolderTagL( const TDesC8& aName,
- const Xml::RAttributeArray& aAttributes );
-
- /**
- * Resolves content of <vcommand> element.
- *
- * @param aName Element name
- * @param aAttributes Attribute list
- * @return ETrue if vcommand tag was resolved
- */
- TBool ResolveVCommandTagL( const TDesC8& aName,
- const Xml::RAttributeArray& aAttributes );
-
- /**
- * Resolves content of <spoken> element.
- *
- * @param aName Element name
- * @param aAttributes Attribute list
- * @return ETrue if spoken tag was resolved
- */
- TBool ResolveSpokenTagL( const TDesC8& aName,
- const Xml::RAttributeArray& aAttributes );
-
- /**
- * Resolves content of <written> element.
- *
- * @param aName Element name
- * @param aAttributes Attribute list
- * @return ETrue if written tag was resolved
- */
- TBool ResolveWrittenTagL( const TDesC8& aName,
- const Xml::RAttributeArray& aAttributes );
-
- /**
- * Resolves content of <tooltip> element.
- *
- * @param aName Element name
- * @param aAttributes Attribute list
- * @return Error code
- */
- TBool ResolveTooltipTagL( const TDesC8& aName,
- const Xml::RAttributeArray& aAttributes );
-
- /**
- * Resolves content of <executes> element.
- *
- * @param aName Element name
- * @param aAttributes Attribute list
- * @return Error code
- */
- TBool ResolveExecutesTagL( const TDesC8& aName,
- const Xml::RAttributeArray& aAttributes );
-
- /**
- * Resolves content of <cmdlineparams> element.
- *
- * @param aName Element name
- * @param aAttributes Attribute list
- * @return ETrue if commandline parameters were found correctly
- */
- TBool ResolveCmdlineparamsTag( const TDesC8& aName,
- const Xml::RAttributeArray& aAttributes );
-
- /**
- * Resolves content of <icon> element.
- *
- * @param aName Element name
- * @param aAttributes Attribute list
- * @return ETrue if icon element was found
- */
- TBool ResolveIconTagL( const TDesC8& aName,
- const Xml::RAttributeArray& aAttributes );
-
- /**
- * Destroys the data of one voice command folder.
- */
- void ResetVCommandFolder();
-
- /**
- * Destroys the data of one voice command.
- */
- void ResetVCommandInfo();
-
- /**
- * Checks that all mandatory data is found for one voice command.
- */
- void CheckVoiceCommmandData();
-
- /**
- * Reads localized string from loc file based on locindex attribute
- *
- * @param aAttributes Attribute list
- * @param aAttributeName Name of the loc index attribute
- * @return Error code
- */
- TBool GetLocalizedStringL( const Xml::RAttributeArray& aAttributes,
- const TDesC8& aAttributeName );
-
- /**
- * Reads uid attribute and constructs TUid
- *
- * @params aAttributes List of XML attributes
- * @return Parsed UID
- */
- TUid ResolveUidL( const Xml::RAttributeArray& aAttributes );
-
- /**
- * Reads exe attribute and constructs exe file name
- *
- * @params aAttributes List of XML attributes
- * @return Error code
- */
- TBool ResolveExeL( const Xml::RAttributeArray& aAttributes );
-
- /**
- * Reads the iconfile attribute and constructs the file name or
- * sets it to NULL
- *
- * @params aAttributes List of XML attributes
- * @return ETrue if resolved successfully, EFalse otherwise
- */
- TBool ResolveFolderIconFileL( const Xml::RAttributeArray& aAttributes );
-
- /**
- * Reads the iconindex attribute and stores the index or sets it to 0
- *
- * @params aAttributes List of XML attributes
- * @return parsed index if any. -1 if there is no icon index
- */
- TInt ResolveFolderIconIndexL( const Xml::RAttributeArray& aAttributes );
-
- /**
- * Common function to resolve content of all elements which contain localized data.
- *
- * @param aName Element name
- * @param aAttributes Attribute list
- * @param aExpectedName Expected element name
- * @param aTagEnum Enum value equal to tag name
- * @param aAttributeName name of the attribute which contains loc index
- * @return Error code
- */
- TBool ResolveLocalizedTagL( const TDesC8& aName, const Xml::RAttributeArray& aAttributes,
- const TDesC8& aExpectedName, TVcXmlTagNesting aTagEnum );
-
-
-
- /**
- * Tries to find matching element name from the attribute list.
- *
- * @param aName Element name
- * @param aAttributes Attribute list
- * @return Found attribute as a 16-bit descriptor
- */
- const TDesC& Find16ValueL( const TDesC8& aName,
- const Xml::RAttributeArray& aAttributes );
-
- /**
- * Tries to find matching element name from the attribute list.
- *
- * @param aName Element name
- * @param aAttributes Attribute list
- * @return Found attribute as a 8-bit descriptor
- */
- const TDesC8& Find8ValueL( const TDesC8& aName,
- const Xml::RAttributeArray& aAttributes );
-
- /**
- * Converts given string to lowercase
- *
- * @param aString String to convert
- * @return Converted string
- */
- HBufC8* ToLowercaseLC( const TDesC8& aString );
-
- /**
- * Pops the last element from XML stack if aTagName and aExpectedTag are equal
- *
- * @param aTagName Tag name which was found in XML file
- * @param aExpectedTag Tag which was expected
- */
- void PopFromStackIfFoundL( const TDesC8& aTagName, const TDesC8& aExpectedTag );
-
- private: // Data
-
- // Callback observer
- MVcXmlParserObserver& iObserver;
-
- // Currently open localization resource file
- CVcResource* iResource;
-
- // String read from localization resource file
- HBufC* iCurrentLocalizedString;
-
- // Stack of XML elements
- RArray<TVcXmlTagNesting> iXmlNesting;
-
- // Data for one Voice Command
- // Text shown on screen
- HBufC* iWrittenText;
-
- // Text which will be trained, if KNullDesC then iWrittenText will be trained
- HBufC* iSpokenText;
-
- // Icon
- TUid iIcon;
-
- // Text of the tooltip
- HBufC* iTooltipText;
-
- // Folder name, if it does not exist, then it will be created
- // If NULL then "root" will be used
- HBufC* iFolder;
-
- // Title pane text for folder
- HBufC* iFolderTitle;
-
- HBufC* iFolderIconFile;
-
- TInt iFolderIconIndex;
-
- // UID of the application which will be started when this voice command has been recognized
- TUid iAppId;
-
- // Name of the application which will be started when this voice command has been recognized
- HBufC* iAppName;
-
- // Command line parameters for the application which will be started
- HBufC* iParameters;
- HBufC8* iParameters8;
-
- // TTS feedback & adaptation of the recognition result on/off
- TBool iStartImmediately;
-
- // Can user modify?
- TBool iUserCanModify;
-
- // Value for attribute
- HBufC* iAttributeValue;
-
- // XML Parser
- Xml::CParser* iParser;
-
- // File system handle
- RFs& iRFs;
- };
-
-#endif // VCXMLPARSER_H
-
-// End of File