Commit 93934756 authored by oleg@chromium.org's avatar oleg@chromium.org

Change butter bar message depending on the type of operation and the number of files.

BUG=134601


Review URL: https://chromiumcodereview.appspot.com/10828153

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149865 0039d316-1c4b-4281-b951-d872f2087c98
parent 7701bcdb
...@@ -11130,21 +11130,57 @@ Some features may be unavailable. Please check that the profile exists and you ...@@ -11130,21 +11130,57 @@ Some features may be unavailable. Please check that the profile exists and you
Cut Cut
</message> </message>
<message name="IDS_FILE_BROWSER_PASTE_ITEMS_REMAINING" desc="File Manager status message. 'Item' is used here as a generic term for file or directory."> <message name="IDS_FILE_BROWSER_TRANSFER_ITEMS_REMAINING" desc="File Manager status message. 'Item' is used here as a generic term for file or directory. 'Transferring' is used in the sense 'copying or moving files'.">
Transferring $1 items Transferring $1 items.
</message> </message>
<message name="IDS_FILE_BROWSER_PASTE_CANCELLED" desc="File Manager status message."> <message name="IDS_FILE_BROWSER_TRANSFER_CANCELLED" desc="File Manager status message. 'Transferring' is used in the sense 'copying or moving files'.">
Transfer cancelled. Transfer cancelled.
</message> </message>
<message name="IDS_FILE_BROWSER_PASTE_TARGET_EXISTS_ERROR" desc="File Manager error message. 'Item' is used here as a generic term for file or directory."> <message name="IDS_FILE_BROWSER_TRANSFER_TARGET_EXISTS_ERROR" desc="File Manager error message. 'Item' is used here as a generic term for file or directory. 'Transferring' is used in the sense 'copying or moving files'.">
Transfer failed, item exists: "$1" Transfer failed, item exists: "$1"
</message> </message>
<message name="IDS_FILE_BROWSER_PASTE_FILESYSTEM_ERROR" desc="File Manager error message."> <message name="IDS_FILE_BROWSER_TRANSFER_FILESYSTEM_ERROR" desc="File Manager error message. 'Transferring' is used in the sense 'copying or moving files'.">
Transfer failed. <ph name="ERROR_MESSAGE">$1<ex>An error occurred (code: ABORT)</ex></ph> Transfer failed. <ph name="ERROR_MESSAGE">$1<ex>An error occurred (code: ABORT)</ex></ph>
</message> </message>
<message name="IDS_FILE_BROWSER_PASTE_UNEXPECTED_ERROR" desc="File Manager error message."> <message name="IDS_FILE_BROWSER_TRANSFER_UNEXPECTED_ERROR" desc="File Manager error message. 'Transferring' is used in the sense 'copying or moving files'.">
Transfer failed, unexpected error: $1 Transfer failed, unexpected error: $1
</message> </message>
<message name="IDS_FILE_BROWSER_COPY_FILE_NAME" desc="File Manager status message.">
Copying <ph name="FILE_NAME">$1<ex>movie.avi</ex></ph>
</message>
<message name="IDS_FILE_BROWSER_COPY_ITEMS_REMAINING" desc="File Manager status message. 'Item' is used here as a generic term for file or directory.">
Copying $1 items.
</message>
<message name="IDS_FILE_BROWSER_COPY_CANCELLED" desc="File Manager status message.">
Copy operation cancelled.
</message>
<message name="IDS_FILE_BROWSER_COPY_TARGET_EXISTS_ERROR" desc="File Manager error message. 'Item' is used here as a generic term for file or directory.">
Copy operation failed, item exists: "$1"
</message>
<message name="IDS_FILE_BROWSER_COPY_FILESYSTEM_ERROR" desc="File Manager error message.">
Copy operation failed. <ph name="ERROR_MESSAGE">$1<ex>An error occurred (code: ABORT)</ex></ph>
</message>
<message name="IDS_FILE_BROWSER_COPY_UNEXPECTED_ERROR" desc="File Manager error message.">
Copy operation failed, unexpected error: $1
</message>
<message name="IDS_FILE_BROWSER_MOVE_FILE_NAME" desc="File Manager status message.">
Moving <ph name="FILE_NAME">$1<ex>movie.avi</ex></ph>
</message>
<message name="IDS_FILE_BROWSER_MOVE_ITEMS_REMAINING" desc="File Manager status message. 'Item' is used here as a generic term for file or directory.">
Moving $1 items.
</message>
<message name="IDS_FILE_BROWSER_MOVE_CANCELLED" desc="File Manager status message.">
Move cancelled.
</message>
<message name="IDS_FILE_BROWSER_MOVE_TARGET_EXISTS_ERROR" desc="File Manager error message. 'Item' is used here as a generic term for file or directory.">
Move failed, item exists: "$1"
</message>
<message name="IDS_FILE_BROWSER_MOVE_FILESYSTEM_ERROR" desc="File Manager error message.">
Move failed. <ph name="ERROR_MESSAGE">$1<ex>An error occurred (code: ABORT)</ex></ph>
</message>
<message name="IDS_FILE_BROWSER_MOVE_UNEXPECTED_ERROR" desc="File Manager error message.">
Move failed, unexpected error: $1
</message>
<message name="IDS_FILE_BROWSER_CANCEL_LABEL" desc="Cancel label."> <message name="IDS_FILE_BROWSER_CANCEL_LABEL" desc="Cancel label.">
Cancel Cancel
......
...@@ -1574,11 +1574,23 @@ bool FileDialogStringsFunction::RunImpl() { ...@@ -1574,11 +1574,23 @@ bool FileDialogStringsFunction::RunImpl() {
SET_STRING(IDS_FILE_BROWSER, COPY_BUTTON_LABEL); SET_STRING(IDS_FILE_BROWSER, COPY_BUTTON_LABEL);
SET_STRING(IDS_FILE_BROWSER, CUT_BUTTON_LABEL); SET_STRING(IDS_FILE_BROWSER, CUT_BUTTON_LABEL);
SET_STRING(IDS_FILE_BROWSER, PASTE_ITEMS_REMAINING); SET_STRING(IDS_FILE_BROWSER, TRANSFER_ITEMS_REMAINING);
SET_STRING(IDS_FILE_BROWSER, PASTE_CANCELLED); SET_STRING(IDS_FILE_BROWSER, TRANSFER_CANCELLED);
SET_STRING(IDS_FILE_BROWSER, PASTE_TARGET_EXISTS_ERROR); SET_STRING(IDS_FILE_BROWSER, TRANSFER_TARGET_EXISTS_ERROR);
SET_STRING(IDS_FILE_BROWSER, PASTE_FILESYSTEM_ERROR); SET_STRING(IDS_FILE_BROWSER, TRANSFER_FILESYSTEM_ERROR);
SET_STRING(IDS_FILE_BROWSER, PASTE_UNEXPECTED_ERROR); SET_STRING(IDS_FILE_BROWSER, TRANSFER_UNEXPECTED_ERROR);
SET_STRING(IDS_FILE_BROWSER, COPY_FILE_NAME);
SET_STRING(IDS_FILE_BROWSER, COPY_ITEMS_REMAINING);
SET_STRING(IDS_FILE_BROWSER, COPY_CANCELLED);
SET_STRING(IDS_FILE_BROWSER, COPY_TARGET_EXISTS_ERROR);
SET_STRING(IDS_FILE_BROWSER, COPY_FILESYSTEM_ERROR);
SET_STRING(IDS_FILE_BROWSER, COPY_UNEXPECTED_ERROR);
SET_STRING(IDS_FILE_BROWSER, MOVE_FILE_NAME);
SET_STRING(IDS_FILE_BROWSER, MOVE_ITEMS_REMAINING);
SET_STRING(IDS_FILE_BROWSER, MOVE_CANCELLED);
SET_STRING(IDS_FILE_BROWSER, MOVE_TARGET_EXISTS_ERROR);
SET_STRING(IDS_FILE_BROWSER, MOVE_FILESYSTEM_ERROR);
SET_STRING(IDS_FILE_BROWSER, MOVE_UNEXPECTED_ERROR);
SET_STRING(IDS_FILE_BROWSER, CANCEL_LABEL); SET_STRING(IDS_FILE_BROWSER, CANCEL_LABEL);
SET_STRING(IDS_FILE_BROWSER, OPEN_LABEL); SET_STRING(IDS_FILE_BROWSER, OPEN_LABEL);
......
...@@ -185,16 +185,45 @@ ButterBar.prototype.clearHideTimeout_ = function() { ...@@ -185,16 +185,45 @@ ButterBar.prototype.clearHideTimeout_ = function() {
} }
}; };
/**
* @private
* @return {string?} The type of operation.
*/
ButterBar.prototype.transferType_ = function() {
var progress = this.progress_;
if (!progress ||
progress.pendingMoves === 0 && progress.pendingCopies === 0)
return 'TRANSFER';
if (progress.pendingMoves > 0) {
if (progress.pendingCopies > 0)
return 'TRANSFER';
return 'MOVE';
}
return 'COPY';
};
/** /**
* Set up butter bar for showing copy progress. * Set up butter bar for showing copy progress.
* @private * @private
*/ */
ButterBar.prototype.showProgress_ = function() { ButterBar.prototype.showProgress_ = function() {
var progress = this.copyManager_.getProgress(); this.progress_ = this.copyManager_.getStatus();
var options = {progress: progress.percentage, actions: {}, timeout: 0}; var options = {progress: this.progress_.percentage, actions: {}, timeout: 0};
options.actions[str('CANCEL_LABEL')] =
this.copyManager_.requestCancel.bind(this.copyManager_); var type = this.transferType_();
this.show(strf('PASTE_ITEMS_REMAINING', progress.pendingItems), options); var progressString = (this.progress_.pendingItems === 1) ?
strf(type + '_FILE_NAME', this.progress_.filename) :
strf(type + '_ITEMS_REMAINING', this.progress_.pendingItems);
if (this.isVisible_()) {
this.update_(progressString, options);
} else {
options.actions[str('CANCEL_LABEL')] =
this.copyManager_.requestCancel.bind(this.copyManager_);
this.show(progressString, options);
}
}; };
/** /**
...@@ -203,8 +232,6 @@ ButterBar.prototype.showProgress_ = function() { ...@@ -203,8 +232,6 @@ ButterBar.prototype.showProgress_ = function() {
* @param {cr.Event} event A 'copy-progress' event from FileCopyManager. * @param {cr.Event} event A 'copy-progress' event from FileCopyManager.
*/ */
ButterBar.prototype.onCopyProgress_ = function(event) { ButterBar.prototype.onCopyProgress_ = function(event) {
var progress = this.copyManager_.getProgress();
if (event.reason != 'PROGRESS') if (event.reason != 'PROGRESS')
this.clearShowTimeout_(); this.clearShowTimeout_();
...@@ -217,11 +244,7 @@ ButterBar.prototype.onCopyProgress_ = function(event) { ...@@ -217,11 +244,7 @@ ButterBar.prototype.onCopyProgress_ = function(event) {
break; break;
case 'PROGRESS': case 'PROGRESS':
if (this.isVisible_()) { this.showProgress_();
var options = {'progress': progress.percentage, timeout: 0};
this.update_(strf('PASTE_ITEMS_REMAINING', progress.pendingItems),
options);
}
break; break;
case 'SUCCESS': case 'SUCCESS':
...@@ -229,7 +252,7 @@ ButterBar.prototype.onCopyProgress_ = function(event) { ...@@ -229,7 +252,7 @@ ButterBar.prototype.onCopyProgress_ = function(event) {
break; break;
case 'CANCELLED': case 'CANCELLED':
this.show(str('PASTE_CANCELLED'), {timeout: 1000}); this.show(str(this.transferType_() + '_CANCELLED'), {timeout: 1000});
break; break;
case 'ERROR': case 'ERROR':
...@@ -237,18 +260,20 @@ ButterBar.prototype.onCopyProgress_ = function(event) { ...@@ -237,18 +260,20 @@ ButterBar.prototype.onCopyProgress_ = function(event) {
var name = event.error.data.name; var name = event.error.data.name;
if (event.error.data.isDirectory) if (event.error.data.isDirectory)
name += '/'; name += '/';
this.showError_(strf('PASTE_TARGET_EXISTS_ERROR', name)); this.showError_(strf(this.transferType_() +
'_TARGET_EXISTS_ERROR', name));
} else if (event.error.reason === 'FILESYSTEM_ERROR') { } else if (event.error.reason === 'FILESYSTEM_ERROR') {
if (event.error.data.toGDrive && if (event.error.data.toGDrive &&
event.error.data.code === FileError.QUOTA_EXCEEDED_ERR) { event.error.data.code === FileError.QUOTA_EXCEEDED_ERR) {
// The alert will be shown in FileManager.onCopyProgress_. // The alert will be shown in FileManager.onCopyProgress_.
this.hide_(); this.hide_();
} else { } else {
this.showError_(strf('PASTE_FILESYSTEM_ERROR', this.showError_(strf(this.transferType_() + '_FILESYSTEM_ERROR',
getFileErrorString(event.error.data.code))); getFileErrorString(event.error.data.code)));
} }
} else { } else {
this.showError_(strf('PASTE_UNEXPECTED_ERROR', event.error)); this.showError_(strf(this.transferType_() + '_UNEXPECTED_ERROR',
event.error));
} }
break; break;
......
...@@ -208,17 +208,39 @@ FileCopyManager.prototype.getStatus = function() { ...@@ -208,17 +208,39 @@ FileCopyManager.prototype.getStatus = function() {
completedFiles: 0, completedFiles: 0,
completedDirectories: 0, completedDirectories: 0,
completedBytes: 0, completedBytes: 0,
percentage: NaN,
pendingCopies: 0,
pendingMoves: 0,
filename: '' // In case pendingItems == 1
}; };
var pendingFile = null;
for (var i = 0; i < this.copyTasks_.length; i++) { for (var i = 0; i < this.copyTasks_.length; i++) {
var task = this.copyTasks_[i]; var task = this.copyTasks_[i];
rv.pendingFiles += task.pendingFiles.length; var pendingFiles = task.pendingFiles.length;
rv.pendingDirectories += task.pendingDirectories.length; var pendingDirectories = task.pendingDirectories.length;
rv.pendingFiles += pendingFiles;
rv.pendingDirectories += pendingDirectories;
rv.pendingBytes += task.pendingBytes; rv.pendingBytes += task.pendingBytes;
rv.completedFiles += task.completedFiles.length; rv.completedFiles += task.completedFiles.length;
rv.completedDirectories += task.completedDirectories.length; rv.completedDirectories += task.completedDirectories.length;
rv.completedBytes += task.completedBytes; rv.completedBytes += task.completedBytes;
if (task.move || task.deleteAfterCopy) {
rv.pendingMoves += pendingFiles + pendingDirectories;
} else {
rv.pendingCopies += pendingFiles + pendingDirectories;
}
if (task.pendingFiles.length === 1)
pendingFile = task.pendingFiles[0];
if (task.pendingDirectories.length === 1)
pendingFile = task.pendingDirectories[0];
} }
rv.pendingItems = rv.pendingFiles + rv.pendingDirectories; rv.pendingItems = rv.pendingFiles + rv.pendingDirectories;
rv.completedItems = rv.completedFiles + rv.completedDirectories; rv.completedItems = rv.completedFiles + rv.completedDirectories;
...@@ -228,24 +250,11 @@ FileCopyManager.prototype.getStatus = function() { ...@@ -228,24 +250,11 @@ FileCopyManager.prototype.getStatus = function() {
rv.totalItems = rv.pendingItems + rv.completedItems; rv.totalItems = rv.pendingItems + rv.completedItems;
rv.totalBytes = rv.pendingBytes + rv.completedBytes; rv.totalBytes = rv.pendingBytes + rv.completedBytes;
return rv; rv.percentage = rv.completedBytes / rv.totalBytes;
}; if (rv.pendingItems === 1)
rv.filename = pendingFile.name;
/**
* Get the overall progress data of all queued copy tasks.
* @return {Object} An object containing the following parameters:
* percentage - The percentage (0-1) of finished items.
* pendingItems - The number of pending/unfinished items.
*/
FileCopyManager.prototype.getProgress = function() {
var status = this.getStatus();
var percentage = status.completedBytes / status.totalBytes;
return { return rv;
percentage: percentage,
pendingItems: status.pendingItems
};
}; };
/** /**
......
...@@ -69,20 +69,6 @@ FileCopyManagerWrapper.prototype.onEvent = function(eventName, eventArgs) { ...@@ -69,20 +69,6 @@ FileCopyManagerWrapper.prototype.onEvent = function(eventName, eventArgs) {
this.dispatchEvent(event); this.dispatchEvent(event);
}; };
/**
* Get the overall progress data of all queued copy tasks.
* @return {Object} An object containing the following parameters:
* percentage - The percentage (0-1) of finished items.
* pendingItems - The number of pending/unfinished items.
*/
FileCopyManagerWrapper.prototype.getProgress = function() {
var cm = this.getCopyManagerSync_();
if (cm)
return cm.getProgress();
return {percentage: NaN, pendingItems: 0};
};
/** /**
* @return {Object} Status object. * @return {Object} Status object.
*/ */
...@@ -105,7 +91,12 @@ FileCopyManagerWrapper.prototype.getStatus = function() { ...@@ -105,7 +91,12 @@ FileCopyManagerWrapper.prototype.getStatus = function() {
totalItems: 0, totalItems: 0,
totalFiles: 0, totalFiles: 0,
totalDirectories: 0, totalDirectories: 0,
totalBytes: 0 totalBytes: 0,
percentage: NaN,
pendingCopies: 0,
pendingMoves: 0,
filename: '' // In case pendingItems == 1
}; };
}; };
......
...@@ -586,11 +586,23 @@ chrome.fileBrowserPrivate = { ...@@ -586,11 +586,23 @@ chrome.fileBrowserPrivate = {
GSHEET_DOCUMENT_FILE_TYPE: 'Google spreadsheet', GSHEET_DOCUMENT_FILE_TYPE: 'Google spreadsheet',
GSLIDES_DOCUMENT_FILE_TYPE: 'Google presentation', GSLIDES_DOCUMENT_FILE_TYPE: 'Google presentation',
PASTE_ITEMS_REMAINING: 'Transferring $1 items', TRANSFER_ITEMS_REMAINING: 'Transferring $1 items',
PASTE_CANCELLED: 'Transfer cancelled.', TRANSFER_CANCELLED: 'Transfer cancelled.',
PASTE_TARGET_EXISTS_ERROR: 'Transfer failed, item exists: "$1"', TRANSFER_TARGET_EXISTS_ERROR: 'Transfer failed, item exists: "$1"',
PASTE_FILESYSTEM_ERROR: 'Transfer failed. $1', TRANSFER_FILESYSTEM_ERROR: 'Transfer failed. $1',
PASTE_UNEXPECTED_ERROR: 'Transfer failed, unexpected error: $1', TRANSFER_UNEXPECTED_ERROR: 'Transfer failed, unexpected error: $1',
COPY_FILE_NAME: 'Copying $1',
COPY_ITEMS_REMAINING: 'Copying $1 items.',
COPY_CANCELLED: 'Copy operation cancelled.',
COPY_TARGET_EXISTS_ERROR: 'Copy operation failed, item exists: "$1"',
COPY_FILESYSTEM_ERROR: 'Copy operation failed. $1',
COPY_UNEXPECTED_ERROR: 'Copy operation failed, unexpected error: $1',
MOVE_FILE_NAME: 'Moving $1',
MOVE_ITEMS_REMAINING: 'Moving $1 items.',
MOVE_CANCELLED: 'Move cancelled.',
MOVE_TARGET_EXISTS_ERROR: 'Move failed, item exists: "$1"',
MOVE_FILESYSTEM_ERROR: 'Move failed. $1',
MOVE_UNEXPECTED_ERROR: 'Move failed, unexpected error: $1',
CANCEL_LABEL: 'Cancel', CANCEL_LABEL: 'Cancel',
OPEN_LABEL: 'Open', OPEN_LABEL: 'Open',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment