Added support for getting a list of all available timezone IDs to LocaleRoster.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38321 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Oliver Tappe 2010-08-23 14:46:54 +00:00
parent 34d9bfb077
commit 039ad7e757
2 changed files with 32 additions and 0 deletions

View File

@ -45,6 +45,7 @@ public:
// contain the language-name(s)
status_t GetAvailableCountries(BMessage* message) const;
status_t GetAvailableTimeZones(BMessage* message) const;
status_t GetInstalledCatalogs(BMessage* message,
const char* sigPattern = NULL,

View File

@ -229,6 +229,37 @@ BLocaleRoster::GetAvailableCountries(BMessage* countries) const
}
status_t
BLocaleRoster::GetAvailableTimeZones(BMessage* timeZones) const
{
if (!timeZones)
return B_BAD_VALUE;
status_t status = B_OK;
int32 i;
StringEnumeration* zoneList = TimeZone::createEnumeration();
UErrorCode icuStatus = U_ZERO_ERROR;
int32 count = zoneList->count(icuStatus);
if (U_SUCCESS(icuStatus)) {
for (i = 0; i < count; ++i) {
const char* zoneID = zoneList->next(NULL, icuStatus);
if (zoneID == NULL || !U_SUCCESS(icuStatus)) {
status = B_ERROR;
break;
}
timeZones->AddString("timeZone", zoneID);
}
} else
status = B_ERROR;
delete zoneList;
return status;
}
status_t
BLocaleRoster::GetInstalledCatalogs(BMessage* languageList,
const char* sigPattern, const char* langPattern, int32 fingerprint) const