| Index: chrome/browser/resources/settings/languages_page/add_languages_dialog.js
|
| diff --git a/chrome/browser/resources/settings/languages_page/add_languages_dialog.js b/chrome/browser/resources/settings/languages_page/add_languages_dialog.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..84d37ecbcf4fa2a8bd082a20a62f748778bc2b7f
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/settings/languages_page/add_languages_dialog.js
|
| @@ -0,0 +1,101 @@
|
| +// Copyright 2016 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 'settings-add-languages-dialog' is a dialog for enabling
|
| + * languages.
|
| + */
|
| +Polymer({
|
| + is: 'settings-add-languages-dialog',
|
| +
|
| + properties: {
|
| + /** Preferences state. */
|
| + prefs: {
|
| + type: Object,
|
| + notify: true,
|
| + },
|
| +
|
| + /** @type {!LanguagesModel|undefined} */
|
| + languages: {
|
| + type: Object,
|
| + notify: true,
|
| + },
|
| +
|
| + /** @type {!LanguageHelper} */
|
| + languageHelper: Object,
|
| +
|
| + /** @private {!Set<string>} */
|
| + languagesToAdd_: {
|
| + type: Object,
|
| + value: function() { return new Set(); },
|
| + },
|
| +
|
| + /** @private */
|
| + disableActionButton_: {
|
| + type: Boolean,
|
| + value: true,
|
| + },
|
| + },
|
| +
|
| + attached: function() {
|
| + this.$.dialog.showModal();
|
| + },
|
| +
|
| + /**
|
| + * Returns the supported languages that are not yet enabled.
|
| + * @param {!Array<!chrome.languageSettingsPrivate.Language>}
|
| + * supportedLanguages
|
| + * @return {!Array<!chrome.languageSettingsPrivate.Language>}
|
| + * @private
|
| + */
|
| + getAvailableLanguages_: function(supportedLanguages) {
|
| + return supportedLanguages.filter(function(language) {
|
| + return !this.languageHelper.isLanguageEnabled(language.code);
|
| + }.bind(this));
|
| + },
|
| +
|
| + /**
|
| + * True if the user has chosen to add this language (checked its checkbox).
|
| + * @return {boolean}
|
| + * @private
|
| + */
|
| + willAdd_: function(languageCode) {
|
| + return this.languagesToAdd_.has(languageCode);
|
| + },
|
| +
|
| + /**
|
| + * Handler for checking or unchecking a language item.
|
| + * @param {!{model: !{item: !chrome.languageSettingsPrivate.Language},
|
| + * target: !PaperCheckboxElement}} e
|
| + * @private
|
| + */
|
| + onLanguageCheckboxChange_: function(e) {
|
| + // Add or remove the item to the Set. No need to worry about data binding:
|
| + // willAdd_ is called to initialize the checkbox state (in case the
|
| + // iron-list re-uses a previous checkbox), and the checkbox can only be
|
| + // changed after that by user action.
|
| + var code = e.model.item.code;
|
| + if (e.target.checked)
|
| + this.languagesToAdd_.add(code);
|
| + else
|
| + this.languagesToAdd_.delete(code);
|
| +
|
| + this.disableActionButton_ = !this.languagesToAdd_.size;
|
| + },
|
| +
|
| + /** @private */
|
| + onCancelButtonTap_: function() {
|
| + this.$.dialog.close();
|
| + },
|
| +
|
| + /**
|
| + * Enables the checked languages.
|
| + * @private
|
| + */
|
| + onActionButtonTap_: function() {
|
| + this.$.dialog.close();
|
| + for (var languageCode of this.languagesToAdd_)
|
| + this.languageHelper.enableLanguage(languageCode);
|
| + },
|
| +});
|
|
|