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

Side by Side 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, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * FileManager constructor. 6 * FileManager constructor.
7 * 7 *
8 * FileManager objects encapsulate the functionality of the file selector 8 * FileManager objects encapsulate the functionality of the file selector
9 * dialogs, as well as the full screen file manager application (though the 9 * dialogs, as well as the full screen file manager application (though the
10 * latter is not yet implemented). 10 * latter is not yet implemented).
(...skipping 1023 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 butter.querySelector('.actions').classList.add('hide-in-butter'); 1034 butter.querySelector('.actions').classList.add('hide-in-butter');
1035 butter.querySelector('.progress-bar').classList.add('hide-in-butter'); 1035 butter.querySelector('.progress-bar').classList.add('hide-in-butter');
1036 }, delay + 1000); 1036 }, delay + 1000);
1037 1037
1038 this.currentButter_ = null; 1038 this.currentButter_ = null;
1039 } 1039 }
1040 }; 1040 };
1041 1041
1042 /** 1042 /**
1043 * Index of selected item in the typeList of the dialog params. 1043 * Index of selected item in the typeList of the dialog params.
1044 * @return {intener} Index of selected type from this.fileTypes_ + 1. 0 1044 * @return {number} 1-based index of selected type or 0 if no type selected.
1045 * means value is not specified.
1046 */ 1045 */
1047 FileManager.prototype.getSelectedFilterIndex_ = function() { 1046 FileManager.prototype.getSelectedFilterIndex_ = function() {
1048 // 0 is the 'All files' item. 1047 var index = Number(this.fileTypeSelector_.selectedIndex);
1049 return Math.min(0, this.fileTypeSelector_.selectedIndex); 1048 if (index < 0) // Nothing selected.
1049 return 0;
1050 if (this.params_.includeAllFiles) // Already 1-based.
1051 return index;
1052 return index + 1; // Convert to 1-based;
1050 }; 1053 };
1051 1054
1052 /** 1055 /**
1053 * Force the canExecute events to be dispatched. 1056 * Force the canExecute events to be dispatched.
1054 */ 1057 */
1055 FileManager.prototype.updateCommands_ = function() { 1058 FileManager.prototype.updateCommands_ = function() {
1056 for (var key in this.commands_) 1059 for (var key in this.commands_)
1057 this.commands_[key].disabled = !this.canExecute_(key); 1060 this.commands_[key].disabled = !this.canExecute_(key);
1058 }; 1061 };
1059 1062
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
1378 this.table_.columnModel = 1381 this.table_.columnModel =
1379 (this.isOnGData() && this.gdataColumnModel_) ? 1382 (this.isOnGData() && this.gdataColumnModel_) ?
1380 this.gdataColumnModel_ : 1383 this.gdataColumnModel_ :
1381 this.regularColumnModel_; 1384 this.regularColumnModel_;
1382 }; 1385 };
1383 1386
1384 /** 1387 /**
1385 * Fills the file type list or hides it. 1388 * Fills the file type list or hides it.
1386 */ 1389 */
1387 FileManager.prototype.initFileTypeFilter_ = function() { 1390 FileManager.prototype.initFileTypeFilter_ = function() {
1388 if (this.fileTypes_.length == 0) { 1391 if (this.params_.includeAllFiles) {
1389 this.fileTypeSelector_.hidden = true; 1392 var option = this.document_.createElement('option');
1390 return; 1393 option.innerText = str('ALL_FILES_FILTER');
1394 this.fileTypeSelector_.appendChild(option);
1395 option.value = 0;
1391 } 1396 }
1392 1397
1393 var option = this.document_.createElement('option'); 1398 for (var i = 0; i < this.fileTypes_.length; i++) {
1394 option.innerText = str('ALL_FILES_FILTER'); 1399 var fileType = this.fileTypes_[i];
1395 this.fileTypeSelector_.appendChild(option); 1400 var option = this.document_.createElement('option');
1396 option.value = 0; 1401 var description = fileType.description;
1402 if (!description) {
1403 // See if all the extensions in the group have the same description.
1404 for (var j = 0; j != fileType.extensions.length; j++) {
1405 var currentDescription =
1406 this.getFileTypeString_('.' + fileType.extensions[j]);
1407 if (!description) // Set the first time.
1408 description = currentDescription;
1409 else if (description != currentDescription) {
1410 // No single description, fall through to the extension list.
1411 description = null;
1412 break;
1413 }
1414 }
1397 1415
1398 for (var i = 0; i < this.fileTypes_.length; i++) { 1416 if (!description)
1399 var option = this.document_.createElement('option'); 1417 // Convert ['jpg', 'png'] to '*.jpg, *.png'.
1400 var description = this.fileTypes_[i].description; 1418 description = fileType.extensions.map(function(s) {
1401 if (!description) { 1419 return '*.' + s;
1402 if (this.fileTypes_[i].extensions.length == 1) { 1420 }).join(', ');
1403 description = this.getFileTypeString_('.' +
1404 this.fileTypes_[i].extensions[0]);
1405 } else {
1406 description = this.fileTypes_[i].extensions.join(', ');
1407 }
1408 } 1421 }
1409 option.innerText = description; 1422 option.innerText = description;
1410 1423
1411 option.value = i + 1; 1424 option.value = i + 1;
1412 1425
1413 if (this.fileTypes_[i].selected) 1426 if (fileType.selected)
1414 option.selected = true; 1427 option.selected = true;
1415 1428
1416 this.fileTypeSelector_.appendChild(option); 1429 this.fileTypeSelector_.appendChild(option);
1417 } 1430 }
1418 1431
1432 var options = this.fileTypeSelector_.querySelectorAll('option');
1433 if (options.length < 2) {
1434 // There is in fact no choice, hide the selector.
1435 this.fileTypeSelector_.hidden = true;
1436 return;
1437 }
1438
1419 this.fileTypeSelector_.addEventListener('change', 1439 this.fileTypeSelector_.addEventListener('change',
1420 this.updateFileTypeFilter_.bind(this)); 1440 this.updateFileTypeFilter_.bind(this));
1421 }; 1441 };
1422 1442
1423 /** 1443 /**
1424 * Filters file according to the selected file type. 1444 * Filters file according to the selected file type.
1425 */ 1445 */
1426 FileManager.prototype.updateFileTypeFilter_ = function() { 1446 FileManager.prototype.updateFileTypeFilter_ = function() {
1427 this.directoryModel_.removeFilter('fileType'); 1447 this.directoryModel_.removeFilter('fileType');
1428 var selectedIndex = Number(this.fileTypeSelector_.selectedIndex); 1448 var selectedIndex = this.getSelectedFilterIndex_();
1429 if (selectedIndex >= 1) { // Specific filter selected. 1449 if (selectedIndex > 0) { // Specific filter selected.
1430 var regexp = new RegExp('.*(' + 1450 var regexp = new RegExp('.*(' +
1431 this.fileTypes_[selectedIndex - 1].extensions.join('|') + ')$', 'i'); 1451 this.fileTypes_[selectedIndex - 1].extensions.join('|') + ')$', 'i');
1432 function filter(entry) { 1452 function filter(entry) {
1433 return entry.isDirectory || regexp.test(entry.name); 1453 return entry.isDirectory || regexp.test(entry.name);
1434 } 1454 }
1435 this.directoryModel_.addFilter('fileType', filter); 1455 this.directoryModel_.addFilter('fileType', filter);
1436 } 1456 }
1437 this.directoryModel_.rescan(); 1457 this.directoryModel_.rescan();
1438 }; 1458 };
1439 1459
(...skipping 2793 matching lines...) Expand 10 before | Expand all | Expand 10 after
4233 } 4253 }
4234 4254
4235 var defaultActionSeparator = 4255 var defaultActionSeparator =
4236 this.dialogDom_.querySelector('#default-action-separator'); 4256 this.dialogDom_.querySelector('#default-action-separator');
4237 4257
4238 this.defaultActionMenuItem_.hidden = !taskItem; 4258 this.defaultActionMenuItem_.hidden = !taskItem;
4239 defaultActionSeparator.hidden = !taskItem; 4259 defaultActionSeparator.hidden = !taskItem;
4240 } 4260 }
4241 })(); 4261 })();
4242 4262
OLDNEW
« 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