Merge "add filmstrip DPAD capabilities" into gb-ub-photos-denali
diff --git a/src/com/android/camera/ButtonManager.java b/src/com/android/camera/ButtonManager.java
index 18be6e6..66e28c1 100644
--- a/src/com/android/camera/ButtonManager.java
+++ b/src/com/android/camera/ButtonManager.java
@@ -506,7 +506,7 @@
     /**
      * Enable a camera button.
      */
-    private void enableCameraButton(MultiToggleImageButton button,
+    private void enableCameraButton(final MultiToggleImageButton button,
             final ButtonCallback cb, int resIdImages) {
 
         if (resIdImages > 0) {
@@ -522,6 +522,11 @@
                 mSettingsManager.setStringValueIndex(SettingsManager.SETTING_CAMERA_ID, state);
                 int cameraId = Integer.parseInt(mSettingsManager.get(
                         SettingsManager.SETTING_CAMERA_ID));
+                // This is a quick fix for ISE in Gcam module which can be
+                // found by rapid pressing camera switch button. The assumption
+                // here is that each time this button is clicked, the listener
+                // will do something and then enable this button again.
+                button.setEnabled(false);
                 if (cb != null) {
                     cb.onStateChanged(cameraId);
                 }
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 3bfa6cb..027b1ed 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -533,7 +533,6 @@
                 @Override
                 public void onFilmstripShown() {
                     mFilmstripVisible = true;
-                    decrementPeekAnimPlayTimes();
                     updateUiByData(mFilmstripController.getCurrentId());
                 }
 
@@ -903,23 +902,6 @@
     }
 
     @Override
-    public boolean shouldShowShimmy() {
-        int remainingTimes = mSettingsManager.getInt(
-                SettingsManager.SETTING_SHIMMY_REMAINING_PLAY_TIMES_INDEX);
-        return remainingTimes > 0;
-    }
-
-    @Override
-    public void decrementShimmyPlayTimes() {
-        int remainingTimes = mSettingsManager.getInt(
-                SettingsManager.SETTING_SHIMMY_REMAINING_PLAY_TIMES_INDEX) - 1;
-        if (remainingTimes >= 0) {
-            mSettingsManager.setInt(SettingsManager.SETTING_SHIMMY_REMAINING_PLAY_TIMES_INDEX,
-                    remainingTimes);
-        }
-    }
-
-    @Override
     public void updatePreviewTransform(Matrix matrix) {
         mCameraAppUI.updatePreviewTransform(matrix);
     }
@@ -1000,20 +982,6 @@
     }
 
     /**
-     * Decrement the remaining play times for peek animation.
-     */
-    private void decrementPeekAnimPlayTimes() {
-        int remainingTimes = mSettingsManager.getInt(
-                SettingsManager.SETTING_FILMSTRIP_PEEK_ANIM_REMAINING_PLAY_TIMES_INDEX) - 1;
-        if (remainingTimes < 0) {
-            return;
-        }
-        mSettingsManager
-                .setInt(SettingsManager.SETTING_FILMSTRIP_PEEK_ANIM_REMAINING_PLAY_TIMES_INDEX,
-                        remainingTimes);
-    }
-
-    /**
      * Starts the filmstrip peek animation if the filmstrip is not visible.
      * Only {@link LocalData#LOCAL_IMAGE}, {@link
      * LocalData#LOCAL_IN_PROGRESS_DATA} and {@link
@@ -1032,11 +1000,6 @@
             return;
         }
 
-        int remainingTimes = mSettingsManager.getInt(
-                SettingsManager.SETTING_FILMSTRIP_PEEK_ANIM_REMAINING_PLAY_TIMES_INDEX);
-        if (remainingTimes <= 0) {
-            return;
-        }
         mPeekAnimationHandler.startDecodingJob(data, new Callback<Bitmap>() {
             @Override
             public void onCallback(Bitmap result) {
diff --git a/src/com/android/camera/app/AppController.java b/src/com/android/camera/app/AppController.java
index 17692ae..527221c 100644
--- a/src/com/android/camera/app/AppController.java
+++ b/src/com/android/camera/app/AppController.java
@@ -173,17 +173,6 @@
     public void updatePreviewAspectRatio(float aspectRatio);
 
     /**
-     * Returns whether shimmy should be shown based on the times remaining in
-     * the preference.
-     */
-    public boolean shouldShowShimmy();
-
-    /**
-     * Decrement the times shimmy should play.
-     */
-    public void decrementShimmyPlayTimes();
-
-    /**
      * Gets called from module when the module needs to change the transform matrix
      * of the preview TextureView. It is encouraged to use
      * {@link #updatePreviewAspectRatio(float)} over this function, unless the module
diff --git a/src/com/android/camera/app/CameraAppUI.java b/src/com/android/camera/app/CameraAppUI.java
index c5ab01b..381479ee 100644
--- a/src/com/android/camera/app/CameraAppUI.java
+++ b/src/com/android/camera/app/CameraAppUI.java
@@ -446,7 +446,6 @@
     private ShutterButton mShutterButton;
     private BottomBar mBottomBar;
     private ModeOptionsOverlay mModeOptionsOverlay;
-    private boolean mShouldShowShimmy = false;
     private IndicatorIconController mIndicatorIconController;
     private View mFocusOverlay;
     private FrameLayout mTutorialsPlaceholder;
@@ -835,10 +834,7 @@
     private void showShimmyDelayed() {
         if (!mIsCaptureIntent) {
             // Show shimmy in SHIMMY_DELAY_MS
-            mShouldShowShimmy = mController.shouldShowShimmy();
-            if (mShouldShowShimmy) {
-                mModeListView.showModeSwitcherHint();
-            }
+            mModeListView.showModeSwitcherHint();
         }
     }
 
@@ -869,12 +865,7 @@
 
     @Override
     public void onOpenFullScreen() {
-        if (mShouldShowShimmy) {
-            mController.decrementShimmyPlayTimes();
-            // Sets should show shimmy flag to false for this session (i.e. until
-            // next onResume)
-            mShouldShowShimmy = false;
-        }
+        // Do nothing.
     }
 
     @Override
diff --git a/src/com/android/camera/settings/SettingsCache.java b/src/com/android/camera/settings/SettingsCache.java
index d3dea25..42df794 100644
--- a/src/com/android/camera/settings/SettingsCache.java
+++ b/src/com/android/camera/settings/SettingsCache.java
@@ -121,8 +121,6 @@
                 SettingsManager.SETTING_VIDEO_FIRST_USE_HINT_SHOWN);
         mKeyMap.put(SettingsManager.KEY_STARTUP_MODULE_INDEX,
                 SettingsManager.SETTING_STARTUP_MODULE_INDEX);
-        mKeyMap.put(SettingsManager.KEY_SHIMMY_REMAINING_PLAY_TIMES,
-                SettingsManager.SETTING_SHIMMY_REMAINING_PLAY_TIMES_INDEX);
         mKeyMap.put(SettingsManager.KEY_CAMERA_MODULE_LAST_USED,
                 SettingsManager.SETTING_KEY_CAMERA_MODULE_LAST_USED_INDEX);
         mKeyMap.put(SettingsManager.KEY_CAMERA_PANO_ORIENTATION,
@@ -211,8 +209,6 @@
                 return SettingsManager.getHintVideoSetting(mContext);
             case SettingsManager.SETTING_STARTUP_MODULE_INDEX:
                 return SettingsManager.getStartupModuleSetting(mContext);
-            case SettingsManager.SETTING_SHIMMY_REMAINING_PLAY_TIMES_INDEX:
-                return SettingsManager.getShimmyRemainingTimesSetting(mContext);
             case SettingsManager.SETTING_KEY_CAMERA_MODULE_LAST_USED_INDEX:
                 return SettingsManager.getLastUsedCameraModule(mContext);
             case SettingsManager.SETTING_CAMERA_PANO_ORIENTATION:
@@ -225,8 +221,6 @@
                 return SettingsManager.getFlashSupportedBackCameraSetting(mContext);
             case SettingsManager.SETTING_STRICT_UPGRADE_VERSION:
                 return SettingsManager.getStrictUpgradeVersionSetting(mContext);
-            case SettingsManager.SETTING_FILMSTRIP_PEEK_ANIM_REMAINING_PLAY_TIMES_INDEX:
-                return SettingsManager.getPeekAnimRemainingTimesSetting(mContext);
             case SettingsManager.SETTING_REQUEST_RETURN_HDR_PLUS:
                 return SettingsManager.getRequestReturnHdrPlusSetting(mContext);
             default:
diff --git a/src/com/android/camera/settings/SettingsManager.java b/src/com/android/camera/settings/SettingsManager.java
index fc60914..f4a98ca 100644
--- a/src/com/android/camera/settings/SettingsManager.java
+++ b/src/com/android/camera/settings/SettingsManager.java
@@ -362,14 +362,12 @@
     public static final int SETTING_CAMERA_FIRST_USE_HINT_SHOWN = 19;
     public static final int SETTING_VIDEO_FIRST_USE_HINT_SHOWN = 20;
     public static final int SETTING_STARTUP_MODULE_INDEX = 21;
-    public static final int SETTING_SHIMMY_REMAINING_PLAY_TIMES_INDEX = 22;
     public static final int SETTING_KEY_CAMERA_MODULE_LAST_USED_INDEX = 23;
     public static final int SETTING_CAMERA_PANO_ORIENTATION = 24;
     public static final int SETTING_CAMERA_GRID_LINES = 25;
     public static final int SETTING_RELEASE_DIALOG_LAST_SHOWN_VERSION = 26;
     public static final int SETTING_FLASH_SUPPORTED_BACK_CAMERA = 27;
     public static final int SETTING_STRICT_UPGRADE_VERSION = 28;
-    public static final int SETTING_FILMSTRIP_PEEK_ANIM_REMAINING_PLAY_TIMES_INDEX = 29;
     // A boolean for requesting to return to HDR plus
     // as soon as possible, if a user requests a setting/mode option
     // that forces them to leave HDR plus.
@@ -401,8 +399,6 @@
     public static final String KEY_VIDEO_FIRST_USE_HINT_SHOWN =
             "pref_video_first_use_hint_shown_key";
     public static final String KEY_STARTUP_MODULE_INDEX = "camera.startup_module";
-    public static final String KEY_SHIMMY_REMAINING_PLAY_TIMES =
-            "pref_shimmy_remaining_play_times";
     public static final String KEY_CAMERA_MODULE_LAST_USED =
             "pref_camera_module_last_used_index";
     public static final String KEY_CAMERA_PANO_ORIENTATION = "pref_camera_pano_orientation";
@@ -412,8 +408,6 @@
     public static final String KEY_FLASH_SUPPORTED_BACK_CAMERA =
             "pref_flash_supported_back_camera";
     public static final String KEY_STRICT_UPGRADE_VERSION = "pref_strict_upgrade_version";
-    public static final String KEY_FILMSTRIP_PEEK_ANIM_REMAINING_PLAY_TIMES =
-            "pref_filmstrip_peek_anim_remaining_play_times";
     public static final String KEY_REQUEST_RETURN_HDR_PLUS = "pref_request_return_hdr_plus";
 
     public static final int WHITE_BALANCE_DEFAULT_INDEX = 2;
@@ -1108,12 +1102,6 @@
                 KEY_STARTUP_MODULE_INDEX, values, FLUSH_OFF);
     }
 
-    public static Setting getShimmyRemainingTimesSetting(Context context) {
-        String defaultValue = context.getString(R.string.pref_shimmy_play_times);
-        return new Setting(SOURCE_DEFAULT, TYPE_INTEGER, defaultValue,
-                KEY_SHIMMY_REMAINING_PLAY_TIMES, null, FLUSH_OFF);
-    }
-
     public static Setting getLastUsedCameraModule(Context context) {
         String defaultValue = Integer.toString(context.getResources()
                 .getInteger(R.integer.camera_mode_photo));
@@ -1154,12 +1142,6 @@
                 KEY_STRICT_UPGRADE_VERSION, null, FLUSH_OFF);
     }
 
-    public static Setting getPeekAnimRemainingTimesSetting(Context context) {
-        String defaultValue = context.getString(R.string.pref_filmstrip_peek_anim_play_times);
-        return new Setting(SOURCE_DEFAULT, TYPE_INTEGER, defaultValue,
-                KEY_FILMSTRIP_PEEK_ANIM_REMAINING_PLAY_TIMES, null, FLUSH_OFF);
-    }
-
     public static Setting getRequestReturnHdrPlusSetting(Context context) {
         String defaultValue = context.getString(R.string.setting_none_value);
         return new Setting(SOURCE_MODULE, TYPE_BOOLEAN, VALUE_OFF,