From 0eb5484fd5be3174882685255f7ec3b841a3e45b Mon Sep 17 00:00:00 2001 From: Jimmy Huang Date: Thu, 21 Nov 2013 14:36:44 -0800 Subject: [PATCH] Added locale settings support - New locale settings uses the locale web api to get/set locale Change-Id: I8d180a2f4b33f2af0600acbc447698e36cf8aa3b Signed-off-by: Jimmy Huang --- css/style.css | 4 +++ index.html | 33 ++++++++++++++++++ js/main.js | 3 ++ js/panel-locale.js | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 138 insertions(+) create mode 100644 js/panel-locale.js diff --git a/css/style.css b/css/style.css index b8f6d66..9d34f24 100644 --- a/css/style.css +++ b/css/style.css @@ -82,4 +82,8 @@ /* make room for bottom for bottom of the screen due to weston compositor */ #button_bluetooth_scan { margin-bottom: 100px; +} +/* Locale */ +#button_locale_apply, #button_locale_cancel{ + display: none; } \ No newline at end of file diff --git a/index.html b/index.html index 530cd5a..f3cb7da 100644 --- a/index.html +++ b/index.html @@ -27,6 +27,7 @@ + @@ -63,6 +64,9 @@
  • Date and Time
  • +
  • + Language +
  • @@ -350,5 +354,34 @@
    Cancel
    + + +
    +
    + Back +

    Language

    +
    + +
    +
    + + + + + + + + + + + + + + +
    +
    Apply
    +
    Cancel
    +
    +
    diff --git a/js/main.js b/js/main.js index a229978..2e7cf9e 100644 --- a/js/main.js +++ b/js/main.js @@ -43,6 +43,8 @@ wsAPI.unsubscribeEvents(bluetoothEventReceived); } else if (data.prevPage.attr('id') === 'page_datetime') { console.log('Date and Time settings exited'); + } else if (data.prevPage.attr('id') === 'page_locale') { + console.log('Locale settings exited'); } }); @@ -50,6 +52,7 @@ connmanPanelInit(); bluetoothPanelInit(); datetimePanelInit(); + localePanelInit(); } catch (e) { showMsg('Error', 'Javascript Exception Caught: ' + e); } diff --git a/js/panel-locale.js b/js/panel-locale.js new file mode 100644 index 0000000..b804faa --- /dev/null +++ b/js/panel-locale.js @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2013, Intel Corporation. + * + * This program is licensed under the terms and conditions of the + * Apache License, version 2.0. The full text of the Apache License is at + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ + +var localeChanged = false; + +function localePanelInit() { + /* Locale Settings Panel */ + $('#page_locale').on('pageshow', function(event, data) { + localePageReload(); + }); + + $('[name="radio_locale"]').on('change', function(event, data) { + var new_locale = $('input[name=radio_locale]:checked').val(); + + if (tizen.locale) { + if (new_locale !== tizen.locale.getLocale()) { + localeChanged = true; + localeShowOption(); + } + } else { + console.error('tizen.locale missing'); + } + }); + + $('#button_locale_apply').on('click', function(event, data) { + if (localeChanged) { + localeChanged = false; + updateSystemLocale(); + } + + localeHideOption(); + }); +} + +function localeShowOption() { + $('#button_locale_apply').show(); + $('#button_locale_cancel').show(); +} + +function localeHideOption() { + $('#button_locale_apply').hide(); + $('#button_locale_cancel').hide(); +} + +function localePageReload() { + localeChanged = false; + + localeHideOption(); + + if (tizen.locale) { + var locale = tizen.locale.getLocale(); + var language = localeToLanguage(locale); + if (!locale) { + showMessage('Error', 'Failed to get current locale'); + } + + console.log('Current locale is set to ' + locale); + console.log('Current language is set to ' + language); + if (language) { + $('#radio_locale_' + language).prop('checked', true); + $('input[name=radio_locale]').checkboxradio('refresh'); + } else { + console.log('Unknown locale ' + locale + ', default to English'); + $('#radio_locale_english').prop('checked', true); + $('input[name=radio_locale]').checkboxradio('refresh'); + } + } else { + console.error('tizen.locale missing'); + $('input[name=radio_locale]').checkboxradio('disable'); + } +} + +function updateSystemLocale() { + var locale = $('input[name=radio_locale]:checked').val(); + + if (tizen.locale) { + console.log('New locale is set to ' + locale); + tizen.locale.setLocale(locale); + localePageReload(); + } else { + console.error('tizen.locale missing - cannot update locale'); + } +} + +function localeToLanguage(locale) { + if (locale === 'C' || locale === 'en_US.UTF-8') return 'english'; + else if (locale === 'de_DE.UTF-8') return 'german'; + else if (locale === 'ja_JP.UTF-8') return 'japanese'; + else if (locale === 'zh_CN.UTF-8') return 'simplified_chinese'; + else if (locale === 'zh_HK.UTF-8' || locale === 'zh_TW.UTF-8') return 'traditional_chinese'; + else return null; +} \ No newline at end of file -- 2.7.4