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 'settings-manage-languages-page' is a sub-page for enabling | 6 * @fileoverview 'settings-manage-languages-page' is a sub-page for enabling |
| 7 * and disabling languages. | 7 * and disabling languages. |
| 8 */ | 8 */ |
| 9 Polymer({ | 9 Polymer({ |
| 10 is: 'settings-manage-languages-page', | 10 is: 'settings-manage-languages-page', |
| 11 | 11 |
| 12 properties: { | 12 properties: { |
| 13 /** | 13 /** |
| 14 * Preferences state. | 14 * Preferences state. |
| 15 */ | 15 */ |
| 16 prefs: { | 16 prefs: { |
| 17 type: Object, | 17 type: Object, |
| 18 notify: true, | 18 notify: true, |
| 19 }, | 19 }, |
| 20 | 20 |
| 21 /** | 21 /** |
| 22 * @type {!LanguagesModel|undefined} | 22 * @type {!LanguagesModel|undefined} |
| 23 */ | 23 */ |
| 24 languages: { | 24 languages: { |
| 25 type: Object, | 25 type: Object, |
| 26 notify: true, | 26 notify: true, |
| 27 }, | 27 }, |
| 28 | 28 |
| 29 /** | |
| 30 * @private {!Array<!{code: string, displayName: string, | |
| 31 * nativeDisplayName: string, enabled: boolean}>| | |
| 32 * undefined} | |
| 33 */ | |
| 34 availableLanguages_: Array, | |
| 35 | |
| 36 /** @private {!LanguageHelper} */ | 29 /** @private {!LanguageHelper} */ |
| 37 languageHelper_: Object, | 30 languageHelper_: Object, |
| 38 }, | 31 }, |
| 39 | 32 |
| 40 observers: [ | |
| 41 'enabledLanguagesChanged_(languages.enabledLanguages.*)', | |
| 42 ], | |
| 43 | |
| 44 /** @override */ | 33 /** @override */ |
| 45 created: function() { | 34 created: function() { |
| 46 this.languageHelper_ = LanguageHelperImpl.getInstance(); | 35 this.languageHelper_ = LanguageHelperImpl.getInstance(); |
| 47 }, | 36 }, |
| 48 | 37 |
| 49 /** | 38 /** |
| 39 * @param {!chrome.languageSettingsPrivate.Language} language | |
| 40 * @param {!Object} change | |
|
stevenjb
2016/04/20 20:40:50
It is a little confusing as to what this is and wh
michaelpg
2016/04/20 23:19:59
It's awkward to type, and @unused isn't a thing, b
michaelpg
2016/04/21 03:23:13
I've updated this with the comment you suggested i
| |
| 41 * @return {boolean} | |
| 42 * @private | |
| 43 */ | |
| 44 isCheckboxChecked_: function(language, change) { | |
| 45 return this.languageHelper_.isLanguageEnabled(language.code); | |
| 46 }, | |
| 47 | |
| 48 /** | |
| 49 * Determines whether a language must be enabled. If so, the checkbox in the | |
| 50 * available languages list should not be changeable. | |
| 51 * @param {!chrome.languageSettingsPrivate.Language} language | |
| 52 * @param {!Object} change | |
|
stevenjb
2016/04/20 20:40:50
Same here.
michaelpg
2016/04/20 23:19:59
Done.
| |
| 53 * @return {boolean} | |
| 54 * @private | |
| 55 */ | |
| 56 isLanguageRequired_: function(language, change) { | |
| 57 // This check only applies to enabled languages. | |
| 58 if (!this.languageHelper_.isLanguageEnabled(language.code)) | |
| 59 return false; | |
| 60 return !this.languageHelper_.canDisableLanguage(language.code); | |
| 61 }, | |
| 62 | |
| 63 /** | |
| 50 * Handler for removing a language. | 64 * Handler for removing a language. |
| 51 * @param {!{model: !{item: !LanguageInfo}}} e | 65 * @param {!{model: !{item: !LanguageState}}} e |
| 52 * @private | 66 * @private |
| 53 */ | 67 */ |
| 54 onRemoveLanguageTap_: function(e) { | 68 onRemoveLanguageTap_: function(e) { |
| 55 this.languageHelper_.disableLanguage(e.model.item.language.code); | 69 this.languageHelper_.disableLanguage(e.model.item.language.code); |
| 56 }, | 70 }, |
| 57 | 71 |
| 58 /** | 72 /** |
| 59 * Handler for checking or unchecking a language item. | 73 * Handler for checking or unchecking a language item. |
| 60 * @param {!{model: !{item: !chrome.languageSettingsPrivate.Language}, | 74 * @param {!{model: !{item: !chrome.languageSettingsPrivate.Language}, |
| 61 * target: !PaperCheckboxElement}} e | 75 * target: !PaperCheckboxElement}} e |
| 62 * @private | 76 * @private |
| 63 */ | 77 */ |
| 64 onLanguageCheckboxChange_: function(e) { | 78 onLanguageCheckboxChange_: function(e) { |
| 65 var code = e.model.item.code; | 79 var code = e.model.item.code; |
| 66 if (e.target.checked) | 80 if (e.target.checked) |
| 67 this.languageHelper_.enableLanguage(code); | 81 this.languageHelper_.enableLanguage(code); |
| 68 else | 82 else |
| 69 this.languageHelper_.disableLanguage(code); | 83 this.languageHelper_.disableLanguage(code); |
| 70 }, | 84 }, |
| 71 | |
| 72 /** | |
| 73 * True if a language is not the current or prospective UI language, ie, | |
| 74 * it could be disabled. | |
| 75 * @param {string} languageCode | |
| 76 * @param {string} prospectiveUILanguageCode | |
| 77 * @return {boolean} | |
| 78 * @private | |
| 79 */ | |
| 80 canRemoveLanguage_: function(languageCode, prospectiveUILanguageCode) { | |
| 81 if (languageCode == navigator.language || | |
| 82 languageCode == prospectiveUILanguageCode) { | |
| 83 return false; | |
| 84 } | |
| 85 return true; | |
| 86 }, | |
| 87 | |
| 88 /** | |
| 89 * Updates the available languages that are bound to the iron-list. | |
| 90 * @private | |
| 91 */ | |
| 92 enabledLanguagesChanged_: function() { | |
| 93 if (!this.availableLanguages_) { | |
| 94 var availableLanguages = []; | |
| 95 for (var i = 0; i < this.languages.supportedLanguages.length; i++) { | |
| 96 var language = this.languages.supportedLanguages[i]; | |
| 97 availableLanguages.push({ | |
| 98 code: language.code, | |
| 99 displayName: language.displayName, | |
| 100 nativeDisplayName: language.nativeDisplayName, | |
| 101 enabled: this.languageHelper_.isLanguageEnabled(language.code), | |
| 102 }); | |
| 103 } | |
| 104 // Set the Polymer property after building the full array. | |
| 105 this.availableLanguages_ = availableLanguages; | |
| 106 } else { | |
| 107 // Update the available languages in place. | |
| 108 for (var i = 0; i < this.availableLanguages_.length; i++) { | |
| 109 this.set('availableLanguages_.' + i + '.enabled', | |
| 110 this.languageHelper_.isLanguageEnabled( | |
| 111 this.availableLanguages_[i].code)); | |
| 112 } | |
| 113 } | |
| 114 }, | |
| 115 }); | 85 }); |
| OLD | NEW |