From cd06a6d9d3a7e0395ac8be0f8b0a2230a3969186 Mon Sep 17 00:00:00 2001 From: Pawel Andruszkiewicz Date: Fri, 8 Apr 2016 08:56:40 +0200 Subject: [PATCH] [Globalization] Code structure changed to match cordova architecture. Change-Id: I24a19cf4c50fa31498dc432ef436e9a7d01350b5 Signed-off-by: Pawel Andruszkiewicz --- src/cordova/cordova_api.js | 9 +- .../cordova_globalization_api.js | 166 +++-------------- src/lib/cordova_plugins.js | 5 + .../tizen/Globalization.js | 170 ++++++++++++++++++ 4 files changed, 200 insertions(+), 150 deletions(-) create mode 100755 src/lib/plugins/cordova-plugin-globalization/tizen/Globalization.js diff --git a/src/cordova/cordova_api.js b/src/cordova/cordova_api.js index 0dd918a..516c2bc 100755 --- a/src/cordova/cordova_api.js +++ b/src/cordova/cordova_api.js @@ -53,12 +53,7 @@ exports = { } }); - // load all native plugins - for (var prop in tizen.cordova) { - if (tizen.cordova.hasOwnProperty(prop)) { - console.log('Trying to load: tizen.cordova.' + prop); - tizen.cordova[prop](require); - } - } + // load file native plugin + tizen.cordova.file(require); } }; diff --git a/src/globalization/cordova_globalization_api.js b/src/globalization/cordova_globalization_api.js index 42b6a84..c55fe0c 100755 --- a/src/globalization/cordova_globalization_api.js +++ b/src/globalization/cordova_globalization_api.js @@ -14,51 +14,13 @@ * limitations under the License. */ -var utils_ = xwalk.utils; -var native_ = new utils_.NativeManager(extension); +var native_ = new xwalk.utils.NativeManager(extension); -///// Globalization ////// -var selectorDateStr = 'date'; -var selectorTimeStr = 'time'; -var selectorDateAndTimeStr = selectorDateStr + ' and ' + selectorTimeStr; +var ONE_HOUR_SECONDS = 60 * 60; -var formatShortStr = 'short'; -var formatMediumStr = 'medium'; -var formatLongStr = 'long'; -var formatFullStr = 'full'; - -var typeWide = 'wide'; -var typeNarrow = 'narrow'; -var itemMonths = 'months'; -var itemDays = 'days'; - -var numberTypeDecimal = 'decimal'; -var numberTypePercent = 'percent'; -var numberTypeCurrency = 'currency'; - -var oneHourSeconds = 60*60; - -function Globalization_getPreferredLanguage(successCb, errorCb) { - // TODO Indicates the current language setting in the (LANGUAGE)_(REGION) syntax. - // The language setting is in the ISO 630-2 format and the region setting is in the ISO 3166-1 format. - tizen.systeminfo.getPropertyValue ('LOCALE', - function (locale) { - // replacing '_' with '-' to satisfy cordova language and region separator - var result = locale.language.replace('_', '-'); - successCb( {'value': result} ); - }, - function(error) { - console.log('Cordova, getLocaleName, An error occurred ' + error.message); - errorCb(new GlobalizationError(GlobalizationError.UNKNOWN_ERROR , - 'cannot retrieve language name')); - } - ); -} - -function Globalization_dateToString(timestamp, successCb, errorCb, options) { - var formatLength = (options && options.formatLength) || formatShortStr; - var selector = (options && options.selector) || selectorDateAndTimeStr; +function GlobalizationManager() {} +GlobalizationManager.prototype.dateToString = function(timestamp, formatLength, selector, successCb, errorCb) { var callback = function(result) { if (native_.isFailure(result)) { var error = new GlobalizationError( @@ -74,13 +36,9 @@ function Globalization_dateToString(timestamp, successCb, errorCb, options) { timestamp: String(timestamp) }; native_.call('CordovaGlobalization_dateToString', callArgs, callback); -} - -function Globalization_stringToDate(dateString, successCb, errorCb, options) { - var result = null; - var formatLength = (options && options.formatLength) || formatShortStr; - var selector = (options && options.selector) || selectorDateAndTimeStr; +}; +GlobalizationManager.prototype.stringToDate = function(dateString, formatLength, selector, successCb, errorCb) { var callback = function(result) { if (native_.isFailure(result)) { var error = new GlobalizationError( @@ -96,12 +54,9 @@ function Globalization_stringToDate(dateString, successCb, errorCb, options) { dateString : String(dateString) }; native_.call('CordovaGlobalization_stringToDate', callArgs, callback); -} - -function Globalization_getDatePattern(successCb, errorCb, options) { - var formatLength = (options && options.formatLength) || formatShortStr; - var selector = (options && options.selector) || selectorDateAndTimeStr; +}; +GlobalizationManager.prototype.getDatePattern = function(formatLength, selector, successCb, errorCb) { var callback = function(result) { // Checking success of gathering pattern var fullResult = {}; @@ -123,7 +78,7 @@ function Globalization_getDatePattern(successCb, errorCb, options) { // timezoneOffset = timezoneOffsetWithoutDST + DSTAdditionalOffset // if other behavior is correct, just need to subtract dstOffset from utcOffset var utcOffset = currentDateTime.secondsFromUTC() * (-1); - var dstOffset = currentDateTime.isDST() ? oneHourSeconds : 0; + var dstOffset = currentDateTime.isDST() ? ONE_HOUR_SECONDS : 0; fullResult["utc_offset"] = utcOffset; fullResult["dst_offset"] = dstOffset; @@ -139,13 +94,9 @@ function Globalization_getDatePattern(successCb, errorCb, options) { selector: String(selector) }; native_.call('CordovaGlobalization_getDatePattern', callArgs, callback); -} - - -function Globalization_getDateNames(successCb, errorCb, options) { - var type = (options && options.type) || typeWide; - var item = (options && options.item) || itemMonths; +}; +GlobalizationManager.prototype.getDateNames = function(type, item, successCb, errorCb) { var callback = function(result) { if (native_.isFailure(result)) { var error = new GlobalizationError( @@ -160,24 +111,9 @@ function Globalization_getDateNames(successCb, errorCb, options) { item: String(item) }; native_.call('CordovaGlobalization_getDateNames', callArgs, callback); -} - - -function Globalization_isDayLightSavingsTime(timestamp, successCb, errorCb) { - var tzdate = new tizen.TZDate(new Date(timestamp)); //creates tzdate with local default timezone - if (tzdate) { - var result = tzdate.isDST(); - setTimeout( function() { - successCb ( {'dst' : result} ); - }, 0); - } else { - setTimeout( function() { - errorCb(new GlobalizationError(GlobalizationError.UNKNOWN_ERROR , "cannot get information")); - }, 0); - } -} +}; -function Globalization_getFirstDayOfWeek(successCb, errorCb) { +GlobalizationManager.prototype.getFirstDayOfWeek = function(successCb, errorCb) { var callback = function(result) { if (native_.isFailure(result)) { var error = new GlobalizationError( @@ -188,11 +124,9 @@ function Globalization_getFirstDayOfWeek(successCb, errorCb) { } }; native_.call('CordovaGlobalization_getFirstDayOfWeek', {}, callback); -} - -function Globalization_numberToString(number, successCb, errorCb, options) { - var type = (options && options.type) || numberTypeDecimal; +}; +GlobalizationManager.prototype.numberToString = function(number, type, successCb, errorCb) { var callback = function(result) { if (native_.isFailure(result)) { var error = new GlobalizationError( @@ -207,11 +141,9 @@ function Globalization_numberToString(number, successCb, errorCb, options) { type: String(type) }; native_.call('CordovaGlobalization_numberToString', callArgs, callback); -} - -function Globalization_stringToNumber(numberStr, successCb, errorCb, options) { - var type = (options && options.type) || numberTypeDecimal; +}; +GlobalizationManager.prototype.stringToNumber = function(numberStr, type, successCb, errorCb) { var callback = function(result) { if (native_.isFailure(result)) { var error = new GlobalizationError( @@ -228,11 +160,9 @@ function Globalization_stringToNumber(numberStr, successCb, errorCb, options) { type: String(type) }; native_.call('CordovaGlobalization_stringToNumber', callArgs, callback); -} - -function Globalization_getNumberPattern(successCb, errorCb, options) { - var type = (options && options.type) || numberTypeDecimal; +}; +GlobalizationManager.prototype.getNumberPattern = function(type, successCb, errorCb) { var callback = function(result) { if (native_.isFailure(result)) { var error = new GlobalizationError( @@ -246,9 +176,9 @@ function Globalization_getNumberPattern(successCb, errorCb, options) { type: String(type) }; native_.call('CordovaGlobalization_getNumberPattern', callArgs, callback); -} +}; -function Globalization_getCurrencyPattern(currencyCode, successCb, errorCb) { +GlobalizationManager.prototype.getCurrencyPattern = function(currencyCode, successCb, errorCb) { var callback = function(result) { if (native_.isFailure(result)) { var error = new GlobalizationError( @@ -262,56 +192,6 @@ function Globalization_getCurrencyPattern(currencyCode, successCb, errorCb) { currencyCode : String(currencyCode) }; native_.call('CordovaGlobalization_getCurrencyPattern', callArgs, callback); -} - - -//TODO: remove when added to public cordova repository -> begin -var plugin_name = 'cordova-plugin-globalization.tizen.Globalization'; -cordova.define(plugin_name, function(require, exports, module) { -//TODO: remove -> end - exports = { - getPreferredLanguage: function (successCb, errorCb, args) { - Globalization_getPreferredLanguage(successCb, errorCb); - }, - getLocaleName: function (successCb, errorCb, args) { - Globalization_getPreferredLanguage(successCb, errorCb); - }, - dateToString: function (successCb, errorCb, args) { - Globalization_dateToString(args[0]['date'], successCb, errorCb, args[0]['options']); - }, - stringToDate: function (successCb, errorCb, args) { - Globalization_stringToDate(args[0]['dateString'], successCb, errorCb, args[0]['options']); - }, - getDatePattern: function (successCb, errorCb, args) { - Globalization_getDatePattern(successCb, errorCb, args[0]['options']); - }, - getDateNames: function (successCb, errorCb, args) { - Globalization_getDateNames(successCb, errorCb, args[0]['options']); - }, - isDayLightSavingsTime: function (successCb, errorCb, args) { - Globalization_isDayLightSavingsTime(args[0]['date'], successCb, errorCb); - }, - getFirstDayOfWeek: function (successCb, errorCb, args) { - Globalization_getFirstDayOfWeek(successCb, errorCb); - }, - numberToString: function (successCb, errorCb, args) { - Globalization_numberToString(args[0]['number'], successCb, errorCb, args[0]['options']); - }, - stringToNumber: function (successCb, errorCb, args) { - Globalization_stringToNumber(args[0]['numberString'], successCb, errorCb, args[0]['options']); - }, - getNumberPattern: function (successCb, errorCb, args) { - Globalization_getNumberPattern(successCb, errorCb, args[0]['options']); - }, - getCurrencyPattern: function (successCb, errorCb, args) { - Globalization_getCurrencyPattern(args[0]['currencyCode'], successCb, errorCb); - } - }; - require("cordova/exec/proxy").add("Globalization", exports); - console.log('Loaded cordova.globalization API'); -// TODO: remove when added to public cordova repository -> begin -}); -exports = function(require) { - require('cordova-tizen').addPlugin('cordova-plugin-globalization.globalization', plugin_name, 'runs'); }; -// TODO: remove -> end + +exports = new GlobalizationManager(); diff --git a/src/lib/cordova_plugins.js b/src/lib/cordova_plugins.js index ebf0716..443c37f 100644 --- a/src/lib/cordova_plugins.js +++ b/src/lib/cordova_plugins.js @@ -266,6 +266,11 @@ module.exports = [ "navigator.globalization" ] }, + { + "file": "plugins/cordova-plugin-globalization/tizen/Globalization.js", + "id": "cordova-plugin-globalization.tizen.Globalization", + "runs": true + }, { "file": "plugins/cordova-plugin-media/www/MediaError.js", "id": "cordova-plugin-media.MediaError", diff --git a/src/lib/plugins/cordova-plugin-globalization/tizen/Globalization.js b/src/lib/plugins/cordova-plugin-globalization/tizen/Globalization.js new file mode 100755 index 0000000..4c5131e --- /dev/null +++ b/src/lib/plugins/cordova-plugin-globalization/tizen/Globalization.js @@ -0,0 +1,170 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// TODO: remove when added to public cordova repository -> begin +var plugin_name = 'cordova-plugin-globalization.tizen.Globalization'; +cordova.define(plugin_name, function(require, exports, module) { +// TODO: remove -> end + +var SELECTOR_DATE_STR = 'date'; +var SELECTOR_TIME_STR = 'time'; +var SELECTOR_DATE_AND_TIME_STR = SELECTOR_DATE_STR + ' and ' + SELECTOR_TIME_STR; + +var FORMAT_SHORT_STR = 'short'; +var FORMAT_MEDIUM_STR = 'medium'; +var FORMAT_LONG_STR = 'long'; +var FORMAT_FULL_STR = 'full'; + +var TYPE_WIDE = 'wide'; +var TYPE_NARROW = 'narrow'; + +var ITEM_MONTHS = 'months'; +var ITEM_DAYS = 'days'; + +var NUMBER_TYPE_DECIMAL = 'decimal'; +var NUMBER_TYPE_PERCENT = 'percent'; +var NUMBER_TYPE_CURRENCY = 'currency'; + +function Globalization_getPreferredLanguage(successCb, errorCb) { + // TODO Indicates the current language setting in the (LANGUAGE)_(REGION) syntax. + // The language setting is in the ISO 630-2 format and the region setting is in the ISO 3166-1 format. + tizen.systeminfo.getPropertyValue('LOCALE', + function (locale) { + // replacing '_' with '-' to satisfy cordova language and region separator + var result = locale.language.replace('_', '-'); + successCb( {'value': result} ); + }, + function(error) { + console.log('Cordova, getLocaleName, An error occurred ' + error.message); + errorCb(new GlobalizationError(GlobalizationError.UNKNOWN_ERROR , + 'cannot retrieve language name')); + } + ); +} + +function Globalization_dateToString(timestamp, successCb, errorCb, options) { + var formatLength = (options && options.formatLength) || FORMAT_SHORT_STR; + var selector = (options && options.selector) || SELECTOR_DATE_AND_TIME_STR; + + tizen.cordova.globalization.dateToString(timestamp, formatLength, selector, successCb, errorCb); +} + +function Globalization_stringToDate(dateString, successCb, errorCb, options) { + var formatLength = (options && options.formatLength) || FORMAT_SHORT_STR; + var selector = (options && options.selector) || SELECTOR_DATE_AND_TIME_STR; + + tizen.cordova.globalization.stringToDate(dateString, formatLength, selector, successCb, errorCb); +} + +function Globalization_getDatePattern(successCb, errorCb, options) { + var formatLength = (options && options.formatLength) || FORMAT_SHORT_STR; + var selector = (options && options.selector) || SELECTOR_DATE_AND_TIME_STR; + + tizen.cordova.globalization.getDatePattern(formatLength, selector, successCb, errorCb); +} + +function Globalization_getDateNames(successCb, errorCb, options) { + var type = (options && options.type) || TYPE_WIDE; + var item = (options && options.item) || ITEM_MONTHS; + + tizen.cordova.globalization.getDateNames(type, item, successCb, errorCb); +} + +function Globalization_isDayLightSavingsTime(timestamp, successCb, errorCb) { + var tzdate = new tizen.TZDate(new Date(timestamp)); //creates tzdate with local default timezone + if (tzdate) { + var result = tzdate.isDST(); + setTimeout( function() { + successCb ( {'dst' : result} ); + }, 0); + } else { + setTimeout( function() { + errorCb(new GlobalizationError(GlobalizationError.UNKNOWN_ERROR , "cannot get information")); + }, 0); + } +} + +function Globalization_getFirstDayOfWeek(successCb, errorCb) { + tizen.cordova.globalization.getFirstDayOfWeek(successCb, errorCb); +} + +function Globalization_numberToString(number, successCb, errorCb, options) { + var type = (options && options.type) || NUMBER_TYPE_DECIMAL; + + tizen.cordova.globalization.numberToString(number, type, successCb, errorCb); +} + +function Globalization_stringToNumber(numberStr, successCb, errorCb, options) { + var type = (options && options.type) || NUMBER_TYPE_DECIMAL; + + tizen.cordova.globalization.stringToNumber(numberStr, type, successCb, errorCb); +} + +function Globalization_getNumberPattern(successCb, errorCb, options) { + var type = (options && options.type) || NUMBER_TYPE_DECIMAL; + + tizen.cordova.globalization.getNumberPattern(type, successCb, errorCb); +} + +function Globalization_getCurrencyPattern(currencyCode, successCb, errorCb) { + tizen.cordova.globalization.getCurrencyPattern(currencyCode, successCb, errorCb); +} + +exports = { + getPreferredLanguage: function (successCb, errorCb, args) { + Globalization_getPreferredLanguage(successCb, errorCb); + }, + getLocaleName: function (successCb, errorCb, args) { + Globalization_getPreferredLanguage(successCb, errorCb); + }, + dateToString: function (successCb, errorCb, args) { + Globalization_dateToString(args[0]['date'], successCb, errorCb, args[0]['options']); + }, + stringToDate: function (successCb, errorCb, args) { + Globalization_stringToDate(args[0]['dateString'], successCb, errorCb, args[0]['options']); + }, + getDatePattern: function (successCb, errorCb, args) { + Globalization_getDatePattern(successCb, errorCb, args[0]['options']); + }, + getDateNames: function (successCb, errorCb, args) { + Globalization_getDateNames(successCb, errorCb, args[0]['options']); + }, + isDayLightSavingsTime: function (successCb, errorCb, args) { + Globalization_isDayLightSavingsTime(args[0]['date'], successCb, errorCb); + }, + getFirstDayOfWeek: function (successCb, errorCb, args) { + Globalization_getFirstDayOfWeek(successCb, errorCb); + }, + numberToString: function (successCb, errorCb, args) { + Globalization_numberToString(args[0]['number'], successCb, errorCb, args[0]['options']); + }, + stringToNumber: function (successCb, errorCb, args) { + Globalization_stringToNumber(args[0]['numberString'], successCb, errorCb, args[0]['options']); + }, + getNumberPattern: function (successCb, errorCb, args) { + Globalization_getNumberPattern(successCb, errorCb, args[0]['options']); + }, + getCurrencyPattern: function (successCb, errorCb, args) { + Globalization_getCurrencyPattern(args[0]['currencyCode'], successCb, errorCb); + } +}; + +require("cordova/exec/proxy").add("Globalization", exports); +console.log('Loaded cordova.globalization API'); + +// TODO: remove when added to public cordova repository -> begin +}); +// TODO: remove -> end -- 2.34.1