| 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 langauges. |
| 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 model: { |
| 28 type: Object, |
| 29 notify: true, |
| 30 }, |
| 31 |
| 32 /** @type {(Array<{code: string, displayName: string, enabled: boolean}>| |
| 33 * undefined)} |
| 34 * @private |
| 35 */ |
| 36 availableLanguages_: Array, |
| 37 }, |
| 38 |
| 39 observers: [ |
| 40 'enabledLanguagesChanged_(model.enabledLanguages.*)', |
| 41 ], |
| 42 |
| 43 /** @private */ |
| 44 onBackTap_: function() { |
| 45 this.$.pages.back(); |
| 46 }, |
| 47 |
| 48 /** |
| 49 * Handler for removing a language. |
| 50 * @param {!{model: {item: {language: {code: string}}}}} e |
| 51 */ |
| 52 onRemoveLanguageTap_: function(e) { |
| 53 this.$.languages.disableLanguage(e.model.item.language.code); |
| 54 }, |
| 55 |
| 56 /** |
| 57 * Handler for adding a language. |
| 58 * @param {!{model: {item: {code: string}}}} e |
| 59 */ |
| 60 onAddLanguageTap_: function(e) { |
| 61 this.$.languages.enableLanguage(e.model.item.code); |
| 62 }, |
| 63 |
| 64 /** |
| 65 * True if a language is not the prospective UI language or the last remaining |
| 66 * language. |
| 67 * @param {string} languageCode |
| 68 * @param {!Array<!LanguageInfo>} enableLanguage |
| 69 * @return {boolean} |
| 70 */ |
| 71 canRemoveLanguage_: function(languageCode, enabledLanguages) { |
| 72 var appLocale = this.prefs.intl.app_locale.value || navigator.language; |
| 73 if (languageCode == appLocale) |
| 74 return false; |
| 75 if (enabledLanguages.length == 1) |
| 76 return false; |
| 77 return true; |
| 78 }, |
| 79 |
| 80 /** |
| 81 * Updates the available languages to be bound to the iron-list. |
| 82 * TODO(michaelpg): Update properties of individual items instead of |
| 83 * rebuilding entire list. |
| 84 */ |
| 85 enabledLanguagesChanged_: function() { |
| 86 var availableLanguages = []; |
| 87 for (var i = 0; i < this.model.supportedLanguages.length; i++) { |
| 88 var language = this.model.supportedLanguages[i]; |
| 89 availableLanguages.push({ |
| 90 code: language.code, |
| 91 displayName: language.displayName, |
| 92 enabled: !!this.model.enabledLanguageMap[language.code], |
| 93 }); |
| 94 } |
| 95 this.availableLanguages_ = availableLanguages; |
| 96 }, |
| 97 }); |
| OLD | NEW |