summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWu-cheng Li <wuchengli@google.com>2012-09-28 18:36:26 +0800
committerWu-cheng Li <wuchengli@google.com>2012-10-02 14:02:49 +0800
commitad30bda0d0103bd8a93eb834c234341b1ab1e77f (patch)
treef8d8f623db123d242dc53532cbb82cef38358732 /src
parent999eb5f1da387786883150953930f88274ca9ffe (diff)
downloadCamera-ad30bda0d0103bd8a93eb834c234341b1ab1e77f.tar.gz
Put HDR as a separate setting in the overflow settings dialog.
bug:7222328 Change-Id: I7851f627caca01e2c31cb7b8bfb2bb08e51586a5
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/CameraSettings.java6
-rw-r--r--src/com/android/camera/PhotoController.java31
-rw-r--r--src/com/android/camera/PhotoModule.java13
-rw-r--r--src/com/android/camera/PieController.java4
-rw-r--r--src/com/android/camera/Util.java6
-rw-r--r--src/com/android/camera/ui/InLineSettingItem.java4
-rw-r--r--src/com/android/camera/ui/IndicatorButton.java5
-rw-r--r--src/com/android/camera/ui/IndicatorControl.java2
-rw-r--r--src/com/android/camera/ui/OtherSettingsPopup.java6
9 files changed, 63 insertions, 14 deletions
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index 648ac42b..46351200 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -54,6 +54,7 @@ public class CameraSettings {
public static final String KEY_EXPOSURE = "pref_camera_exposure_key";
public static final String KEY_VIDEO_EFFECT = "pref_video_effect_key";
public static final String KEY_CAMERA_ID = "pref_camera_id_key";
+ public static final String KEY_CAMERA_HDR = "pref_camera_hdr_key";
public static final String KEY_CAMERA_FIRST_USE_HINT_SHOWN = "pref_camera_first_use_hint_shown_key";
public static final String KEY_VIDEO_FIRST_USE_HINT_SHOWN = "pref_video_first_use_hint_shown_key";
@@ -153,6 +154,7 @@ public class CameraSettings {
ListPreference videoFlashMode =
group.findPreference(KEY_VIDEOCAMERA_FLASH_MODE);
ListPreference videoEffect = group.findPreference(KEY_VIDEO_EFFECT);
+ ListPreference cameraHdr = group.findPreference(KEY_CAMERA_HDR);
// Since the screen could be loaded from different resources, we need
// to check if the preference is available here
@@ -208,6 +210,10 @@ public class CameraSettings {
filterUnsupportedOptions(group, videoEffect, null);
}
}
+ if (cameraHdr != null && (!ApiHelper.HAS_CAMERA_HDR
+ || !Util.isCameraHdrSupported(mParameters))) {
+ removePreference(group, cameraHdr.getKey());
+ }
}
private void buildExposureCompensation(
diff --git a/src/com/android/camera/PhotoController.java b/src/com/android/camera/PhotoController.java
index f6e5b103..1916796c 100644
--- a/src/com/android/camera/PhotoController.java
+++ b/src/com/android/camera/PhotoController.java
@@ -17,10 +17,12 @@
package com.android.camera;
import android.content.Context;
+import android.hardware.Camera.Parameters;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
+import com.android.camera.R;
import com.android.camera.ui.OtherSettingsPopup;
import com.android.camera.ui.PieItem;
import com.android.camera.ui.PieRenderer;
@@ -30,6 +32,7 @@ public class PhotoController extends PieController
private static String TAG = "CAM_photocontrol";
private static float FLOAT_PI_DIVIDED_BY_TWO = (float) Math.PI / 2;
+ private final String mSettingOff;
private PhotoModule mModule;
private String[] mOtherKeys;
@@ -38,6 +41,7 @@ public class PhotoController extends PieController
public PhotoController(CameraActivity activity, PhotoModule module, PieRenderer pie) {
super(activity, pie);
mModule = module;
+ mSettingOff = activity.getString(R.string.setting_off_value);
}
public void initialize(PreferenceGroup group) {
@@ -63,8 +67,9 @@ public class PhotoController extends PieController
});
mRenderer.addItem(item);
mOtherKeys = new String[] {
- CameraSettings.KEY_WHITE_BALANCE,
+ CameraSettings.KEY_CAMERA_HDR,
CameraSettings.KEY_SCENE_MODE,
+ CameraSettings.KEY_WHITE_BALANCE,
CameraSettings.KEY_RECORD_LOCATION,
CameraSettings.KEY_PICTURE_SIZE,
CameraSettings.KEY_FOCUS_MODE};
@@ -120,4 +125,28 @@ public class PhotoController extends PieController
mModule.onRestorePreferencesClicked();
}
+ // Return true if the preference has the specified key but not the value.
+ private static boolean notSame(ListPreference pref, String key, String value) {
+ return (key.equals(pref.getKey()) && !value.equals(pref.getValue()));
+ }
+
+ private void setPreference(String key, String value) {
+ ListPreference pref = mPreferenceGroup.findPreference(key);
+ if (pref != null && !value.equals(pref.getValue())) {
+ pref.setValue(value);
+ reloadPreferences();
+ }
+ }
+
+ @Override
+ public void onSettingChanged(ListPreference pref) {
+ // Reset the scene mode if HDR is set to on. Reset HDR if scene mode is
+ // set to non-auto.
+ if (notSame(pref, CameraSettings.KEY_CAMERA_HDR, mSettingOff)) {
+ setPreference(CameraSettings.KEY_SCENE_MODE, Parameters.SCENE_MODE_AUTO);
+ } else if (notSame(pref, CameraSettings.KEY_SCENE_MODE, Parameters.SCENE_MODE_AUTO)) {
+ setPreference(CameraSettings.KEY_CAMERA_HDR, mSettingOff);
+ }
+ super.onSettingChanged(pref);
+ }
}
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index d1cd6154..26c30df2 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -2262,11 +2262,18 @@ public class PhotoModule
}
Log.v(TAG, "Preview size is " + optimalSize.width + "x" + optimalSize.height);
- // Since change scene mode may change supported values,
- // Set scene mode first,
- mSceneMode = mPreferences.getString(
+ // Since changing scene mode may change supported values, set scene mode
+ // first. HDR is a scene mode. To promote it in UI, it is stored in a
+ // separate preference.
+ String hdr = mPreferences.getString(CameraSettings.KEY_CAMERA_HDR,
+ mActivity.getString(R.string.pref_camera_hdr_default));
+ if (mActivity.getString(R.string.setting_on_value).equals(hdr)) {
+ mSceneMode = Util.SCENE_MODE_HDR;
+ } else {
+ mSceneMode = mPreferences.getString(
CameraSettings.KEY_SCENE_MODE,
mActivity.getString(R.string.pref_camera_scenemode_default));
+ }
if (Util.isSupported(mSceneMode, mParameters.getSupportedSceneModes())) {
if (!mParameters.getSceneMode().equals(mSceneMode)) {
mParameters.setSceneMode(mSceneMode);
diff --git a/src/com/android/camera/PieController.java b/src/com/android/camera/PieController.java
index 868f1844..5cb037b5 100644
--- a/src/com/android/camera/PieController.java
+++ b/src/com/android/camera/PieController.java
@@ -69,7 +69,7 @@ public class PieController {
setPreferenceGroup(group);
}
- public void onSettingChanged() {
+ public void onSettingChanged(ListPreference pref) {
if (mListener != null) {
mListener.onSharedPreferenceChanged();
}
@@ -139,7 +139,7 @@ public class PieController {
public void onClick(View v) {
pref.setValueIndex(index);
reloadPreference(pref);
- onSettingChanged();
+ onSettingChanged(pref);
}
});
}
diff --git a/src/com/android/camera/Util.java b/src/com/android/camera/Util.java
index 200d9cb1..2953d6ae 100644
--- a/src/com/android/camera/Util.java
+++ b/src/com/android/camera/Util.java
@@ -83,6 +83,7 @@ public class Util {
private static final String AUTO_EXPOSURE_LOCK_SUPPORTED = "auto-exposure-lock-supported";
private static final String AUTO_WHITE_BALANCE_LOCK_SUPPORTED = "auto-whitebalance-lock-supported";
private static final String VIDEO_SNAPSHOT_SUPPORTED = "video-snapshot-supported";
+ public static final String SCENE_MODE_HDR = "hdr";
public static final String TRUE = "true";
public static final String FALSE = "false";
@@ -102,6 +103,11 @@ public class Util {
return TRUE.equals(params.get(VIDEO_SNAPSHOT_SUPPORTED));
}
+ public static boolean isCameraHdrSupported(Parameters params) {
+ List<String> supported = params.getSupportedSceneModes();
+ return (supported != null) && supported.contains(SCENE_MODE_HDR);
+ }
+
@TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH)
public static boolean isMeteringAreaSupported(Parameters params) {
if (ApiHelper.HAS_CAMERA_METERING_AREA) {
diff --git a/src/com/android/camera/ui/InLineSettingItem.java b/src/com/android/camera/ui/InLineSettingItem.java
index 6ea9a11f..9effd2a7 100644
--- a/src/com/android/camera/ui/InLineSettingItem.java
+++ b/src/com/android/camera/ui/InLineSettingItem.java
@@ -43,7 +43,7 @@ public abstract class InLineSettingItem extends LinearLayout {
protected String mOverrideValue;
static public interface Listener {
- public void onSettingChanged();
+ public void onSettingChanged(ListPreference pref);
}
public InLineSettingItem(Context context, AttributeSet attrs) {
@@ -68,7 +68,7 @@ public abstract class InLineSettingItem extends LinearLayout {
mIndex = index;
mPreference.setValueIndex(mIndex);
if (mListener != null) {
- mListener.onSettingChanged();
+ mListener.onSettingChanged(mPreference);
}
updateView();
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
diff --git a/src/com/android/camera/ui/IndicatorButton.java b/src/com/android/camera/ui/IndicatorButton.java
index 6b4f886d..82524689 100644
--- a/src/com/android/camera/ui/IndicatorButton.java
+++ b/src/com/android/camera/ui/IndicatorButton.java
@@ -23,6 +23,7 @@ import android.view.ViewGroup;
import com.android.camera.CameraSettings;
import com.android.camera.IconListPreference;
+import com.android.camera.ListPreference;
import com.android.camera.R;
// An indicator button that represents one camera setting. Ex: flash. Pressing it opens a popup
@@ -37,7 +38,7 @@ public class IndicatorButton extends AbstractIndicatorButton
private Listener mListener;
static public interface Listener {
- public void onSettingChanged();
+ public void onSettingChanged(ListPreference pref);
}
public void setSettingChangedListener(Listener listener) {
@@ -134,7 +135,7 @@ public class IndicatorButton extends AbstractIndicatorButton
// Dismiss later so the activated state can be updated before dismiss.
dismissPopupDelayed();
if (mListener != null) {
- mListener.onSettingChanged();
+ mListener.onSettingChanged(mPreference);
}
}
}
diff --git a/src/com/android/camera/ui/IndicatorControl.java b/src/com/android/camera/ui/IndicatorControl.java
index 1277de02..8d4d5599 100644
--- a/src/com/android/camera/ui/IndicatorControl.java
+++ b/src/com/android/camera/ui/IndicatorControl.java
@@ -172,7 +172,7 @@ public abstract class IndicatorControl extends RelativeLayout implements
}
@Override
- public void onSettingChanged() {
+ public void onSettingChanged(ListPreference pref) {
if (mListener != null) {
mListener.onSharedPreferenceChanged();
}
diff --git a/src/com/android/camera/ui/OtherSettingsPopup.java b/src/com/android/camera/ui/OtherSettingsPopup.java
index aa1e869e..42581ef5 100644
--- a/src/com/android/camera/ui/OtherSettingsPopup.java
+++ b/src/com/android/camera/ui/OtherSettingsPopup.java
@@ -43,7 +43,7 @@ public class OtherSettingsPopup extends AbstractSettingPopup
private ArrayList<ListPreference> mListItem = new ArrayList<ListPreference>();
static public interface Listener {
- public void onSettingChanged();
+ public void onSettingChanged(ListPreference pref);
public void onRestorePreferencesClicked();
}
@@ -124,9 +124,9 @@ public class OtherSettingsPopup extends AbstractSettingPopup
}
@Override
- public void onSettingChanged() {
+ public void onSettingChanged(ListPreference pref) {
if (mListener != null) {
- mListener.onSettingChanged();
+ mListener.onSettingChanged(pref);
}
}