You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by pp...@apache.org on 2013/06/18 18:48:35 UTC

js commit: [CB-3739][Tizen][Tizen SDK 2.1 Nectarine] - globalize API

Updated Branches:
  refs/heads/master 3068eff17 -> be7fa3204


[CB-3739][Tizen][Tizen SDK 2.1 Nectarine]  - globalize API

provide a partial implementation using Tizen Device API

Using Device API is definitely not the right way as the support is partial
due to a lack of support of globalization from the tizen Web APIs

Tizen Web UI framework is using Globilize.js
So I will go with Globalize.js in order to provide a full support
Globalize.js was originally a jQuery plugin but is now independant as a JavaScript library


Project: http://git-wip-us.apache.org/repos/asf/cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-js/commit/be7fa320
Tree: http://git-wip-us.apache.org/repos/asf/cordova-js/tree/be7fa320
Diff: http://git-wip-us.apache.org/repos/asf/cordova-js/diff/be7fa320

Branch: refs/heads/master
Commit: be7fa3204fc993a056e6e1f585e816d98937af95
Parents: 3068eff
Author: pplaquette <pp...@apache.org>
Authored: Tue Jun 18 18:42:53 2013 +0200
Committer: pplaquette <pp...@apache.org>
Committed: Tue Jun 18 18:42:53 2013 +0200

----------------------------------------------------------------------
 lib/tizen/plugin/tizen/Globalization.js | 118 +++++++++++++++++++++++++--
 1 file changed, 111 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-js/blob/be7fa320/lib/tizen/plugin/tizen/Globalization.js
----------------------------------------------------------------------
diff --git a/lib/tizen/plugin/tizen/Globalization.js b/lib/tizen/plugin/tizen/Globalization.js
index c1c51e6..aa7f94a 100644
--- a/lib/tizen/plugin/tizen/Globalization.js
+++ b/lib/tizen/plugin/tizen/Globalization.js
@@ -19,6 +19,9 @@
  *
 */
 
+
+/*global tizen:false */
+
 var argscheck = require('cordova/argscheck'),
     exec = require('cordova/exec'),
     GlobalizationError = require('cordova/plugin/GlobalizationError');
@@ -43,8 +46,19 @@ var globalization = {
 *                                function () {});
 */
 getPreferredLanguage:function(successCB, failureCB) {
-    argscheck.checkArgs('fF', 'Globalization.getPreferredLanguage', arguments);
     console.log('exec(successCB, failureCB, "Globalization","getPreferredLanguage", []);');
+
+    tizen.systeminfo.getPropertyValue (
+        "LOCALE",
+        function (localeInfo) {
+            console.log("Cordova, getLocaleName, language is  " + localeInfo.language);
+            successCB( {"value": localeInfo.language});
+        },
+        function(error) {
+            console.log("Cordova, getLocaleName, An error occurred " + error.message);
+            failureCB(new GlobalizationError(GlobalizationError.UNKNOWN_ERROR , "cannot retrieve language name"));
+        }
+    );
 },
 
 /**
@@ -65,8 +79,17 @@ getPreferredLanguage:function(successCB, failureCB) {
 *                                function () {});
 */
 getLocaleName:function(successCB, failureCB) {
-    argscheck.checkArgs('fF', 'Globalization.getLocaleName', arguments);
-    console.log('exec(successCB, failureCB, "Globalization","getLocaleName", []);');
+    tizen.systeminfo.getPropertyValue (
+        "LOCALE",
+        function (localeInfo) {
+            console.log("Cordova, getLocaleName, locale name (country) is  " + localeInfo.country);
+            successCB( {"value":localeInfo.language});
+        },
+        function(error) {
+            console.log("Cordova, getLocaleName, An error occurred " + error.message);
+            failureCB(new GlobalizationError(GlobalizationError.UNKNOWN_ERROR , "cannot retrieve locale name"));
+        }
+    );
 },
 
 
@@ -96,9 +119,31 @@ getLocaleName:function(successCB, failureCB) {
 *                {formatLength:'short'});
 */
 dateToString:function(date, successCB, failureCB, options) {
-    argscheck.checkArgs('dfFO', 'Globalization.dateToString', arguments);
     var dateValue = date.valueOf();
     console.log('exec(successCB, failureCB, "Globalization", "dateToString", [{"date": dateValue, "options": options}]);');
+
+    var tzdate = null;
+    var format = null;
+
+    tzdate = new tizen.TZDate(date);
+
+    if (tzdate) {
+        if (options && (options.formatLength == 'short') ){
+            format = tzdate.toLocaleDateString();
+        }
+        else{
+            format = tzdate.toLocaleString();
+        }
+        console.log('Cordova, globalization, dateToString ' +format);
+    }
+
+    if (format)
+    {
+        successCB ({"value": format});
+    }
+    else {
+        failureCB(new GlobalizationError(GlobalizationError.FORMATTING_ERROR , "cannot format date string"));
+    }
 },
 
 
