epoc32/include/tzlocalizationdatatypes.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
permissions -rw-r--r--
Final list of Symbian^2 public API header files
williamr@2
     1
// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@2
     4
// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
//
williamr@2
    15
williamr@2
    16
#ifndef __TZLOCAL_DATATYPES_H__
williamr@2
    17
#define __TZLOCAL_DATATYPES_H__
williamr@2
    18
williamr@2
    19
#include <e32base.h>	//CBase
williamr@2
    20
williamr@2
    21
/**
williamr@2
    22
Encapsulates the correspondence between a time zone ID and a resource ID and
williamr@2
    23
facilitates fast finding of resources in the resource file.  For internal use only.
williamr@2
    24
williamr@2
    25
@internalTechnology
williamr@2
    26
*/
williamr@2
    27
class TTzLocalizedId
williamr@2
    28
	{
williamr@2
    29
	public:
williamr@2
    30
		// Represents an invalid UTC offset of 25 hours and 1 minutes, in minutes
williamr@2
    31
		enum TTzUTCOffset
williamr@2
    32
			{
williamr@2
    33
			ETzInvalidUTCOffset = 1501
williamr@2
    34
			};
williamr@2
    35
williamr@2
    36
	public:
williamr@2
    37
		TTzLocalizedId(const TUint16 aTzId, const TUint aResourceId =0);
williamr@2
    38
williamr@2
    39
		//Accessor methods
williamr@2
    40
		inline TUint16 TimeZoneId() const;
williamr@2
    41
		inline TUint ResourceId() const;
williamr@2
    42
		inline TInt UTCOffset() const;
williamr@2
    43
		inline void SetUTCOffset(TInt aOffsetInMinutes);
williamr@2
    44
williamr@2
    45
	private:
williamr@2
    46
		TUint16 iTzId;
williamr@2
    47
		TUint iResourceId;
williamr@2
    48
		TInt iUTCOffset;	//UTC offset stored in minutes
williamr@2
    49
	};
williamr@2
    50
williamr@2
    51
/**
williamr@2
    52
Encapsulates a localized (exemplar) city.
williamr@2
    53
williamr@2
    54
@publishedAll
williamr@2
    55
@released
williamr@2
    56
*/
williamr@2
    57
class CTzLocalizedCity : public CBase
williamr@2
    58
	{
williamr@2
    59
	public:
williamr@2
    60
		static CTzLocalizedCity* NewL(
williamr@2
    61
			const TDesC& aName,
williamr@2
    62
			const TTzLocalizedId& aTzLocalizedId,
williamr@2
    63
			const TUint8 aGroupId =0);
williamr@2
    64
		static CTzLocalizedCity* NewLC(
williamr@2
    65
			const TDesC& aName,
williamr@2
    66
			const TTzLocalizedId& aTzLocalizedId,
williamr@2
    67
			const TUint8 aGroupId =0);
williamr@2
    68
		~CTzLocalizedCity();
williamr@2
    69
williamr@2
    70
		//Accessor methods
williamr@2
    71
		IMPORT_C TPtrC Name() const;
williamr@2
    72
		IMPORT_C TUint16 TimeZoneId() const;
williamr@2
    73
		IMPORT_C TUint8 GroupId() const;
williamr@2
    74
		TTzLocalizedId TzLocalizedId() const;
williamr@2
    75
		TInt UTCOffset() const;
williamr@2
    76
		void SetUTCOffset(TInt aUTCoffset);
williamr@2
    77
        void SetCityIndex(TInt aIndex);
williamr@2
    78
       	TInt CityIndex() const;
williamr@2
    79
williamr@2
    80
	private:
williamr@2
    81
		void ConstructL(const TDesC& aName);
williamr@2
    82
		CTzLocalizedCity(const TUint8 aGroupId, const TTzLocalizedId& aTzLocalizedId);
williamr@2
    83
williamr@2
    84
	private:
williamr@2
    85
		//Member data
williamr@2
    86
		HBufC* iName;
williamr@2
    87
		TUint8 iGroupId;
williamr@2
    88
		TTzLocalizedId iTzLocalizedId;
williamr@2
    89
        TInt iCityIndex;
williamr@2
    90
	};
