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 <[email protected]> Authored: Tue Jun 18 18:42:53 2013 +0200 Committer: pplaquette <[email protected]> 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")); } };
