OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 * Slide mode displays a single image and has a set of controls to navigate | 8 * Slide mode displays a single image and has a set of controls to navigate |
9 * between the images and to edit an image. | 9 * between the images and to edit an image. |
10 * | 10 * |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 util.createChild(this.container_, 'tool slideshow-toolbar'); | 190 util.createChild(this.container_, 'tool slideshow-toolbar'); |
191 util.createChild(slideShowToolbar, 'slideshow-play'). | 191 util.createChild(slideShowToolbar, 'slideshow-play'). |
192 addEventListener('click', this.toggleSlideshowPause_.bind(this)); | 192 addEventListener('click', this.toggleSlideshowPause_.bind(this)); |
193 util.createChild(slideShowToolbar, 'slideshow-end'). | 193 util.createChild(slideShowToolbar, 'slideshow-end'). |
194 addEventListener('click', this.stopSlideshow_.bind(this)); | 194 addEventListener('click', this.stopSlideshow_.bind(this)); |
195 | 195 |
196 // Editor. | 196 // Editor. |
197 | 197 |
198 this.editButton_ = this.toolbar_.querySelector('button.edit'); | 198 this.editButton_ = this.toolbar_.querySelector('button.edit'); |
199 this.editButton_.title = this.displayStringFunction_('GALLERY_EDIT'); | 199 this.editButton_.title = this.displayStringFunction_('GALLERY_EDIT'); |
200 this.editButton_.setAttribute('disabled', ''); // Disabled by default. | 200 this.editButton_.disabled = true; // Disabled by default. |
201 this.editButton_.addEventListener('click', this.toggleEditor.bind(this)); | 201 this.editButton_.addEventListener('click', this.toggleEditor.bind(this)); |
202 | 202 |
203 this.printButton_ = this.toolbar_.querySelector('button.print'); | 203 this.printButton_ = this.toolbar_.querySelector('button.print'); |
204 this.printButton_.title = this.displayStringFunction_('GALLERY_PRINT'); | 204 this.printButton_.title = this.displayStringFunction_('GALLERY_PRINT'); |
205 this.printButton_.setAttribute('disabled', ''); // Disabled by default. | 205 this.printButton_.disabled = true; // Disabled by default. |
206 this.printButton_.addEventListener('click', this.print_.bind(this)); | 206 this.printButton_.addEventListener('click', this.print_.bind(this)); |
207 | 207 |
208 this.editBarSpacer_ = this.toolbar_.querySelector('.edit-bar-spacer'); | 208 this.editBarSpacer_ = this.toolbar_.querySelector('.edit-bar-spacer'); |
209 this.editBarMain_ = util.createChild(this.editBarSpacer_, 'edit-main'); | 209 this.editBarMain_ = util.createChild(this.editBarSpacer_, 'edit-main'); |
210 | 210 |
211 this.editBarMode_ = util.createChild(this.container_, 'edit-modal'); | 211 this.editBarMode_ = util.createChild(this.container_, 'edit-modal'); |
212 this.editBarModeWrapper_ = util.createChild( | 212 this.editBarModeWrapper_ = util.createChild( |
213 this.editBarMode_, 'edit-modal-wrapper dimmable'); | 213 this.editBarMode_, 'edit-modal-wrapper dimmable'); |
214 this.editBarModeWrapper_.hidden = true; | 214 this.editBarModeWrapper_.hidden = true; |
215 | 215 |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 | 347 |
348 this.viewport_.resetView(); | 348 this.viewport_.resetView(); |
349 if (this.getItemCount_() === 0) { | 349 if (this.getItemCount_() === 0) { |
350 this.errorBanner_.clear(); | 350 this.errorBanner_.clear(); |
351 commitDone(); | 351 commitDone(); |
352 } else { | 352 } else { |
353 this.commitItem_(commitDone); | 353 this.commitItem_(commitDone); |
354 } | 354 } |
355 | 355 |
356 // Disable the slide-mode only buttons when leaving. | 356 // Disable the slide-mode only buttons when leaving. |
357 this.editButton_.setAttribute('disabled', ''); | 357 this.editButton_.disabled = true; |
358 this.printButton_.setAttribute('disabled', ''); | 358 this.printButton_.disabled = true; |
359 | 359 |
360 // Disable touch operation. | 360 // Disable touch operation. |
361 this.touchHandlers_.enabled = false; | 361 this.touchHandlers_.enabled = false; |
362 }; | 362 }; |
363 | 363 |
364 | 364 |
365 /** | 365 /** |
366 * Execute an action when the editor is not busy. | 366 * Execute an action when the editor is not busy. |
367 * | 367 * |
368 * @param {function()} action Function to execute. | 368 * @param {function()} action Function to execute. |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 }; | 428 }; |
429 | 429 |
430 /** | 430 /** |
431 * Selection change handler. | 431 * Selection change handler. |
432 * | 432 * |
433 * Commits the current image and displays the newly selected image. | 433 * Commits the current image and displays the newly selected image. |
434 * @private | 434 * @private |
435 */ | 435 */ |
436 SlideMode.prototype.onSelection_ = function() { | 436 SlideMode.prototype.onSelection_ = function() { |
437 if (this.selectionModel_.selectedIndexes.length === 0) | 437 if (this.selectionModel_.selectedIndexes.length === 0) |
438 return; // Temporary empty selection. | 438 return; // Ignore temporary empty selection. |
439 | 439 |
440 // Forget the saved selection if the user changed the selection manually. | 440 // Forget the saved selection if the user changed the selection manually. |
441 if (!this.isSlideshowOn_()) | 441 if (!this.isSlideshowOn_()) |
442 this.savedSelection_ = null; | 442 this.savedSelection_ = null; |
443 | 443 |
444 if (this.getSelectedIndex() === this.displayedIndex_) | 444 if (this.getSelectedIndex() === this.displayedIndex_) |
445 return; // Do not reselect. | 445 return; // Do not reselect. |
446 | 446 |
447 this.commitItem_(this.loadSelectedItem_.bind(this)); | 447 this.commitItem_(this.loadSelectedItem_.bind(this)); |
448 }; | 448 }; |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
574 // The next item is now at the same index as the removed one, so we need | 574 // The next item is now at the same index as the removed one, so we need |
575 // to correct displayIndex_ so that loadSelectedItem_ does not think | 575 // to correct displayIndex_ so that loadSelectedItem_ does not think |
576 // we are re-selecting the same item (and does right-to-left slide-in | 576 // we are re-selecting the same item (and does right-to-left slide-in |
577 // animation). | 577 // animation). |
578 this.displayedIndex_ = event.index - 1; | 578 this.displayedIndex_ = event.index - 1; |
579 this.select(event.index); | 579 this.select(event.index); |
580 } else if (this.dataModel_.length) { | 580 } else if (this.dataModel_.length) { |
581 // Removed item is the rightmost, but there are more items. | 581 // Removed item is the rightmost, but there are more items. |
582 this.select(event.index - 1); // Select the new last index. | 582 this.select(event.index - 1); // Select the new last index. |
583 } else { | 583 } else { |
584 // No items left. Unload the image and show the banner. | 584 // No items left. Unload the image, disable edit and print button, and |
| 585 // show the banner. |
585 this.commitItem_(function() { | 586 this.commitItem_(function() { |
586 this.unloadImage_(); | 587 this.unloadImage_(); |
| 588 this.printButton_.disabled = true; |
| 589 this.editButton_.disabled = true; |
587 this.errorBanner_.show('GALLERY_NO_IMAGES'); | 590 this.errorBanner_.show('GALLERY_NO_IMAGES'); |
588 }.bind(this)); | 591 }.bind(this)); |
589 } | 592 } |
590 }.bind(this), 0); | 593 }.bind(this), 0); |
591 }; | 594 }; |
592 | 595 |
593 /** | 596 /** |
594 * @param {number} direction -1 for left, 1 for right. | 597 * @param {number} direction -1 for left, 1 for right. |
595 * @return {number} Next index in the given direction, with wrapping. | 598 * @return {number} Next index in the given direction, with wrapping. |
596 * @private | 599 * @private |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
710 | 713 |
711 var extIndex = entry.name.lastIndexOf('.'); | 714 var extIndex = entry.name.lastIndexOf('.'); |
712 var ext = extIndex < 0 ? '' : | 715 var ext = extIndex < 0 ? '' : |
713 entry.name.substr(extIndex + 1).toLowerCase(); | 716 entry.name.substr(extIndex + 1).toLowerCase(); |
714 if (ext === 'jpeg') ext = 'jpg'; | 717 if (ext === 'jpeg') ext = 'jpg'; |
715 ImageUtil.metrics.recordEnum( | 718 ImageUtil.metrics.recordEnum( |
716 ImageUtil.getMetricName('FileType'), ext, ImageUtil.FILE_TYPES); | 719 ImageUtil.getMetricName('FileType'), ext, ImageUtil.FILE_TYPES); |
717 | 720 |
718 // Enable or disable buttons for editing and printing. | 721 // Enable or disable buttons for editing and printing. |
719 if (error) { | 722 if (error) { |
720 this.editButton_.setAttribute('disabled', ''); | 723 this.editButton_.disabled = true; |
721 this.printButton_.setAttribute('disabled', ''); | 724 this.printButton_.disabled = true; |
722 } else { | 725 } else { |
723 this.editButton_.removeAttribute('disabled'); | 726 this.editButton_.disabled = false; |
724 this.printButton_.removeAttribute('disabled'); | 727 this.printButton_.disabled = false; |
725 } | 728 } |
726 | 729 |
727 // For once edited image, disallow the 'overwrite' setting change. | 730 // For once edited image, disallow the 'overwrite' setting change. |
728 ImageUtil.setAttribute(this.options_, 'saved', | 731 ImageUtil.setAttribute(this.options_, 'saved', |
729 !this.getSelectedItem().isOriginal()); | 732 !this.getSelectedItem().isOriginal()); |
730 | 733 |
731 chrome.storage.local.get(SlideMode.OVERWRITE_BUBBLE_KEY, | 734 chrome.storage.local.get(SlideMode.OVERWRITE_BUBBLE_KEY, |
732 function(values) { | 735 function(values) { |
733 var times = values[SlideMode.OVERWRITE_BUBBLE_KEY] || 0; | 736 var times = values[SlideMode.OVERWRITE_BUBBLE_KEY] || 0; |
734 if (times < SlideMode.OVERWRITE_BUBBLE_MAX_TIMES) { | 737 if (times < SlideMode.OVERWRITE_BUBBLE_MAX_TIMES) { |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
849 break; | 852 break; |
850 } | 853 } |
851 return true; // Consume all keystrokes in the slideshow mode. | 854 return true; // Consume all keystrokes in the slideshow mode. |
852 } | 855 } |
853 | 856 |
854 if (this.isEditing() && this.editor_.onKeyDown(event)) | 857 if (this.isEditing() && this.editor_.onKeyDown(event)) |
855 return true; | 858 return true; |
856 | 859 |
857 switch (keyID) { | 860 switch (keyID) { |
858 case 'Ctrl-U+0050': // Ctrl+'p' prints the current image. | 861 case 'Ctrl-U+0050': // Ctrl+'p' prints the current image. |
859 if (!this.printButton_.hasAttribute('disabled')) | 862 if (!this.printButton_.disabled) |
860 this.print_(); | 863 this.print_(); |
861 break; | 864 break; |
862 | 865 |
863 case 'U+0045': // 'e' toggles the editor. | 866 case 'U+0045': // 'e' toggles the editor. |
864 if (!this.editButton_.hasAttribute('disabled')) | 867 if (!this.editButton_.disabled) |
865 this.toggleEditor(event); | 868 this.toggleEditor(event); |
866 break; | 869 break; |
867 | 870 |
868 case 'U+001B': // Escape | 871 case 'U+001B': // Escape |
869 if (this.isEditing()) { | 872 if (this.isEditing()) { |
870 this.toggleEditor(event); | 873 this.toggleEditor(event); |
871 } else if (this.viewport_.isZoomed()) { | 874 } else if (this.viewport_.isZoomed()) { |
872 this.viewport_.resetView(); | 875 this.viewport_.resetView(); |
873 this.touchHandlers_.stopOperation(); | 876 this.touchHandlers_.stopOperation(); |
874 this.imageView_.applyViewportChange(); | 877 this.imageView_.applyViewportChange(); |
(...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1559 TouchHandler.prototype.onMouseWheel_ = function(event) { | 1562 TouchHandler.prototype.onMouseWheel_ = function(event) { |
1560 var viewport = this.slideMode_.getViewport(); | 1563 var viewport = this.slideMode_.getViewport(); |
1561 if (!this.enabled_ || !viewport.isZoomed()) | 1564 if (!this.enabled_ || !viewport.isZoomed()) |
1562 return; | 1565 return; |
1563 this.stopOperation(); | 1566 this.stopOperation(); |
1564 viewport.setOffset( | 1567 viewport.setOffset( |
1565 viewport.getOffsetX() + event.wheelDeltaX, | 1568 viewport.getOffsetX() + event.wheelDeltaX, |
1566 viewport.getOffsetY() + event.wheelDeltaY); | 1569 viewport.getOffsetY() + event.wheelDeltaY); |
1567 this.slideMode_.applyViewportChange(); | 1570 this.slideMode_.applyViewportChange(); |
1568 }; | 1571 }; |
OLD | NEW |