define(function(require, exports, module) {
'use strict';

/**
 * Dependencies
 */

var debug = require('debug')('controller:sounds');
var Sounds = require('lib/sounds');

/**
 * Exports
 */

module.exports = function(app) { return new SoundsController(app); };
module.exports.SoundsController = SoundsController;

/**
 * Initialize a new `SoundsController`
 *
 * @param {App} app [description]
 */
function SoundsController(app) {
  var list = app.settings.sounds.get('list');
  this.sounds = new Sounds(list);
  this.app = app;
  this.bindEvents();
  debug('initialized');
}

SoundsController.prototype.bindEvents = function() {
  this.app.on('change:recording', this.onRecordingChange.bind(this));
  this.app.on('camera:willrecord', this.sounds.player('recordingStart'));
  this.app.on('camera:shutter', this.sounds.player('shutter'));
  this.app.on('countdown:immanent', this.sounds.player('countdown'));
};

/**
 * Plays the start/end recording sound.
 *
 * @private
 */
SoundsController.prototype.onRecordingChange = function(recording) {
  if (!recording) {
    this.sounds.play('recordingEnd');
  }
};

});
