epoc32/include/SmlDataFormat.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
/*
williamr@4
     2
* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). 
williamr@4
     3
* All rights reserved.
williamr@4
     4
* This component and the accompanying materials are made available
williamr@4
     5
* under the terms of "Eclipse Public License v1.0"
williamr@4
     6
* which accompanies this distribution, and is available
williamr@4
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@4
     8
*
williamr@4
     9
* Initial Contributors:
williamr@4
    10
* Nokia Corporation - initial contribution.
williamr@4
    11
*
williamr@4
    12
* Contributors:
williamr@4
    13
*
williamr@4
    14
* Description: For adding content to be synchronized.
williamr@4
    15
*
williamr@4
    16
*/
williamr@4
    17
williamr@4
    18
williamr@4
    19
#ifndef __SMLDATAFORMAT_H__
williamr@4
    20
#define __SMLDATAFORMAT_H__
williamr@4
    21
//
williamr@4
    22
#include <e32base.h>
williamr@4
    23
#include <s32strm.h>
williamr@4
    24
#include <barsread.h>
williamr@4
    25
#include <stringpool.h>
williamr@4
    26
#include <SyncMLDef.h>
williamr@4
    27
//
williamr@4
    28
williamr@4
    29
/**
williamr@4
    30
@publishedPartner
williamr@4
    31
williamr@4
    32
Data Store Format.
williamr@4
    33
Used by Data Provider implementations to specify the format and capabilities of their Data Stores.
williamr@4
    34
See also SmlDataFormat.rh and SmlDataFormat.hrh for resource definitions.
williamr@4
    35
williamr@4
    36
Used by the Sync Engine to generate SyncML DevInf.
williamr@4
    37
*/
williamr@4
    38
williamr@4
    39
williamr@4
    40
williamr@4
    41
/**
williamr@4
    42
A bitmask of sync types. Used to specify sync types supported by a Data Store.
williamr@4
    43
*/
williamr@4
    44
class TSmlSyncTypeMask
williamr@4
    45
	{
williamr@4
    46
public:
williamr@4
    47
	inline TSmlSyncTypeMask()                           : iMask(0U) {}
williamr@4
    48
	inline void SetSupported(TSmlSyncType aType)        { iMask |= TypeMask(aType); }
williamr@4
    49
	inline void SetNotSupported(TSmlSyncType aType)     { iMask &= ~TypeMask(aType); }
williamr@4
    50
	inline TBool IsSupported(TSmlSyncType aType) const  { return iMask & TypeMask(aType); }
williamr@4
    51
private:
williamr@4
    52
	inline TUint16 TypeMask(TSmlSyncType aType) const   { return TUint16(1 << TInt(aType)); }
williamr@4
    53
private:
williamr@4
    54
	TUint16 iMask;
williamr@4
    55
	};
williamr@4
    56
williamr@4
    57
williamr@4
    58
/**
williamr@4
    59
Holds data defining a property value or property parameter value.
williamr@4
    60
This includes Name, display name, and data type - including any enumerations.
williamr@4
    61
*/
williamr@4
    62
class CSmlDataField : public CBase
williamr@4
    63
	{
williamr@4
    64
public:
williamr@4
    65
	IMPORT_C static CSmlDataField* NewLC();
williamr@4
    66
	IMPORT_C static CSmlDataField* NewLC(const RStringPool& aStringPool, TResourceReader& aReader);
williamr@4
    67
	IMPORT_C static CSmlDataField* NewLC(const RStringPool& aStringPool, RReadStream& aStream);
williamr@4
    68
	IMPORT_C virtual ~CSmlDataField();
williamr@4
    69
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
williamr@4
    70
williamr@4
    71
	IMPORT_C RString Name() const;
williamr@4
    72
	// Method takes ownership of parameter and closes it 
williamr@4
    73
	IMPORT_C void SetNameL(RString& aName);
williamr@4
    74
	IMPORT_C const TDesC& DisplayName() const;
williamr@4
    75
	// Method takes ownership of parameter and closes it 
williamr@4
    76
	IMPORT_C void SetDisplayNameL(TDesC& aDisplayName);
williamr@4
    77
	IMPORT_C RString DataType() const;
williamr@4
    78
	// Method takes ownership of parameter and closes it 
williamr@4
    79
	IMPORT_C void SetDataTypeL(RString& aDataType);
williamr@4
    80
	IMPORT_C TInt EnumValueCount() const;
williamr@4
    81
	IMPORT_C RString EnumValue(TInt aIndex) const;
williamr@4
    82
	// Method takes ownership of parameter and closes it 
williamr@4
    83
	IMPORT_C void SetEnumValuesL(RArray<RString>& aEnumValues);
williamr@4
    84
	
williamr@4
    85
protected:
williamr@4
    86
	HBufC* iDisplayName;
williamr@4
    87
	RString iName;
williamr@4
    88
	RString iDataType;
williamr@4
    89
	RArray<RString> iEnumValues;
williamr@4
    90
	};
