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 'use strict'; | 5 'use strict'; |
6 | 6 |
7 /** | 7 /** |
8 * FileManager constructor. | 8 * FileManager constructor. |
9 * | 9 * |
10 * FileManager objects encapsulate the functionality of the file selector | 10 * FileManager objects encapsulate the functionality of the file selector |
(...skipping 2594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2605 input.selectionStart = 0; | 2605 input.selectionStart = 0; |
2606 input.selectionEnd = selectionEnd; | 2606 input.selectionEnd = selectionEnd; |
2607 } | 2607 } |
2608 }, 0); | 2608 }, 0); |
2609 }; | 2609 }; |
2610 | 2610 |
2611 /** | 2611 /** |
2612 * @private | 2612 * @private |
2613 */ | 2613 */ |
2614 FileManager.prototype.onScanStarted_ = function() { | 2614 FileManager.prototype.onScanStarted_ = function() { |
2615 if (this.scanInProgress_ && !this.scanUpdatedAtLeastOnceOrCompleted_) { | 2615 if (this.scanInProgress_) { |
2616 this.table_.list.endBatchUpdates(); | 2616 this.table_.list.endBatchUpdates(); |
2617 this.grid_.endBatchUpdates(); | 2617 this.grid_.endBatchUpdates(); |
2618 } | 2618 } |
2619 | 2619 |
2620 this.updateCommands(); | 2620 this.updateCommands(); |
2621 this.table_.list.startBatchUpdates(); | 2621 this.table_.list.startBatchUpdates(); |
2622 this.grid_.startBatchUpdates(); | 2622 this.grid_.startBatchUpdates(); |
2623 this.scanInProgress_ = true; | 2623 this.scanInProgress_ = true; |
2624 | 2624 |
2625 this.scanUpdatedAtLeastOnceOrCompleted_ = false; | 2625 this.scanUpdatedAtLeastOnceOrCompleted_ = false; |
(...skipping 20 matching lines...) Expand all Loading... |
2646 FileManager.prototype.onScanCompleted_ = function() { | 2646 FileManager.prototype.onScanCompleted_ = function() { |
2647 if (!this.scanInProgress_) { | 2647 if (!this.scanInProgress_) { |
2648 console.error('Scan-completed event recieved. But scan is not started.'); | 2648 console.error('Scan-completed event recieved. But scan is not started.'); |
2649 return; | 2649 return; |
2650 } | 2650 } |
2651 | 2651 |
2652 this.updateCommands(); | 2652 this.updateCommands(); |
2653 this.hideSpinnerLater_(); | 2653 this.hideSpinnerLater_(); |
2654 this.refreshCurrentDirectoryMetadata_(); | 2654 this.refreshCurrentDirectoryMetadata_(); |
2655 | 2655 |
| 2656 if (this.scanUpdatedTimer_) { |
| 2657 clearTimeout(this.scanUpdatedTimer_); |
| 2658 this.scanUpdatedTimer_ = null; |
| 2659 } |
| 2660 |
2656 // To avoid flickering postpone updating the ui by a small amount of time. | 2661 // To avoid flickering postpone updating the ui by a small amount of time. |
2657 // There is a high chance, that metadata will be received within 50 ms. | 2662 // There is a high chance, that metadata will be received within 50 ms. |
2658 this.scanCompletedTimer_ = setTimeout(function() { | 2663 this.scanCompletedTimer_ = setTimeout(function() { |
2659 // Check if batch updates are already finished by onScanUpdated_(). | 2664 // Check if batch updates are already finished by onScanUpdated_(). |
2660 if (this.scanUpdatedAtLeastOnceOrCompleted_) | 2665 if (!this.scanUpdatedAtLeastOnceOrCompleted_) { |
2661 return; | 2666 this.scanUpdatedAtLeastOnceOrCompleted_ = true; |
2662 this.scanUpdatedAtLeastOnceOrCompleted_ = true; | 2667 this.updateMiddleBarVisibility_(); |
| 2668 } |
| 2669 |
2663 this.scanInProgress_ = false; | 2670 this.scanInProgress_ = false; |
2664 if (this.scanUpdatedTimer_) { | |
2665 clearTimeout(this.scanUpdatedTimer_); | |
2666 this.scanUpdatedTimer_ = null; | |
2667 } | |
2668 this.table_.list.endBatchUpdates(); | 2671 this.table_.list.endBatchUpdates(); |
2669 this.grid_.endBatchUpdates(); | 2672 this.grid_.endBatchUpdates(); |
2670 this.updateMiddleBarVisibility_(); | |
2671 this.scanCompletedTimer_ = null; | 2673 this.scanCompletedTimer_ = null; |
2672 }.bind(this), 50); | 2674 }.bind(this), 50); |
2673 }; | 2675 }; |
2674 | 2676 |
2675 /** | 2677 /** |
2676 * @private | 2678 * @private |
2677 */ | 2679 */ |
2678 FileManager.prototype.onScanUpdated_ = function() { | 2680 FileManager.prototype.onScanUpdated_ = function() { |
2679 if (!this.scanInProgress_) { | 2681 if (!this.scanInProgress_) { |
2680 console.error('Scan-updated event recieved. But scan is not started.'); | 2682 console.error('Scan-updated event recieved. But scan is not started.'); |
2681 return; | 2683 return; |
2682 } | 2684 } |
2683 | 2685 |
2684 // We need to hide the spinner only once. | 2686 if (this.scanUpdatedTimer_ || this.scanCompletedTimer_) |
2685 if (this.scanUpdatedAtLeastOnceOrCompleted_ || this.scanUpdatedTimer_) | |
2686 return; | 2687 return; |
2687 | 2688 |
2688 // Show contents incrementally by finishing batch updated, but only after | 2689 // Show contents incrementally by finishing batch updated, but only after |
2689 // 200ms elapsed, to avoid flickering when it is not necessary. | 2690 // 200ms elapsed, to avoid flickering when it is not necessary. |
2690 this.scanUpdatedTimer_ = setTimeout(function() { | 2691 this.scanUpdatedTimer_ = setTimeout(function() { |
2691 // We need to hide the spinner only once. | 2692 // We need to hide the spinner only once. |
2692 if (this.scanUpdatedAtLeastOnceOrCompleted_) | 2693 if (!this.scanUpdatedAtLeastOnceOrCompleted_) { |
2693 return; | 2694 this.scanUpdatedAtLeastOnceOrCompleted_ = true; |
2694 if (this.scanCompletedTimer_) { | 2695 this.hideSpinnerLater_(); |
2695 clearTimeout(this.scanCompletedTimer_); | 2696 this.updateMiddleBarVisibility_(); |
2696 this.scanCompletedTimer_ = null; | |
2697 } | 2697 } |
2698 this.scanUpdatedAtLeastOnceOrCompleted_ = true; | 2698 |
2699 this.scanInProgress_ = false; | 2699 // Update the UI. |
2700 this.hideSpinnerLater_(); | 2700 if (this.scanInProgress_) { |
2701 this.table_.list.endBatchUpdates(); | 2701 this.table_.list.endBatchUpdates(); |
2702 this.grid_.endBatchUpdates(); | 2702 this.grid_.endBatchUpdates(); |
2703 this.updateMiddleBarVisibility_(); | 2703 this.table_.list.startBatchUpdates(); |
| 2704 this.grid_.startBatchUpdates(); |
| 2705 } |
2704 this.scanUpdatedTimer_ = null; | 2706 this.scanUpdatedTimer_ = null; |
2705 }.bind(this), 200); | 2707 }.bind(this), 200); |
2706 }; | 2708 }; |
2707 | 2709 |
2708 /** | 2710 /** |
2709 * @private | 2711 * @private |
2710 */ | 2712 */ |
2711 FileManager.prototype.onScanCancelled_ = function() { | 2713 FileManager.prototype.onScanCancelled_ = function() { |
2712 if (!this.scanInProgress_) { | 2714 if (!this.scanInProgress_) { |
2713 console.error('Scan-cancelled event recieved. But scan is not started.'); | 2715 console.error('Scan-cancelled event recieved. But scan is not started.'); |
2714 return; | 2716 return; |
2715 } | 2717 } |
2716 | 2718 |
2717 this.updateCommands(); | 2719 this.updateCommands(); |
2718 this.hideSpinnerLater_(); | 2720 this.hideSpinnerLater_(); |
2719 if (this.scanCompletedTimer_) { | 2721 if (this.scanCompletedTimer_) { |
2720 clearTimeout(this.scanCompletedTimer_); | 2722 clearTimeout(this.scanCompletedTimer_); |
2721 this.scanCompletedTimer_ = null; | 2723 this.scanCompletedTimer_ = null; |
2722 } | 2724 } |
2723 if (this.scanUpdatedTimer_) { | 2725 if (this.scanUpdatedTimer_) { |
2724 clearTimeout(this.scanUpdatedTimer_); | 2726 clearTimeout(this.scanUpdatedTimer_); |
2725 this.scanUpdatedTimer_ = null; | 2727 this.scanUpdatedTimer_ = null; |
2726 } | 2728 } |
2727 // Finish unfinished batch updates. | 2729 // Finish unfinished batch updates. |
2728 if (!this.scanUpdatedAtLeastOnceOrCompleted_) { | 2730 if (!this.scanUpdatedAtLeastOnceOrCompleted_) { |
2729 this.scanUpdatedAtLeastOnceOrCompleted_ = true; | 2731 this.scanUpdatedAtLeastOnceOrCompleted_ = true; |
2730 this.scanInProgress_ = false; | |
2731 this.table_.list.endBatchUpdates(); | |
2732 this.grid_.endBatchUpdates(); | |
2733 this.updateMiddleBarVisibility_(); | 2732 this.updateMiddleBarVisibility_(); |
2734 } | 2733 } |
| 2734 |
| 2735 this.scanInProgress_ = false; |
| 2736 this.table_.list.endBatchUpdates(); |
| 2737 this.grid_.endBatchUpdates(); |
2735 }; | 2738 }; |
2736 | 2739 |
2737 /** | 2740 /** |
2738 * @private | 2741 * @private |
2739 */ | 2742 */ |
2740 FileManager.prototype.cancelSpinnerTimeout_ = function() { | 2743 FileManager.prototype.cancelSpinnerTimeout_ = function() { |
2741 if (this.showSpinnerTimeout_) { | 2744 if (this.showSpinnerTimeout_) { |
2742 clearTimeout(this.showSpinnerTimeout_); | 2745 clearTimeout(this.showSpinnerTimeout_); |
2743 this.showSpinnerTimeout_ = null; | 2746 this.showSpinnerTimeout_ = null; |
2744 } | 2747 } |
(...skipping 1082 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3827 */ | 3830 */ |
3828 FileManager.prototype.setCtrlKeyPressed_ = function(flag) { | 3831 FileManager.prototype.setCtrlKeyPressed_ = function(flag) { |
3829 this.ctrlKeyPressed_ = flag; | 3832 this.ctrlKeyPressed_ = flag; |
3830 // Before the DOM is constructed, the key event can be handled. | 3833 // Before the DOM is constructed, the key event can be handled. |
3831 var cacheClearCommand = | 3834 var cacheClearCommand = |
3832 this.document_.querySelector('#drive-clear-local-cache'); | 3835 this.document_.querySelector('#drive-clear-local-cache'); |
3833 if (cacheClearCommand) | 3836 if (cacheClearCommand) |
3834 cacheClearCommand.canExecuteChange(); | 3837 cacheClearCommand.canExecuteChange(); |
3835 }; | 3838 }; |
3836 })(); | 3839 })(); |
OLD | NEW |