OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @fileoverview 'settings-manage-languages-page' is a sub-page for enabling | 6 * @fileoverview 'settings-manage-languages-page' is a sub-page for enabling |
7 * and disabling languages. | 7 * and disabling languages. |
8 * | 8 * |
9 * @group Chrome Settings Elements | 9 * @group Chrome Settings Elements |
10 * @element settings-manage-languages-page | 10 * @element settings-manage-languages-page |
(...skipping 19 matching lines...) Expand all Loading... |
30 }, | 30 }, |
31 | 31 |
32 /** | 32 /** |
33 * @private {!Array<!{code: string, displayName: string, | 33 * @private {!Array<!{code: string, displayName: string, |
34 * nativeDisplayName: string, enabled: boolean}>| | 34 * nativeDisplayName: string, enabled: boolean}>| |
35 * undefined} | 35 * undefined} |
36 */ | 36 */ |
37 availableLanguages_: Array, | 37 availableLanguages_: Array, |
38 }, | 38 }, |
39 | 39 |
| 40 /** @private {!LanguageHelper} */ |
| 41 languageHelper_: LanguageHelperImpl.getInstance(), |
| 42 |
40 observers: [ | 43 observers: [ |
41 'enabledLanguagesChanged_(languages.enabledLanguages.*)', | 44 'enabledLanguagesChanged_(languages.enabledLanguages.*)', |
42 ], | 45 ], |
43 | 46 |
44 /** | 47 /** |
45 * Handler for removing a language. | 48 * Handler for removing a language. |
46 * @param {!{model: !{item: !LanguageInfo}}} e | 49 * @param {!{model: !{item: !LanguageInfo}}} e |
47 * @private | 50 * @private |
48 */ | 51 */ |
49 onRemoveLanguageTap_: function(e) { | 52 onRemoveLanguageTap_: function(e) { |
50 this.$.languages.disableLanguage(e.model.item.language.code); | 53 this.languageHelper_.disableLanguage(e.model.item.language.code); |
51 }, | 54 }, |
52 | 55 |
53 /** | 56 /** |
54 * Handler for adding a language. | 57 * Handler for adding a language. |
55 * @param {!{model: {item: !chrome.languageSettingsPrivate.Language}}} e | 58 * @param {!{model: {item: !chrome.languageSettingsPrivate.Language}}} e |
56 * @private | 59 * @private |
57 */ | 60 */ |
58 onAddLanguageTap_: function(e) { | 61 onAddLanguageTap_: function(e) { |
59 this.$.languages.enableLanguage(e.model.item.code); | 62 this.languageHelper_.enableLanguage(e.model.item.code); |
60 }, | 63 }, |
61 | 64 |
62 /** | 65 /** |
63 * True if a language is not the current or prospective UI language. | 66 * True if a language is not the current or prospective UI language. |
64 * @param {string} languageCode | 67 * @param {string} languageCode |
65 * @param {!Array<!LanguageInfo>} prospectiveUILanguage | 68 * @param {string} prospectiveUILanguageCode |
66 * @return {boolean} | 69 * @return {boolean} |
67 * @private | 70 * @private |
68 */ | 71 */ |
69 canRemoveLanguage_: function(languageCode, prospectiveUILanguage) { | 72 canRemoveLanguage_: function(languageCode, prospectiveUILanguageCode) { |
70 if (languageCode == navigator.language || | 73 if (languageCode == navigator.language || |
71 languageCode == prospectiveUILanguage) { | 74 languageCode == prospectiveUILanguageCode) { |
72 return false; | 75 return false; |
73 } | 76 } |
74 assert(this.languages.enabledLanguages.length > 1); | 77 assert(this.languages.enabledLanguages.length > 1); |
75 return true; | 78 return true; |
76 }, | 79 }, |
77 | 80 |
78 /** | 81 /** |
79 * Updates the available languages that are bound to the iron-list. | 82 * Updates the available languages that are bound to the iron-list. |
80 * @private | 83 * @private |
81 */ | 84 */ |
82 enabledLanguagesChanged_: function() { | 85 enabledLanguagesChanged_: function() { |
83 if (!this.availableLanguages_) { | 86 if (!this.availableLanguages_) { |
84 var availableLanguages = []; | 87 var availableLanguages = []; |
85 for (var i = 0; i < this.languages.supportedLanguages.length; i++) { | 88 for (var i = 0; i < this.languages.supportedLanguages.length; i++) { |
86 var language = this.languages.supportedLanguages[i]; | 89 var language = this.languages.supportedLanguages[i]; |
87 availableLanguages.push({ | 90 availableLanguages.push({ |
88 code: language.code, | 91 code: language.code, |
89 displayName: language.displayName, | 92 displayName: language.displayName, |
90 nativeDisplayName: language.nativeDisplayName, | 93 nativeDisplayName: language.nativeDisplayName, |
91 enabled: this.$.languages.isEnabled(language.code) | 94 enabled: this.languageHelper_.isLanguageEnabled(language.code), |
92 }); | 95 }); |
93 } | 96 } |
94 // Set the Polymer property after building the full array. | 97 // Set the Polymer property after building the full array. |
95 this.availableLanguages_ = availableLanguages; | 98 this.availableLanguages_ = availableLanguages; |
96 } else { | 99 } else { |
97 // Update the available languages in place. | 100 // Update the available languages in place. |
98 for (var i = 0; i < this.availableLanguages_.length; i++) { | 101 for (var i = 0; i < this.availableLanguages_.length; i++) { |
99 this.set('availableLanguages_.' + i + '.enabled', | 102 this.set('availableLanguages_.' + i + '.enabled', |
100 this.$.languages.isEnabled(this.availableLanguages_[i].code)); | 103 this.languageHelper_.isLanguageEnabled( |
| 104 this.availableLanguages_[i].code)); |
101 } | 105 } |
102 } | 106 } |
103 }, | 107 }, |
104 }); | 108 }); |
OLD | NEW |