Index: chrome/browser/resources/file_manager/foreground/js/photo/mosaic_mode.js |
diff --git a/chrome/browser/resources/file_manager/foreground/js/photo/mosaic_mode.js b/chrome/browser/resources/file_manager/foreground/js/photo/mosaic_mode.js |
index 7c5b748ee55bad1b6f35968dc518a46b93c929a5..e17efcb10ea89c10af4112e097062db8cd19268c 100644 |
--- a/chrome/browser/resources/file_manager/foreground/js/photo/mosaic_mode.js |
+++ b/chrome/browser/resources/file_manager/foreground/js/photo/mosaic_mode.js |
@@ -9,13 +9,16 @@ |
* @param {cr.ui.ArrayDataModel} dataModel Data model. |
* @param {cr.ui.ListSelectionModel} selectionModel Selection model. |
* @param {MetadataCache} metadataCache Metadata cache. |
+ * @param {VolumeManagerWrapper} volumeManager Volume manager. |
* @param {function} toggleMode Function to switch to the Slide mode. |
* @constructor |
*/ |
function MosaicMode( |
- container, dataModel, selectionModel, metadataCache, toggleMode) { |
+ container, dataModel, selectionModel, metadataCache, volumeManager, |
+ toggleMode) { |
this.mosaic_ = new Mosaic( |
- container.ownerDocument, dataModel, selectionModel, metadataCache); |
+ container.ownerDocument, dataModel, selectionModel, metadataCache, |
+ volumeManager); |
container.appendChild(this.mosaic_); |
this.toggleMode_ = toggleMode; |
@@ -73,12 +76,15 @@ MosaicMode.prototype.onKeyDown = function(event) { |
* @param {cr.ui.ArrayDataModel} dataModel Data model. |
* @param {cr.ui.ListSelectionModel} selectionModel Selection model. |
* @param {MetadataCache} metadataCache Metadata cache. |
+ * @param {VolumeManagerWrapper} volumeManager Volume manager. |
* @return {Element} Mosaic element. |
* @constructor |
*/ |
-function Mosaic(document, dataModel, selectionModel, metadataCache) { |
+function Mosaic(document, dataModel, selectionModel, metadataCache, |
+ volumeManager) { |
var self = document.createElement('div'); |
- Mosaic.decorate(self, dataModel, selectionModel, metadataCache); |
+ Mosaic.decorate( |
+ self, dataModel, selectionModel, metadataCache, volumeManager); |
return self; |
} |
@@ -109,14 +115,17 @@ Mosaic.ANIMATED_SCROLL_DURATION = 500; |
* @param {cr.ui.ArrayDataModel} dataModel Data model. |
* @param {cr.ui.ListSelectionModel} selectionModel Selection model. |
* @param {MetadataCache} metadataCache Metadata cache. |
+ * @param {VolumeManagerWrapper} volumeManager Volume manager. |
*/ |
-Mosaic.decorate = function(self, dataModel, selectionModel, metadataCache) { |
+Mosaic.decorate = function( |
+ self, dataModel, selectionModel, metadataCache, volumeManager) { |
self.__proto__ = Mosaic.prototype; |
self.className = 'mosaic'; |
self.dataModel_ = dataModel; |
self.selectionModel_ = selectionModel; |
self.metadataCache_ = metadataCache; |
+ self.volumeManager_ = volumeManager; |
hirono
2014/01/09 04:05:39
Is this member used?
mtomasz
2014/01/10 01:40:10
Yes, in #149.
|
// Initialization is completed lazily on the first call to |init|. |
}; |
@@ -135,8 +144,12 @@ Mosaic.prototype.init = function() { |
new Mosaic.SelectionController(this.selectionModel_, this.layoutModel_); |
this.tiles_ = []; |
- for (var i = 0; i !== this.dataModel_.length; i++) |
- this.tiles_.push(new Mosaic.Tile(this, this.dataModel_.item(i))); |
+ for (var i = 0; i !== this.dataModel_.length; i++) { |
+ var locationInfo = |
+ this.volumeManager_.getLocationInfo(this.dataModel_.item(i).getEntry()); |
+ this.tiles_.push( |
+ new Mosaic.Tile(this, this.dataModel_.item(i), locationInfo)); |
+ } |
this.selectionModel_.selectedIndexes.forEach(function(index) { |
this.tiles_[index].select(true); |
@@ -1622,12 +1635,13 @@ Mosaic.Row.prototype.layout = function(left, top, width, height) { |
* |
* @param {Element} container Container element. |
* @param {Gallery.Item} item Gallery item associated with this tile. |
+ * @param {EntryLocation} locationInfo Location information for the tile. |
hirono
2014/01/09 04:05:39
How about passing hidpiEmbedded flag instead of lo
mtomasz
2014/01/10 01:40:10
I was thinking about it. This would limit dependen
hirono
2014/01/10 03:18:23
So how about getting the flag in the constructor o
|
* @return {Element} The new tile element. |
* @constructor |
*/ |
-Mosaic.Tile = function(container, item) { |
+Mosaic.Tile = function(container, item, locationInfo) { |
var self = container.ownerDocument.createElement('div'); |
- Mosaic.Tile.decorate(self, container, item); |
+ Mosaic.Tile.decorate(self, container, item, locationInfo); |
return self; |
}; |
@@ -1635,13 +1649,15 @@ Mosaic.Tile = function(container, item) { |
* @param {Element} self Self pointer. |
* @param {Element} container Container element. |
* @param {Gallery.Item} item Gallery item associated with this tile. |
+ * @param {EntryLocation} locationInfo Location info for the tile image. |
*/ |
-Mosaic.Tile.decorate = function(self, container, item) { |
+Mosaic.Tile.decorate = function(self, container, item, locationInfo) { |
self.__proto__ = Mosaic.Tile.prototype; |
self.className = 'mosaic-tile'; |
self.container_ = container; |
self.item_ = item; |
+ self.locationInfo_ = locationInfo; |
self.left_ = null; // Mark as not laid out. |
}; |
@@ -1777,9 +1793,7 @@ Mosaic.Tile.prototype.init = function(metadata, onImageMeasured) { |
var priority = this.getAttribute('selected') ? 2 : 3; |
// Use embedded thumbnails on Drive, since they have higher resolution. |
- // TODO(mtomasz): Use Entry instead of paths. |
- var hidpiEmbedded = |
- PathUtil.isDriveBasedPath(this.getItem().getEntry().fullPath); |
+ var hidpiEmbedded = this.locationInfo_ && this.locationInfo_.isDriveBased; |
this.thumbnailLoader_ = new ThumbnailLoader( |
this.getItem().getEntry(), |
ThumbnailLoader.LoaderType.CANVAS, |