Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Side by Side Diff: chrome/browser/resources/settings/languages_page/manage_languages_page.js

Issue 1351623008: MD Settings: Languages model for language pages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@SingletonPrefs
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698