From 27371b3fbcb25d8be26e6a84b12871d0ed20f6ea Mon Sep 17 00:00:00 2001 From: Christian Frisson Date: Sat, 15 Oct 2016 22:07:17 +0200 Subject: Snap: Allow switching beyond just 2 cameras Some devices have dual rear cameras, which means that they will have more than just 2 camera ID's (0 and 1). For example, the LG G5 has 0, 1 and 2. Allow Snap to run cycle through more than just 0 and 1 Change-Id: I50d8b6c02c97961990b1fbf69b9cf706c422381c --- src/com/android/camera/MenuController.java | 1 + src/com/android/camera/PhotoMenu.java | 4 +++- src/com/android/camera/VideoMenu.java | 6 ++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/com/android/camera/MenuController.java b/src/com/android/camera/MenuController.java index 97240cb18..63815f9b7 100644 --- a/src/com/android/camera/MenuController.java +++ b/src/com/android/camera/MenuController.java @@ -104,6 +104,7 @@ public class MenuController { return; } } + index = index % ((IconListPreference) pref).getLargeIconIds().length; ((ImageView) switcher).setImageResource(pref.getLargeIconIds()[index]); } diff --git a/src/com/android/camera/PhotoMenu.java b/src/com/android/camera/PhotoMenu.java index 8afd59574..80aaa9aa6 100644 --- a/src/com/android/camera/PhotoMenu.java +++ b/src/com/android/camera/PhotoMenu.java @@ -859,6 +859,7 @@ public class PhotoMenu extends MenuController int index = pref.findIndexOfValue(pref.getValue()); if (!pref.getUseSingleIcon() && iconIds != null) { // Each entry has a corresponding icon. + index = index % iconIds.length; resid = iconIds[index]; } else { // The preference only has a single icon to represent it. @@ -885,8 +886,9 @@ public class PhotoMenu extends MenuController CharSequence[] values = pref.getEntryValues(); index = (index + 1) % values.length; pref.setValueIndex(index); + int iconListLength = ((IconListPreference) pref).getLargeIconIds().length; ((ImageView) v).setImageResource( - ((IconListPreference) pref).getLargeIconIds()[index]); + ((IconListPreference) pref).getLargeIconIds()[index % iconListLength]); if (prefKey.equals(CameraSettings.KEY_CAMERA_ID)) mListener.onCameraPickerClicked(index); reloadPreference(pref); diff --git a/src/com/android/camera/VideoMenu.java b/src/com/android/camera/VideoMenu.java index 5838bf677..418dbbe00 100644 --- a/src/com/android/camera/VideoMenu.java +++ b/src/com/android/camera/VideoMenu.java @@ -489,6 +489,7 @@ public class VideoMenu extends MenuController return; } // Each entry has a corresponding icon. + index = index % iconIds.length; resid = iconIds[index]; } else { // The preference only has a single icon to represent it. @@ -508,8 +509,9 @@ public class VideoMenu extends MenuController CharSequence[] values = pref.getEntryValues(); index = (index + 1) % values.length; pref.setValueIndex(index); + int iconListLength = ((IconListPreference) pref).getLargeIconIds().length; ((ImageView) v).setImageResource( - ((IconListPreference) pref).getLargeIconIds()[index]); + ((IconListPreference) pref).getLargeIconIds()[index % iconListLength]); if (prefKey.equals(CameraSettings.KEY_CAMERA_ID)) mListener.onCameraPickerClicked(index); reloadPreference(pref); @@ -746,7 +748,7 @@ public class VideoMenu extends MenuController mPrevSavedVideoCDS = cds; } - if ((tnr != null) && !tnr.equals("off")) { + if ((tnr != null) && !tnr.equals("off")) { mListMenu.setPreferenceEnabled( CameraSettings.KEY_VIDEO_CDS_MODE,false); mListMenu.overrideSettings( -- cgit v1.2.3