OLD | NEW |
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 // Setting the src of an img to an empty string can crash the browser, so we | 5 // Setting the src of an img to an empty string can crash the browser, so we |
6 // use an empty 1x1 gif instead. | 6 // use an empty 1x1 gif instead. |
7 | 7 |
8 /** | 8 /** |
9 * FileManager constructor. | 9 * FileManager constructor. |
10 * | 10 * |
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 // archive is mounted, but only for mounts from within this filebrowser tab. | 519 // archive is mounted, but only for mounts from within this filebrowser tab. |
520 this.mountRequests_ = []; | 520 this.mountRequests_ = []; |
521 this.unmountRequests_ = []; | 521 this.unmountRequests_ = []; |
522 chrome.fileBrowserPrivate.onMountCompleted.addListener( | 522 chrome.fileBrowserPrivate.onMountCompleted.addListener( |
523 this.onMountCompleted_.bind(this)); | 523 this.onMountCompleted_.bind(this)); |
524 | 524 |
525 chrome.fileBrowserPrivate.onFileChanged.addListener( | 525 chrome.fileBrowserPrivate.onFileChanged.addListener( |
526 this.onFileChanged_.bind(this)); | 526 this.onFileChanged_.bind(this)); |
527 | 527 |
528 var path = this.getPathFromUrlOrParams_(); | 528 var path = this.getPathFromUrlOrParams_(); |
| 529 var invokeHandler = !this.params_.selectOnly; |
529 if (path && | 530 if (path && |
530 DirectoryModel.getRootType(path) == DirectoryModel.RootType.GDATA) { | 531 DirectoryModel.getRootType(path) == DirectoryModel.RootType.GDATA) { |
531 // We are opening on a GData path. Mount GData and show | 532 // We are opening on a GData path. Mount GData and show |
532 // "Loading Google Docs" message until the directory content loads. | 533 // "Loading Google Docs" message until the directory content loads. |
533 this.dialogContainer_.setAttribute('unmounted', true); | 534 this.dialogContainer_.setAttribute('unmounted', true); |
534 this.initGData_(true /* dirChanged */); | 535 this.initGData_(true /* dirChanged */); |
535 // This is a one-time handler (will be nulled out on the first call). | 536 // This is a one-time handler (will be nulled out on the first call). |
536 this.setupCurrentDirectoryPostponed_ = function(event) { | 537 this.setupCurrentDirectoryPostponed_ = function(event) { |
537 this.directoryModel_.removeEventListener('directory-changed', | 538 this.directoryModel_.removeEventListener('directory-changed', |
538 this.setupCurrentDirectoryPostponed_); | 539 this.setupCurrentDirectoryPostponed_); |
539 this.setupCurrentDirectoryPostponed_ = null; | 540 this.setupCurrentDirectoryPostponed_ = null; |
540 if (event) // If called as an event handler just exit silently. | 541 if (event) // If called as an event handler just exit silently. |
541 return; | 542 return; |
542 this.setupCurrentDirectory_(false /* blankWhileOpeningAFile */); | 543 this.setupCurrentDirectory_( |
| 544 invokeHandler, false /* blankWhileOpeningAFile */); |
543 }.bind(this); | 545 }.bind(this); |
544 this.directoryModel_.addEventListener('directory-changed', | 546 this.directoryModel_.addEventListener('directory-changed', |
545 this.setupCurrentDirectoryPostponed_); | 547 this.setupCurrentDirectoryPostponed_); |
546 } else { | 548 } else { |
547 this.setupCurrentDirectory_(true /* blankWhileOpeningAFile */); | 549 this.setupCurrentDirectory_( |
| 550 invokeHandler, true /* blankWhileOpeningAFile */); |
548 } | 551 } |
549 | 552 |
550 this.summarizeSelection_(); | 553 this.summarizeSelection_(); |
551 | 554 |
552 var sortField = | 555 var sortField = |
553 window.localStorage['sort-field-' + this.dialogType_] || 'cachedMtime_'; | 556 window.localStorage['sort-field-' + this.dialogType_] || 'cachedMtime_'; |
554 var sortDirection = | 557 var sortDirection = |
555 window.localStorage['sort-direction-' + this.dialogType_] || 'desc'; | 558 window.localStorage['sort-direction-' + this.dialogType_] || 'desc'; |
556 this.directoryModel_.fileList.sort(sortField, sortDirection); | 559 this.directoryModel_.fileList.sort(sortField, sortDirection); |
557 | 560 |
(...skipping 995 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1553 return; | 1556 return; |
1554 } | 1557 } |
1555 }; | 1558 }; |
1556 | 1559 |
1557 /** | 1560 /** |
1558 * Respond to the back and forward buttons. | 1561 * Respond to the back and forward buttons. |
1559 */ | 1562 */ |
1560 FileManager.prototype.onPopState_ = function(event) { | 1563 FileManager.prototype.onPopState_ = function(event) { |
1561 // TODO(serya): We should restore selected items here. | 1564 // TODO(serya): We should restore selected items here. |
1562 this.closeFilePopup_(); | 1565 this.closeFilePopup_(); |
1563 this.setupCurrentDirectory_(); | 1566 this.setupCurrentDirectory_(true /* invokeHandler */); |
1564 }; | 1567 }; |
1565 | 1568 |
1566 FileManager.prototype.requestResize_ = function(timeout) { | 1569 FileManager.prototype.requestResize_ = function(timeout) { |
1567 setTimeout(this.onResize_.bind(this), timeout || 0); | 1570 setTimeout(this.onResize_.bind(this), timeout || 0); |
1568 }; | 1571 }; |
1569 | 1572 |
1570 /** | 1573 /** |
1571 * Resize details and thumb views to fit the new window size. | 1574 * Resize details and thumb views to fit the new window size. |
1572 */ | 1575 */ |
1573 FileManager.prototype.onResize_ = function() { | 1576 FileManager.prototype.onResize_ = function() { |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1607 }; | 1610 }; |
1608 | 1611 |
1609 /** | 1612 /** |
1610 * Restores current directory and may be a selected item after page load (or | 1613 * Restores current directory and may be a selected item after page load (or |
1611 * reload) or popping a state (after click on back/forward). If location.hash | 1614 * reload) or popping a state (after click on back/forward). If location.hash |
1612 * is present it means that the user has navigated somewhere and that place | 1615 * is present it means that the user has navigated somewhere and that place |
1613 * will be restored. defaultPath primarily is used with save/open dialogs. | 1616 * will be restored. defaultPath primarily is used with save/open dialogs. |
1614 * Default path may also contain a file name. Freshly opened file manager | 1617 * Default path may also contain a file name. Freshly opened file manager |
1615 * window has neither. | 1618 * window has neither. |
1616 * | 1619 * |
1617 * @param {boolean} blankWhileOpeningAFile Whether to show fade over | 1620 * @param {boolean} invokeHandler Whether to invoke the default handler on |
1618 * the file manager. | 1621 * the selected file. |
| 1622 * @param {boolean} opt_blankWhileOpeningAFile Whether to show fade over |
| 1623 * the file manager. |
1619 */ | 1624 */ |
1620 FileManager.prototype.setupCurrentDirectory_ = | 1625 FileManager.prototype.setupCurrentDirectory_ = |
1621 function(blankWhileOpeningAFile) { | 1626 function(invokeHandler, opt_blankWhileOpeningAFile) { |
1622 var path = this.getPathFromUrlOrParams_(); | 1627 var path = this.getPathFromUrlOrParams_(); |
1623 | 1628 |
1624 if (!path) { | 1629 if (!path) { |
1625 this.directoryModel_.setupDefaultPath(); | 1630 this.directoryModel_.setupDefaultPath(); |
1626 return; | 1631 return; |
1627 } | 1632 } |
1628 | 1633 |
1629 // In the FULL_PAGE mode if the hash path points to a file we might have | 1634 // In the FULL_PAGE mode if the hash path points to a file we might have |
1630 // to invoke a task after selecting it. | 1635 // to invoke a task after selecting it. |
1631 // If the file path is in params_ we only want to select the file. | 1636 // If the file path is in params_ we only want to select the file. |
1632 if (location.hash && | 1637 if (invokeHandler && location.hash && |
1633 this.dialogType_ == FileManager.DialogType.FULL_PAGE) { | 1638 this.dialogType_ == FileManager.DialogType.FULL_PAGE) { |
1634 // To prevent the file list flickering for a moment before the action | 1639 // To prevent the file list flickering for a moment before the action |
1635 // is executed we hide it under a white div. | 1640 // is executed we hide it under a white div. |
1636 var shade; | 1641 var shade; |
1637 if (blankWhileOpeningAFile) { | 1642 if (opt_blankWhileOpeningAFile) { |
1638 shade = this.document_.createElement('div'); | 1643 shade = this.document_.createElement('div'); |
1639 shade.className = 'overlay-pane'; | 1644 shade.className = 'overlay-pane'; |
1640 shade.style.backgroundColor = 'white'; | 1645 shade.style.backgroundColor = 'white'; |
1641 this.document_.body.appendChild(shade); | 1646 this.document_.body.appendChild(shade); |
1642 } | 1647 } |
1643 function removeShade() { | 1648 function removeShade() { |
1644 if (shade) | 1649 if (shade) |
1645 shade.parentNode.removeChild(shade); | 1650 shade.parentNode.removeChild(shade); |
1646 } | 1651 } |
1647 | 1652 |
(...skipping 2750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4398 | 4403 |
4399 chrome.fileBrowserPrivate.setGDataPreferences(changeInfo); | 4404 chrome.fileBrowserPrivate.setGDataPreferences(changeInfo); |
4400 | 4405 |
4401 if (oldValue) { | 4406 if (oldValue) { |
4402 event.target.removeAttribute('checked'); | 4407 event.target.removeAttribute('checked'); |
4403 } else { | 4408 } else { |
4404 event.target.setAttribute('checked', 'checked'); | 4409 event.target.setAttribute('checked', 'checked'); |
4405 } | 4410 } |
4406 }; | 4411 }; |
4407 })(); | 4412 })(); |
OLD | NEW |