[haiku-commits] r37718 - in haiku/trunk: headers/os/locale src/kits/locale

  • From: pulkomandy@xxxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 23 Jul 2010 15:19:33 +0200 (CEST)

Author: pulkomandy
Date: 2010-07-23 15:19:33 +0200 (Fri, 23 Jul 2010)
New Revision: 37718
Changeset: http://dev.haiku-os.org/changeset/37718

Added:
   haiku/trunk/headers/os/locale/TimeZone.h
   haiku/trunk/src/kits/locale/TimeZone.cpp
Modified:
   haiku/trunk/src/kits/locale/Jamfile
Log:
 * Add a BTimeZone class for handling time zones.


Added: haiku/trunk/headers/os/locale/TimeZone.h
===================================================================
--- haiku/trunk/headers/os/locale/TimeZone.h                            (rev 0)
+++ haiku/trunk/headers/os/locale/TimeZone.h    2010-07-23 13:19:33 UTC (rev 
37718)
@@ -0,0 +1,31 @@
+/*
+Copyright 2010, Haiku, Inc.
+Distributed under the terms of the MIT License.
+*/
+
+
+#ifndef __TIMEZONE_H__
+#define __TIMEZONE_H__
+
+
+class BString;
+namespace icu_44 {
+       class TimeZone;
+}
+
+
+class BTimeZone {
+       public:
+                                       BTimeZone(const char* zoneCode);
+                                       ~BTimeZone();
+
+               void            Name(BString& name);
+               void            Code(BString& code);
+               int                     OffsetFromGMT();
+
+       private:
+               icu_44::TimeZone*       fICUTimeZone;
+};
+
+
+#endif

Modified: haiku/trunk/src/kits/locale/Jamfile
===================================================================
--- haiku/trunk/src/kits/locale/Jamfile 2010-07-23 13:11:55 UTC (rev 37717)
+++ haiku/trunk/src/kits/locale/Jamfile 2010-07-23 13:19:33 UTC (rev 37718)
@@ -11,8 +11,16 @@
        Catalog.cpp
        Collator.cpp
        Country.cpp
+       DefaultCatalog.cpp
+       HashMapCatalog.cpp
+       Language.cpp
+       LibbeLocaleBackend.cpp
+       LibraryInit.cpp
+       Locale.cpp
+       LocaleRoster.cpp
+       TimeZone.cpp
+
        Currency.cpp
-       DefaultCatalog.cpp
        FloatFormat.cpp
        FloatFormatImpl.cpp
        FloatFormatParameters.cpp
@@ -20,16 +28,10 @@
        FormatImpl.cpp
        FormatParameters.cpp
        GenericNumberFormat.cpp
-       HashMapCatalog.cpp
        IntegerFormat.cpp
        IntegerFormatImpl.cpp
        IntegerFormatParameters.cpp
        langinfo.cpp
-       Language.cpp
-       LibbeLocaleBackend.cpp
-       LibraryInit.cpp
-       Locale.cpp
-       LocaleRoster.cpp
        NumberFormat.cpp
        NumberFormatImpl.cpp
        NumberFormatParameters.cpp

Added: haiku/trunk/src/kits/locale/TimeZone.cpp
===================================================================
--- haiku/trunk/src/kits/locale/TimeZone.cpp                            (rev 0)
+++ haiku/trunk/src/kits/locale/TimeZone.cpp    2010-07-23 13:19:33 UTC (rev 
37718)
@@ -0,0 +1,62 @@
+/*
+Copyright 2010, Adrien Destugues <pulkomandy@xxxxxxxxxxxxxxxxx>
+Distributed under the terms of the MIT License.
+*/
+
+
+#include <TimeZone.h>
+
+#include <String.h>
+
+#include <unicode/timezone.h>
+#include <ICUWrapper.h>
+
+
+BTimeZone::BTimeZone(const char* zoneCode)
+{
+       fICUTimeZone = TimeZone::createTimeZone(zoneCode);
+}
+
+
+BTimeZone::~BTimeZone()
+{
+       delete fICUTimeZone;
+}
+
+
+void
+BTimeZone::Name(BString& name)
+{
+       UnicodeString unicodeName;
+       fICUTimeZone->getDisplayName(unicodeName);
+
+       BStringByteSink converter(&name);
+       unicodeName.toUTF8(converter);
+}
+
+
+void
+BTimeZone::Code(BString& code)
+{
+       UnicodeString unicodeName;
+       fICUTimeZone->getID(unicodeName);
+
+       BStringByteSink converter(&code);
+       unicodeName.toUTF8(converter);
+}
+
+
+int
+BTimeZone::OffsetFromGMT()
+{
+       int32_t rawOffset;
+       int32_t dstOffset;
+       time_t now;
+       UErrorCode error = U_ZERO_ERROR;
+       fICUTimeZone->getOffset(time(&now) * 1000, FALSE, rawOffset, dstOffset
+               , error);
+       if (error != U_ZERO_ERROR)
+               return 0;
+       else
+               return rawOffset + dstOffset;
+}


Other related posts: