| Index: chrome/browser/resources/print_preview/settings/more_settings.js
|
| diff --git a/chrome/browser/resources/print_preview/settings/more_settings.js b/chrome/browser/resources/print_preview/settings/more_settings.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e66ca57dc09e6fe6858f17c2c3d0058e07dbd20e
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/print_preview/settings/more_settings.js
|
| @@ -0,0 +1,99 @@
|
| +// Copyright 2014 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.
|
| +
|
| +cr.define('print_preview', function() {
|
| + 'use strict';
|
| +
|
| + /**
|
| + * Toggles visibility of the specified printing options sections.
|
| + * @param {!Array.<print_preview.SettingsSection>} settingsSections Sections
|
| + * to toggle by this component.
|
| + * @constructor
|
| + * @extends {print_preview.Component}
|
| + */
|
| + function MoreSettings(settingsSections) {
|
| + print_preview.Component.call(this);
|
| +
|
| + /** @private {!Array.<print_preview.SettingsSection>} */
|
| + this.settingsSections_ = settingsSections;
|
| +
|
| + /** @private {MoreSettings.SettingsToShow} */
|
| + this.settingsToShow_ = MoreSettings.SettingsToShow.MOST_POPULAR;
|
| + };
|
| +
|
| + /**
|
| + * Which settings are visible to the user.
|
| + * @enum {number}
|
| + */
|
| + MoreSettings.SettingsToShow = {
|
| + MOST_POPULAR: 1,
|
| + ALL: 2
|
| + };
|
| +
|
| + MoreSettings.prototype = {
|
| + __proto__: print_preview.Component.prototype,
|
| +
|
| + /** @override */
|
| + enterDocument: function() {
|
| + print_preview.Component.prototype.enterDocument.call(this);
|
| +
|
| + this.tracker.add(this.getElement(), 'click', this.onClick_.bind(this));
|
| + this.settingsSections_.forEach(function(section) {
|
| + this.tracker.add(
|
| + section,
|
| + print_preview.SettingsSection.EventType.COLLAPSIBLE_CONTENT_CHANGED,
|
| + this.updateState_.bind(this));
|
| + }.bind(this));
|
| +
|
| + this.updateState_();
|
| + },
|
| +
|
| + /**
|
| + * Toggles "more/fewer options" state and notifies all the options sections
|
| + * to reflect the new state.
|
| + * @private
|
| + */
|
| + onClick_: function() {
|
| + this.settingsToShow_ =
|
| + this.settingsToShow_ == MoreSettings.SettingsToShow.MOST_POPULAR ?
|
| + MoreSettings.SettingsToShow.ALL :
|
| + MoreSettings.SettingsToShow.MOST_POPULAR;
|
| + this.updateState_();
|
| + },
|
| +
|
| + /**
|
| + * Updates the component appearance according to the current state.
|
| + * @private
|
| + */
|
| + updateState_: function() {
|
| + var all = this.settingsToShow_ == MoreSettings.SettingsToShow.ALL;
|
| + this.getChildElement('.more-settings-label').textContent =
|
| + localStrings.getString(all ? 'lessOptionsLabel' : 'moreOptionsLabel');
|
| + var iconEl = this.getChildElement('.more-settings-icon');
|
| + iconEl.classList.toggle('more-settings-icon-plus', !all);
|
| + iconEl.classList.toggle('more-settings-icon-minus', all);
|
| +
|
| + var hasSectionsToToggle = this.settingsSections_.some(function(section) {
|
| + return section.hasCollapsibleContent();
|
| + });
|
| +
|
| + if (hasSectionsToToggle)
|
| + fadeInElement(this.getElement());
|
| + else
|
| + fadeOutElement(this.getElement());
|
| +
|
| + var collapseContent =
|
| + this.settingsToShow_ == MoreSettings.SettingsToShow.MOST_POPULAR &&
|
| + hasSectionsToToggle;
|
| + this.settingsSections_.forEach(function(section) {
|
| + section.collapseContent = collapseContent;
|
| + });
|
| + }
|
| + };
|
| +
|
| + // Export
|
| + return {
|
| + MoreSettings: MoreSettings
|
| + };
|
| +});
|
|
|