diff -r 000000000000 -r 96612d01cf9f videofeeds/provisioningprocessor/inc/CIptvPPContentHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/provisioningprocessor/inc/CIptvPPContentHandler.h Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,439 @@ +/* +* Copyright (c) 2004-2008 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: +* +*/ + + + + +#ifndef CIPTVPPCONTENTHANDLER_H +#define CIPTVPPCONTENTHANDLER_H + +#include +#include +#include "IptvEngineUids.h" + +const TInt KMaxLanguageCodeStringLength = 5; +const TInt KIptvProtocolLength = 15; + +class CIptvProvisioningProcessor; +class CIptvService; +class CIptvServices; + +using namespace Xml; + +class CIptvPPContentHandler : public CBase, + public MContentHandler + { + +public: + + /** + * Two-phased constructor. + * @param + */ + static CIptvPPContentHandler* NewL( + CIptvProvisioningProcessor& aProcessor, + const RFs& aFs ); + + /** + * Destructor. + */ + ~CIptvPPContentHandler(); + + /** + * Reset content handler. + */ + void Reset(); + + /** + * Set mode. + */ + void SetMode( TBool aLocal ); + + /** + * Set services array. + */ + void SetServicesArray( CIptvServices* aServices ); + + /** + * Get error code. + */ + TInt GetError() const { return iError; }; + +// From 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 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 RTagInfo& aElement, + const 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 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: // New functions + + /** + * C++ default constructor. + */ + CIptvPPContentHandler( + CIptvProvisioningProcessor& aProcessor, + const RFs& aFs ); + + /** + * Add service. + */ + void AddServiceL(); + + /** + * Checks if input string includes only number characters. + * + * @param aString Input string. + * @return ETrue if string includes only number characters. + */ + TBool HasOnlyNumbers( const TDesC& aString ) const; + + /** + * Get service type. + */ + void GetServiceTypeL( const RAttributeArray& aAttributes ); + + /** + * Get language code + */ + void GetLanguageCode( const RAttributeArray& aAttributes ); + + /** + * Set service type. + */ + void SetServiceTypeL( const TDesC& aServiceType ); + + /** + * Complete title. + */ + void CompleteTitleL(); + + /** + * Complete description. + */ + void CompleteDescriptionL(); + + /** + * Complete service group Id. + */ + void CompleteGroupIdL(); + + /** + * Complete use category. + */ + void CompleteUseCategoryL(); + + /** + * Complete Uri. + */ + void CompleteUriL(); + + /** + * Complete Iap. + */ + void CompleteIapL(); + + /** + * Complete Username. + */ + void CompleteUsernameL(); + + /** + * Complete password. + */ + void CompletePasswordL(); + + /** + * Complete account mgmt uri. + */ + void CompleteAccountMgmtUri(); + + /** + * Complete icon Uri. + */ + void CompleteIconUrlL(); + + /** + * Complete icon path. + */ + void CompleteIconPathL(); + + /** + * Complete upload provider. + */ + void CompleteUploadProvider(); + + /** + * Complete application UID. + */ + void CompleteAppUIDL(); + + /** + * Complete search uri + */ + void CompleteSearchUriL(); + + /** + * Complete record uri. + */ + void CompleteRecordUriL(); + + /** + * Set protocol. + */ + void SetProtocolL( const TDesC& aProtocol ); + + /** + * Is valid service. + * @param aError Cause for invalid service. + */ + TBool IsValidServiceL( TInt& aError ); + + /** + * Set given icon path. Whether it is drive independent filepath, + * searches correct drive and fix it + * + * @param aIconPath Icon path. + */ + void SetIconPathL( const TDesC& aIconPath ); + +private: + + /** + * Service Title state. + */ + enum TServiceTitleState + { + EIptvServiceTitleNone, + EIptvServiceTitleNormal, + EIptvServiceTitleStore + }; + + /** + * State. + */ + TInt iState; + + /** + * Service count. + */ + TInt iServiceCount; + + /** + * Reference to CIptvProvisioningProcessor. + */ + CIptvProvisioningProcessor& iProcessor; + + /** + * Pointer to service object. + * Own. + */ + CIptvService* iService; + + /** + * Local provisioning. + */ + TBool iLocal; + + /** + * Buffer. + * Own. + */ + HBufC* iBuffer; + + /** + * Servies array. + * Not own, + */ + CIptvServices* iServices; + + /** + * Error code. + */ + TInt iError; + + /** + * Language code currently in use for the device + */ + TLanguage iCurrentDeviceLanguage; + + /** + * Current language code from the xml file + */ + TBuf iCurrentLanguageCode; + + /** + * Symbian enumeration for iCurrentLanguageCode + */ + TLanguage iCurrentlyParsedDetailLanguage; + + /** + * Flag to identify if a single language data for title is set + */ + TBool iTitleLanguageDataSet; + + /** + * Flag to identify if a single language data for description is set + */ + TBool iDescriptionLanguageDataSet; + + /** + * Flag to identify if a single language data for icon URI is set + */ + TBool iIconUriLanguageDataSet; + + /** + * Service group feed indication. + */ + TBool iServiceGroupFeed; + + /** + * Grouped service indication. + */ + TUint iServiceGroupId; + + /** + * Protocol. + */ + TBuf iProtocol; + + /** + * Service Title state. + */ + TServiceTitleState iServiceTitleState; + + /** + * Icon url waiting to be saved or ignored according to title. + * Own. + */ + HBufC* iPendingIcon; + + /** + * File server session + */ + RFs iFs; + + }; + +#endif // CIPTVPPCONTENTHANDLER_H