williamr@2
    91
williamr@2
    92
/**
williamr@2
    93
Encapsulates a localized group of (exemplar) cities.
williamr@2
    94
williamr@2
    95
@publishedAll
williamr@2
    96
@released
williamr@2
    97
*/
williamr@2
    98
class CTzLocalizedCityGroup : public CBase
williamr@2
    99
	{
williamr@2
   100
	public:
williamr@2
   101
		static CTzLocalizedCityGroup* NewL(const TDesC& aName, const TUint8 aGroupId);
williamr@2
   102
		static CTzLocalizedCityGroup* NewLC(const TDesC& aName, const TUint8 aGroupId);
williamr@2
   103
		~CTzLocalizedCityGroup();
williamr@2
   104
williamr@2
   105
		//Accessor methods
williamr@2
   106
		IMPORT_C TPtrC Name() const;
williamr@2
   107
		IMPORT_C TUint8 Id() const;
williamr@2
   108
williamr@2
   109
	private:
williamr@2
   110
		void ConstructL(const TDesC& aName);
williamr@2
   111
		CTzLocalizedCityGroup(const TUint8 aGroupId);
williamr@2
   112
williamr@2
   113
	private:
williamr@2
   114
		//Member data
williamr@2
   115
		HBufC* iName;
williamr@2
   116
		TUint8 iGroupId;
williamr@2
   117
	};
williamr@2
   118
williamr@2
   119
/**
williamr@2
   120
Encapsulates a group of LDML localized timezone names.
williamr@2
   121
LDML stands for Locale Data Markup Language. For details, see 
williamr@2
   122
http://www.openi18n.org/specs/ldml/1.0/ldml-spec.htm.
williamr@2
   123
williamr@2
   124
@publishedAll
williamr@2
   125
@released
williamr@2
   126
*/
williamr@2
   127
