Index: ui/file_manager/file_manager/foreground/js/file_transfer_controller.js |
diff --git a/ui/file_manager/file_manager/foreground/js/file_transfer_controller.js b/ui/file_manager/file_manager/foreground/js/file_transfer_controller.js |
index 13edd5f6f45ab2c948d5411f1f7fdc101883b1e1..32e14d3c8e008cf74b9234af0da47641dcc0e83f 100644 |
--- a/ui/file_manager/file_manager/foreground/js/file_transfer_controller.js |
+++ b/ui/file_manager/file_manager/foreground/js/file_transfer_controller.js |
@@ -21,6 +21,7 @@ var DRAG_AND_DROP_GLOBAL_DATA = '__drag_and_drop_global_data'; |
* @param {VolumeManagerWrapper} volumeManager Volume manager instance. |
* @param {MultiProfileShareDialog} multiProfileShareDialog Share dialog to be |
* used to share files from another profile. |
+ * @param {ProgressCenter} progressCenter To notify starting copy operation. |
* @constructor |
*/ |
function FileTransferController(doc, |
@@ -28,13 +29,15 @@ function FileTransferController(doc, |
metadataCache, |
directoryModel, |
volumeManager, |
- multiProfileShareDialog) { |
+ multiProfileShareDialog, |
+ progressCenter) { |
this.document_ = doc; |
this.fileOperationManager_ = fileOperationManager; |
this.metadataCache_ = metadataCache; |
this.directoryModel_ = directoryModel; |
this.volumeManager_ = volumeManager; |
this.multiProfileShareDialog_ = multiProfileShareDialog; |
+ this.progressCenter_ = progressCenter; |
this.directoryModel_.getFileList().addEventListener( |
'change', function(event) { |
@@ -47,6 +50,12 @@ function FileTransferController(doc, |
this.onSelectionChanged_.bind(this)); |
/** |
+ * The array of pending task ID. |
+ * @type {Array.<string>} |
+ */ |
+ this.pendingTaskIds = []; |
+ |
+ /** |
* Promise to be fulfilled with the thumbnail image of selected file in drag |
* operation. Used if only one element is selected. |
* @type {Promise} |
@@ -75,6 +84,13 @@ function FileTransferController(doc, |
* @private |
*/ |
this.touching_ = false; |
+ |
+ /** |
+ * Task ID counter. |
+ * @type {number} |
+ * @private |
+ */ |
+ this.taskIdCounter_ = 0; |
} |
/** |
@@ -333,11 +349,21 @@ FileTransferController.prototype = { |
opt_destinationEntry || this.currentDirectoryContentEntry; |
var entries; |
var failureUrls; |
+ var taskId = this.fileOperationManager_.generateTaskId(); |
util.URLsToEntries(sourceURLs). |
then(function(result) { |
+ this.pendingTaskIds.push(taskId); |
entries = result.entries; |
failureUrls = result.failureUrls; |
+ var item = new ProgressCenterItem(); |
+ item.id = taskId; |
+ item.type = ProgressItemType.COPY; |
+ if (result.entries.length === 1) |
+ item.message = strf('COPY_FILE_NAME', result.entries[0].name); |
+ else |
+ item.message = strf('COPY_ITEMS_REMAINING', result.entries.length); |
+ this.progressCenter_.updateItem(item); |
// Check if cross share is needed or not. |
return this.getMultiProfileShareEntries_(entries); |
}.bind(this)). |
@@ -369,7 +395,8 @@ FileTransferController.prototype = { |
then(function() { |
// Start the pasting operation. |
this.fileOperationManager_.paste( |
- entries, destinationEntry, toMove); |
+ entries, destinationEntry, toMove, taskId); |
+ this.pendingTaskIds.splice(this.pendingTaskIds.indexOf(taskId), 1); |
// Publish events for failureUrls. |
for (var i = 0; i < failureUrls.length; i++) { |