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__
|