You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bh...@apache.org on 2014/07/30 21:06:34 UTC
[17/38] git commit: BB10: Initial implementation of getDatePattern.
BB10: Initial implementation of getDatePattern.
* Just default value now, not sure how to apply options yet.
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-globalization/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-globalization/commit/17d16d56
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-globalization/tree/17d16d56
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-globalization/diff/17d16d56
Branch: refs/heads/lyon-g11n
Commit: 17d16d56a41bdc3a10360a58336f8c7222cbbc89
Parents: 471bdb3
Author: Lianghui Chen <li...@blackberry.com>
Authored: Wed Jul 23 16:15:30 2014 -0400
Committer: Lianghui Chen <li...@blackberry.com>
Committed: Mon Jul 28 15:10:46 2014 -0400
----------------------------------------------------------------------
.../native/src/globalization_ndk.cpp | 62 +++++++++++++++++++-
1 file changed, 61 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-globalization/blob/17d16d56/src/blackberry10/native/src/globalization_ndk.cpp
----------------------------------------------------------------------
diff --git a/src/blackberry10/native/src/globalization_ndk.cpp b/src/blackberry10/native/src/globalization_ndk.cpp
index 257ce38..48c63fc 100644
--- a/src/blackberry10/native/src/globalization_ndk.cpp
+++ b/src/blackberry10/native/src/globalization_ndk.cpp
@@ -20,6 +20,7 @@
#include <sys/slog2.h>
#include <unicode/calendar.h>
#include <unicode/datefmt.h>
+#include <unicode/smpdtfmt.h>
#include "globalization_ndk.hpp"
#include "globalization_js.hpp"
@@ -92,6 +93,21 @@ std::string resultInJson(const UDate& date)
return writer.write(root);
}
+std::string resultInJson(const std::string& pattern, const std::string& timezone, int utc_offset, int dst_offset)
+{
+ Json::Value result;
+ result["pattern"] = pattern;
+ result["timezone"] = timezone;
+ result["utc_offset"] = utc_offset;
+ result["dst_offset"] = dst_offset;
+
+ Json::Value root;
+ root["result"] = result;
+
+ Json::FastWriter writer;
+ return writer.write(root);
+}
+
GlobalizationNDK::GlobalizationNDK(GlobalizationJS *parent) {
m_pParent = parent;
}
@@ -329,7 +345,51 @@ std::string GlobalizationNDK::stringToDate(const std::string& args)
std::string GlobalizationNDK::getDatePattern(const std::string& args)
{
- return errorInJson(UNKNOWN_ERROR, "Not supported!");
+ DateFormat::EStyle dstyle = DateFormat::kShort, tstyle = DateFormat::kShort;
+
+ if (!args.empty()) {
+ Json::Reader reader;
+ Json::Value root;
+ bool parse = reader.parse(args, root);
+
+ if (!parse) {
+ slog2f(0, ID_G11N, SLOG2_ERROR, "GlobalizationNDK::getDatePattern: invalid json data: %s",
+ args.c_str());
+ return errorInJson(PARSING_ERROR, "Parameters not valid json format!");
+ }
+
+ Json::Value options = root["options"];
+
+ std::string error;
+ if (!handleDateOptions(options, dstyle, tstyle, error))
+ return errorInJson(PARSING_ERROR, error);
+ }
+
+ UErrorCode status = U_ZERO_ERROR;
+ SimpleDateFormat* sdf = new SimpleDateFormat(status);
+ if (!sdf) {
+ slog2f(0, ID_G11N, SLOG2_ERROR, "GlobalizationNDK::getDatePattern: unable to create SimpleDateFormat instance: %d.",
+ status);
+ return errorInJson(UNKNOWN_ERROR, "Unable to create SimpleDateFormat instance!");
+ }
+
+ UnicodeString pt;
+ sdf->toPattern(pt);
+ std::string ptUtf8;
+ pt.toUTF8String(ptUtf8);
+
+ const TimeZone& tz = sdf->getTimeZone();
+ UnicodeString tzName;
+ tz.getDisplayName(tzName);
+ std::string tzUtf8;
+ tzName.toUTF8String(tzUtf8);
+
+ int utc_offset = tz.getRawOffset() / 1000; // UTC_OFFSET in seconds.
+ int dst_offset = tz.getDSTSavings() / 1000; // DST_OFFSET in seconds;
+
+ delete sdf;
+
+ return resultInJson(ptUtf8, tzUtf8, utc_offset, dst_offset);
}
std::string GlobalizationNDK::getDateNames(const std::string& args)