Chromium Code Reviews| Index: chrome/browser/resources/settings/languages_page/manage_languages_page.js |
| diff --git a/chrome/browser/resources/settings/languages_page/manage_languages_page.js b/chrome/browser/resources/settings/languages_page/manage_languages_page.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f54e8e4a95e8f7a324b3a7620385e4a181f2e1eb |
| --- /dev/null |
| +++ b/chrome/browser/resources/settings/languages_page/manage_languages_page.js |
| @@ -0,0 +1,92 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +/** |
| + * @fileoverview 'cr-settings-manage-languages-page' is a sub-page for enabling |
| + * and disabling languages. |
| + * |
| + * @group Chrome Settings Elements |
| + * @element cr-settings-manage-languages-page |
| + */ |
| +Polymer({ |
| + is: 'cr-settings-manage-languages-page', |
| + |
| + properties: { |
| + /** |
| + * Preferences state. |
| + */ |
| + prefs: { |
| + type: Object, |
| + notify: true, |
| + }, |
| + |
| + /** |
| + * @type {(LanguagesModel|undefined)} |
| + */ |
| + languages: { |
| + type: Object, |
| + notify: true, |
| + }, |
| + |
| + /** @type {Array<{code: string, displayName: string, enabled: boolean}>| |
| + * undefined} |
|
Dan Beam
2015/09/23 23:28:17
nit: indent off
michaelpg
2015/09/24 02:15:20
Done.
|
| + * @private |
| + */ |
| + availableLanguages_: Array, |
| + }, |
| + |
| + observers: [ |
| + 'enabledLanguagesChanged_(languages.enabledLanguages.*)', |
| + ], |
| + |
| + /** |
| + * Handler for removing a language. |
| + * @param {!{model: !{item: !Language}}} e |
|
Dan Beam
2015/09/23 23:28:17
!!!
Dan Beam
2015/09/23 23:28:17
@private for all of these
michaelpg
2015/09/24 02:15:20
???
would you prefer it not be typed?
"model" is
michaelpg
2015/09/24 02:15:20
Done.
Dan Beam
2015/09/24 16:35:26
nah, it was just funny
|
| + */ |
| + onRemoveLanguageTap_: function(e) { |
| + this.$.languages.disableLanguage(e.model.item.language.code); |
| + }, |
| + |
| + /** |
| + * Handler for adding a language. |
| + * @param {!{model: {item: !chrome.languageSettingsPrivate.Language}}} e |
| + */ |
| + onAddLanguageTap_: function(e) { |
| + this.$.languages.enableLanguage(e.model.item.code); |
| + }, |
| + |
| + /** |
| + * True if a language is not the prospective UI language or the last remaining |
| + * language. |
| + * @param {string} languageCode |
| + * @param {!Array<!LanguageInfo>} enableLanguage |
| + * @return {boolean} |
| + */ |
| + canRemoveLanguage_: function(languageCode, enabledLanguages) { |
| + var appLocale = this.prefs.intl.app_locale.value || navigator.language; |
| + if (languageCode == appLocale) |
| + return false; |
| + if (enabledLanguages.length == 1) |
| + return false; |
| + return true; |
| + }, |
| + |
| + /** |
| + * Updates the available languages to be bound to the iron-list. |
| + * TODO(michaelpg): Update properties of individual items instead of |
| + * rebuilding entire list. |
| + */ |
| + enabledLanguagesChanged_: function() { |
| + var availableLanguages = []; |
| + for (var i = 0; i < this.languages.supportedLanguages.length; i++) { |
| + var language = this.languages.supportedLanguages[i]; |
| + availableLanguages.push({ |
| + code: language.code, |
| + displayName: language.displayName, |
| + enabled: this.$.languages.isEnabled(language.code) |
| + }); |
| + } |
| + this.availableLanguages_ = availableLanguages; |
| + }, |
| +}); |