class CTzLocalizedTimeZone : public CBase
williamr@2
   128
	{
williamr@2
   129
	public: //enums
williamr@2
   130
		/**
williamr@2
   131
		Flags to identify a cached zone.
williamr@2
   132
		@publishedAll
williamr@2
   133
		@released
williamr@2
   134
		*/
williamr@2
   135
		enum TTzFrequentlyUsedZone
williamr@2
   136
			{
williamr@2
   137
			/** The current zone. */
williamr@2
   138
			ECurrentZone,
williamr@2
   139
			/** The home zone. */
williamr@2
   140
			EHomeZone,
williamr@2
   141
			/** The zone of interest. */
williamr@2
   142
			EInterestZone,
williamr@2
   143
			/** The first recently-used zone. */
williamr@2
   144
			ERecentZone1,
williamr@2
   145
			/** The second recently-used zone. */
williamr@2
   146
			ERecentZone2,
williamr@2
   147
			/** Specifies the number of cached zones. Not to be used as an API argument. */
williamr@2
   148
			ECachedTimeZones	// If new items are added to this enum, this must 
williamr@2
   149
								// left as last item, because it is used to keep 
williamr@2
   150
								// count of the number of cached zones
williamr@2
   151
			};
williamr@2
   152
williamr@2
   153
	public:
williamr@2
   154
		static CTzLocalizedTimeZone* NewL(
williamr@2
   155
			const TTzLocalizedId& aTzLocalizedId,
williamr@2
   156
			const TDesC& aStandardName,
williamr@2
   157
			const TDesC& aDaylightName,
williamr@2
   158
			const TDesC& aShortStandardName,
williamr@2
   159
			const TDesC& aShortDaylightName);
williamr@2
   160
williamr@2
   161
		static CTzLocalizedTimeZone* NewLC(
williamr@2
   162
			const TTzLocalizedId& aTzLocalizedId,
williamr@2
   163
			const TDesC& aStandardName,
williamr@2
   164
			const TDesC& aDaylightName,
williamr@2
   165
			const TDesC& aShortStandardName,
williamr@2
   166
			const TDesC& aShortDaylightName);
williamr@2
   167
williamr@2
   168
		~CTzLocalizedTimeZone();
williamr@2
   169
williamr@2
   170
		//Accessor methods
williamr@2
   171
		IMPORT_C TUint16 TimeZoneId() const;
williamr@2
   172
		IMPORT_C TPtrC StandardName() const;
williamr@2
   173
		IMPORT_C TPtrC DaylightName() const;
williamr@2
   174
		IMPORT_C TPtrC ShortStandardName() const;
williamr@2
   175
		IMPORT_C TPtrC ShortDaylightName() const;
williamr@2
   176
		TTzLocalizedId TzLocalizedId() const;
williamr@2
   177
		TInt UTCOffset() const;
williamr@2
   178
		void SetUTCOffset(TInt aUTCoffset);
williamr@2
   179
williamr@2
   180
	private:
williamr@2
   181
		void ConstructL(
williamr@2
   182
			const TDesC& aStandardName,
williamr@2
   183
			const TDesC& aDaylightName,
williamr@2
   184
			const TDesC& aShortStandardName,
williamr@2
   185
			const TDesC& aShortDaylightName);
williamr@2
   186
		CTzLocalizedTimeZone(const TTzLocalizedId& aTzLocalizedId);
williamr@2
   187
williamr@2
   188
	private:
williamr@2
   189
		//Member data
williamr@2
   190
		TTzLocalizedId iTzLocalizedId;
williamr@2
   191
		HBufC* iStandardName;
williamr@2
   192
		HBufC* iDaylightName;
williamr@2
   193
		HBufC* iShortStandardName;
williamr@2
   194
		HBufC* iShortDaylightName;
williamr@2
   195
	};
williamr@2
   196
williamr@2
   197
/**
williamr@2
   198
Template for arrays of localized objects. Implemented using a thin template. 
williamr@2
   199
All functions are inline.
williamr@2
   200
williamr@2
   201
@publishedAll
williamr@2
   202
@released
williamr@2
   203
*/
williamr@2
   204
template <class T>
williamr@2
   205
class CTzLocalizedArray : public CBase
williamr@2
   206
	{
williamr@2
   207
	protected:
williamr@2
   208
		inline ~CTzLocalizedArray();
williamr@2
   209
williamr@2
   210
		inline T& At(TInt aIndex) const;
williamr@2
   211
		inline TInt Count() const;
williamr@2
   212
		inline void AppendL(T* aElement);
williamr@2
   213
		inline void Remove(TInt aIndex);
williamr@2
   214
		inline void Sort(TLinearOrder<T> aOrder);
williamr@2
   215
		inline TInt Find(T* aEntry,TIdentityRelation<T> aIdentityRelation);
williamr@2
   216
williamr@2
   217
		inline CTzLocalizedArray();
williamr@2
   218
williamr@2
   219
	private:
williamr@2
   220
		//Member data
williamr@2
   221
		RPointerArray<T> iArray;
williamr@2
   222
	};
williamr@2
   223
williamr@2
   224
// Assign concrete classes for each of the arrays that will be used
williamr@2
   225
// This guards against future BC problems
williamr@2
   226
williamr@2
   227
/**
williamr@2
   228
An array of cities. This just passes function calls on to its templated base
williamr@2
   229
class, CTzLocalizedArray.
williamr@2
   230
williamr@2
   231
@publishedAll
williamr@2
   232
@released
williamr@2
   233
*/
williamr@2
   234