williamr@4
    91
williamr@4
    92
williamr@4
    93
/**
williamr@4
    94
Property Parameter.
williamr@4
    95
Sub-type of property.
williamr@4
    96
*/
williamr@4
    97
class CSmlDataPropertyParam : public CBase
williamr@4
    98
	{
williamr@4
    99
public:
williamr@4
   100
	IMPORT_C static CSmlDataPropertyParam* NewLC();
williamr@4
   101
	IMPORT_C static CSmlDataPropertyParam* NewLC(const RStringPool& aStringPool, TResourceReader& aReader);
williamr@4
   102
	IMPORT_C static CSmlDataPropertyParam* NewLC(const RStringPool& aStringPool, RReadStream& aStream);
williamr@4
   103
	IMPORT_C virtual ~CSmlDataPropertyParam();
williamr@4
   104
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
williamr@4
   105
williamr@4
   106
	IMPORT_C const CSmlDataField& Field() const;
williamr@4
   107
	// Method takes ownership of data field
williamr@4
   108
	IMPORT_C void SetDataFieldL(CSmlDataField& aDataField);
williamr@4
   109
williamr@4
   110
protected:
williamr@4
   111
	CSmlDataField* iField;
williamr@4
   112
	};
williamr@4
   113
williamr@4
   114
williamr@4
   115
/**
williamr@4
   116
Property.
williamr@4
   117
A field in the Data Store.
williamr@4
   118
*/
williamr@4
   119
class CSmlDataProperty : public CBase
williamr@4
   120
	{
williamr@4
   121
public:
williamr@4
   122
	enum TOption
williamr@4
   123
		{
williamr@4
   124
		EOptionHasMaxSize,
williamr@4
   125
		EOptionHasMaxOccur,
williamr@4
   126
		EOptionNoTruncate
williamr@4
   127
		};
williamr@4
   128
public:
williamr@4
   129
	IMPORT_C static CSmlDataProperty* NewLC();
williamr@4
   130
	IMPORT_C static CSmlDataProperty* NewLC(const RStringPool& aStringPool, TResourceReader& aReader);
williamr@4
   131
	IMPORT_C static CSmlDataProperty* NewLC(const RStringPool& aStringPool, RReadStream& aStream);
williamr@4
   132
	IMPORT_C virtual ~CSmlDataProperty();
williamr@4
   133
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
williamr@4
   134
williamr@4
   135
	IMPORT_C const CSmlDataField& Field() const;
williamr@4
   136
	// Method takes ownership of data field
williamr@4
   137
	IMPORT_C void SetDataFieldL(CSmlDataField& aDataField);
williamr@4
   138
williamr@4
   139
	IMPORT_C TInt ParamCount() const;
williamr@4
   140
	IMPORT_C const CSmlDataPropertyParam& Param(TInt aIndex) const;
williamr@4
   141
	// Method takes ownership of params
williamr@4
   142
	IMPORT_C void SetPropertyParamsL(RPointerArray<CSmlDataPropertyParam>& aParams);
williamr@4
   143
williamr@4
   144
	IMPORT_C TBool IsSupported(TOption aOption) const;
williamr@4
   145
	IMPORT_C void SetSupportedOptions(TUint32 aFlags);
williamr@4
   146
williamr@4
   147
	IMPORT_C TBool HasMaxSize() const;
williamr@4
   148
	IMPORT_C TBool HasMaxOccur() const;
williamr@4
   149
	IMPORT_C TInt MaxSize() const;
williamr@4
   150
	IMPORT_C TInt MaxOccur() const;
williamr@4
   151
	IMPORT_C void SetMaxSize(TUint16 aMaxSize);
williamr@4
   152
	IMPORT_C void SetMaxOccur(TUint16 aMaxOccur);
williamr@4
   153
williamr@4
   154
protected:
williamr@4
   155
	CSmlDataField* iField;
williamr@4
   156
	RPointerArray<CSmlDataPropertyParam> iParams;
williamr@4
   157
	TUint16 iMaxSize;
williamr@4
   158
	TUint16 iMaxOccur;
williamr@4
   159
	TUint32 iFlags;
williamr@4
   160
	};
williamr@4
   161
williamr@4
   162
williamr@4
   163
/**
williamr@4
   164
Filter Capability
williamr@4
   165
*/
williamr@4
   166
