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

Unified Diff: ui/file_manager/gallery/js/slide_mode.js

Issue 398283002: Gallery: Add the offset feature in the slide mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed. Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/file_manager/gallery/js/image_editor/viewport.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/file_manager/gallery/js/slide_mode.js
diff --git a/ui/file_manager/gallery/js/slide_mode.js b/ui/file_manager/gallery/js/slide_mode.js
index 2d48a8940a78ea894dcc7996c6c5d7541c81e9da..72edb128f457bd5ea8946500513eecfd6be06436 100644
--- a/ui/file_manager/gallery/js/slide_mode.js
+++ b/ui/file_manager/gallery/js/slide_mode.js
@@ -49,15 +49,11 @@ function SlideMode(container, content, toolbar, prompt,
}
/**
- * SlideMode extends cr.EventTarget.
- */
-SlideMode.prototype.__proto__ = cr.EventTarget.prototype;
-
-/**
* List of available editor modes.
* @type {Array.<ImageEditor.Mode>}
+ * @const
*/
-SlideMode.editorModes = [
+SlideMode.EDITOR_MODES = Object.freeze([
new ImageEditor.Mode.InstantAutofix(),
new ImageEditor.Mode.Crop(),
new ImageEditor.Mode.Exposure(),
@@ -65,7 +61,24 @@ SlideMode.editorModes = [
'rotate_left', 'GALLERY_ROTATE_LEFT', new Command.Rotate(-1)),
new ImageEditor.Mode.OneClick(
'rotate_right', 'GALLERY_ROTATE_RIGHT', new Command.Rotate(1))
-];
+]);
+
+/**
+ * Map of the key identifier and offset delta.
+ * @type {Object.<string, Array.<number>})
+ * @const
+ */
+SlideMode.KEY_OFFSET_MAP = Object.freeze({
+ 'Up': Object.freeze([0, 20]),
+ 'Down': Object.freeze([0, -20]),
+ 'Left': Object.freeze([20, 0]),
+ 'Right': Object.freeze([-20, 0])
+});
+
+/**
+ * SlideMode extends cr.EventTarget.
+ */
+SlideMode.prototype.__proto__ = cr.EventTarget.prototype;
/**
* @return {string} Mode name.
@@ -216,7 +229,7 @@ SlideMode.prototype.initDom_ = function() {
toolbar: this.editBarMain_,
mode: this.editBarModeWrapper_
},
- SlideMode.editorModes,
+ SlideMode.EDITOR_MODES,
this.displayStringFunction_,
this.onToolsVisibilityChanged_.bind(this));
@@ -334,7 +347,7 @@ SlideMode.prototype.leave = function(zoomToRect, callback) {
callback();
}.bind(this);
- this.viewport_.setZoomIndex(0);
+ this.viewport_.resetView();
if (this.getItemCount_() === 0) {
this.showErrorBanner_(false);
commitDone();
@@ -846,9 +859,14 @@ SlideMode.prototype.onKeyDown = function(event) {
break;
case 'U+001B': // Escape
- if (!this.isEditing())
+ if (this.isEditing()) {
+ this.toggleEditor(event);
+ } else if (this.viewport_.getZoomIndex() !== 0) {
+ this.viewport_.resetView();
+ this.imageView_.applyViewportChange();
+ } else {
return false; // Not handled.
- this.toggleEditor(event);
+ }
break;
case 'Home':
@@ -861,6 +879,19 @@ SlideMode.prototype.onKeyDown = function(event) {
case 'Down':
case 'Left':
case 'Right':
+ if (!this.isEditing() && this.viewport_.getZoomIndex() !== 0) {
+ var delta = SlideMode.KEY_OFFSET_MAP[keyID];
+ this.viewport_.setOffset(
+ ~~(this.viewport_.getOffsetX() +
+ delta[0] * this.viewport_.getZoom()),
+ ~~(this.viewport_.getOffsetY() +
+ delta[1] * this.viewport_.getZoom()),
+ true);
+ this.imageView_.applyViewportChange();
+ } else {
+ this.advanceWithKeyboard(keyID);
+ }
+ break;
case 'MediaNextTrack':
case 'MediaPreviousTrack':
this.advanceWithKeyboard(keyID);
@@ -879,6 +910,13 @@ SlideMode.prototype.onKeyDown = function(event) {
this.imageView_.applyViewportChange();
}
break;
+
+ case 'Ctrl-U+0030': // Ctrl+'0' zoom reset.
+ if (!this.isEditing()) {
+ this.viewport_.resetView();
+ this.imageView_.applyViewportChange();
+ }
+ break;
}
return true;
@@ -1046,7 +1084,7 @@ SlideMode.prototype.isSlideshowOn_ = function() {
*/
SlideMode.prototype.startSlideshow = function(opt_interval, opt_event) {
// Reset zoom.
- this.viewport_.setZoomIndex(0);
+ this.viewport_.resetView();
this.imageView_.applyViewportChange();
// Set the attribute early to prevent the toolbar from flashing when
@@ -1201,7 +1239,7 @@ SlideMode.prototype.toggleEditor = function(opt_event) {
if (this.isEditing()) { // isEditing has just been flipped to a new value.
// Reset zoom.
- this.viewport_.setZoomIndex(0);
+ this.viewport_.resetView();
this.imageView_.applyViewportChange();
if (this.context_.readonlyDirName) {
this.editor_.getPrompt().showAt(
« no previous file with comments | « ui/file_manager/gallery/js/image_editor/viewport.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698