diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/camera/ListPreference.java | 4 | ||||
-rw-r--r-- | src/com/android/camera/OnScreenIndicators.java | 65 | ||||
-rw-r--r-- | src/com/android/camera/PhotoModule.java | 2 | ||||
-rw-r--r-- | src/com/android/camera/PhotoUI.java | 25 | ||||
-rw-r--r-- | src/com/android/camera/VideoUI.java | 2 |
5 files changed, 70 insertions, 28 deletions
diff --git a/src/com/android/camera/ListPreference.java b/src/com/android/camera/ListPreference.java index d1d34911b..38866de9d 100644 --- a/src/com/android/camera/ListPreference.java +++ b/src/com/android/camera/ListPreference.java @@ -142,6 +142,10 @@ public class ListPreference extends CameraPreference { return -1; } + public int getCurrentIndex() { + return findIndexOfValue(getValue()); + } + public String getEntry() { return mEntries[findIndexOfValue(getValue())].toString(); } diff --git a/src/com/android/camera/OnScreenIndicators.java b/src/com/android/camera/OnScreenIndicators.java index 6c3819a3d..77c8fafc0 100644 --- a/src/com/android/camera/OnScreenIndicators.java +++ b/src/com/android/camera/OnScreenIndicators.java @@ -16,6 +16,8 @@ package com.android.camera; +import android.content.Context; +import android.content.res.TypedArray; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.view.View; @@ -28,13 +30,23 @@ import com.android.gallery3d.R; * settings in the viewfinder. */ public class OnScreenIndicators { + private final int[] mWBArray; private final View mOnScreenIndicators; private final ImageView mExposureIndicator; private final ImageView mFlashIndicator; private final ImageView mSceneIndicator; - private final ImageView mHdrIndicator; + private final ImageView mLocationIndicator; + private final ImageView mTimerIndicator; + private final ImageView mWBIndicator; - public OnScreenIndicators(View onScreenIndicatorsView) { + public OnScreenIndicators(Context ctx, View onScreenIndicatorsView) { + TypedArray iconIds = ctx.getResources().obtainTypedArray( + R.array.camera_wb_indicators); + final int n = iconIds.length(); + mWBArray = new int[n]; + for (int i = 0; i < n; i++) { + mWBArray[i] = iconIds.getResourceId(i, R.drawable.ic_indicator_wb_off); + } mOnScreenIndicators = onScreenIndicatorsView; mExposureIndicator = (ImageView) onScreenIndicatorsView.findViewById( R.id.menu_exposure_indicator); @@ -42,7 +54,12 @@ public class OnScreenIndicators { R.id.menu_flash_indicator); mSceneIndicator = (ImageView) onScreenIndicatorsView.findViewById( R.id.menu_scenemode_indicator); - mHdrIndicator = (ImageView) onScreenIndicatorsView.findViewById(R.id.menu_hdr_indicator); + mLocationIndicator = (ImageView) onScreenIndicatorsView.findViewById( + R.id.menu_location_indicator); + mTimerIndicator = (ImageView) onScreenIndicatorsView.findViewById( + R.id.menu_timer_indicator); + mWBIndicator = (ImageView) onScreenIndicatorsView.findViewById( + R.id.menu_wb_indicator); } /** @@ -52,7 +69,9 @@ public class OnScreenIndicators { updateExposureOnScreenIndicator(0); updateFlashOnScreenIndicator(Parameters.FLASH_MODE_OFF); updateSceneOnScreenIndicator(Parameters.SCENE_MODE_AUTO); - updateHdrOnScreenIndicator(Parameters.SCENE_MODE_AUTO); + updateWBIndicator(2); + updateTimerIndicator(false); + updateLocationIndicator(false); } /** @@ -101,6 +120,23 @@ public class OnScreenIndicators { mExposureIndicator.setImageResource(id); } + public void updateWBIndicator(int wbIndex) { + if (mWBIndicator == null) return; + mWBIndicator.setImageResource(mWBArray[wbIndex]); + } + + public void updateTimerIndicator(boolean on) { + if (mTimerIndicator == null) return; + mTimerIndicator.setImageResource(on ? R.drawable.ic_indicator_timer_on + : R.drawable.ic_indicator_timer_off); + } + + public void updateLocationIndicator(boolean on) { + if (mLocationIndicator == null) return; + mLocationIndicator.setImageResource(on ? R.drawable.ic_indicator_loc_on + : R.drawable.ic_indicator_loc_off); + } + /** * Set the flash indicator to the given value. * @@ -134,31 +170,16 @@ public class OnScreenIndicators { if (mSceneIndicator == null) { return; } - if ((value == null) || Parameters.SCENE_MODE_AUTO.equals(value) - || Parameters.SCENE_MODE_HDR.equals(value)) { + if ((value == null) || Parameters.SCENE_MODE_AUTO.equals(value)) { mSceneIndicator.setImageResource(R.drawable.ic_indicator_sce_off); + } else if (Parameters.SCENE_MODE_HDR.equals(value)) { + mSceneIndicator.setImageResource(R.drawable.ic_indicator_sce_hdr); } else { mSceneIndicator.setImageResource(R.drawable.ic_indicator_sce_on); } } /** - * Sets the scene indicator to show whether HDR is on or off. - * - * @param value the current Parameters.SCENE_MODE_* value. - */ - public void updateHdrOnScreenIndicator(String value) { - if (mHdrIndicator == null) { - return; - } - if ((value != null) && Parameters.SCENE_MODE_HDR.equals(value)) { - mHdrIndicator.setImageResource(R.drawable.ic_indicator_hdr_on); - } else { - mHdrIndicator.setImageResource(R.drawable.ic_indicator_hdr_off); - } - } - - /** * Sets the visibility of all indicators. * * @param visibility View.VISIBLE, View.GONE etc. diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index 3e71aa648..4d3f7fb22 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -1909,7 +1909,7 @@ public class PhotoModule mLocationManager.recordLocation(recordLocation); setCameraParametersWhenIdle(UPDATE_PARAM_PREFERENCE); - mUI.updateOnScreenIndicators(mParameters, mPreferences); + mUI.updateOnScreenIndicators(mParameters, mPreferenceGroup, mPreferences); } @Override diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java index 3f2945f10..f7887c45c 100644 --- a/src/com/android/camera/PhotoUI.java +++ b/src/com/android/camera/PhotoUI.java @@ -143,7 +143,7 @@ public class PhotoUI implements PieListener, } private void initIndicators() { - mOnScreenIndicators = new OnScreenIndicators( + mOnScreenIndicators = new OnScreenIndicators(mActivity, mActivity.findViewById(R.id.on_screen_indicators)); } @@ -185,7 +185,7 @@ public class PhotoUI implements PieListener, mRenderOverlay.requestLayout(); initializeZoom(params); - updateOnScreenIndicators(params, prefs); + updateOnScreenIndicators(params, prefGroup, prefs); } private void openMenu() { @@ -294,13 +294,30 @@ public class PhotoUI implements PieListener, } public void updateOnScreenIndicators(Camera.Parameters params, - ComboPreferences prefs) { + PreferenceGroup group, ComboPreferences prefs) { if (params == null) return; mOnScreenIndicators.updateSceneOnScreenIndicator(params.getSceneMode()); mOnScreenIndicators.updateExposureOnScreenIndicator(params, CameraSettings.readExposure(prefs)); mOnScreenIndicators.updateFlashOnScreenIndicator(params.getFlashMode()); - mOnScreenIndicators.updateHdrOnScreenIndicator(params.getSceneMode()); + int wbIndex = 2; + ListPreference pref = group.findPreference(CameraSettings.KEY_WHITE_BALANCE); + if (pref != null) { + wbIndex = pref.getCurrentIndex(); + } + mOnScreenIndicators.updateWBIndicator(wbIndex); + pref = group.findPreference(CameraSettings.KEY_TIMER); + boolean timer = false; + if (pref != null) { + timer = !(pref.getCurrentIndex() == 0); + } + mOnScreenIndicators.updateTimerIndicator(timer); + boolean location = false; + pref = group.findPreference(CameraSettings.KEY_RECORD_LOCATION); + if (pref != null) { + location = !(pref.getCurrentIndex() == 0); + } + mOnScreenIndicators.updateLocationIndicator(location); } diff --git a/src/com/android/camera/VideoUI.java b/src/com/android/camera/VideoUI.java index 16a9d3c86..e55de9e6d 100644 --- a/src/com/android/camera/VideoUI.java +++ b/src/com/android/camera/VideoUI.java @@ -100,7 +100,7 @@ public class VideoUI implements SurfaceHolder.Callback, PieRenderer.PieListener, } } }); - mOnScreenIndicators = new OnScreenIndicators( + mOnScreenIndicators = new OnScreenIndicators(mActivity, mActivity.findViewById(R.id.on_screen_indicators)); mOnScreenIndicators.resetToDefault(); if (mController.isVideoCaptureIntent()) { |