class CTzLocalizedCityArray : public CTzLocalizedArray<CTzLocalizedCity>
williamr@2
   235
	{
williamr@2
   236
	public:
williamr@2
   237
		IMPORT_C static CTzLocalizedCityArray* NewL();
williamr@2
   238
		IMPORT_C static CTzLocalizedCityArray* NewLC();
williamr@2
   239
williamr@2
   240
		IMPORT_C CTzLocalizedCity& At(TInt aIndex) const;
williamr@2
   241
		IMPORT_C TInt Count() const;
williamr@2
   242
		IMPORT_C void AppendL(CTzLocalizedCity* aCity);
williamr@2
   243
		IMPORT_C void Remove(TInt aIndex);
williamr@2
   244
		IMPORT_C void Sort(TLinearOrder<CTzLocalizedCity> anOrder);
williamr@2
   245
		IMPORT_C TInt Find(CTzLocalizedCity* anEntry,TIdentityRelation<CTzLocalizedCity> aIdentityRelation);
williamr@2
   246
	};
williamr@2
   247
	
williamr@2
   248
/**
williamr@2
   249
An array of city groups. This just passes function calls on to its templated base
williamr@2
   250
class, CTzLocalizedArray.
williamr@2
   251
williamr@2
   252
@publishedAll
williamr@2
   253
@released
williamr@2
   254
*/
williamr@2
   255
class CTzLocalizedCityGroupArray : public CTzLocalizedArray<CTzLocalizedCityGroup>
williamr@2
   256
	{
williamr@2
   257
	public:
williamr@2
   258
		IMPORT_C static CTzLocalizedCityGroupArray* NewL();
williamr@2
   259
		IMPORT_C static CTzLocalizedCityGroupArray* NewLC();
williamr@2
   260
williamr@2
   261
		IMPORT_C CTzLocalizedCityGroup& At(TInt aIndex) const;
williamr@2
   262
		IMPORT_C TInt Count() const;
williamr@2
   263
		IMPORT_C void AppendL(CTzLocalizedCityGroup* aGroup);
williamr@2
   264
		IMPORT_C void Remove(TInt aIndex);
williamr@2
   265
		IMPORT_C void Sort(TLinearOrder<CTzLocalizedCityGroup> anOrder);
williamr@2
   266
		IMPORT_C TInt Find(CTzLocalizedCityGroup* anEntry,TIdentityRelation<CTzLocalizedCityGroup> aIdentityRelation);
williamr@2
   267
	};
williamr@2
   268
williamr@2
   269
/**
williamr@2
   270
An array of time zones. This just passes function calls on to its templated base
williamr@2
   271
class, CTzLocalizedArray.
williamr@2
   272
williamr@2
   273
@publishedAll
williamr@2
   274
@released
williamr@2
   275
*/
williamr@2
   276
class CTzLocalizedTimeZoneArray : public CTzLocalizedArray<CTzLocalizedTimeZone>
williamr@2
   277
	{
williamr@2
   278
	public:
williamr@2
   279
		IMPORT_C static CTzLocalizedTimeZoneArray* NewL();
williamr@2
   280
		IMPORT_C static CTzLocalizedTimeZoneArray* NewLC();
williamr@2
   281
williamr@2
   282
		IMPORT_C CTzLocalizedTimeZone& At(TInt aIndex) const;
williamr@2
   283
		IMPORT_C TInt Count() const;
williamr@2
   284
		IMPORT_C void AppendL(CTzLocalizedTimeZone* aElement);
williamr@2
   285
		IMPORT_C void Remove(TInt aIndex);
williamr@2
   286
		IMPORT_C void Sort(TLinearOrder<CTzLocalizedTimeZone> anOrder);
williamr@2
   287
		IMPORT_C TInt Find(CTzLocalizedTimeZone* anEntry,TIdentityRelation<CTzLocalizedTimeZone> aIdentityRelation);
williamr@2
   288
	};
williamr@2
   289
williamr@2
   290
#include <tzlocalizationdatatypes.inl>
williamr@2
   291
williamr@2
   292
#endif //__TZLOCAL_DATATYPES_H__
williamr@2
   293
//==================================================================
williamr@2
   294
// End of file
williamr@2
   295
//==================================================================