Chromium Code Reviews| 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 |