Fixed bug where cancel button in locale setttings does nothing
[profile/ivi/SettingsApp.git] / js / panel-locale.js
1 /*
2  * Copyright (c) 2013, Intel Corporation.
3  *
4  * This program is licensed under the terms and conditions of the
5  * Apache License, version 2.0.  The full text of the Apache License is at
6  * http://www.apache.org/licenses/LICENSE-2.0
7  *
8  */
9
10 var localeChanged = false;
11
12 function localePanelInit() {
13     /* Locale Settings Panel */
14     $('#page_locale').on('pageshow', function(event, data) {
15         localePageReload();
16     });
17
18     $('[name="radio_locale"]').on('change', function(event, data) {
19         var new_locale = $('input[name=radio_locale]:checked').val();
20
21         if (tizen.locale) {
22             if (new_locale !== tizen.locale.getLocale()) {
23                 localeChanged = true;
24                 localeShowOption();
25             }
26         } else {
27             console.error('tizen.locale missing');
28         }
29     });
30
31     $('#button_locale_apply').on('click', function(event, data) {
32         if (localeChanged) {
33             localeChanged = false;
34             updateSystemLocale();
35         }
36
37         localeHideOption();
38     });
39
40     $('#button_locale_cancel').on('click', function(event, data) {
41         localePageReload();
42     });
43 }
44
45 function localeShowOption() {
46     $('#button_locale_apply').show();
47     $('#button_locale_cancel').show();
48 }
49
50 function localeHideOption() {
51     $('#button_locale_apply').hide();
52     $('#button_locale_cancel').hide();
53 }
54
55 function localePageReload() {
56     localeChanged = false;
57
58     localeHideOption();
59
60     if (tizen.locale) {
61         var locale = tizen.locale.getLocale();
62         var language = localeToLanguage(locale);
63         if (!locale) {
64             showMessage('Error', 'Failed to get current locale');
65         }
66
67         console.log('Current locale is set to ' + locale);
68         console.log('Current language is set to ' + language);
69         if (language) {
70             $('#radio_locale_' + language).prop('checked', true);
71             $('input[name=radio_locale]').checkboxradio('refresh');
72         } else {
73             console.log('Unknown locale ' + locale + ', default to English');
74             $('#radio_locale_english').prop('checked', true);
75             $('input[name=radio_locale]').checkboxradio('refresh');
76         }
77     } else {
78         console.error('tizen.locale missing');
79         $('input[name=radio_locale]').checkboxradio('disable');
80     }
81 }
82
83 function updateSystemLocale() {
84     var locale = $('input[name=radio_locale]:checked').val();
85
86     if (tizen.locale) {
87         console.log('New locale is set to ' + locale);
88         tizen.locale.setLocale(locale);
89         localePageReload();
90     } else {
91         console.error('tizen.locale missing - cannot update locale');
92     }
93 }
94
95 function localeToLanguage(locale) {
96     if (locale === 'C' || locale === 'en_US.UTF-8') return 'english';
97     else if (locale === 'de_DE.UTF-8') return 'german';
98     else if (locale === 'ja_JP.UTF-8') return 'japanese';
99     else if (locale === 'zh_CN.UTF-8') return 'simplified_chinese';
100     else if (locale === 'zh_HK.UTF-8' || locale === 'zh_TW.UTF-8') return 'traditional_chinese';
101     else return null;
102 }