class CSmlFilterCapability : public CBase
williamr@4
   167
	{
williamr@4
   168
public:
williamr@4
   169
	IMPORT_C static CSmlFilterCapability* NewLC();
williamr@4
   170
	IMPORT_C static CSmlFilterCapability* NewLC(const RStringPool& aStringPool, TResourceReader& aReader);
williamr@4
   171
	IMPORT_C static CSmlFilterCapability* NewLC(const RStringPool& aStringPool, RReadStream& aStream);
williamr@4
   172
	IMPORT_C virtual ~CSmlFilterCapability();
williamr@4
   173
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
williamr@4
   174
williamr@4
   175
	IMPORT_C RStringF MimeType() const;
williamr@4
   176
	// Method takes ownership of parameter and closes it 
williamr@4
   177
	IMPORT_C void SetMimeTypeL(RStringF& aMimeType);
williamr@4
   178
	IMPORT_C RStringF MimeVersion() const;
williamr@4
   179
	// Method takes ownership of parameter and closes it
williamr@4
   180
	IMPORT_C void SetMimeVersionL(RStringF& aMimeVersion);
williamr@4
   181
williamr@4
   182
	IMPORT_C TInt KeywordCount() const;
williamr@4
   183
	IMPORT_C RString Keyword(TInt aIndex) const;
williamr@4
   184
	// Method takes ownership of keywords
williamr@4
   185
	IMPORT_C void SetKeyWordListL(RArray<RString>& aKeywordList);
williamr@4
   186
williamr@4
   187
	IMPORT_C TInt PropertyCount() const;
williamr@4
   188
	IMPORT_C RString PropertyName(TInt aIndex) const;
williamr@4
   189
	// Method takes ownership of properties and closes them
williamr@4
   190
	IMPORT_C void SetPropertiesListL(RArray<RString>& aPropertyList);
williamr@4
   191
	
williamr@4
   192
protected:
williamr@4
   193
	RStringF iMimeType;
williamr@4
   194
	RStringF iMimeVersion;
williamr@4
   195
	RArray<RString> iKeywordList;
williamr@4
   196
	RArray<RString> iPropertyList;
williamr@4
   197
	};
williamr@4
   198
williamr@4
   199
williamr@4
   200
williamr@4
   201
/**
williamr@4
   202
The format of a specific mime type.
williamr@4
   203
*/
williamr@4
   204
class CSmlMimeFormat : public CBase
williamr@4
   205
	{
williamr@4
   206
public:
williamr@4
   207
	IMPORT_C static CSmlMimeFormat* NewLC();
williamr@4
   208
	IMPORT_C static CSmlMimeFormat* NewLC(const RStringPool& aStringPool, TResourceReader& aReader);
williamr@4
   209
	IMPORT_C static CSmlMimeFormat* NewLC(const RStringPool& aStringPool, RReadStream& aStream);
williamr@4
   210
	IMPORT_C virtual ~CSmlMimeFormat();
williamr@4
   211
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
williamr@4
   212
williamr@4
   213
	IMPORT_C RStringF MimeType() const;
williamr@4
   214
	// Method takes ownership of parameter and closes it
williamr@4
   215
	IMPORT_C void SetMimeTypeL(RStringF& aMimeType);
williamr@4
   216
	IMPORT_C RStringF MimeVersion() const;
williamr@4
   217
	// Method takes ownership of parameter and closes it
williamr@4
   218
	IMPORT_C void SetMimeVersionL(RStringF& aMimeVersion);
williamr@4
   219
williamr@4
   220
	IMPORT_C TInt PropertyCount() const;
williamr@4
   221
	IMPORT_C const CSmlDataProperty& Property(TInt aIndex) const;
williamr@4
   222
	// Method takes ownership of properties
williamr@4
   223
	IMPORT_C void SetDataPropertiesL(RPointerArray<CSmlDataProperty>& aProperties);
williamr@4
   224
williamr@4
   225
	IMPORT_C TBool FieldLevel() const;
williamr@4
   226
	IMPORT_C void SetFieldLevel(TBool aFieldLevel);
williamr@4
   227
williamr@4
   228
protected:
williamr@4
   229
	RStringF iMimeType;
williamr@4
   230
	RStringF iMimeVersion;
williamr@4
   231
	RPointerArray<CSmlDataProperty> iProperties;
williamr@4
   232
	TBool iFieldLevel;
williamr@4
   233
	};
williamr@4
   234
williamr@4
   235
williamr@4
   236
williamr@4
   237
/**
williamr@4
   238
The format and capabilities of Data Stores of a specific type.
williamr@4
   239
*/
williamr@4
   240
