Chromium Code Reviews| Index: ui/file_manager/file_manager/foreground/js/ui/file_grid.js |
| diff --git a/ui/file_manager/file_manager/foreground/js/ui/file_grid.js b/ui/file_manager/file_manager/foreground/js/ui/file_grid.js |
| index cdaf6c175814a580823d855c3bb8e0973196c33e..37c656a99398a395048b036d1704c42209c3b5d7 100644 |
| --- a/ui/file_manager/file_manager/foreground/js/ui/file_grid.js |
| +++ b/ui/file_manager/file_manager/foreground/js/ui/file_grid.js |
| @@ -15,15 +15,6 @@ function FileGrid() { |
| } |
| /** |
| - * Thumbnail quality. |
| - * @enum {number} |
| - */ |
| -FileGrid.ThumbnailQuality = { |
|
yawano
2015/02/17 09:21:25
Since this enum is no longer used in current code
|
| - LOW: 0, |
| - HIGH: 1 |
| -}; |
| - |
| -/** |
| * Inherits from cr.ui.Grid. |
| */ |
| FileGrid.prototype.__proto__ = cr.ui.Grid.prototype; |
| @@ -113,10 +104,10 @@ FileGrid.prototype.setListThumbnailLoader = function(listThumbnailLoader) { |
| FileGrid.prototype.onThumbnailLoaded_ = function(event) { |
| var listItem = this.getListItemByIndex(event.index); |
| if (listItem) { |
| - var thumbnail = listItem.querySelector('.img-container > .thumbnail'); |
| - if (thumbnail) { |
| + var box = listItem.querySelector('.img-container'); |
| + if (box) { |
| FileGrid.setThumbnailImage_( |
| - assertInstanceof(thumbnail, HTMLDivElement), event.dataUrl); |
| + assertInstanceof(box, HTMLDivElement), event.dataUrl); |
| } |
| } |
| }; |
| @@ -155,7 +146,7 @@ FileGrid.prototype.updateListItemsMetadata = function(type, entries) { |
| if (!entry || urls.indexOf(entry.toURL()) === -1) |
| continue; |
| - FileGrid.decorateThumbnailBox_(box, |
| + FileGrid.decorateThumbnailBox_(assertInstanceof(box, HTMLDivElement), |
| entry, |
| this.fileSystemMetadata_, |
| this.volumeManager_, |
| @@ -235,7 +226,7 @@ FileGrid.decorateThumbnail_ = function( |
| } |
| if (shouldLoadThumbnail) { |
| FileGrid.decorateThumbnailBox_( |
| - box, |
| + assertInstanceof(box, HTMLDivElement), |
| entry, |
| fileSystemMetadata, |
| volumeManager, |
| @@ -265,7 +256,7 @@ FileGrid.decorateThumbnail_ = function( |
| /** |
| * Decorates the box containing a centered thumbnail image. |
| * |
| - * @param {Element} box Box to decorate. |
| + * @param {!HTMLDivElement} box Box to decorate. |
| * @param {Entry} entry Entry which thumbnail is generating for. |
| * @param {!FileSystemMetadata} fileSystemMetadata To retrieve metadata. |
| * @param {VolumeManagerWrapper} volumeManager Volume manager instance. |
| @@ -298,16 +289,11 @@ FileGrid.decorateThumbnailBox_ = function( |
| return; |
| } |
| - // Create a box for thumbnail here to perform transition correctly. |
| - var thumbnail = box.ownerDocument.createElement('div'); |
| - thumbnail.classList.add('thumbnail'); |
| - box.appendChild(thumbnail); |
| - |
| // Set thumbnail if it's already in cache. |
| if (listThumbnailLoader && |
| listThumbnailLoader.getThumbnailFromCache(entry)) { |
| FileGrid.setThumbnailImage_( |
| - assertInstanceof(thumbnail, HTMLDivElement), |
| + box, |
| listThumbnailLoader.getThumbnailFromCache(entry).dataUrl); |
| } else { |
| var mediaType = FileType.getMediaType(entry); |
| @@ -317,14 +303,29 @@ FileGrid.decorateThumbnailBox_ = function( |
| /** |
| * Sets thumbnail image to the box. |
| - * @param {!HTMLDivElement} thumbnail A div element to be filled with thumbnail. |
| + * @param {!HTMLDivElement} thumbnail A div element to hold thumbnails. |
| * @param {string} dataUrl Data url of thumbnail. |
| * @private |
| */ |
| -FileGrid.setThumbnailImage_ = function(thumbnail, dataUrl) { |
| - // TODO(yawano): Add transition animation for thumbnail update. |
| +FileGrid.setThumbnailImage_ = function(box, dataUrl) { |
| + var oldThumbnails = box.querySelectorAll('.thumbnail'); |
| + |
| + var thumbnail = box.ownerDocument.createElement('div'); |
| + thumbnail.classList.add('thumbnail'); |
| thumbnail.style.backgroundImage = 'url(' + dataUrl + ')'; |
| - thumbnail.classList.add('loaded'); |
| + thumbnail.addEventListener('webkitAnimationEnd', function() { |
| + // Remove animation css once animation is completed in order not to animate |
| + // agein when an item is attached to the dom again. |
| + thumbnail.classList.remove('animate'); |
| + |
| + for (var i = 0; i < oldThumbnails.length; i++) { |
| + if (box.contains(oldThumbnails[i])) |
| + box.removeChild(oldThumbnails[i]); |
| + } |
| + }); |
| + thumbnail.classList.add('animate'); |
| + |
| + box.appendChild(thumbnail); |
| }; |
| /** |