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

Side by Side Diff: ui/file_manager/gallery/js/slide_mode.js

Issue 420743002: Gallery: Store image caches in Gallery items. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed. Created 6 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 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 19 matching lines...) Expand all
30 this.prompt_ = prompt; 30 this.prompt_ = prompt;
31 this.dataModel_ = dataModel; 31 this.dataModel_ = dataModel;
32 this.selectionModel_ = selectionModel; 32 this.selectionModel_ = selectionModel;
33 this.context_ = context; 33 this.context_ = context;
34 this.metadataCache_ = context.metadataCache; 34 this.metadataCache_ = context.metadataCache;
35 this.toggleMode_ = toggleMode; 35 this.toggleMode_ = toggleMode;
36 this.displayStringFunction_ = displayStringFunction; 36 this.displayStringFunction_ = displayStringFunction;
37 37
38 this.onSelectionBound_ = this.onSelection_.bind(this); 38 this.onSelectionBound_ = this.onSelection_.bind(this);
39 this.onSpliceBound_ = this.onSplice_.bind(this); 39 this.onSpliceBound_ = this.onSplice_.bind(this);
40 this.onContentBound_ = this.onContentChange_.bind(this);
41 40
42 // Unique numeric key, incremented per each load attempt used to discard 41 // Unique numeric key, incremented per each load attempt used to discard
43 // old attempts. This can happen especially when changing selection fast or 42 // old attempts. This can happen especially when changing selection fast or
44 // Internet connection is slow. 43 // Internet connection is slow.
45 this.currentUniqueKey_ = 0; 44 this.currentUniqueKey_ = 0;
46 45
47 this.initListeners_(); 46 this.initListeners_();
48 this.initDom_(); 47 this.initDom_();
49 } 48 }
50 49
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 SlideMode.prototype.enter = function( 248 SlideMode.prototype.enter = function(
250 zoomFromRect, displayCallback, loadCallback) { 249 zoomFromRect, displayCallback, loadCallback) {
251 this.sequenceDirection_ = 0; 250 this.sequenceDirection_ = 0;
252 this.sequenceLength_ = 0; 251 this.sequenceLength_ = 0;
253 252
254 var loadDone = function(loadType, delay) { 253 var loadDone = function(loadType, delay) {
255 this.active_ = true; 254 this.active_ = true;
256 255
257 this.selectionModel_.addEventListener('change', this.onSelectionBound_); 256 this.selectionModel_.addEventListener('change', this.onSelectionBound_);
258 this.dataModel_.addEventListener('splice', this.onSpliceBound_); 257 this.dataModel_.addEventListener('splice', this.onSpliceBound_);
259 this.dataModel_.addEventListener('content', this.onContentBound_);
260 258
261 ImageUtil.setAttribute(this.arrowBox_, 'active', this.getItemCount_() > 1); 259 ImageUtil.setAttribute(this.arrowBox_, 'active', this.getItemCount_() > 1);
262 this.ribbon_.enable(); 260 this.ribbon_.enable();
263 261
264 // Wait 1000ms after the animation is done, then prefetch the next image. 262 // Wait 1000ms after the animation is done, then prefetch the next image.
265 this.requestPrefetch(1, delay + 1000); 263 this.requestPrefetch(1, delay + 1000);
266 264
267 if (loadCallback) loadCallback(); 265 if (loadCallback) loadCallback();
268 }.bind(this); 266 }.bind(this);
269 267
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 }); 305 });
308 }.bind(this)).then(function(delay) { 306 }.bind(this)).then(function(delay) {
309 // Turn the mode active. 307 // Turn the mode active.
310 this.active_ = true; 308 this.active_ = true;
311 ImageUtil.setAttribute(this.arrowBox_, 'active', this.getItemCount_() > 1); 309 ImageUtil.setAttribute(this.arrowBox_, 'active', this.getItemCount_() > 1);
312 this.ribbon_.enable(); 310 this.ribbon_.enable();
313 311
314 // Register handlers. 312 // Register handlers.
315 this.selectionModel_.addEventListener('change', this.onSelectionBound_); 313 this.selectionModel_.addEventListener('change', this.onSelectionBound_);
316 this.dataModel_.addEventListener('splice', this.onSpliceBound_); 314 this.dataModel_.addEventListener('splice', this.onSpliceBound_);
317 this.dataModel_.addEventListener('content', this.onContentBound_);
318 this.touchHandlers_.enabled = true; 315 this.touchHandlers_.enabled = true;
319 316
320 // Wait 1000ms after the animation is done, then prefetch the next image. 317 // Wait 1000ms after the animation is done, then prefetch the next image.
321 this.requestPrefetch(1, delay + 1000); 318 this.requestPrefetch(1, delay + 1000);
322 319
323 // Call load callback. 320 // Call load callback.
324 if (loadCallback) 321 if (loadCallback)
325 loadCallback(); 322 loadCallback();
326 }.bind(this)).catch(function(error) { 323 }.bind(this)).catch(function(error) {
327 console.error(error.stack, error); 324 console.error(error.stack, error);
328 }); 325 });
329 }; 326 };
330 327
331 /** 328 /**
332 * Leave the mode. 329 * Leave the mode.
333 * @param {Rect} zoomToRect Rectangle for zoom effect. 330 * @param {Rect} zoomToRect Rectangle for zoom effect.
334 * @param {function} callback Called when the image is committed and 331 * @param {function} callback Called when the image is committed and
335 * the zoom-out animation has started. 332 * the zoom-out animation has started.
336 */ 333 */
337 SlideMode.prototype.leave = function(zoomToRect, callback) { 334 SlideMode.prototype.leave = function(zoomToRect, callback) {
338 var commitDone = function() { 335 var commitDone = function() {
339 this.stopEditing_(); 336 this.stopEditing_();
340 this.stopSlideshow_(); 337 this.stopSlideshow_();
341 ImageUtil.setAttribute(this.arrowBox_, 'active', false); 338 ImageUtil.setAttribute(this.arrowBox_, 'active', false);
342 this.selectionModel_.removeEventListener( 339 this.selectionModel_.removeEventListener(
343 'change', this.onSelectionBound_); 340 'change', this.onSelectionBound_);
344 this.dataModel_.removeEventListener('splice', this.onSpliceBound_); 341 this.dataModel_.removeEventListener('splice', this.onSpliceBound_);
345 this.dataModel_.removeEventListener('content', this.onContentBound_);
346 this.ribbon_.disable(); 342 this.ribbon_.disable();
347 this.active_ = false; 343 this.active_ = false;
348 if (this.savedSelection_) 344 if (this.savedSelection_)
349 this.selectionModel_.selectedIndexes = this.savedSelection_; 345 this.selectionModel_.selectedIndexes = this.savedSelection_;
350 this.unloadImage_(zoomToRect); 346 this.unloadImage_(zoomToRect);
351 callback(); 347 callback();
352 }.bind(this); 348 }.bind(this);
353 349
354 this.viewport_.resetView(); 350 this.viewport_.resetView();
355 if (this.getItemCount_() === 0) { 351 if (this.getItemCount_() === 0) {
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 ImageUtil.metrics.recordUserAction(ImageUtil.getMetricName('Edit')); 985 ImageUtil.metrics.recordUserAction(ImageUtil.getMetricName('Edit'));
990 986
991 callback(); 987 callback();
992 cr.dispatchSimpleEvent(this, 'image-saved'); 988 cr.dispatchSimpleEvent(this, 'image-saved');
993 }.bind(this)).catch(function(error) { 989 }.bind(this)).catch(function(error) {
994 console.error(error.stack || error); 990 console.error(error.stack || error);
995 }); 991 });
996 }; 992 };
997 993
998 /** 994 /**
999 * Update caches when the selected item has been renamed.
1000 * @param {Event} event Event.
1001 * @private
1002 */
1003 SlideMode.prototype.onContentChange_ = function(event) {
1004 var newEntry = event.item.getEntry();
1005 if (!util.isSameEntry(newEntry, event.oldEntry))
1006 this.imageView_.changeEntry(newEntry);
1007 };
1008
1009 /**
1010 * Flash 'Saved' label briefly to indicate that the image has been saved. 995 * Flash 'Saved' label briefly to indicate that the image has been saved.
1011 * @private 996 * @private
1012 */ 997 */
1013 SlideMode.prototype.flashSavedLabel_ = function() { 998 SlideMode.prototype.flashSavedLabel_ = function() {
1014 var setLabelHighlighted = 999 var setLabelHighlighted =
1015 ImageUtil.setAttribute.bind(null, this.savedLabel_, 'highlighted'); 1000 ImageUtil.setAttribute.bind(null, this.savedLabel_, 'highlighted');
1016 setTimeout(setLabelHighlighted.bind(null, true), 0); 1001 setTimeout(setLabelHighlighted.bind(null, true), 0);
1017 setTimeout(setLabelHighlighted.bind(null, false), 300); 1002 setTimeout(setLabelHighlighted.bind(null, false), 300);
1018 }; 1003 };
1019 1004
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
1551 else 1536 else
1552 viewport.setRotation(this.gestureStartRotation_); 1537 viewport.setRotation(this.gestureStartRotation_);
1553 this.slideMode_.applyViewportChange(); 1538 this.slideMode_.applyViewportChange();
1554 break; 1539 break;
1555 } 1540 }
1556 1541
1557 // Update the last event. 1542 // Update the last event.
1558 this.lastEvent_ = event; 1543 this.lastEvent_ = event;
1559 this.lastZoom_ = viewport.getZoom(); 1544 this.lastZoom_ = viewport.getZoom();
1560 }; 1545 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698