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

Unified Diff: ui/file_manager/file_manager/foreground/js/file_selection.js

Issue 900743002: Move preview panel's components to toolbar and footer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add a TODO comment about customized CommandButton. Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: ui/file_manager/file_manager/foreground/js/file_selection.js
diff --git a/ui/file_manager/file_manager/foreground/js/file_selection.js b/ui/file_manager/file_manager/foreground/js/file_selection.js
index 409ad34241ea137c26a3cac5bdad682ae53f58cf..cee1cdc80d1686a0002edf3e0b39efbbbca1b07d 100644
--- a/ui/file_manager/file_manager/foreground/js/file_selection.js
+++ b/ui/file_manager/file_manager/foreground/js/file_selection.js
@@ -19,12 +19,6 @@ function FileSelection(fileManager, indexes) {
this.fileManager_ = fileManager;
/**
- * @type {number}
- * @private
- */
- this.computeBytesSequence_ = 0;
-
- /**
* @type {!Array.<number>}
* @const
*/
@@ -52,16 +46,6 @@ function FileSelection(fileManager, indexes) {
this.directoryCount = 0;
/**
- * @type {number}
- */
- this.bytes = 0;
-
- /**
- * @type {boolean}
- */
- this.showBytes = false;
-
- /**
* @type {boolean}
*/
this.allDriveFilesPresent = false;
@@ -73,11 +57,6 @@ function FileSelection(fileManager, indexes) {
/**
* @type {boolean}
- */
- this.bytesKnown = false;
-
- /**
- * @type {boolean}
* @private
*/
this.mustBeHidden_ = false;
@@ -155,69 +134,6 @@ FileSelection.prototype.completeInit = function() {
};
/**
- * Computes the total size of selected files.
- *
- * @param {function()} callback Completion callback. Not called when cancelled,
- * or a new call has been invoked in the meantime.
- */
-FileSelection.prototype.computeBytes = function(callback) {
- if (this.entries.length == 0) {
- this.bytesKnown = true;
- this.showBytes = false;
- this.bytes = 0;
- return;
- }
-
- var computeBytesSequence = ++this.computeBytesSequence_;
- var pendingMetadataCount = 0;
-
- var maybeDone = function() {
- if (pendingMetadataCount == 0) {
- this.bytesKnown = true;
- callback();
- }
- }.bind(this);
-
- var onProps = function(properties) {
- // Ignore if the call got cancelled, or there is another new one fired.
- if (computeBytesSequence != this.computeBytesSequence_)
- return;
-
- // It may happen that the metadata is not available because a file has been
- // deleted in the meantime.
- if (properties)
- this.bytes += properties.size;
- pendingMetadataCount--;
- maybeDone();
- }.bind(this);
-
- for (var index = 0; index < this.entries.length; index++) {
- var entry = this.entries[index];
- if (entry.isFile) {
- this.showBytes |= !FileType.isHosted(entry);
- pendingMetadataCount++;
- this.fileManager_.metadataCache_.getOne(entry, 'filesystem', onProps);
- } else if (entry.isDirectory) {
- // Don't compute the directory size as it's expensive.
- // crbug.com/179073.
- this.showBytes = false;
- break;
- }
- }
- maybeDone();
-};
-
-/**
- * Cancels any async computation by increasing the sequence number. Results
- * of any previous call to computeBytes() will be discarded.
- *
- * @private
- */
-FileSelection.prototype.cancelComputing_ = function() {
- this.computeBytesSequence_++;
-};
-
-/**
* This object encapsulates everything related to current selection.
*
* @param {!FileManager} fileManager File manager instance.
@@ -230,9 +146,6 @@ function FileSelectionHandler(fileManager) {
cr.EventTarget.call(this);
this.fileManager_ = fileManager;
- // TODO(dgozman): create a shared object with most of UI elements.
- this.previewPanel_ = fileManager.ui.previewPanel;
- this.taskMenuButton_ = fileManager.ui.taskMenuButton;
this.selection = new FileSelection(this.fileManager_, []);
/**
@@ -279,30 +192,11 @@ FileSelectionHandler.EventType = {
FileSelectionHandler.prototype.__proto__ = cr.EventTarget.prototype;
/**
- * Maximum amount of thumbnails in the preview pane.
- *
- * @const
- * @type {number}
- */
-FileSelectionHandler.MAX_PREVIEW_THUMBNAIL_COUNT = 4;
-
-/**
- * Maximum width or height of an image what pops up when the mouse hovers
- * thumbnail in the bottom panel (in pixels).
- *
- * @const
- * @type {number}
- */
-FileSelectionHandler.IMAGE_HOVER_PREVIEW_SIZE = 200;
-
-/**
* Update the UI when the selection model changes.
*/
FileSelectionHandler.prototype.onFileSelectionChanged = function() {
var indexes =
this.fileManager_.getCurrentList().selectionModel.selectedIndexes;
- if (this.selection)
- this.selection.cancelComputing_();
var selection = new FileSelection(this.fileManager_, indexes);
this.selection = selection;
@@ -342,16 +236,29 @@ FileSelectionHandler.prototype.updateFileSelectionAsync_ = function(selection) {
if (this.selection !== selection)
return;
- // Update preview panels.
- var wasVisible = this.previewPanel_.visible;
- this.previewPanel_.setSelection(selection);
-
- // Scroll to item
- if (!wasVisible && this.selection.totalCount == 1) {
- var list = this.fileManager_.getCurrentList();
- list.scrollIndexIntoView(list.selectionModel.selectedIndex);
+ // Update the label "x files selected." on the header.
+ // TODO(fukino): Make presenter class which listen to the FileSelection's
+ // events and update the UI components accordingly.
+ if (selection.totalCount === 0) {
+ this.fileManager_.ui.filesSelectedLabel.textContent = '';
+ this.fileManager_.ui.filesSelectedLabel.hidden = true;
+ } else {
+ var text;
+ if (selection.directoryCount == 0)
+ text = strf('MANY_FILES_SELECTED', selection.fileCount);
+ else if (selection.fileCount == 0)
+ text = strf('MANY_DIRECTORIES_SELECTED', selection.directoryCount);
+ else
+ text = strf('MANY_ENTRIES_SELECTED', selection.totalCount);
+ this.fileManager_.ui.filesSelectedLabel.textContent = text;
+ this.fileManager_.ui.filesSelectedLabel.hidden = false;
}
+ // Hide search box if one or more items are selected.
+ // TODO(fukino): Make presenter class which listen to the FileSelection's
+ // events and update the UI components accordingly.
+ this.fileManager_.ui.searchBox.setHidden(selection.totalCount !== 0);
+
// Sync the commands availability.
if (this.fileManager_.commandHandler)
this.fileManager_.commandHandler.updateAvailability();
« no previous file with comments | « ui/file_manager/file_manager/foreground/js/file_manager.js ('k') | ui/file_manager/file_manager/foreground/js/main_scripts.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698