diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/tzlocalizer.h --- a/epoc32/include/tzlocalizer.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/tzlocalizer.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,175 @@ -tzlocalizer.h +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// 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 +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __TzLocalizer_H__ +#define __TzLocalizer_H__ + +#include //CBase + +#include //CTzLocalizedCity, CTzLocalizedCityGroup etc + +// Forward Declarations +class MTzLocalizationReader; +class MTzLocalizationWriter; + +/** +Retrieves localized time zone information based on a time zone ID. + +Time zone information is available in the following forms: +- Standard Name, for instance Greenwich Mean Time, +- Short Standard Name, for instance GMT, +- Daylight Savings Name, for instance British Summer Time, +- Short Daylight Savings Name, for instance BST. + +This information is encapsulated in a CTzLocalizedTimeZone object. + +A collection of localizable cities for a specific time zone can also be returned. +New cities can be added to a time zone. Cities may also be added to groups, but +a city may only be a member of one group. + +@publishedAll +@released +*/ +class CTzLocalizer : public CBase + { + public: + /** Panic reasons for the time zone localization component. */ + enum TTzLocalizerPanics + { + /** The time zone server was not found. */ + ETzLocalizerPanicTimeZoneServerNotFound, + /** A resource file was not found. */ + ETzLocalizerPanicResourceFileNotFound + }; + + /** Used to specify the sort order of localized time zone information. */ + enum TTzSortOrder + { + /** Unsorted. This is the fastest way to get localized data. */ + ETzUnsorted, + /** Sort by UTC offset starting with the lowest. */ + ETzUTCAscending, + /** Sort by UTC offset starting with the highest. */ + ETzUTCDescending, + /** Sort by name (city name/group name/standard time zone name), from A-Z. */ + ETzAlphaNameAscending, + /** Sort by name (city name/group name/standard time zone name), from Z-A. */ + ETzAlphaNameDescending, + /** Sort by standard name from A-Z. */ + ETzAlphaStandardNameAscending, + /** Sort by daylight savings name from A-Z. */ + ETzAlphaDaylightNameAscending, + /** Sort by short standard name from A-Z. */ + ETzAlphaShortStandardNameAscending, + /** Sort by short daylight savings name from A-Z. */ + ETzAlphaShortDaylightNameAscending, + /** Sort by standard name from Z-A. */ + ETzAlphaStandardNameDescending, + /** Sort by daylight savings name from Z-A. */ + ETzAlphaDaylightNameDescending, + /** Sort by short standard name from Z-A. */ + ETzAlphaShortStandardNameDescending, + /** Sort by short daylight savings name from Z-A. */ + ETzAlphaShortDaylightNameDescending + }; + + public: + //Construction / Destruction + IMPORT_C static CTzLocalizer* NewL(); + IMPORT_C static CTzLocalizer* NewLC(); + IMPORT_C ~CTzLocalizer(); + + //Time zones + IMPORT_C CTzLocalizedTimeZone* GetLocalizedTimeZoneL(TInt aTimeZoneId) const; + IMPORT_C CTzLocalizedTimeZone* GetLocalizedTimeZoneL(const CTzLocalizedCity& aCity) const; + IMPORT_C CTzLocalizedTimeZoneArray* GetAllTimeZonesL(const TTzSortOrder aSortOrder = ETzUnsorted); + + IMPORT_C void SetTimeZoneL(TInt aTimeZoneId); + + //City Management + IMPORT_C CTzLocalizedCity* GetDefaultCityL(TInt aTimeZoneId) const; + IMPORT_C CTzLocalizedCity* GetDefaultCityL(const CTzLocalizedCity& aCity) const; + IMPORT_C CTzLocalizedCity* GetDefaultCityL(const CTzLocalizedTimeZone& aTimeZone) const; + + IMPORT_C CTzLocalizedCityArray* GetCitiesL(const TTzSortOrder aSortOrder = ETzUnsorted); + IMPORT_C CTzLocalizedCityArray* GetCitiesL(TInt aTimeZoneId,const TTzSortOrder aSortOrder = ETzUnsorted); + IMPORT_C CTzLocalizedCityArray* GetCitiesL(const CTzLocalizedTimeZone& aTimeZone,const TTzSortOrder aSortOrder = ETzUnsorted); + IMPORT_C CTzLocalizedCityArray* GetCitiesL(const CTzLocalizedCity& aCity,const TTzSortOrder aSortOrder = ETzUnsorted); + + IMPORT_C CTzLocalizedCity* AddCityL(TInt aTimeZoneId,const TDesC& aCityName, TInt aGroupId = 0); + IMPORT_C void RemoveCityL(CTzLocalizedCity* aCity); + + //City Groups + IMPORT_C CTzLocalizedCityGroupArray* GetAllCityGroupsL(const TTzSortOrder aSortOrder = ETzUnsorted) const; + IMPORT_C CTzLocalizedCityGroup* GetCityGroupL(TInt aGroupId) const; + IMPORT_C CTzLocalizedCityGroup* GetCityGroupL(const CTzLocalizedCity& aCity) const ; + + IMPORT_C CTzLocalizedCityArray* GetCitiesInGroupL(TInt aGroupId,const TTzSortOrder aSortOrder = ETzUnsorted); + IMPORT_C CTzLocalizedCityArray* GetCitiesInGroupL(const CTzLocalizedCity& aCity,const TTzSortOrder aSortOrder = ETzUnsorted); + IMPORT_C CTzLocalizedCityArray* GetCitiesInGroupL(const CTzLocalizedCityGroup& aCityGroup,const TTzSortOrder aSortOrder = ETzUnsorted); + + //Frequently Used Zones + IMPORT_C CTzLocalizedTimeZone* GetFrequentlyUsedZoneL(const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone); + IMPORT_C CTzLocalizedCity* GetFrequentlyUsedZoneCityL(const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone); + IMPORT_C void SetFrequentlyUsedZoneL(TInt aTimeZoneId,const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone); + IMPORT_C void SetFrequentlyUsedZoneL(const CTzLocalizedTimeZone& aTimeZone,const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone); + IMPORT_C void SetFrequentlyUsedZoneL(const CTzLocalizedCity& aCity,const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone); + + //Find functions + IMPORT_C CTzLocalizedCity* FindCityByNameL(const TDesC& aCityName, const TInt aTimeZoneId = 0); + IMPORT_C CTzLocalizedTimeZone* FindTimeZoneByNameL(const TDesC& aTimeZoneName); + IMPORT_C CTzLocalizedCityGroup* FindCityGroupByNameL(const TDesC& aCityGroupName); + + IMPORT_C TBool CheckLanguage(); + + //Cities and Time Zones with a specified UTC offset + IMPORT_C CTzLocalizedCityArray* GetCitiesWithUTCOffsetL(TInt aUTCOffsetInMinutes, const TTzSortOrder aSortOrder = ETzUnsorted); + IMPORT_C CTzLocalizedTimeZoneArray* GetTimeZonesWithUTCOffsetL(TInt aUTCOffsetInMinutes, const TTzSortOrder aSortOrder = ETzUnsorted); + + private: + void ConstructL(); + CTzLocalizer(); + + TBool PrepareFrequentlyUsedZonesL(); + void UpdateFrequentlyUsedZonesL(); + CTzLocalizedTimeZone* GetFrequentlyUsedDefaultZoneL(CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFreqUsedZone); + TUint32 GetFrequentlyUsedDefaultZoneCenRepKeyL(CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFreqUsedZone); + + void GetCitiesL(CTzLocalizedCityArray& aCities, const TTzLocalizedId& aLocalizedId, const TTzSortOrder aSortOrder = ETzUnsorted); + + TLinearOrder CitySortOrderL(const TTzSortOrder aSortOrder); + TLinearOrder TimeZoneSortOrderL(const TTzSortOrder aSortOrder); + template void PrepareForUTCSortL(T& aArray); + + TInt GetTimeZoneIdFromTzServerL(); + void DoSetTimeZoneL(TInt aTimeZoneId); + void ChangeHomeTimeZoneL(TInt aNewId); + + void ValidateDbL(); + void RecreateDbL(); + TBool DbNeedsUpdatingL() const; + TBool DbIsInvalidL() const; + void UpgradeDbVersionL(); + void FetchCityToUpgradeL(CTzLocalizedTimeZoneArray& aTimeZoneArray, CTzLocalizedCityArray& aCityArray, CTzLocalizedTimeZone::TTzFrequentlyUsedZone aCachedZone); + + private: + //Member data + MTzLocalizationReader* iStaticDataReader; + MTzLocalizationReader* iPersistedDataReader; + MTzLocalizationWriter* iPersistedDataWriter; + TLanguage iLanguage; + }; + +#endif//__TzLocalizer_H__