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

Unified Diff: chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js

Issue 12769017: Add delete context menu for custom wallpapers and some ui tweaks (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 9 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/chromeos/wallpaper_manager/js/wallpaper_manager.js
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js
index 8d3a890a4e55d7f42baf20b4d913c9f078992736..0f15885cb97048428db0fcbfca60edb512eb3842 100644
--- a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js
+++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js
@@ -327,6 +327,72 @@ function WallpaperManager(dialogDom) {
});
this.onResize_();
+ this.initContextMenuAndCommand_();
+ };
+
+ /**
+ * One-time initialization of context menu and command.
+ */
+ WallpaperManager.prototype.initContextMenuAndCommand_ = function() {
+ this.wallpaperContextMenu_ = $('wallpaper-context-menu');
+ cr.ui.Menu.decorate(this.wallpaperContextMenu_);
+ cr.ui.contextMenuHandler.setContextMenu(this.wallpaperGrid_,
+ this.wallpaperContextMenu_);
+ var commands = this.dialogDom_.querySelectorAll('command');
+ for (var i = 0; i < commands.length; i++)
+ cr.ui.Command.decorate(commands[i]);
+
+ var doc = this.document_;
+ doc.addEventListener('command', this.onCommand_.bind(this));
+ doc.addEventListener('canExecute', this.onCommandCanExecute_.bind(this));
+ };
+
+ /**
+ * Handles a command being executed.
+ * @param {Event} event A command event.
+ */
+ WallpaperManager.prototype.onCommand_ = function(event) {
+ if (event.command.id == 'delete') {
+ var wallpaperGrid = this.wallpaperGrid_;
+ var selectedIndex = wallpaperGrid.selectionModel.selectedIndex;
+ var item = wallpaperGrid.dataModel.item(selectedIndex);
+ if (!item || item.source != wallpapers.WallpaperSourceEnum.Custom)
+ return;
+ this.removeCustomWallpaper(item.baseURL);
+ wallpaperGrid.dataModel.splice(selectedIndex, 1);
+ // Calculate the number of remaining custom wallpapers. The add new button
+ // in data model needs to be excluded.
+ var customWallpaperCount = wallpaperGrid.dataModel.length - 1;
+ if (customWallpaperCount == 0) {
+ // Active custom wallpaper is also copied in chronos data dir. It needs
+ // to be deleted.
+ chrome.wallpaperPrivate.resetWallpaper();
+ } else {
+ selectedIndex = Math.min(selectedIndex, customWallpaperCount - 1);
+ wallpaperGrid.selectionModel.selectedIndex = selectedIndex;
+ }
+ event.cancelBubble = true;
+ }
+ };
+
+ /**
+ * Decides if a command can be executed on current target.
+ * @param {Event} event A command event.
+ */
+ WallpaperManager.prototype.onCommandCanExecute_ = function(event) {
+ switch (event.command.id) {
+ case 'delete':
+ var wallpaperGrid = this.wallpaperGrid_;
+ var selectedIndex = wallpaperGrid.selectionModel.selectedIndex;
+ var item = wallpaperGrid.dataModel.item(selectedIndex);
+ if (selectedIndex != this.wallpaperGrid_.dataModel.length - 1 &&
+ item && item.source == wallpapers.WallpaperSourceEnum.Custom) {
+ event.canExecute = true;
+ break;
+ }
+ default:
+ event.canExecute = false;
+ }
};
/**
@@ -505,7 +571,6 @@ function WallpaperManager(dialogDom) {
var item = this.wallpaperGrid_.dataModel.item(oldestIndex);
if (!item || item.source != wallpapers.WallpaperSourceEnum.Custom)
return;
- console.error(item.baseURL);
if (item.baseURL == this.currentWallpaper_)
item = this.wallpaperGrid_.dataModel.item(--oldestIndex);
if (item) {
@@ -859,7 +924,7 @@ function WallpaperManager(dialogDom) {
var wallpapersDataModel = new cr.ui.ArrayDataModel([]);
var selectedItem;
if (selectedListItem.custom) {
- $('online-wallpaper-attribute').hidden = true;
+ this.document_.body.setAttribute('custom', '');
var errorHandler = this.onFileSystemError_.bind(this);
var toArray = function(list) {
return Array.prototype.slice.call(list || [], 0);
@@ -916,7 +981,7 @@ function WallpaperManager(dialogDom) {
this.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.ORIGINAL,
success, errorHandler);
} else {
- $('online-wallpaper-attribute').hidden = false;
+ this.document_.body.removeAttribute('custom');
for (var key in this.manifest_.wallpaper_list) {
if (selectedIndex == AllCategoryIndex ||
this.manifest_.wallpaper_list[key].categories.indexOf(

Powered by Google App Engine
This is Rietveld 408576698