epoc32/include/tzlocalizer.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 __TzLocalizer_H__
williamr@2
    17
#define __TzLocalizer_H__
williamr@2
    18
williamr@2
    19
#include <e32base.h> //CBase
williamr@2
    20
williamr@2
    21
#include <tzlocalizationdatatypes.h> 	//CTzLocalizedCity, CTzLocalizedCityGroup etc
williamr@2
    22
williamr@2
    23
// Forward Declarations
williamr@2
    24
class MTzLocalizationReader;
williamr@2
    25
class MTzLocalizationWriter;
williamr@2
    26
williamr@2
    27
/**
williamr@2
    28
Retrieves localized time zone information based on a time zone ID.
williamr@2
    29
williamr@2
    30
Time zone information is available in the following forms:
williamr@2
    31
- Standard Name, for instance Greenwich Mean Time,
williamr@2
    32
- Short Standard Name, for instance GMT,
williamr@2
    33
- Daylight Savings Name, for instance British Summer Time,
williamr@2
    34
- Short Daylight Savings Name, for instance BST.
williamr@2
    35
williamr@2
    36
This information is encapsulated in a CTzLocalizedTimeZone object.
williamr@2
    37
williamr@2
    38
A collection of localizable cities for a specific time zone can also be returned.
williamr@2
    39
New cities can be added to a time zone.  Cities may also be added to groups, but 
williamr@2
    40
a city may only be a member of one group.
williamr@2
    41
williamr@2
    42
@publishedAll
williamr@2
    43
@released
williamr@2
    44
*/
williamr@2
    45
