OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 cr.define('options', function() { | |
6 | |
7 var OptionsPage = options.OptionsPage; | |
8 | |
9 ///////////////////////////////////////////////////////////////////////////// | |
10 // ChangePictureOptions class: | |
11 | |
12 /** | |
13 * Encapsulated handling of ChromeOS change picture options page. | |
14 * @constructor | |
15 */ | |
16 function ChangePictureOptions() { | |
17 OptionsPage.call( | |
18 this, | |
19 'changePicture', | |
20 localStrings.getString('changePicturePage'), | |
21 'change-picture-page'); | |
22 } | |
23 | |
24 cr.addSingletonGetter(ChangePictureOptions); | |
25 | |
26 ChangePictureOptions.prototype = { | |
27 // Inherit ChangePictureOptions from OptionsPage. | |
28 __proto__: options.OptionsPage.prototype, | |
29 | |
30 /** | |
31 * Initializes ChangePictureOptions page. | |
32 */ | |
33 initializePage: function() { | |
34 // Call base class implementation to starts preference initialization. | |
35 OptionsPage.prototype.initializePage.call(this); | |
36 | |
37 $('take-photo-button').addEventListener('click', | |
38 this.handleTakePhoto_, | |
39 false); | |
40 $('choose-file-button').addEventListener('click', | |
41 this.handleChooseFile_, | |
42 false); | |
43 chrome.send('getAvailableImages'); | |
44 }, | |
45 | |
46 /** | |
47 * Handler for when the user clicks on "Take photo" button. | |
48 * @private | |
49 * @param {Event} e Click Event. | |
50 */ | |
51 handleTakePhoto_: function(e) { | |
52 chrome.send('takePhoto'); | |
53 OptionsPage.navigateToPage('personal'); | |
54 }, | |
55 | |
56 /** | |
57 * Handler for when the user clicks on "Choose a file" button. | |
58 * @private | |
59 * @param {Event} e Click Event. | |
60 */ | |
61 handleChooseFile_: function(e) { | |
62 chrome.send('chooseFile'); | |
63 OptionsPage.navigateToPage('personal'); | |
64 }, | |
65 | |
66 /** | |
67 * Handler for when the user clicks on any available user image. | |
68 * @private | |
69 * @param {Event} e Click Event. | |
70 */ | |
71 handleImageClick_: function(e) { | |
72 chrome.send('selectImage', [e.target.src]); | |
73 OptionsPage.navigateToPage('personal'); | |
74 }, | |
75 | |
76 /** | |
77 * Appends new image to the end of the image list. | |
78 * @param {string} src A url for the user image. | |
79 * @private | |
80 */ | |
81 addUserImage_: function(src) { | |
82 var imageElement = document.createElement('img'); | |
83 imageElement.src = src; | |
84 imageElement.addEventListener('click', | |
85 this.handleImageClick_, | |
86 false); | |
87 var divElement = document.createElement('div'); | |
88 divElement.classList.add('list-element'); | |
89 divElement.appendChild(imageElement); | |
90 $('images-list').appendChild(divElement); | |
91 }, | |
92 | |
93 /** | |
94 * Inserts received images before "Choose file" button. | |
95 * @param {List} images A list of urls to user images. | |
96 * @private | |
97 */ | |
98 addUserImages_: function(images) { | |
99 for (var i = 0; i < images.length; i++) { | |
100 var imageUrl = images[i]; | |
101 this.addUserImage_(imageUrl); | |
102 } | |
103 }, | |
104 }; | |
105 | |
106 // Forward public APIs to private implementations. | |
107 [ | |
108 'addUserImages', | |
109 ].forEach(function(name) { | |
110 ChangePictureOptions[name] = function(value) { | |
111 ChangePictureOptions.getInstance()[name + '_'](value); | |
112 }; | |
113 }); | |
114 | |
115 // Export | |
116 return { | |
117 ChangePictureOptions: ChangePictureOptions | |
118 }; | |
119 | |
120 }); | |
121 | |
OLD | NEW |