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

Unified Diff: chrome/browser/resources/file_manager/js/file_manager.js

Issue 10830121: Respect 'include_all_files' parameter in ChromeOS file Open/Save dialogs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 8 years, 5 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: chrome/browser/resources/file_manager/js/file_manager.js
diff --git a/chrome/browser/resources/file_manager/js/file_manager.js b/chrome/browser/resources/file_manager/js/file_manager.js
index ea63e009985ac446779187d6cad79639f50eb03b..e4b005d265509a7a842fa9500bbdf0d079d15bfb 100644
--- a/chrome/browser/resources/file_manager/js/file_manager.js
+++ b/chrome/browser/resources/file_manager/js/file_manager.js
@@ -1041,12 +1041,15 @@ FileManager.prototype = {
/**
* Index of selected item in the typeList of the dialog params.
- * @return {intener} Index of selected type from this.fileTypes_ + 1. 0
- * means value is not specified.
+ * @return {number} 1-based index of selected type or 0 if no type selected.
*/
FileManager.prototype.getSelectedFilterIndex_ = function() {
- // 0 is the 'All files' item.
- return Math.min(0, this.fileTypeSelector_.selectedIndex);
+ var index = Number(this.fileTypeSelector_.selectedIndex);
+ if (index < 0) // Nothing selected.
+ return 0;
+ if (this.params_.includeAllFiles) // Already 1-based.
+ return index;
+ return index + 1; // Convert to 1-based;
};
/**
@@ -1385,37 +1388,54 @@ FileManager.prototype = {
* Fills the file type list or hides it.
*/
FileManager.prototype.initFileTypeFilter_ = function() {
- if (this.fileTypes_.length == 0) {
- this.fileTypeSelector_.hidden = true;
- return;
+ if (this.params_.includeAllFiles) {
+ var option = this.document_.createElement('option');
+ option.innerText = str('ALL_FILES_FILTER');
+ this.fileTypeSelector_.appendChild(option);
+ option.value = 0;
}
- var option = this.document_.createElement('option');
- option.innerText = str('ALL_FILES_FILTER');
- this.fileTypeSelector_.appendChild(option);
- option.value = 0;
-
for (var i = 0; i < this.fileTypes_.length; i++) {
- var option = this.document_.createElement('option');
- var description = this.fileTypes_[i].description;
- if (!description) {
- if (this.fileTypes_[i].extensions.length == 1) {
- description = this.getFileTypeString_('.' +
- this.fileTypes_[i].extensions[0]);
- } else {
- description = this.fileTypes_[i].extensions.join(', ');
- }
+ var fileType = this.fileTypes_[i];
+ var option = this.document_.createElement('option');
+ var description = fileType.description;
+ if (!description) {
+ // See if all the extensions in the group have the same description.
+ for (var j = 0; j != fileType.extensions.length; j++) {
+ var currentDescription =
+ this.getFileTypeString_('.' + fileType.extensions[j]);
+ if (!description) // Set the first time.
+ description = currentDescription;
+ else if (description != currentDescription) {
+ // No single description, fall through to the extension list.
+ description = null;
+ break;
+ }
+ }
+
+ if (!description)
+ // Convert ['jpg', 'png'] to '*.jpg, *.png'.
+ description = fileType.extensions.map(function(s) {
+ return '*.' + s;
+ }).join(', ');
}
option.innerText = description;
option.value = i + 1;
- if (this.fileTypes_[i].selected)
+ if (fileType.selected)
option.selected = true;
this.fileTypeSelector_.appendChild(option);
}
+ var options = this.fileTypeSelector_.querySelectorAll('option');
+ if (options.length < 2) {
+ // There is in fact no choice, hide the selector.
+ this.fileTypeSelector_.hidden = true;
+ return;
+ }
+
this.fileTypeSelector_.addEventListener('change',
this.updateFileTypeFilter_.bind(this));
};
@@ -1425,8 +1445,8 @@ FileManager.prototype = {
*/
FileManager.prototype.updateFileTypeFilter_ = function() {
this.directoryModel_.removeFilter('fileType');
- var selectedIndex = Number(this.fileTypeSelector_.selectedIndex);
- if (selectedIndex >= 1) { // Specific filter selected.
+ var selectedIndex = this.getSelectedFilterIndex_();
+ if (selectedIndex > 0) { // Specific filter selected.
var regexp = new RegExp('.*(' +
this.fileTypes_[selectedIndex - 1].extensions.join('|') + ')$', 'i');
function filter(entry) {
« no previous file with comments | « chrome/browser/chromeos/extensions/file_manager_util.cc ('k') | chrome/browser/resources/file_manager/js/file_type.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698