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

Side by Side Diff: ui/file_manager/gallery/js/ribbon.js

Issue 853653004: Gallery: Add items to GalleryDataModel before loading their metadata. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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 unified diff | Download patch
« no previous file with comments | « ui/file_manager/gallery/js/mosaic_mode.js ('k') | ui/file_manager/gallery/js/slide_mode.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * Scrollable thumbnail ribbon at the bottom of the Gallery in the Slide mode. 6 * Scrollable thumbnail ribbon at the bottom of the Gallery in the Slide mode.
7 * 7 *
8 * @param {!Document} document Document. 8 * @param {!Document} document Document.
9 * @param {!cr.ui.ArrayDataModel} dataModel Data model. 9 * @param {!cr.ui.ArrayDataModel} dataModel Data model.
10 * @param {!cr.ui.ListSelectionModel} selectionModel Selection model. 10 * @param {!cr.ui.ListSelectionModel} selectionModel Selection model.
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 } 169 }
170 170
171 var persistentNodes = this.querySelectorAll('.ribbon-image:not([vanishing])'); 171 var persistentNodes = this.querySelectorAll('.ribbon-image:not([vanishing])');
172 if (this.lastVisibleIndex_ < this.dataModel_.length) { // Not at the end. 172 if (this.lastVisibleIndex_ < this.dataModel_.length) { // Not at the end.
173 var lastNode = persistentNodes[persistentNodes.length - 1]; 173 var lastNode = persistentNodes[persistentNodes.length - 1];
174 if (lastNode.nextSibling) { 174 if (lastNode.nextSibling) {
175 // Pull back a vanishing node from the right. 175 // Pull back a vanishing node from the right.
176 lastNode.nextSibling.removeAttribute('vanishing'); 176 lastNode.nextSibling.removeAttribute('vanishing');
177 } else { 177 } else {
178 // Push a new item at the right end. 178 // Push a new item at the right end.
179 this.appendChild(this.renderThumbnail_(this.lastVisibleIndex_)); 179 var element = this.renderThumbnail_(this.lastVisibleIndex_);
180 element.style.marginLeft = '0';
yoshiki 2015/04/06 07:40:38 nit: Should we apply a class, instead of assigning
hirono 2015/04/06 07:48:08 Yes! Done
181 this.appendChild(element);
180 } 182 }
181 } else { 183 } else {
182 // No items to the right, move the window to the left. 184 // No items to the right, move the window to the left.
183 this.lastVisibleIndex_--; 185 this.lastVisibleIndex_--;
184 if (this.firstVisibleIndex_) { 186 if (this.firstVisibleIndex_) {
185 this.firstVisibleIndex_--; 187 this.firstVisibleIndex_--;
186 var firstNode = persistentNodes[0]; 188 var firstNode = persistentNodes[0];
187 if (firstNode.previousSibling) { 189 if (firstNode.previousSibling) {
188 // Pull back a vanishing node from the left. 190 // Pull back a vanishing node from the left.
189 firstNode.previousSibling.removeAttribute('vanishing'); 191 firstNode.previousSibling.removeAttribute('vanishing');
190 } else { 192 } else {
191 // Push a new item at the left end. 193 // Push a new item at the left end.
192 var newThumbnail = this.renderThumbnail_(this.firstVisibleIndex_); 194 if (this.firstVisibleIndex_ < this.dataModel_.length) {
193 newThumbnail.style.marginLeft = -(this.clientHeight - 2) + 'px'; 195 var newThumbnail = this.renderThumbnail_(this.firstVisibleIndex_);
194 this.insertBefore(newThumbnail, this.firstChild); 196 newThumbnail.style.marginLeft = -(this.clientHeight - 2) + 'px';
195 setTimeout(function() { 197 this.insertBefore(newThumbnail, this.firstChild);
196 newThumbnail.style.marginLeft = '0'; 198 setTimeout(function() {
197 }, 0); 199 newThumbnail.style.marginLeft = '0';
200 }, 0);
201 }
198 } 202 }
199 } 203 }
200 } 204 }
201 205
202 var removed = false; 206 var removed = false;
203 for (var i = 0; i < event.removed.length; i++) { 207 for (var i = 0; i < event.removed.length; i++) {
204 var removedDom = this.renderCache_[event.removed[i].getEntry().toURL()]; 208 var removedDom = this.renderCache_[event.removed[i].getEntry().toURL()];
205 if (removedDom) { 209 if (removedDom) {
206 removedDom.removeAttribute('selected'); 210 removedDom.removeAttribute('selected');
207 removedDom.setAttribute('vanishing', 'smooth'); 211 removedDom.setAttribute('vanishing', 'smooth');
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 }; 393 };
390 394
391 /** 395 /**
392 * Set the thumbnail image. 396 * Set the thumbnail image.
393 * 397 *
394 * @param {!Element} thumbnail Thumbnail element. 398 * @param {!Element} thumbnail Thumbnail element.
395 * @param {!Gallery.Item} item Gallery item. 399 * @param {!Gallery.Item} item Gallery item.
396 * @private 400 * @private
397 */ 401 */
398 Ribbon.prototype.setThumbnailImage_ = function(thumbnail, item) { 402 Ribbon.prototype.setThumbnailImage_ = function(thumbnail, item) {
403 if (!item.getThumbnailMetadataItem())
404 return;
399 this.thumbnailModel_.get([item.getEntry()]).then(function(metadataList) { 405 this.thumbnailModel_.get([item.getEntry()]).then(function(metadataList) {
400 var loader = new ThumbnailLoader( 406 var loader = new ThumbnailLoader(
401 item.getEntry(), 407 item.getEntry(),
402 ThumbnailLoader.LoaderType.IMAGE, 408 ThumbnailLoader.LoaderType.IMAGE,
403 metadataList[0]); 409 metadataList[0]);
404 loader.load( 410 loader.load(
405 thumbnail.querySelector('.image-wrapper'), 411 thumbnail.querySelector('.image-wrapper'),
406 ThumbnailLoader.FillMode.FILL /* fill */, 412 ThumbnailLoader.FillMode.FILL /* fill */,
407 ThumbnailLoader.OptimizationMode.NEVER_DISCARD); 413 ThumbnailLoader.OptimizationMode.NEVER_DISCARD);
408 }); 414 });
(...skipping 21 matching lines...) Expand all
430 * @param {string} oldUrl Old url. 436 * @param {string} oldUrl Old url.
431 * @param {string} newUrl New url. 437 * @param {string} newUrl New url.
432 * @private 438 * @private
433 */ 439 */
434 Ribbon.prototype.remapCache_ = function(oldUrl, newUrl) { 440 Ribbon.prototype.remapCache_ = function(oldUrl, newUrl) {
435 if (oldUrl != newUrl && (oldUrl in this.renderCache_)) { 441 if (oldUrl != newUrl && (oldUrl in this.renderCache_)) {
436 this.renderCache_[newUrl] = this.renderCache_[oldUrl]; 442 this.renderCache_[newUrl] = this.renderCache_[oldUrl];
437 delete this.renderCache_[oldUrl]; 443 delete this.renderCache_[oldUrl];
438 } 444 }
439 }; 445 };
OLDNEW
« no previous file with comments | « ui/file_manager/gallery/js/mosaic_mode.js ('k') | ui/file_manager/gallery/js/slide_mode.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698