class CSmlDataStoreFormat : public CBase
williamr@4
   241
	{
williamr@4
   242
public:
williamr@4
   243
	enum TOption
williamr@4
   244
		{
williamr@4
   245
		EOptionHasMaxSize,
williamr@4
   246
		EOptionHasMaxItems,
williamr@4
   247
		EOptionHierarchial
williamr@4
   248
		};
williamr@4
   249
public:
williamr@4
   250
	IMPORT_C static CSmlDataStoreFormat* NewLC();
williamr@4
   251
	IMPORT_C static CSmlDataStoreFormat* NewLC(const RStringPool& aStringPool, TResourceReader& aReader);
williamr@4
   252
	IMPORT_C static CSmlDataStoreFormat* NewLC(const RStringPool& aStringPool, RReadStream& aStream);
williamr@4
   253
	IMPORT_C virtual ~CSmlDataStoreFormat();
williamr@4
   254
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
williamr@4
   255
williamr@4
   256
	IMPORT_C const TDesC& DisplayName() const;
williamr@4
   257
	IMPORT_C void SetDisplayNameL(TDesC& aDisplayName);
williamr@4
   258
williamr@4
   259
	IMPORT_C TSmlSyncTypeMask SyncTypes() const;
williamr@4
   260
	IMPORT_C void SetSyncTypeMask(TSmlSyncTypeMask aSyncTypeMask);
williamr@4
   261
williamr@4
   262
	IMPORT_C TInt MimeFormatCount() const;
williamr@4
   263
	IMPORT_C const CSmlMimeFormat& MimeFormat(TInt aIndex) const;
williamr@4
   264
	// Method takes ownership of mime formats
williamr@4
   265
	IMPORT_C void SetMimeFormatsL(RPointerArray<CSmlMimeFormat>& aMimeFormats);
williamr@4
   266
	IMPORT_C TInt MimeFormatRxPref() const;
williamr@4
   267
	IMPORT_C void SetMimeFormatRxPref(TInt aRxPref);
williamr@4
   268
	IMPORT_C TInt MimeFormatTxPref() const;
williamr@4
   269
	IMPORT_C void SetMimeFormatTxPref(TInt aTxPref);
williamr@4
   270
williamr@4
   271
	IMPORT_C TBool IsSupported(TOption aOption) const;
williamr@4
   272
	IMPORT_C void SetSupportedOptions(TUint32 aFlags);
williamr@4
   273
williamr@4
   274
	IMPORT_C TInt FolderPropertyCount() const;
williamr@4
   275
	IMPORT_C const CSmlDataProperty& FolderProperty(TInt aIndex) const;
williamr@4
   276
	// Method takes ownership of folder properties
williamr@4
   277
	IMPORT_C void SetFolderPropertiesL(RPointerArray<CSmlDataProperty>& aFolderProperties);
williamr@4
   278
williamr@4
   279
	IMPORT_C TInt FilterCapabilityCount() const;
williamr@4
   280
	IMPORT_C const CSmlFilterCapability& FilterCapability(TInt aIndex) const;
williamr@4
   281
	// Method takes ownership of filter capabilities
williamr@4
   282
	IMPORT_C void SetFilterCapabilitiesL(RPointerArray<CSmlFilterCapability>& aFilterCapabilities);
williamr@4
   283
williamr@4
   284
	IMPORT_C TBool HasMaxSize() const;
williamr@4
   285
	IMPORT_C TBool HasMaxItems() const;
williamr@4
   286
	IMPORT_C TInt MaxSize() const;
williamr@4
   287
	IMPORT_C TInt MaxItems() const;
williamr@4
   288
	IMPORT_C void SetMaxSize(TUint16 aMaxSize);
williamr@4
   289
	IMPORT_C void SetMaxItems(TUint16 aMaxItems);
williamr@4
   290
williamr@4
   291
protected:
williamr@4
   292
	HBufC* iDisplayName;
williamr@4
   293
	TSmlSyncTypeMask iSyncTypeMask;
williamr@4
   294
	RPointerArray<CSmlDataProperty> iFolderProperties;
williamr@4
   295
	RPointerArray<CSmlFilterCapability> iFilterCapabilities;
williamr@4
   296
	TUint16 iMaxSize;
williamr@4
   297
	TUint16 iMaxItems;
williamr@4
   298
	TUint32 iFlags;
williamr@4
   299
  RPointerArray<CSmlMimeFormat> iMimeFormats;
williamr@4
   300
  TInt iRxPref;
williamr@4
   301
  TInt iTxPref;
williamr@4
   302
	};
williamr@4
   303
williamr@4
   304
williamr@4
   305
///////////////////////////////////////////////////////////////////////////////
williamr@4
   306
///////////////////////////////////////////////////////////////////////////////
williamr@4
   307
///////////////////////////////////////////////////////////////////////////////
williamr@4
   308
#endif