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

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

Issue 2313763003: Show a local folder's size in QuickView. (Closed)
Patch Set: Created 4 years, 3 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/metadata_box_controller.js
diff --git a/ui/file_manager/file_manager/foreground/js/metadata_box_controller.js b/ui/file_manager/file_manager/foreground/js/metadata_box_controller.js
index 94d8bc8b21446b735103a799aa671dc65d4788bd..afd063bdf25bc71d88cdfd57dbccc9ab0bb1b894 100644
--- a/ui/file_manager/file_manager/foreground/js/metadata_box_controller.js
+++ b/ui/file_manager/file_manager/foreground/js/metadata_box_controller.js
@@ -40,6 +40,12 @@ function MetadataBoxController(
*/
this.fileMetadataFormatter_ = fileMetadataFormatter;
+ /**
+ * @type {Promise.<number>}
fukino 2016/09/06 09:12:45 We don't need '.'. Use Promise<number>
harukam 2016/09/06 11:25:24 Acknowledged.
+ * @private
+ */
+ this.directorySizePromise_ = null;
+
// TODO(oka): Add storage to persist the value of
// quickViewModel_.metadataBoxActive.
/**
@@ -90,7 +96,7 @@ MetadataBoxController.prototype.updateView_ = function() {
* Update metadata box with general file information.
* Then retrieve file specific metadata if any.
*
- * @param {!FileEntry} entry
+ * @param {!Entry} entry
* @param {!Array<!MetadataItem>} items
*
* @private
@@ -105,6 +111,18 @@ MetadataBoxController.prototype.onGeneralMetadataLoaded_ = function(
this.metadataBox_.size =
this.fileMetadataFormatter_.formatSize(item.size, item.hosted);
}
+ if (entry.isDirectory) {
+ this.setDirectorySize_(new Promise(function(resolve, reject) {
fukino 2016/09/06 09:12:45 I think it is better to simply call this.setDirect
harukam 2016/09/06 11:25:24 OK. Thanks.
+ chrome.fileManagerPrivate.getDirectorySize(
+ /** @type {!DirectoryEntry} */ (entry),
+ function(size) {
+ if(chrome.runtime.lastError)
+ reject();
+ else
+ resolve(size);
+ });
+ }));
+ }
if (item.modificationTime) {
this.metadataBox_.modificationTime =
this.fileMetadataFormatter_.formatModDate(item.modificationTime);
@@ -147,3 +165,30 @@ MetadataBoxController.prototype.onGeneralMetadataLoaded_ = function(
}
}
};
+
+/**
+ * Set a directory size in metadata box.
+ *
+ * @param {Promise.<number>} directorySizePromise
+ *
+ * @private
+ */
+MetadataBoxController.prototype.setDirectorySize_ = function(
+ directorySizePromise) {
+ this.directorySizePromise_ = directorySizePromise;
fukino 2016/09/06 09:12:45 If you avoid showing the size of the wrong entry,
harukam 2016/09/06 11:25:24 Acknowledged.
+ if (!directorySizePromise)
+ return;
+
+ this.metadataBox_.setLoading(true);
+ directorySizePromise.then(function(size) {
+ if(this.directorySizePromise_ != directorySizePromise)
+ return;
+ this.metadataBox_.setLoading(false);
+ this.metadataBox_.size =
+ this.fileMetadataFormatter_.formatSize(size, true);
+ }.bind(this)).catch(function(error) {
+ if(this.directorySizePromise_ != directorySizePromise)
+ return;
+ this.metadataBox_.setLoading(false);
+ }.bind(this));
+};

Powered by Google App Engine
This is Rietveld 408576698