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 'cr-settings-manage-languages-page' is a sub-page for enabling | 6 * @fileoverview 'cr-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 cr-settings-manage-languages-page | 10 * @element cr-settings-manage-languages-page |
(...skipping 12 matching lines...) Expand all Loading... | |
23 | 23 |
24 /** | 24 /** |
25 * @type {LanguagesModel|undefined} | 25 * @type {LanguagesModel|undefined} |
26 */ | 26 */ |
27 languages: { | 27 languages: { |
28 type: Object, | 28 type: Object, |
29 notify: true, | 29 notify: true, |
30 }, | 30 }, |
31 | 31 |
32 /** | 32 /** |
33 * @private {Array<{code: string, displayName: string, enabled: boolean}>| | 33 * @private {Array<{code: string, displayName: string, |
stevenjb
2015/09/28 23:51:54
!Array<!{
michaelpg
2015/09/29 00:20:32
Done.
| |
34 * nativeDisplayName: string, enabled: boolean}>| | |
34 * undefined} | 35 * undefined} |
35 */ | 36 */ |
36 availableLanguages_: Array, | 37 availableLanguages_: Array, |
37 }, | 38 }, |
38 | 39 |
39 observers: [ | 40 observers: [ |
40 'enabledLanguagesChanged_(languages.enabledLanguages.*)', | 41 'enabledLanguagesChanged_(languages.enabledLanguages.*)', |
41 ], | 42 ], |
42 | 43 |
43 /** | 44 /** |
44 * Handler for removing a language. | 45 * Handler for removing a language. |
45 * @param {!{model: !{item: !Language}}} e | 46 * @param {!{model: !{item: !Language}}} e |
46 * @private | 47 * @private |
47 */ | 48 */ |
48 onRemoveLanguageTap_: function(e) { | 49 onRemoveLanguageTap_: function(e) { |
49 this.$.languages.disableLanguage(e.model.item.language.code); | 50 this.$.languages.disableLanguage(e.model.item.language.code); |
50 }, | 51 }, |
51 | 52 |
52 /** | 53 /** |
53 * Handler for adding a language. | 54 * Handler for adding a language. |
54 * @param {!{model: {item: !chrome.languageSettingsPrivate.Language}}} e | 55 * @param {!{model: {item: !chrome.languageSettingsPrivate.Language}}} e |
55 * @private | 56 * @private |
56 */ | 57 */ |
57 onAddLanguageTap_: function(e) { | 58 onAddLanguageTap_: function(e) { |
58 this.$.languages.enableLanguage(e.model.item.code); | 59 this.$.languages.enableLanguage(e.model.item.code); |
59 }, | 60 }, |
60 | 61 |
61 /** | 62 /** |
62 * True if a language is not the prospective UI language or the last remaining | 63 * True if a language is not the current or prospective UI language. |
63 * language. | |
64 * @param {string} languageCode | 64 * @param {string} languageCode |
65 * @param {!Array<!LanguageInfo>} enableLanguage | 65 * @param {!Array<!LanguageInfo>} enabledLanguages |
66 * @return {boolean} | |
66 * @private | 67 * @private |
67 * @return {boolean} | |
68 */ | 68 */ |
69 canRemoveLanguage_: function(languageCode, enabledLanguages) { | 69 canRemoveLanguage_: function(languageCode, prospectiveUILanguage) { |
stevenjb
2015/09/28 23:51:54
enabledLanguages or prospective... ?
michaelpg
2015/09/29 00:20:32
Done. Forgot to Closure-compile this file!
| |
70 var appLocale = this.prefs.intl.app_locale.value || navigator.language; | 70 if (languageCode == navigator.language || |
71 if (languageCode == appLocale) | 71 languageCode == prospectiveUILanguage) { |
72 return false; | 72 return false; |
73 if (enabledLanguages.length == 1) | 73 } |
74 return false; | 74 assert(this.languages.enabledLanguages.length > 1); |
75 return true; | 75 return true; |
76 }, | 76 }, |
77 | 77 |
78 /** | 78 /** |
79 * Updates the available languages to be bound to the iron-list. | 79 * Updates the available languages that are bound to the iron-list. |
80 * TODO(michaelpg): Update properties of individual items instead of | |
81 * rebuilding entire list. | |
82 * @private | 80 * @private |
83 */ | 81 */ |
84 enabledLanguagesChanged_: function() { | 82 enabledLanguagesChanged_: function() { |
85 var availableLanguages = []; | 83 var availableLanguages = this.availableLanguages_ || []; |
86 for (var i = 0; i < this.languages.supportedLanguages.length; i++) { | 84 for (var i = 0; i < this.languages.supportedLanguages.length; i++) { |
87 var language = this.languages.supportedLanguages[i]; | 85 if (this.availableLanguages_) { |
88 availableLanguages.push({ | 86 this.set('availableLanguages_.' + i + '.enabled', |
89 code: language.code, | 87 this.$.languages.isEnabled(this.availableLanguages_[i].code)); |
stevenjb
2015/09/28 23:51:54
This is weird... if (this.availableLanguages_) the
michaelpg
2015/09/29 00:20:32
Done. This should make more sense. Hope you don't
| |
90 displayName: language.displayName, | 88 } else { |
91 enabled: this.$.languages.isEnabled(language.code) | 89 var language = this.languages.supportedLanguages[i]; |
92 }); | 90 availableLanguages.push({ |
91 code: language.code, | |
92 displayName: language.displayName, | |
93 nativeDisplayName: language.nativeDisplayName, | |
94 enabled: this.$.languages.isEnabled(language.code) | |
95 }); | |
96 } | |
93 } | 97 } |
94 this.availableLanguages_ = availableLanguages; | 98 if (!this.availableLanguages_) |
99 this.availableLanguages_ = availableLanguages; | |
95 }, | 100 }, |
96 }); | 101 }); |
OLD | NEW |