| Index: ui/file_manager/audio_player/elements/volume_controller.js
|
| diff --git a/ui/file_manager/audio_player/elements/volume_controller.js b/ui/file_manager/audio_player/elements/volume_controller.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ed00080a494840f880dbf6ddfa42004d1f1759bd
|
| --- /dev/null
|
| +++ b/ui/file_manager/audio_player/elements/volume_controller.js
|
| @@ -0,0 +1,124 @@
|
| +// 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.
|
| +
|
| +(function() {
|
| + 'use strict';
|
| +
|
| + Polymer({
|
| + is: 'volume-controller',
|
| +
|
| + properties: {
|
| + /**
|
| + * Width of the element in pixels. Must be specified before ready() is
|
| + * called. Dynamic change is not supported.
|
| + * @type {number}
|
| + */
|
| + width: {
|
| + type: Number,
|
| + value: 32
|
| + },
|
| +
|
| + /**
|
| + * Height of the element in pixels. Must be specified before ready() is
|
| + * called. Dynamic change is not supported.
|
| + * @type {number}
|
| + */
|
| + height: {
|
| + type: Number,
|
| + value: 100
|
| + },
|
| +
|
| + /**
|
| + * Volume. 0 is silent, and 100 is maximum.
|
| + * @type {number}
|
| + */
|
| + value: {
|
| + type: Number,
|
| + value: 50,
|
| + observer: 'valueChanged',
|
| + notify: true
|
| + },
|
| +
|
| + /**
|
| + * Volume. 100 is silent, and 0 is maximum.
|
| + * @type {number}
|
| + */
|
| + rawValue: {
|
| + type: Number,
|
| + value: 0,
|
| + observer: 'rawValueChanged',
|
| + notify: true
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * Initializes an element. This method is called automatically when the
|
| + * element is ready.
|
| + */
|
| + ready: function() {
|
| + this.style.width = this.width + 'px';
|
| + this.style.height = this.height + 'px';
|
| +
|
| + this.rawValueInput = this.$.rawValueInput;
|
| + this.bar = this.$.bar;
|
| +
|
| + this.rawValueInput.style.width = this.height + 'px';
|
| + this.rawValueInput.style.height = this.width + 'px';
|
| + this.rawValueInput.style.webkitTransformOrigin =
|
| + (this.width / 2) + 'px ' +
|
| + (this.width / 2 - 2) + 'px';
|
| +
|
| + var barLeft = (this.width / 2 - 1);
|
| + this.bar.style.left = barLeft + 'px';
|
| + this.bar.style.right = barLeft + 'px';
|
| +
|
| + this.addEventListener('keydown', this.onKeyDown_.bind(this));
|
| + },
|
| +
|
| + /**
|
| + * Invoked when the 'volume' value is changed.
|
| + * @param {number} newValue New value.
|
| + * @param {number} oldValue Old value.
|
| + */
|
| + valueChanged: function(newValue, oldValue) {
|
| + if (oldValue != newValue)
|
| + this.rawValue = 100 - newValue;
|
| + },
|
| +
|
| + /**
|
| + * Invoked when the 'rawValue' property is changed.
|
| + * @param {number} newValue New value.
|
| + * @param {number} oldValue Old value.
|
| + */
|
| + rawValueChanged: function(newValue, oldValue) {
|
| + if (oldValue !== newValue)
|
| + this.value = 100 - newValue;
|
| + },
|
| +
|
| + /**
|
| + * Invoked when the 'keydown' event is fired.
|
| + * @param {Event} event The event object.
|
| + */
|
| + onKeyDown_: function(event) {
|
| + switch (event.keyIdentifier) {
|
| + // Prevents the default behavior. These key should be handled in
|
| + // <audio-player> element.
|
| + case 'Up':
|
| + case 'Down':
|
| + case 'PageUp':
|
| + case 'PageDown':
|
| + event.preventDefault();
|
| + break;
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * Computes style for '.filled' element based on raw value.
|
| + * @return {string}
|
| + */
|
| + computeFilledStyle_: function(rawValue) {
|
| + return 'height: ' + rawValue + '%;';
|
| + }
|
| + });
|
| +})(); // Anonymous closure
|
|
|