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

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

Issue 2634053002: Show open task button only when applicable. (Closed)
Patch Set: Rebase. Created 3 years, 11 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
« no previous file with comments | « ui/file_manager/file_manager/foreground/js/file_manager.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/file_manager/file_manager/foreground/js/quick_view_controller.js
diff --git a/ui/file_manager/file_manager/foreground/js/quick_view_controller.js b/ui/file_manager/file_manager/foreground/js/quick_view_controller.js
index 34e234e7ac63d3efaea6e9bf4589fb1a823976a2..f659b30046494aa279226457c6585e3ae776a150 100644
--- a/ui/file_manager/file_manager/foreground/js/quick_view_controller.js
+++ b/ui/file_manager/file_manager/foreground/js/quick_view_controller.js
@@ -14,13 +14,14 @@
* @param {!cr.ui.ListSelectionModel} fileListSelectionModel
* @param {!QuickViewUma} quickViewUma
* @param {!MetadataBoxController} metadataBoxController
+ * @param {DialogType} dialogType
*
* @constructor
*/
function QuickViewController(
metadataModel, selectionHandler, listContainer, quickViewModel,
taskController, fileListSelectionModel, quickViewUma,
- metadataBoxController) {
+ metadataBoxController, dialogType) {
/**
* @type {FilesQuickView}
* @private
@@ -76,6 +77,12 @@ function QuickViewController(
this.metadataBoxController_ = metadataBoxController;
/**
+ * @type {DialogType}
+ * @private
+ */
+ this.dialogType_ = dialogType;
+
+ /**
* Current selection of selectionHandler.
*
* @type {!Array<!FileEntry>}
@@ -218,6 +225,17 @@ QuickViewController.prototype.onFileSelectionChanged_ = function(event) {
};
/**
+ * @param {!FileEntry} entry
+ * @return {!Promise<!Array<!FileTask>>}
+ * @private
+ */
+QuickViewController.prototype.getAvailableTasks_ = function(entry) {
+ return this.taskController_.getFileTasks().then(function(tasks) {
+ return tasks.getTaskItems();
+ });
+};
+
+/**
* Update quick view using current entries.
*
* @return {!Promise} Promise fulfilled after quick view is updated.
@@ -238,27 +256,40 @@ QuickViewController.prototype.updateQuickView_ = function() {
(/** @type {!FileEntry} */ (this.quickViewModel_.getSelectedEntry()));
assert(entry);
this.quickViewUma_.onEntryChanged(entry);
- return this.metadataModel_.get([entry], ['thumbnailUrl', 'externalFileUrl'])
- .then(this.onMetadataLoaded_.bind(this, entry));
+ return Promise
+ .all([
+ this.metadataModel_.get([entry], ['thumbnailUrl', 'externalFileUrl']),
+ this.getAvailableTasks_(entry)
+ ])
+ .then(function(values) {
+ var items = (/**@type{Array<MetadataItem>}*/ (values[0]));
+ var tasks = (/**@type{!Array<!FileTask>}*/ (values[1]));
+ return this.onMetadataLoaded_(entry, items, tasks);
+ }.bind(this))
+ .catch(console.error);
};
/**
- * Update quick view using file entry and loaded metadata.
+ * Update quick view using file entry and loaded metadata and tasks.
*
* @param {!FileEntry} entry
* @param {Array<MetadataItem>} items
+ * @param {!Array<!FileTask>} tasks
* @private
*/
-QuickViewController.prototype.onMetadataLoaded_ = function(entry, items) {
- return this.getQuickViewParameters_(entry, items).then(function(params) {
- this.quickView_.type = params.type || '';
- this.quickView_.filePath = params.filePath || '';
- this.quickView_.contentUrl = params.contentUrl || '';
- this.quickView_.videoPoster = params.videoPoster || '';
- this.quickView_.audioArtwork = params.audioArtwork || '';
- this.quickView_.autoplay = params.autoplay || false;
- this.quickView_.browsable = params.browsable || false;
- }.bind(this));
+QuickViewController.prototype.onMetadataLoaded_ = function(
+ entry, items, tasks) {
+ return this.getQuickViewParameters_(entry, items, tasks)
+ .then(function(params) {
+ this.quickView_.type = params.type || '';
+ this.quickView_.filePath = params.filePath || '';
+ this.quickView_.hasTask = params.hasTask || false;
+ this.quickView_.contentUrl = params.contentUrl || '';
+ this.quickView_.videoPoster = params.videoPoster || '';
+ this.quickView_.audioArtwork = params.audioArtwork || '';
+ this.quickView_.autoplay = params.autoplay || false;
+ this.quickView_.browsable = params.browsable || false;
+ }.bind(this));
};
/**
@@ -277,11 +308,13 @@ var QuickViewParams;
/**
* @param {!FileEntry} entry
* @param {Array<MetadataItem>} items
+ * @param {!Array<!FileTask>} tasks
* @return !Promise<!QuickViewParams>
*
* @private
*/
-QuickViewController.prototype.getQuickViewParameters_ = function(entry, items) {
+QuickViewController.prototype.getQuickViewParameters_ = function(
+ entry, items, tasks) {
var item = items[0];
var type = FileType.getType(entry).type;
@@ -289,6 +322,7 @@ QuickViewController.prototype.getQuickViewParameters_ = function(entry, items) {
var params = {
type: type,
filePath: entry.name,
+ hasTask: tasks.length > 0,
};
if (item.externalFileUrl) {
@@ -319,65 +353,46 @@ QuickViewController.prototype.getQuickViewParameters_ = function(entry, items) {
return Promise.resolve(params);
}
- /**
- * @type {!Promise<!File>}
- */
- var getFile = new Promise(function(resolve, reject) {
- entry.file(resolve, reject);
- });
-
- switch (type) {
- case 'image':
- return getFile.then(function(file) {
- params.contentUrl = URL.createObjectURL(file);
- return params;
- });
- case 'video':
- params.autoplay = true;
- if (item.thumbnailUrl) {
- params.videoPoster = item.thumbnailUrl;
- }
- return getFile.then(function(file) {
- params.contentUrl = URL.createObjectURL(file);
- return params;
- });
- case 'audio':
- params.autoplay = true;
- return Promise
- .all([
- this.metadataModel_.get([entry], ['contentThumbnailUrl']), getFile
- ])
- .then(function(values) {
- /** @type {!Array<!MetadataItem>} */
- var items = values[0];
- /** @type {!File} */
- var file = values[1];
- var item = items[0];
- if (item.contentThumbnailUrl) {
- params.audioArtwork = item.contentThumbnailUrl;
- }
+ if (type === '.folder') {
+ return Promise.resolve(params);
+ }
+ return new Promise(function(resolve, reject) {
+ entry.file(resolve, reject);
+ })
+ .then(function(file) {
+ switch (type) {
+ case 'image':
params.contentUrl = URL.createObjectURL(file);
return params;
- });
- case '.folder':
- return Promise.resolve(params);
- }
- return Promise
- .all([
- getFile,
- new Promise(function(resolve) {
- chrome.fileManagerPrivate.getFileTasks([entry], resolve);
- })
- ])
- .then(function(values) {
- var file = values[0];
- var tasks = values[1];
+ case 'video':
+ params.contentUrl = URL.createObjectURL(file);
+ params.autoplay = true;
+ if (item.thumbnailUrl) {
+ params.videoPoster = item.thumbnailUrl;
+ }
+ return params;
+ case 'audio':
+ params.contentUrl = URL.createObjectURL(file);
+ params.autoplay = true;
+ return this.metadataModel_.get([entry], ['contentThumbnailUrl'])
+ .then(function(items) {
+ var item = items[0];
+ if (item.contentThumbnailUrl) {
+ params.audioArtwork = item.contentThumbnailUrl;
+ }
+ return params;
+ });
+ }
var browsable = tasks.some(function(task) {
return ['view-in-browser', 'view-pdf'].includes(
task.taskId.split('|')[2]);
});
params.browsable = browsable;
- params.contentUrl = browsable && URL.createObjectURL(file);
+ params.contentUrl = browsable ? URL.createObjectURL(file) : '';
+ return params;
+ }.bind(this))
+ .catch(function(e) {
+ console.error(e);
return params;
});
};
« no previous file with comments | « ui/file_manager/file_manager/foreground/js/file_manager.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698