// Copyright (c) 2011 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('options', function() {
var OptionsPage = options.OptionsPage;
/////////////////////////////////////////////////////////////////////////////
// ChangePictureOptions class:
/**
* Encapsulated handling of ChromeOS change picture options page.
* @constructor
*/
function ChangePictureOptions() {
OptionsPage.call(
this,
'changePicture',
localStrings.getString('changePicturePage'),
'change-picture-page');
}
cr.addSingletonGetter(ChangePictureOptions);
ChangePictureOptions.prototype = {
// Inherit ChangePictureOptions from OptionsPage.
__proto__: options.OptionsPage.prototype,
/**
* Initializes ChangePictureOptions page.
*/
initializePage: function() {
// Call base class implementation to starts preference initialization.
OptionsPage.prototype.initializePage.call(this);
$('take-photo-button').addEventListener('click',
this.handleTakePhoto_,
false);
$('choose-file-button').addEventListener('click',
this.handleChooseFile_,
false);
chrome.send('getAvailableImages');
},
/**
* Handler for when the user clicks on "Take photo" button.
* @private
* @param {Event} e Click Event.
*/
handleTakePhoto_: function(e) {
chrome.send('takePhoto');
OptionsPage.navigateToPage('personal');
},
/**
* Handler for when the user clicks on "Choose a file" button.
* @private
* @param {Event} e Click Event.
*/
handleChooseFile_: function(e) {
chrome.send('chooseFile');
OptionsPage.navigateToPage('personal');
},
/**
* Handler for when the user clicks on any available user image.
* @private
* @param {Event} e Click Event.
*/
handleImageClick_: function(e) {
chrome.send('selectImage', [e.target.src]);
OptionsPage.navigateToPage('personal');
},
/**
* Appends new image to the end of the image list.
* @param {string} src A url for the user image.
* @private
*/
addUserImage_: function(src) {
var imageElement = document.createElement('img');
imageElement.src = src;
imageElement.addEventListener('click',
this.handleImageClick_,
false);
var divElement = document.createElement('div');
divElement.classList.add('list-element');
divElement.appendChild(imageElement);
$('images-list').appendChild(divElement);
},
/**
* Inserts received images before "Choose file" button.
* @param {List} images A list of urls to user images.
* @private
*/
addUserImages_: function(images) {
for (var i = 0; i < images.length; i++) {
var imageUrl = images[i];
this.addUserImage_(imageUrl);
}
},
};
// Forward public APIs to private implementations.
[
'addUserImages',
].forEach(function(name) {
ChangePictureOptions[name] = function(value) {
ChangePictureOptions.getInstance()[name + '_'](value);
};
});
// Export
return {
ChangePictureOptions: ChangePictureOptions
};
});