williamr@4: /* williamr@4: * Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: For adding content to be synchronized. williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: #ifndef __SMLDATAFORMAT_H__ williamr@4: #define __SMLDATAFORMAT_H__ williamr@4: // williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: // williamr@4: williamr@4: /** williamr@4: @publishedPartner williamr@4: williamr@4: Data Store Format. williamr@4: Used by Data Provider implementations to specify the format and capabilities of their Data Stores. williamr@4: See also SmlDataFormat.rh and SmlDataFormat.hrh for resource definitions. williamr@4: williamr@4: Used by the Sync Engine to generate SyncML DevInf. williamr@4: */ williamr@4: williamr@4: williamr@4: williamr@4: /** williamr@4: A bitmask of sync types. Used to specify sync types supported by a Data Store. williamr@4: */ williamr@4: class TSmlSyncTypeMask williamr@4: { williamr@4: public: williamr@4: inline TSmlSyncTypeMask() : iMask(0U) {} williamr@4: inline void SetSupported(TSmlSyncType aType) { iMask |= TypeMask(aType); } williamr@4: inline void SetNotSupported(TSmlSyncType aType) { iMask &= ~TypeMask(aType); } williamr@4: inline TBool IsSupported(TSmlSyncType aType) const { return iMask & TypeMask(aType); } williamr@4: private: williamr@4: inline TUint16 TypeMask(TSmlSyncType aType) const { return TUint16(1 << TInt(aType)); } williamr@4: private: williamr@4: TUint16 iMask; williamr@4: }; williamr@4: williamr@4: williamr@4: /** williamr@4: Holds data defining a property value or property parameter value. williamr@4: This includes Name, display name, and data type - including any enumerations. williamr@4: */ williamr@4: class CSmlDataField : public CBase williamr@4: { williamr@4: public: williamr@4: IMPORT_C static CSmlDataField* NewLC(); williamr@4: IMPORT_C static CSmlDataField* NewLC(const RStringPool& aStringPool, TResourceReader& aReader); williamr@4: IMPORT_C static CSmlDataField* NewLC(const RStringPool& aStringPool, RReadStream& aStream); williamr@4: IMPORT_C virtual ~CSmlDataField(); williamr@4: IMPORT_C void ExternalizeL(RWriteStream& aStream) const; williamr@4: williamr@4: IMPORT_C RString Name() const; williamr@4: // Method takes ownership of parameter and closes it williamr@4: IMPORT_C void SetNameL(RString& aName); williamr@4: IMPORT_C const TDesC& DisplayName() const; williamr@4: // Method takes ownership of parameter and closes it williamr@4: IMPORT_C void SetDisplayNameL(TDesC& aDisplayName); williamr@4: IMPORT_C RString DataType() const; williamr@4: // Method takes ownership of parameter and closes it williamr@4: IMPORT_C void SetDataTypeL(RString& aDataType); williamr@4: IMPORT_C TInt EnumValueCount() const; williamr@4: IMPORT_C RString EnumValue(TInt aIndex) const; williamr@4: // Method takes ownership of parameter and closes it williamr@4: IMPORT_C void SetEnumValuesL(RArray& aEnumValues); williamr@4: williamr@4: protected: williamr@4: HBufC* iDisplayName; williamr@4: RString iName; williamr@4: RString iDataType; williamr@4: RArray iEnumValues; williamr@4: }; williamr@4: williamr@4: williamr@4: /** williamr@4: Property Parameter. williamr@4: Sub-type of property. williamr@4: */ williamr@4: class CSmlDataPropertyParam : public CBase williamr@4: { williamr@4: public: williamr@4: IMPORT_C static CSmlDataPropertyParam* NewLC(); williamr@4: IMPORT_C static CSmlDataPropertyParam* NewLC(const RStringPool& aStringPool, TResourceReader& aReader); williamr@4: IMPORT_C static CSmlDataPropertyParam* NewLC(const RStringPool& aStringPool, RReadStream& aStream); williamr@4: IMPORT_C virtual ~CSmlDataPropertyParam(); williamr@4: IMPORT_C void ExternalizeL(RWriteStream& aStream) const; williamr@4: williamr@4: IMPORT_C const CSmlDataField& Field() const; williamr@4: // Method takes ownership of data field williamr@4: IMPORT_C void SetDataFieldL(CSmlDataField& aDataField); williamr@4: williamr@4: protected: williamr@4: CSmlDataField* iField; williamr@4: }; williamr@4: williamr@4: williamr@4: /** williamr@4: Property. williamr@4: A field in the Data Store. williamr@4: */ williamr@4: class CSmlDataProperty : public CBase williamr@4: { williamr@4: public: williamr@4: enum TOption williamr@4: { williamr@4: EOptionHasMaxSize, williamr@4: EOptionHasMaxOccur, williamr@4: EOptionNoTruncate williamr@4: }; williamr@4: public: williamr@4: IMPORT_C static CSmlDataProperty* NewLC(); williamr@4: IMPORT_C static CSmlDataProperty* NewLC(const RStringPool& aStringPool, TResourceReader& aReader); williamr@4: IMPORT_C static CSmlDataProperty* NewLC(const RStringPool& aStringPool, RReadStream& aStream); williamr@4: IMPORT_C virtual ~CSmlDataProperty(); williamr@4: IMPORT_C void ExternalizeL(RWriteStream& aStream) const; williamr@4: williamr@4: IMPORT_C const CSmlDataField& Field() const; williamr@4: // Method takes ownership of data field williamr@4: IMPORT_C void SetDataFieldL(CSmlDataField& aDataField); williamr@4: williamr@4: IMPORT_C TInt ParamCount() const; williamr@4: IMPORT_C const CSmlDataPropertyParam& Param(TInt aIndex) const; williamr@4: // Method takes ownership of params williamr@4: IMPORT_C void SetPropertyParamsL(RPointerArray& aParams); williamr@4: williamr@4: IMPORT_C TBool IsSupported(TOption aOption) const; williamr@4: IMPORT_C void SetSupportedOptions(TUint32 aFlags); williamr@4: williamr@4: IMPORT_C TBool HasMaxSize() const; williamr@4: IMPORT_C TBool HasMaxOccur() const; williamr@4: IMPORT_C TInt MaxSize() const; williamr@4: IMPORT_C TInt MaxOccur() const; williamr@4: IMPORT_C void SetMaxSize(TUint16 aMaxSize); williamr@4: IMPORT_C void SetMaxOccur(TUint16 aMaxOccur); williamr@4: williamr@4: protected: williamr@4: CSmlDataField* iField; williamr@4: RPointerArray iParams; williamr@4: TUint16 iMaxSize; williamr@4: TUint16 iMaxOccur; williamr@4: TUint32 iFlags; williamr@4: }; williamr@4: williamr@4: williamr@4: /** williamr@4: Filter Capability williamr@4: */ williamr@4: class CSmlFilterCapability : public CBase williamr@4: { williamr@4: public: williamr@4: IMPORT_C static CSmlFilterCapability* NewLC(); williamr@4: IMPORT_C static CSmlFilterCapability* NewLC(const RStringPool& aStringPool, TResourceReader& aReader); williamr@4: IMPORT_C static CSmlFilterCapability* NewLC(const RStringPool& aStringPool, RReadStream& aStream); williamr@4: IMPORT_C virtual ~CSmlFilterCapability(); williamr@4: IMPORT_C void ExternalizeL(RWriteStream& aStream) const; williamr@4: williamr@4: IMPORT_C RStringF MimeType() const; williamr@4: // Method takes ownership of parameter and closes it williamr@4: IMPORT_C void SetMimeTypeL(RStringF& aMimeType); williamr@4: IMPORT_C RStringF MimeVersion() const; williamr@4: // Method takes ownership of parameter and closes it williamr@4: IMPORT_C void SetMimeVersionL(RStringF& aMimeVersion); williamr@4: williamr@4: IMPORT_C TInt KeywordCount() const; williamr@4: IMPORT_C RString Keyword(TInt aIndex) const; williamr@4: // Method takes ownership of keywords williamr@4: IMPORT_C void SetKeyWordListL(RArray& aKeywordList); williamr@4: williamr@4: IMPORT_C TInt PropertyCount() const; williamr@4: IMPORT_C RString PropertyName(TInt aIndex) const; williamr@4: // Method takes ownership of properties and closes them williamr@4: IMPORT_C void SetPropertiesListL(RArray& aPropertyList); williamr@4: williamr@4: protected: williamr@4: RStringF iMimeType; williamr@4: RStringF iMimeVersion; williamr@4: RArray iKeywordList; williamr@4: RArray iPropertyList; williamr@4: }; williamr@4: williamr@4: williamr@4: williamr@4: /** williamr@4: The format of a specific mime type. williamr@4: */ williamr@4: class CSmlMimeFormat : public CBase williamr@4: { williamr@4: public: williamr@4: IMPORT_C static CSmlMimeFormat* NewLC(); williamr@4: IMPORT_C static CSmlMimeFormat* NewLC(const RStringPool& aStringPool, TResourceReader& aReader); williamr@4: IMPORT_C static CSmlMimeFormat* NewLC(const RStringPool& aStringPool, RReadStream& aStream); williamr@4: IMPORT_C virtual ~CSmlMimeFormat(); williamr@4: IMPORT_C void ExternalizeL(RWriteStream& aStream) const; williamr@4: williamr@4: IMPORT_C RStringF MimeType() const; williamr@4: // Method takes ownership of parameter and closes it williamr@4: IMPORT_C void SetMimeTypeL(RStringF& aMimeType); williamr@4: IMPORT_C RStringF MimeVersion() const; williamr@4: // Method takes ownership of parameter and closes it williamr@4: IMPORT_C void SetMimeVersionL(RStringF& aMimeVersion); williamr@4: williamr@4: IMPORT_C TInt PropertyCount() const; williamr@4: IMPORT_C const CSmlDataProperty& Property(TInt aIndex) const; williamr@4: // Method takes ownership of properties williamr@4: IMPORT_C void SetDataPropertiesL(RPointerArray& aProperties); williamr@4: williamr@4: IMPORT_C TBool FieldLevel() const; williamr@4: IMPORT_C void SetFieldLevel(TBool aFieldLevel); williamr@4: williamr@4: protected: williamr@4: RStringF iMimeType; williamr@4: RStringF iMimeVersion; williamr@4: RPointerArray iProperties; williamr@4: TBool iFieldLevel; williamr@4: }; williamr@4: williamr@4: williamr@4: williamr@4: /** williamr@4: The format and capabilities of Data Stores of a specific type. williamr@4: */ williamr@4: class CSmlDataStoreFormat : public CBase williamr@4: { williamr@4: public: williamr@4: enum TOption williamr@4: { williamr@4: EOptionHasMaxSize, williamr@4: EOptionHasMaxItems, williamr@4: EOptionHierarchial williamr@4: }; williamr@4: public: williamr@4: IMPORT_C static CSmlDataStoreFormat* NewLC(); williamr@4: IMPORT_C static CSmlDataStoreFormat* NewLC(const RStringPool& aStringPool, TResourceReader& aReader); williamr@4: IMPORT_C static CSmlDataStoreFormat* NewLC(const RStringPool& aStringPool, RReadStream& aStream); williamr@4: IMPORT_C virtual ~CSmlDataStoreFormat(); williamr@4: IMPORT_C void ExternalizeL(RWriteStream& aStream) const; williamr@4: williamr@4: IMPORT_C const TDesC& DisplayName() const; williamr@4: IMPORT_C void SetDisplayNameL(TDesC& aDisplayName); williamr@4: williamr@4: IMPORT_C TSmlSyncTypeMask SyncTypes() const; williamr@4: IMPORT_C void SetSyncTypeMask(TSmlSyncTypeMask aSyncTypeMask); williamr@4: williamr@4: IMPORT_C TInt MimeFormatCount() const; williamr@4: IMPORT_C const CSmlMimeFormat& MimeFormat(TInt aIndex) const; williamr@4: // Method takes ownership of mime formats williamr@4: IMPORT_C void SetMimeFormatsL(RPointerArray& aMimeFormats); williamr@4: IMPORT_C TInt MimeFormatRxPref() const; williamr@4: IMPORT_C void SetMimeFormatRxPref(TInt aRxPref); williamr@4: IMPORT_C TInt MimeFormatTxPref() const; williamr@4: IMPORT_C void SetMimeFormatTxPref(TInt aTxPref); williamr@4: williamr@4: IMPORT_C TBool IsSupported(TOption aOption) const; williamr@4: IMPORT_C void SetSupportedOptions(TUint32 aFlags); williamr@4: williamr@4: IMPORT_C TInt FolderPropertyCount() const; williamr@4: IMPORT_C const CSmlDataProperty& FolderProperty(TInt aIndex) const; williamr@4: // Method takes ownership of folder properties williamr@4: IMPORT_C void SetFolderPropertiesL(RPointerArray& aFolderProperties); williamr@4: williamr@4: IMPORT_C TInt FilterCapabilityCount() const; williamr@4: IMPORT_C const CSmlFilterCapability& FilterCapability(TInt aIndex) const; williamr@4: // Method takes ownership of filter capabilities williamr@4: IMPORT_C void SetFilterCapabilitiesL(RPointerArray& aFilterCapabilities); williamr@4: williamr@4: IMPORT_C TBool HasMaxSize() const; williamr@4: IMPORT_C TBool HasMaxItems() const; williamr@4: IMPORT_C TInt MaxSize() const; williamr@4: IMPORT_C TInt MaxItems() const; williamr@4: IMPORT_C void SetMaxSize(TUint16 aMaxSize); williamr@4: IMPORT_C void SetMaxItems(TUint16 aMaxItems); williamr@4: williamr@4: protected: williamr@4: HBufC* iDisplayName; williamr@4: TSmlSyncTypeMask iSyncTypeMask; williamr@4: RPointerArray iFolderProperties; williamr@4: RPointerArray iFilterCapabilities; williamr@4: TUint16 iMaxSize; williamr@4: TUint16 iMaxItems; williamr@4: TUint32 iFlags; williamr@4: RPointerArray iMimeFormats; williamr@4: TInt iRxPref; williamr@4: TInt iTxPref; williamr@4: }; williamr@4: williamr@4: williamr@4: /////////////////////////////////////////////////////////////////////////////// williamr@4: /////////////////////////////////////////////////////////////////////////////// williamr@4: /////////////////////////////////////////////////////////////////////////////// williamr@4: #endif