| OLD | NEW |
| (Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 /** |
| 6 * @fileoverview 'cr-settings-manage-languages-page' is a sub-page for enabling |
| 7 * and disabling languages. |
| 8 * |
| 9 * @group Chrome Settings Elements |
| 10 * @element cr-settings-manage-languages-page |
| 11 */ |
| 12 Polymer({ |
| 13 is: 'cr-settings-manage-languages-page', |
| 14 |
| 15 properties: { |
| 16 /** |
| 17 * Preferences state. |
| 18 */ |
| 19 prefs: { |
| 20 type: Object, |
| 21 notify: true, |
| 22 }, |
| 23 |
| 24 /** |
| 25 * @type {LanguagesModel|undefined} |
| 26 */ |
| 27 languages: { |
| 28 type: Object, |
| 29 notify: true, |
| 30 }, |
| 31 |
| 32 /** |
| 33 * @private {Array<{code: string, displayName: string, enabled: boolean}>| |
| 34 * undefined} |
| 35 */ |
| 36 availableLanguages_: Array, |
| 37 }, |
| 38 |
| 39 observers: [ |
| 40 'enabledLanguagesChanged_(languages.enabledLanguages.*)', |
| 41 ], |
| 42 |
| 43 /** |
| 44 * Handler for removing a language. |
| 45 * @param {!{model: !{item: !Language}}} e |
| 46 * @private |
| 47 */ |
| 48 onRemoveLanguageTap_: function(e) { |
| 49 this.$.languages.disableLanguage(e.model.item.language.code); |
| 50 }, |
| 51 |
| 52 /** |
| 53 * Handler for adding a language. |
| 54 * @param {!{model: {item: !chrome.languageSettingsPrivate.Language}}} e |
| 55 * @private |
| 56 */ |
| 57 onAddLanguageTap_: function(e) { |
| 58 this.$.languages.enableLanguage(e.model.item.code); |
| 59 }, |
| 60 |
| 61 /** |
| 62 * True if a language is not the prospective UI language or the last remaining |
| 63 * language. |
| 64 * @param {string} languageCode |
| 65 * @param {!Array<!LanguageInfo>} enableLanguage |
| 66 * @private |
| 67 * @return {boolean} |
| 68 */ |
| 69 canRemoveLanguage_: function(languageCode, enabledLanguages) { |
| 70 var appLocale = this.prefs.intl.app_locale.value || navigator.language; |
| 71 if (languageCode == appLocale) |
| 72 return false; |
| 73 if (enabledLanguages.length == 1) |
| 74 return false; |
| 75 return true; |
| 76 }, |
| 77 |
| 78 /** |
| 79 * Updates the available languages to be bound to the iron-list. |
| 80 * TODO(michaelpg): Update properties of individual items instead of |
| 81 * rebuilding entire list. |
| 82 * @private |
| 83 */ |
| 84 enabledLanguagesChanged_: function() { |
| 85 var availableLanguages = []; |
| 86 for (var i = 0; i < this.languages.supportedLanguages.length; i++) { |
| 87 var language = this.languages.supportedLanguages[i]; |
| 88 availableLanguages.push({ |
| 89 code: language.code, |
| 90 displayName: language.displayName, |
| 91 enabled: this.$.languages.isEnabled(language.code) |
| 92 }); |
| 93 } |
| 94 this.availableLanguages_ = availableLanguages; |
| 95 }, |
| 96 }); |
| OLD | NEW |