@@ -140,6 +185,9 @@ dateToString:function(date, successCB, failureCB, options) {
 stringToDate:function(dateString, successCB, failureCB, options) {
     argscheck.checkArgs('sfFO', 'Globalization.stringToDate', arguments);
     console.log('exec(successCB, failureCB, "Globalization", "stringToDate", [{"dateString": dateString, "options": options}]);');
+
+    //not supported
+    failureCB(new GlobalizationError(GlobalizationError.PARSING_ERROR , "unsupported"));
 },
 
 
@@ -176,8 +224,30 @@ stringToDate:function(dateString, successCB, failureCB, options) {
 *                {formatLength:'short'});
 */
 getDatePattern:function(successCB, failureCB, options) {
-    argscheck.checkArgs('fFO', 'Globalization.getDatePattern', arguments);
     console.log(' exec(successCB, failureCB, "Globalization", "getDatePattern", [{"options": options}]);');
+
+    var shortFormat = (options) ? ( options.formatLength === 'short') : true;
+
+    var formatString = tizen.time.getDateFormat ( shortFormat);
+
+
+    var current_datetime = tizen.time.getCurrentDateTime();
+
+    // probably will require some control of operation...
+    if (formatString)
+    {
+        successCB(
+            {
+                "pattern": formatString,
+                "timezone": current_datetime.getTimezoneAbbreviation(),
+                "utc_offset": current_datetime.difference(current_datetime.toUTC()).length,
+                "dst_offset": current_datetime.isDST()
+            }
+        );
+    }
+    else {
+        failureCB(new GlobalizationError(GlobalizationError.PATTERN_ERROR , "cannot get pattern"));
+    }
 },
 
 
@@ -209,6 +279,8 @@ getDatePattern:function(successCB, failureCB, options) {
 getDateNames:function(successCB, failureCB, options) {
     argscheck.checkArgs('fFO', 'Globalization.getDateNames', arguments);
     console.log('exec(successCB, failureCB, "Globalization", "getDateNames", [{"options": options}]);');
+
+    failureCB(new GlobalizationError(GlobalizationError.UNKNOWN_ERROR , "unsupported"));
 },
 
 /**
@@ -232,9 +304,24 @@ getDateNames:function(successCB, failureCB, options) {
 *                function () {});
 */
 isDayLightSavingsTime:function(date, successCB, failureCB) {
-    argscheck.checkArgs('dfF', 'Globalization.isDayLightSavingsTime', arguments);
-    var dateValue = date.valueOf();
+
+    var tzdate = null,
+        isDLS = false;
+
     console.log('exec(successCB, failureCB, "Globalization", "isDayLightSavingsTime", [{"date": dateValue}]);');
+    console.log("date " + date + " value " + date.valueOf()) ;
+
+    tzdate = new tizen.TZDate(date);
+    if (tzdate) {
+        isDLS = false | (tzdate && tzdate.isDST());
+
+        console.log ("Cordova, globalization, isDayLightSavingsTime, " + isDLS);
+
+        successCB({"dst":isDLS});
+    }
+    else {
+        failureCB(new GlobalizationError(GlobalizationError.UNKNOWN_ERROR , "cannot get information"));
+    }
 },
 
 /**
@@ -258,6 +345,12 @@ isDayLightSavingsTime:function(date, successCB, failureCB) {
 getFirstDayOfWeek:function(successCB, failureCB) {
     argscheck.checkArgs('fF', 'Globalization.getFirstDayOfWeek', arguments);
     console.log('exec(successCB, failureCB, "Globalization", "getFirstDayOfWeek", []);');
+
+    // there is no API to get the fist day of the week in Tizen Dvice API
+    successCB({value:1});
+
+    // first day of week is a settings in the date book app
+    // what about : getting the settings directly or asking the date book ?
 },
 
 
@@ -287,6 +380,8 @@ getFirstDayOfWeek:function(successCB, failureCB) {
 numberToString:function(number, successCB, failureCB, options) {
     argscheck.checkArgs('nfFO', 'Globalization.numberToString', arguments);
     console.log('exec(successCB, failureCB, "Globalization", "numberToString", [{"number": number, "options": options}]);');
+    //not supported
+    failureCB(new GlobalizationError(GlobalizationError.UNKNOWN_ERROR , "unsupported"));
 },
 
 /**
@@ -315,6 +410,9 @@ numberToString:function(number, successCB, failureCB, options) {
 stringToNumber:function(numberString, successCB, failureCB, options) {
     argscheck.checkArgs('sfFO', 'Globalization.stringToNumber', arguments);
     console.log('exec(successCB, failureCB, "Globalization", "stringToNumber", [{"numberString": numberString, "options": options}]);');
+
+    //not supported
+    failureCB(new GlobalizationError(GlobalizationError.UNKNOWN_ERROR , "unsupported"));
 },
 
 /**
@@ -352,6 +450,9 @@ stringToNumber:function(numberString, successCB, failureCB, options) {
 getNumberPattern:function(successCB, failureCB, options) {
     argscheck.checkArgs('fFO', 'Globalization.getNumberPattern', arguments);
     console.log('exec(successCB, failureCB, "Globalization", "getNumberPattern", [{"options": options}]);');
+
+    //not supported
+    failureCB(new GlobalizationError(GlobalizationError.UNKNOWN_ERROR , "unsupported"));
 },
 
 /**
@@ -384,6 +485,9 @@ getNumberPattern:function(successCB, failureCB, options) {
 getCurrencyPattern:function(currencyCode, successCB, failureCB) {
     argscheck.checkArgs('sfF', 'Globalization.getCurrencyPattern', arguments);
     console.log('exec(successCB, failureCB, "Globalization", "getCurrencyPattern", [{"currencyCode": currencyCode}]);');
+
+    //not supported
+    failureCB(new GlobalizationError(GlobalizationError.UNKNOWN_ERROR , "unsupported"));
 }
 
 };