class CTzLocalizer : public CBase
williamr@2
    46
	{
williamr@2
    47
	public:
williamr@2
    48
		/** Panic reasons for the time zone localization component. */
williamr@2
    49
		enum TTzLocalizerPanics
williamr@2
    50
			{
williamr@2
    51
			/** The time zone server was not found. */
williamr@2
    52
			ETzLocalizerPanicTimeZoneServerNotFound,
williamr@2
    53
			/** A resource file was not found. */
williamr@2
    54
			ETzLocalizerPanicResourceFileNotFound
williamr@2
    55
			};
williamr@2
    56
williamr@2
    57
		/** Used to specify the sort order of localized time zone information. */
williamr@2
    58
		enum TTzSortOrder
williamr@2
    59
			{
williamr@2
    60
			/** Unsorted. This is the fastest way to get localized data. */
williamr@2
    61
			ETzUnsorted,
williamr@2
    62
			/** Sort by UTC offset starting with the lowest. */
williamr@2
    63
			ETzUTCAscending,
williamr@2
    64
			/** Sort by UTC offset starting with the highest. */
williamr@2
    65
			ETzUTCDescending,
williamr@2
    66
			/** Sort by name (city name/group name/standard time zone name), from A-Z. */
williamr@2
    67
			ETzAlphaNameAscending,
williamr@2
    68
			/** Sort by name (city name/group name/standard time zone name), from Z-A. */
williamr@2
    69
			ETzAlphaNameDescending,
williamr@2
    70
			/** Sort by standard name from A-Z. */
williamr@2
    71
			ETzAlphaStandardNameAscending,
williamr@2
    72
			/** Sort by daylight savings name from A-Z. */
williamr@2
    73
			ETzAlphaDaylightNameAscending,
williamr@2
    74
			/** Sort by short standard name from A-Z. */
williamr@2
    75
			ETzAlphaShortStandardNameAscending,
williamr@2
    76
			/** Sort by short daylight savings name from A-Z. */
williamr@2
    77
			ETzAlphaShortDaylightNameAscending,
williamr@2
    78
			/** Sort by standard name from Z-A. */
williamr@2
    79
			ETzAlphaStandardNameDescending,
williamr@2
    80
			/** Sort by daylight savings name from Z-A. */
williamr@2
    81
			ETzAlphaDaylightNameDescending,
williamr@2
    82
			/** Sort by short standard name from Z-A. */
williamr@2
    83
			ETzAlphaShortStandardNameDescending,
williamr@2
    84
			/** Sort by short daylight savings name from Z-A. */
williamr@2
    85
			ETzAlphaShortDaylightNameDescending
williamr@2
    86
			};
williamr@2
    87
williamr@2
    88
	public:
williamr@2
    89
		//Construction / Destruction
williamr@2
    90
		IMPORT_C static CTzLocalizer* NewL();
williamr@2
    91
		IMPORT_C static CTzLocalizer* NewLC();
williamr@2
    92
		IMPORT_C ~CTzLocalizer();
williamr@2
    93
williamr@2
    94
		//Time zones
williamr@2
    95
		IMPORT_C CTzLocalizedTimeZone* GetLocalizedTimeZoneL(TInt aTimeZoneId) const;
williamr@2
    96
		IMPORT_C CTzLocalizedTimeZone* GetLocalizedTimeZoneL(const CTzLocalizedCity& aCity) const;
williamr@2
    97
		IMPORT_C CTzLocalizedTimeZoneArray* GetAllTimeZonesL(const TTzSortOrder aSortOrder = ETzUnsorted);
williamr@2
    98
		
williamr@2
    99
		IMPORT_C void SetTimeZoneL(TInt aTimeZoneId);
williamr@2
   100
williamr@2
   101
		//City Management
williamr@2
   102
		IMPORT_C CTzLocalizedCity* GetDefaultCityL(TInt aTimeZoneId) const;
williamr@2
   103
		IMPORT_C CTzLocalizedCity* GetDefaultCityL(const CTzLocalizedCity& aCity) const;
williamr@2
   104
		IMPORT_C CTzLocalizedCity* GetDefaultCityL(const CTzLocalizedTimeZone& aTimeZone) const;
williamr@2
   105
williamr@2
   106
		IMPORT_C CTzLocalizedCityArray* GetCitiesL(const TTzSortOrder aSortOrder = ETzUnsorted);
williamr@2
   107
		IMPORT_C CTzLocalizedCityArray* GetCitiesL(TInt aTimeZoneId,const TTzSortOrder aSortOrder = ETzUnsorted);
williamr@2
   108
		IMPORT_C CTzLocalizedCityArray* GetCitiesL(const CTzLocalizedTimeZone& aTimeZone,const TTzSortOrder aSortOrder = ETzUnsorted);
williamr@2
   109
		IMPORT_C CTzLocalizedCityArray* GetCitiesL(const CTzLocalizedCity& aCity,const TTzSortOrder aSortOrder = ETzUnsorted);
williamr@2
   110
williamr@2
   111
		IMPORT_C CTzLocalizedCity* AddCityL(TInt aTimeZoneId,const TDesC& aCityName, TInt aGroupId = 0);
williamr@2
   112
		IMPORT_C void RemoveCityL(CTzLocalizedCity* aCity);
williamr@2
   113
williamr@2
   114
		//City Groups
williamr@2
   115
		IMPORT_C CTzLocalizedCityGroupArray* GetAllCityGroupsL(const TTzSortOrder aSortOrder = ETzUnsorted) const;
williamr@2
   116
		IMPORT_C CTzLocalizedCityGroup* GetCityGroupL(TInt aGroupId) const;
williamr@2
   117
		IMPORT_C CTzLocalizedCityGroup* GetCityGroupL(const CTzLocalizedCity& aCity) const ;
williamr@2
   118
williamr@2
   119
		IMPORT_C CTzLocalizedCityArray* GetCitiesInGroupL(TInt aGroupId,const TTzSortOrder aSortOrder = ETzUnsorted);
williamr@2
   120
		IMPORT_C CTzLocalizedCityArray* GetCitiesInGroupL(const CTzLocalizedCity& aCity,const TTzSortOrder aSortOrder = ETzUnsorted);
williamr@2
   121
		IMPORT_C CTzLocalizedCityArray* GetCitiesInGroupL(const CTzLocalizedCityGroup& aCityGroup,const TTzSortOrder aSortOrder = ETzUnsorted);
williamr@2
   122
williamr@2
   123
		//Frequently Used Zones
williamr@2
   124
		IMPORT_C CTzLocalizedTimeZone* GetFrequentlyUsedZoneL(const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
williamr@2
   125
		IMPORT_C CTzLocalizedCity* GetFrequentlyUsedZoneCityL(const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
williamr@2
   126
		IMPORT_C void SetFrequentlyUsedZoneL(TInt aTimeZoneId,const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
williamr@2
   127
		IMPORT_C void SetFrequentlyUsedZoneL(const CTzLocalizedTimeZone& aTimeZone,const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
williamr@2
   128
		IMPORT_C void SetFrequentlyUsedZoneL(const CTzLocalizedCity& aCity,const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
williamr@2
   129
williamr@2
   130
		//Find functions
williamr@2
   131
		IMPORT_C CTzLocalizedCity* FindCityByNameL(const TDesC& aCityName, const TInt aTimeZoneId = 0);
williamr@2
   132
		IMPORT_C CTzLocalizedTimeZone* FindTimeZoneByNameL(const TDesC& aTimeZoneName);
williamr@2
   133
		IMPORT_C CTzLocalizedCityGroup* FindCityGroupByNameL(const TDesC& aCityGroupName);
williamr@2
   134
		
williamr@2
   135
		IMPORT_C TBool CheckLanguage();
williamr@2
   136
		
williamr@2
   137
		//Cities and Time Zones with a specified UTC offset
williamr@2
   138
		IMPORT_C CTzLocalizedCityArray* GetCitiesWithUTCOffsetL(TInt aUTCOffsetInMinutes, const TTzSortOrder aSortOrder = ETzUnsorted);
williamr@2
   139
		IMPORT_C CTzLocalizedTimeZoneArray* GetTimeZonesWithUTCOffsetL(TInt aUTCOffsetInMinutes, const TTzSortOrder aSortOrder = ETzUnsorted);
williamr@2
   140
		
williamr@2
   141
	private:
williamr@2
   142
		void ConstructL();
williamr@2
   143
		CTzLocalizer();
williamr@2
   144
		
williamr@2
   145
		TBool PrepareFrequentlyUsedZonesL();
williamr@2
   146
		void UpdateFrequentlyUsedZonesL();
williamr@2
   147
		CTzLocalizedTimeZone* GetFrequentlyUsedDefaultZoneL(CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFreqUsedZone);
williamr@2
   148
		TUint32 GetFrequentlyUsedDefaultZoneCenRepKeyL(CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFreqUsedZone);
williamr@2
   149
		
williamr@2
   150
		void GetCitiesL(CTzLocalizedCityArray& aCities, const TTzLocalizedId& aLocalizedId, const TTzSortOrder aSortOrder = ETzUnsorted);
williamr@2
   151
		
williamr@2
   152
		TLinearOrder<CTzLocalizedCity> CitySortOrderL(const TTzSortOrder aSortOrder);
williamr@2
   153
		TLinearOrder<CTzLocalizedTimeZone> TimeZoneSortOrderL(const TTzSortOrder aSortOrder);
williamr@2
   154
		template <class T> void PrepareForUTCSortL(T& aArray);
williamr@2
   155
		
williamr@2
   156
		TInt GetTimeZoneIdFromTzServerL();
williamr@2
   157
		void DoSetTimeZoneL(TInt aTimeZoneId);
williamr@2
   158
		void ChangeHomeTimeZoneL(TInt aNewId);
williamr@2
   159
		
williamr@2
   160
		void ValidateDbL();
williamr@2
   161
        void RecreateDbL();
williamr@2
   162
        TBool DbNeedsUpdatingL() const;
williamr@2
   163
		TBool DbIsInvalidL() const;
williamr@2
   164
        void UpgradeDbVersionL();
williamr@2
   165
        void FetchCityToUpgradeL(CTzLocalizedTimeZoneArray& aTimeZoneArray, CTzLocalizedCityArray& aCityArray, CTzLocalizedTimeZone::TTzFrequentlyUsedZone aCachedZone);
williamr@2
   166
williamr@2
   167
	private:
williamr@2
   168
		//Member data
williamr@2
   169
		MTzLocalizationReader* iStaticDataReader;
williamr@2
   170
		MTzLocalizationReader* iPersistedDataReader;
williamr@2
   171
		MTzLocalizationWriter* iPersistedDataWriter;
williamr@2
   172
		TLanguage iLanguage;
williamr@2
   173
	};
williamr@2
   174
williamr@2
   175
#endif//__TzLocalizer_H__