OLD | NEW |
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 * @param {!Element} container Content container. | 6 * @param {!Element} container Content container. |
7 * @param {!ErrorBanner} errorBanner Error banner. | 7 * @param {!ErrorBanner} errorBanner Error banner. |
8 * @param {!cr.ui.ArrayDataModel} dataModel Data model. | 8 * @param {!cr.ui.ArrayDataModel} dataModel Data model. |
9 * @param {!cr.ui.ListSelectionModel} selectionModel Selection model. | 9 * @param {!cr.ui.ListSelectionModel} selectionModel Selection model. |
10 * @param {!VolumeManager} volumeManager Volume manager. | 10 * @param {!VolumeManager} volumeManager Volume manager. |
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
540 /** | 540 /** |
541 * Content change handler. | 541 * Content change handler. |
542 * | 542 * |
543 * @param {!Event} event Event. | 543 * @param {!Event} event Event. |
544 * @private | 544 * @private |
545 */ | 545 */ |
546 Mosaic.prototype.onContentChange_ = function(event) { | 546 Mosaic.prototype.onContentChange_ = function(event) { |
547 if (!this.tiles_) | 547 if (!this.tiles_) |
548 return; | 548 return; |
549 | 549 |
550 if (!event.metadata) | 550 if (!event.thumbnailChanged) |
551 return; // Thumbnail unchanged, nothing to do. | 551 return; // Thumbnail unchanged, nothing to do. |
552 | 552 |
553 var index = this.dataModel_.indexOf(event.item); | 553 var index = this.dataModel_.indexOf(event.item); |
554 if (index !== this.selectionModel_.selectedIndex) | 554 if (index !== this.selectionModel_.selectedIndex) |
555 console.error('Content changed for unselected item'); | 555 console.error('Content changed for unselected item'); |
556 | 556 |
557 this.layoutModel_.invalidateFromTile_(index); | 557 this.layoutModel_.invalidateFromTile_(index); |
558 this.tiles_[index].init(); | 558 this.tiles_[index].init(); |
559 this.tiles_[index].unload(); | 559 this.tiles_[index].unload(); |
560 this.tiles_[index].load( | 560 this.tiles_[index].load( |
(...skipping 1486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2047 this.imageLoaded_ = false; | 2047 this.imageLoaded_ = false; |
2048 this.imageLoading_ = false; | 2048 this.imageLoading_ = false; |
2049 } | 2049 } |
2050 }; | 2050 }; |
2051 | 2051 |
2052 /** | 2052 /** |
2053 * Initializes the thumbnail in the tile. Does not load an image, but sets | 2053 * Initializes the thumbnail in the tile. Does not load an image, but sets |
2054 * target dimensions using metadata. | 2054 * target dimensions using metadata. |
2055 */ | 2055 */ |
2056 Mosaic.Tile.prototype.init = function() { | 2056 Mosaic.Tile.prototype.init = function() { |
2057 var metadata = this.getItem().getMetadata(); | |
2058 this.markUnloaded(); | 2057 this.markUnloaded(); |
2059 this.left_ = null; // Mark as not laid out. | 2058 this.left_ = null; // Mark as not laid out. |
2060 | 2059 |
2061 // Set higher priority for the selected elements to load them first. | 2060 // Set higher priority for the selected elements to load them first. |
2062 var priority = this.getAttribute('selected') ? 2 : 3; | 2061 var priority = this.getAttribute('selected') ? 2 : 3; |
2063 | 2062 |
2064 // Use embedded thumbnails on Drive, since they have higher resolution. | 2063 // Use embedded thumbnails on Drive, since they have higher resolution. |
2065 this.thumbnailLoader_ = new ThumbnailLoader( | 2064 this.thumbnailLoader_ = new ThumbnailLoader( |
2066 this.getItem().getEntry(), | 2065 this.getItem().getEntry(), |
2067 ThumbnailLoader.LoaderType.CANVAS, | 2066 ThumbnailLoader.LoaderType.CANVAS, |
2068 metadata, | 2067 this.getItem().getThumbnailMetadataItem(), |
2069 undefined, // Media type. | 2068 undefined, // Media type. |
2070 [ | 2069 [ |
2071 ThumbnailLoader.LoadTarget.EXTERNAL_METADATA, | 2070 ThumbnailLoader.LoadTarget.EXTERNAL_METADATA, |
2072 ThumbnailLoader.LoadTarget.FILE_ENTRY | 2071 ThumbnailLoader.LoadTarget.FILE_ENTRY |
2073 ]); | 2072 ]); |
2074 | 2073 |
2075 // If no hidpi embedded thumbnail available, then use the low resolution | 2074 // If no hidpi embedded thumbnail available, then use the low resolution |
2076 // for preloading. | 2075 // for preloading. |
2077 if (this.thumbnailLoader_.getLoadTarget() === | 2076 if (this.thumbnailLoader_.getLoadTarget() === |
2078 ThumbnailLoader.LoadTarget.FILE_ENTRY) { | 2077 ThumbnailLoader.LoadTarget.FILE_ENTRY) { |
2079 this.thumbnailPreloader_ = new ThumbnailLoader( | 2078 this.thumbnailPreloader_ = new ThumbnailLoader( |
2080 this.getItem().getEntry(), | 2079 this.getItem().getEntry(), |
2081 ThumbnailLoader.LoaderType.CANVAS, | 2080 ThumbnailLoader.LoaderType.CANVAS, |
2082 metadata, | 2081 this.getItem().getThumbnailMetadataItem(), |
2083 undefined, // Media type. | 2082 undefined, // Media type. |
2084 [ | 2083 [ |
2085 ThumbnailLoader.LoadTarget.CONTENT_METADATA | 2084 ThumbnailLoader.LoadTarget.CONTENT_METADATA |
2086 ], | 2085 ], |
2087 // Preloaders have always higher priotity, so the preload images | 2086 // Preloaders have always higher priotity, so the preload images |
2088 // are loaded as soon as possible. | 2087 // are loaded as soon as possible. |
2089 2); | 2088 2); |
2090 if (!this.thumbnailPreloader_.getLoadTarget()) | 2089 if (!this.thumbnailPreloader_.getLoadTarget()) |
2091 this.thumbnailPreloader_ = null; | 2090 this.thumbnailPreloader_ = null; |
2092 } | 2091 } |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2310 return new ImageRect(this.left_ - this.container_.scrollLeft, this.top_, | 2309 return new ImageRect(this.left_ - this.container_.scrollLeft, this.top_, |
2311 this.width_, this.height_).inflate(-margin, -margin); | 2310 this.width_, this.height_).inflate(-margin, -margin); |
2312 }; | 2311 }; |
2313 | 2312 |
2314 /** | 2313 /** |
2315 * @return {number} X coordinate of the tile center. | 2314 * @return {number} X coordinate of the tile center. |
2316 */ | 2315 */ |
2317 Mosaic.Tile.prototype.getCenterX = function() { | 2316 Mosaic.Tile.prototype.getCenterX = function() { |
2318 return this.left_ + Math.round(this.width_ / 2); | 2317 return this.left_ + Math.round(this.width_ / 2); |
2319 }; | 2318 }; |
OLD | NEW |