| 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 /** | 5 /** |
| 6 * Slide mode displays a single image and has a set of controls to navigate | 6 * Slide mode displays a single image and has a set of controls to navigate |
| 7 * between the images and to edit an image. | 7 * between the images and to edit an image. |
| 8 * | 8 * |
| 9 * @param {!HTMLElement} container Main container element. | 9 * @param {!HTMLElement} container Main container element. |
| 10 * @param {!HTMLElement} content Content container element. | 10 * @param {!HTMLElement} content Content container element. |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 */ | 162 */ |
| 163 this.sequenceLength_ = 0; | 163 this.sequenceLength_ = 0; |
| 164 | 164 |
| 165 /** | 165 /** |
| 166 * @type {Array<number>} | 166 * @type {Array<number>} |
| 167 * @private | 167 * @private |
| 168 */ | 168 */ |
| 169 this.savedSelection_ = null; | 169 this.savedSelection_ = null; |
| 170 | 170 |
| 171 /** | 171 /** |
| 172 * @type {Gallery.Item} | 172 * @type {GalleryItem} |
| 173 * @private | 173 * @private |
| 174 */ | 174 */ |
| 175 this.displayedItem_ = null; | 175 this.displayedItem_ = null; |
| 176 | 176 |
| 177 /** | 177 /** |
| 178 * @type {?number} | 178 * @type {?number} |
| 179 * @private | 179 * @private |
| 180 */ | 180 */ |
| 181 this.slideHint_ = null; | 181 this.slideHint_ = null; |
| 182 | 182 |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 469 */ | 469 */ |
| 470 SlideMode.KEY_OFFSET_MAP = { | 470 SlideMode.KEY_OFFSET_MAP = { |
| 471 'Up': [0, 20], | 471 'Up': [0, 20], |
| 472 'Down': [0, -20], | 472 'Down': [0, -20], |
| 473 'Left': [20, 0], | 473 'Left': [20, 0], |
| 474 'Right': [-20, 0] | 474 'Right': [-20, 0] |
| 475 }; | 475 }; |
| 476 | 476 |
| 477 /** | 477 /** |
| 478 * Returns editor warning message if it should be shown. | 478 * Returns editor warning message if it should be shown. |
| 479 * @param {!Gallery.Item} item | 479 * @param {!GalleryItem} item |
| 480 * @param {string} readonlyDirName Name of read only volume. Pass empty string | 480 * @param {string} readonlyDirName Name of read only volume. Pass empty string |
| 481 * if volume is writable. | 481 * if volume is writable. |
| 482 * @param {!DirectoryEntry} fallbackSaveDirectory | 482 * @param {!DirectoryEntry} fallbackSaveDirectory |
| 483 * @return {!Promise<?string>} Warning message. null if no warning message | 483 * @return {!Promise<?string>} Warning message. null if no warning message |
| 484 * should be shown. | 484 * should be shown. |
| 485 */ | 485 */ |
| 486 SlideMode.getEditorWarningMessage = function( | 486 SlideMode.getEditorWarningMessage = function( |
| 487 item, readonlyDirName, fallbackSaveDirectory) { | 487 item, readonlyDirName, fallbackSaveDirectory) { |
| 488 var isReadOnlyVolume = !!readonlyDirName; | 488 var isReadOnlyVolume = !!readonlyDirName; |
| 489 var isWritableFormat = item.isWritableFormat(); | 489 var isWritableFormat = item.isWritableFormat(); |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 668 /** | 668 /** |
| 669 * @return {number} Item count. | 669 * @return {number} Item count. |
| 670 * @private | 670 * @private |
| 671 */ | 671 */ |
| 672 SlideMode.prototype.getItemCount_ = function() { | 672 SlideMode.prototype.getItemCount_ = function() { |
| 673 return this.dataModel_.length; | 673 return this.dataModel_.length; |
| 674 }; | 674 }; |
| 675 | 675 |
| 676 /** | 676 /** |
| 677 * @param {number} index Index. | 677 * @param {number} index Index. |
| 678 * @return {Gallery.Item} Item. | 678 * @return {GalleryItem} Item. |
| 679 */ | 679 */ |
| 680 SlideMode.prototype.getItem = function(index) { | 680 SlideMode.prototype.getItem = function(index) { |
| 681 var item = | 681 var item = |
| 682 /** @type {(Gallery.Item|undefined)} */ (this.dataModel_.item(index)); | 682 /** @type {(GalleryItem|undefined)} */ (this.dataModel_.item(index)); |
| 683 return item === undefined ? null : item; | 683 return item === undefined ? null : item; |
| 684 }; | 684 }; |
| 685 | 685 |
| 686 /** | 686 /** |
| 687 * @return {number} Selected index. | 687 * @return {number} Selected index. |
| 688 */ | 688 */ |
| 689 SlideMode.prototype.getSelectedIndex = function() { | 689 SlideMode.prototype.getSelectedIndex = function() { |
| 690 return this.selectionModel_.selectedIndex; | 690 return this.selectionModel_.selectedIndex; |
| 691 }; | 691 }; |
| 692 | 692 |
| 693 /** | 693 /** |
| 694 * @return {ImageRect} Screen rectangle of the selected image. | 694 * @return {ImageRect} Screen rectangle of the selected image. |
| 695 */ | 695 */ |
| 696 SlideMode.prototype.getSelectedImageRect = function() { | 696 SlideMode.prototype.getSelectedImageRect = function() { |
| 697 if (this.getSelectedIndex() < 0) | 697 if (this.getSelectedIndex() < 0) |
| 698 return null; | 698 return null; |
| 699 else | 699 else |
| 700 return this.viewport_.getImageBoundsOnScreen(); | 700 return this.viewport_.getImageBoundsOnScreen(); |
| 701 }; | 701 }; |
| 702 | 702 |
| 703 /** | 703 /** |
| 704 * @return {Gallery.Item} Selected item. | 704 * @return {GalleryItem} Selected item. |
| 705 */ | 705 */ |
| 706 SlideMode.prototype.getSelectedItem = function() { | 706 SlideMode.prototype.getSelectedItem = function() { |
| 707 return this.getItem(this.getSelectedIndex()); | 707 return this.getItem(this.getSelectedIndex()); |
| 708 }; | 708 }; |
| 709 | 709 |
| 710 /** | 710 /** |
| 711 * Toggles the full screen mode. | 711 * Toggles the full screen mode. |
| 712 * @private | 712 * @private |
| 713 */ | 713 */ |
| 714 SlideMode.prototype.toggleFullScreen_ = function() { | 714 SlideMode.prototype.toggleFullScreen_ = function() { |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 775 } else if (this.sequenceDirection_ === step) { | 775 } else if (this.sequenceDirection_ === step) { |
| 776 // Keeping going in sequence. | 776 // Keeping going in sequence. |
| 777 this.sequenceLength_++; | 777 this.sequenceLength_++; |
| 778 } else { | 778 } else { |
| 779 // Reversed the direction. Reset the counter. | 779 // Reversed the direction. Reset the counter. |
| 780 this.sequenceDirection_ = step; | 780 this.sequenceDirection_ = step; |
| 781 this.sequenceLength_ = 1; | 781 this.sequenceLength_ = 1; |
| 782 } | 782 } |
| 783 | 783 |
| 784 this.displayedItem_ = this.getSelectedItem(); | 784 this.displayedItem_ = this.getSelectedItem(); |
| 785 var selectedItem = assertInstanceof(this.getSelectedItem(), Gallery.Item); | 785 var selectedItem = assertInstanceof(this.getSelectedItem(), GalleryItem); |
| 786 | 786 |
| 787 function shouldPrefetch(loadType, step, sequenceLength) { | 787 function shouldPrefetch(loadType, step, sequenceLength) { |
| 788 // Never prefetch when selecting out of sequence. | 788 // Never prefetch when selecting out of sequence. |
| 789 if (Math.abs(step) != 1) | 789 if (Math.abs(step) != 1) |
| 790 return false; | 790 return false; |
| 791 | 791 |
| 792 // Always prefetch if the previous load was from cache. | 792 // Always prefetch if the previous load was from cache. |
| 793 if (loadType === ImageView.LoadType.CACHED_FULL) | 793 if (loadType === ImageView.LoadType.CACHED_FULL) |
| 794 return true; | 794 return true; |
| 795 | 795 |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 941 */ | 941 */ |
| 942 SlideMode.prototype.selectLast = function() { | 942 SlideMode.prototype.selectLast = function() { |
| 943 this.select(this.getItemCount_() - 1); | 943 this.select(this.getItemCount_() - 1); |
| 944 }; | 944 }; |
| 945 | 945 |
| 946 // Loading/unloading | 946 // Loading/unloading |
| 947 | 947 |
| 948 /** | 948 /** |
| 949 * Load and display an item. | 949 * Load and display an item. |
| 950 * | 950 * |
| 951 * @param {!Gallery.Item} item Item. | 951 * @param {!GalleryItem} item Item. |
| 952 * @param {!ImageView.Effect} effect Transition effect object. | 952 * @param {!ImageView.Effect} effect Transition effect object. |
| 953 * @param {function()} displayCallback Called when the image is displayed | 953 * @param {function()} displayCallback Called when the image is displayed |
| 954 * (which can happen before the image load due to caching). | 954 * (which can happen before the image load due to caching). |
| 955 * @param {function(number, number)} loadCallback Called when the image is fully | 955 * @param {function(number, number)} loadCallback Called when the image is fully |
| 956 * loaded. | 956 * loaded. |
| 957 * @private | 957 * @private |
| 958 */ | 958 */ |
| 959 SlideMode.prototype.loadItem_ = function( | 959 SlideMode.prototype.loadItem_ = function( |
| 960 item, effect, displayCallback, loadCallback) { | 960 item, effect, displayCallback, loadCallback) { |
| 961 this.showSpinner_(true); | 961 this.showSpinner_(true); |
| 962 | 962 |
| 963 var loadDone = this.itemLoaded_.bind(this, item, loadCallback); | 963 var loadDone = this.itemLoaded_.bind(this, item, loadCallback); |
| 964 | 964 |
| 965 var displayDone = function() { | 965 var displayDone = function() { |
| 966 cr.dispatchSimpleEvent(this, 'image-displayed'); | 966 cr.dispatchSimpleEvent(this, 'image-displayed'); |
| 967 displayCallback(); | 967 displayCallback(); |
| 968 }.bind(this); | 968 }.bind(this); |
| 969 | 969 |
| 970 this.editor_.openSession( | 970 this.editor_.openSession( |
| 971 item, | 971 item, |
| 972 effect, | 972 effect, |
| 973 this.saveCurrentImage_.bind(this, item), | 973 this.saveCurrentImage_.bind(this, item), |
| 974 displayDone, | 974 displayDone, |
| 975 loadDone); | 975 loadDone); |
| 976 }; | 976 }; |
| 977 | 977 |
| 978 /** | 978 /** |
| 979 * A callback function when the editor opens a editing session for an image. | 979 * A callback function when the editor opens a editing session for an image. |
| 980 * @param {!Gallery.Item} item Gallery item. | 980 * @param {!GalleryItem} item Gallery item. |
| 981 * @param {function(number, number)} loadCallback Called when the image is fully | 981 * @param {function(number, number)} loadCallback Called when the image is fully |
| 982 * loaded. | 982 * loaded. |
| 983 * @param {number} loadType Load type. | 983 * @param {number} loadType Load type. |
| 984 * @param {number} delay Delay. | 984 * @param {number} delay Delay. |
| 985 * @param {*=} opt_error Error. | 985 * @param {*=} opt_error Error. |
| 986 * @private | 986 * @private |
| 987 */ | 987 */ |
| 988 SlideMode.prototype.itemLoaded_ = function( | 988 SlideMode.prototype.itemLoaded_ = function( |
| 989 item, loadCallback, loadType, delay, opt_error) { | 989 item, loadCallback, loadType, delay, opt_error) { |
| 990 var entry = item.getEntry(); | 990 var entry = item.getEntry(); |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1255 this.ribbon_.reset(); | 1255 this.ribbon_.reset(); |
| 1256 if (this.active_) | 1256 if (this.active_) |
| 1257 this.ribbon_.redraw(); | 1257 this.ribbon_.redraw(); |
| 1258 }; | 1258 }; |
| 1259 | 1259 |
| 1260 // Saving | 1260 // Saving |
| 1261 | 1261 |
| 1262 /** | 1262 /** |
| 1263 * Save the current image to a file. | 1263 * Save the current image to a file. |
| 1264 * | 1264 * |
| 1265 * @param {!Gallery.Item} item Item to save the image. | 1265 * @param {!GalleryItem} item Item to save the image. |
| 1266 * @param {function()} callback Callback. | 1266 * @param {function()} callback Callback. |
| 1267 * @private | 1267 * @private |
| 1268 */ | 1268 */ |
| 1269 SlideMode.prototype.saveCurrentImage_ = function(item, callback) { | 1269 SlideMode.prototype.saveCurrentImage_ = function(item, callback) { |
| 1270 this.showSpinner_(true); | 1270 this.showSpinner_(true); |
| 1271 | 1271 |
| 1272 var savedPromise = this.dataModel_.saveItem( | 1272 var savedPromise = this.dataModel_.saveItem( |
| 1273 this.volumeManager_, | 1273 this.volumeManager_, |
| 1274 item, | 1274 item, |
| 1275 this.imageView_.getCanvas(), | 1275 this.imageView_.getCanvas(), |
| (...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1965 var event = assertInstanceof(event, MouseEvent); | 1965 var event = assertInstanceof(event, MouseEvent); |
| 1966 var viewport = this.slideMode_.getViewport(); | 1966 var viewport = this.slideMode_.getViewport(); |
| 1967 if (!this.enabled_ || !viewport.isZoomed()) | 1967 if (!this.enabled_ || !viewport.isZoomed()) |
| 1968 return; | 1968 return; |
| 1969 this.stopOperation(); | 1969 this.stopOperation(); |
| 1970 viewport.setOffset( | 1970 viewport.setOffset( |
| 1971 viewport.getOffsetX() + event.wheelDeltaX, | 1971 viewport.getOffsetX() + event.wheelDeltaX, |
| 1972 viewport.getOffsetY() + event.wheelDeltaY); | 1972 viewport.getOffsetY() + event.wheelDeltaY); |
| 1973 this.slideMode_.applyViewportChange(); | 1973 this.slideMode_.applyViewportChange(); |
| 1974 }; | 1974 }; |
| OLD | NEW |