Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5682)

Unified Diff: chrome/browser/resources/options2/chromeos/set_wallpaper_options.js

Issue 10375010: Implement user selected wallpaper feature. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/options2/chromeos/set_wallpaper_options.js
diff --git a/chrome/browser/resources/options2/chromeos/set_wallpaper_options.js b/chrome/browser/resources/options2/chromeos/set_wallpaper_options.js
index cfc398c8db977f3abdb4fadcbb6ab59b66792f4d..c516be699b7aa81c55198ee6b3cd54bb0bbf77f8 100644
--- a/chrome/browser/resources/options2/chromeos/set_wallpaper_options.js
+++ b/chrome/browser/resources/options2/chromeos/set_wallpaper_options.js
@@ -7,6 +7,8 @@ cr.define('options', function() {
var OptionsPage = options.OptionsPage;
var UserImagesGrid = options.UserImagesGrid;
+ /** @const */ var CustomWallpaperPrefix = 'chrome://wallpaper/custom_';
James Hawkins 2012/05/06 15:49:50 nit: Variables start lowerCase. However, this is
bshe 2012/05/08 22:22:18 Done.
+
/////////////////////////////////////////////////////////////////////////////
// SetWallpaperOptions class:
@@ -47,6 +49,10 @@ cr.define('options', function() {
$('random-wallpaper-checkbox').addEventListener('click',
this.handleCheckboxClick_.bind(this));
+ $('set-custome-wallpaper').addEventListener('click',
+ this.handleChooseFile_);
+ $('set-wallpaper-layout').addEventListener('change',
+ this.handleLayoutChange_);
$('set-wallpaper-overlay-confirm').onclick = function() {
OptionsPage.closeOverlay();
};
@@ -54,6 +60,8 @@ cr.define('options', function() {
// @type {Array.<author: string, url: string, website: string>}
this.wallpapers_ = [];
+ this.oldImage_ = null;
James Hawkins 2012/05/06 15:49:50 Document.
bshe 2012/05/08 22:22:18 Done.
+
chrome.send('onSetWallpaperPageInitialized');
},
@@ -76,6 +84,11 @@ cr.define('options', function() {
willHidePage: function() {
var wallpaperGrid = $('wallpaper-grid');
wallpaperGrid.blur();
+ if (this.oldImage_) {
+ wallpaperGrid.removeItem(this.oldImage_);
+ this.oldImage_ = null;
+ }
+ $('set-wallpaper-layout').innerText = '';
},
/**
@@ -96,6 +109,45 @@ cr.define('options', function() {
},
/**
+ * Populate the drop down box for custom wallpaper layout.
+ * param {string} layouts Available wallpaper layout.
flackr 2012/05/04 19:06:17 s/layout/layouts
bshe 2012/05/08 22:22:18 Done.
+ * param {number} selectedLayout The value of selected/default layout.
+ * @private
+ */
+ populateWallpaperLayout_: function(layouts, selectedLayout) {
flackr 2012/05/04 19:06:17 s/populateWallpaperLayout/populateWallpaperLayouts
bshe 2012/05/08 22:22:18 Done.
+ var wallpaperLayout = $('set-wallpaper-layout');
+ var selectedIndex = -1;
+ for (var i = 0; i < layouts.length; i++) {
+ var option = new Option(layouts[i]['name'], layouts[i]['index']);
+ if (selectedLayout == option.value)
+ selectedIndex = i;
+ wallpaperLayout.appendChild(option);
+ }
+ if (selectedIndex >= 0)
+ wallpaperLayout.selectedIndex = selectedIndex;
+ },
+
+ /**
+ * Handles "Custom..." button activation.
+ * @private
+ */
+ handleChooseFile_: function() {
+ chrome.send('chooseWallpaper');
+ },
+
+ /**
+ * Handle the wallpaper layout setting change.
+ * @private
+ */
+ handleLayoutChange_: function() {
+ var setWallpaperLayout = $('set-wallpaper-layout');
+ var layout = setWallpaperLayout.options[
+ setWallpaperLayout.selectedIndex].value;
+ //var value = event.target.options[event.target.selectedIndex].value;
flackr 2012/05/04 19:06:17 Remove commented code.
bshe 2012/05/08 22:22:18 Done.
+ chrome.send('changeWallpaperLayout', [layout]);
+ },
+
+ /**
* Handles image selection change.
* @private
*/
@@ -104,8 +156,19 @@ cr.define('options', function() {
var url = wallpaperGrid.selectedItemUrl;
if (url &&
!wallpaperGrid.inProgramSelection) {
+ if (url.indexOf(CustomWallpaperPrefix) != -1) {
flackr 2012/05/04 19:06:17 This is strictly a prefix right? Maybe if == 0?
bshe 2012/05/08 22:22:18 Done.
+ // User custom wallpaper is selected
+ $('set-wallpaper-layout').hidden = false;
+ $('attribution-label').hidden = true;
+ // When users select the custom wallpaper thumbnail from picker UI,
+ // use the saved layout value and redraw the wallpaper.
+ this.handleLayoutChange_();
+ } else {
+ $('set-wallpaper-layout').hidden = true;
+ $('attribution-label').hidden = false;
+ chrome.send('selectDefaultWallpaper', [url]);
+ }
this.setWallpaperAttribution_(url);
- chrome.send('selectDefaultWallpaper', [url]);
}
},
@@ -130,8 +193,10 @@ cr.define('options', function() {
var wallpaperGrid = $('wallpaper-grid');
if ($('random-wallpaper-checkbox').checked) {
wallpaperGrid.disabled = true;
+ $('attribution-label').hidden = false;
chrome.send('selectRandomWallpaper');
wallpaperGrid.classList.add('grayout');
+ $('set-wallpaper-layout').hidden = true;
} else {
wallpaperGrid.disabled = false;
wallpaperGrid.classList.remove('grayout');
@@ -179,12 +244,59 @@ cr.define('options', function() {
}
},
+ /**
+ * Called when user select a valid file from file system. Display layout
+ * drop down box and disable random mode if enabled.
+ */
+ didSelectFile_: function() {
+ $('set-wallpaper-layout').hidden = false;
+ var wallpaperGrid = $('wallpaper-grid');
+ if ($('random-wallpaper-checkbox').checked) {
+ $('random-wallpaper-checkbox').checked = false;
+ wallpaperGrid.disabled = false;
+ wallpaperGrid.classList.remove('grayout');
+ }
+ },
+
+ /**
+ * Get url of current user's custom wallpaper thumbnail.
+ */
+ get currentWallpaperImageUrl() {
+ return CustomWallpaperPrefix + BrowserOptions.getLoggedInUsername() +
+ '?id=' + (new Date()).getTime();
flackr 2012/05/04 19:06:17 This is non-trivial and non-deterministic, I think
bshe 2012/05/08 22:22:18 Done.
+ },
+
+ /**
+ * Adds or updates custom user wallpaper thumbnail from file.
+ * @private
+ */
+ setCustomImage_: function() {
+ var wallpaperGrid = $('wallpaper-grid');
+ var url = this.currentWallpaperImageUrl;
+ if (this.oldImage_) {
+ this.oldImage_ = wallpaperGrid.updateItem(this.oldImage_, url);
+ } else {
+ // Insert to the end of wallpaper list.
+ var pos = wallpaperGrid.length;
+ this.oldImage_ = wallpaperGrid.addItem(url, undefined, undefined, pos);
+ }
+
+ // Clear attributions for custom wallpaper.
+ $('attribution-label').hidden = true;
+ this.setWallpaperAttribution_('');
+ wallpaperGrid.selectedItem = this.oldImage_;
+ // Enable the layout drop down box when custom wallpaper is selected.
+ $('set-wallpaper-layout').hidden = false;
flackr 2012/05/04 19:06:17 We're updating the visibility of attribution-label
bshe 2012/05/08 22:22:18 Done.
+ },
};
// Forward public APIs to private implementations.
[
'setDefaultImages',
- 'setSelectedImage'
+ 'setSelectedImage',
+ 'populateWallpaperLayout',
+ 'didSelectFile',
+ 'setCustomImage'
].forEach(function(name) {
SetWallpaperOptions[name] = function() {
var instance = SetWallpaperOptions.getInstance();

Powered by Google App Engine
This is Rietveld 408576698