diff options
-rw-r--r-- | src/com/android/camera/OnScreenIndicators.java | 168 | ||||
-rw-r--r-- | src/com/android/camera/PhotoUI.java | 98 |
2 files changed, 177 insertions, 89 deletions
diff --git a/src/com/android/camera/OnScreenIndicators.java b/src/com/android/camera/OnScreenIndicators.java new file mode 100644 index 000000000..478c25019 --- /dev/null +++ b/src/com/android/camera/OnScreenIndicators.java @@ -0,0 +1,168 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.camera; + +import android.hardware.Camera; +import android.hardware.Camera.Parameters; +import android.view.View; +import android.widget.ImageView; + +import com.android.gallery3d.R; + +/** + * The on-screen indicators of the pie menu button. They show the camera + * settings in the viewfinder. + */ +public class OnScreenIndicators { + private final View mOnScreenIndicators; + private final ImageView mExposureIndicator; + private final ImageView mFlashIndicator; + private final ImageView mSceneIndicator; + private final ImageView mHdrIndicator; + + public OnScreenIndicators(View onScreenIndicatorsView) { + mOnScreenIndicators = onScreenIndicatorsView; + mExposureIndicator = (ImageView) onScreenIndicatorsView.findViewById( + R.id.menu_exposure_indicator); + mFlashIndicator = (ImageView) onScreenIndicatorsView.findViewById( + R.id.menu_flash_indicator); + mSceneIndicator = (ImageView) onScreenIndicatorsView.findViewById( + R.id.menu_scenemode_indicator); + mHdrIndicator = (ImageView) onScreenIndicatorsView.findViewById(R.id.menu_hdr_indicator); + } + + /** + * Resets all indicators to show the default values. + */ + public void resetToDefault() { + updateExposureOnScreenIndicator(0); + updateFlashOnScreenIndicator(Parameters.FLASH_MODE_OFF); + updateSceneOnScreenIndicator(Parameters.SCENE_MODE_AUTO); + updateHdrOnScreenIndicator(Parameters.SCENE_MODE_AUTO); + } + + /** + * Sets the exposure indicator using exposure compensations step rounding. + */ + public void updateExposureOnScreenIndicator(Camera.Parameters params, int value) { + if (mExposureIndicator == null) { + return; + } + float step = params.getExposureCompensationStep(); + value = Math.round(value * step); + updateExposureOnScreenIndicator(value); + } + + /** + * Set the exposure indicator to the given value. + * + * @param value Value between -3 and 3. If outside this range, 0 is used by + * default. + */ + public void updateExposureOnScreenIndicator(int value) { + int id = 0; + switch(value) { + case -3: + id = R.drawable.ic_indicator_ev_n3; + break; + case -2: + id = R.drawable.ic_indicator_ev_n2; + break; + case -1: + id = R.drawable.ic_indicator_ev_n1; + break; + case 0: + id = R.drawable.ic_indicator_ev_0; + break; + case 1: + id = R.drawable.ic_indicator_ev_p1; + break; + case 2: + id = R.drawable.ic_indicator_ev_p2; + break; + case 3: + id = R.drawable.ic_indicator_ev_p3; + break; + } + mExposureIndicator.setImageResource(id); + } + + /** + * Set the flash indicator to the given value. + * + * @param value One of Parameters.FLASH_MODE_OFF, + * Parameters.FLASH_MODE_AUTO, Parameters.FLASH_MODE_ON. + */ + public void updateFlashOnScreenIndicator(String value) { + if (mFlashIndicator == null) { + return; + } + if (value == null || Parameters.FLASH_MODE_OFF.equals(value)) { + mFlashIndicator.setImageResource(R.drawable.ic_indicator_flash_off); + } else { + if (Parameters.FLASH_MODE_AUTO.equals(value)) { + mFlashIndicator.setImageResource(R.drawable.ic_indicator_flash_auto); + } else if (Parameters.FLASH_MODE_ON.equals(value)) { + mFlashIndicator.setImageResource(R.drawable.ic_indicator_flash_on); + } else { + mFlashIndicator.setImageResource(R.drawable.ic_indicator_flash_off); + } + } + } + + /** + * Set the scene indicator depending on the given scene mode. + * + * @param value the current Parameters.SCENE_MODE_* value. + */ + public void updateSceneOnScreenIndicator(String value) { + if (mSceneIndicator == null) { + return; + } + if ((value == null) || Parameters.SCENE_MODE_AUTO.equals(value) + || Parameters.SCENE_MODE_HDR.equals(value)) { + mSceneIndicator.setImageResource(R.drawable.ic_indicator_sce_off); + } 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. + */ + public void setVisibility(int visibility) { + mOnScreenIndicators.setVisibility(visibility); + } +} diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java index fd148bad7..ea1cb9036 100644 --- a/src/com/android/camera/PhotoUI.java +++ b/src/com/android/camera/PhotoUI.java @@ -20,7 +20,6 @@ package com.android.camera; import android.hardware.Camera; import android.hardware.Camera.Face; import android.hardware.Camera.FaceDetectionListener; -import android.hardware.Camera.Parameters; import android.util.Log; import android.view.Gravity; import android.view.MotionEvent; @@ -32,7 +31,6 @@ import android.view.ViewGroup; import android.view.ViewStub; import android.widget.FrameLayout; import android.widget.FrameLayout.LayoutParams; -import android.widget.ImageView; import android.widget.Toast; import com.android.camera.CameraPreference.OnPreferenceChangedListener; @@ -83,13 +81,7 @@ public class PhotoUI implements PieListener, private View mBlocker; private PhotoMenu mMenu; - // Small indicators which show the camera settings in the viewfinder. - private ImageView mExposureIndicator; - private ImageView mFlashIndicator; - private ImageView mSceneIndicator; - private ImageView mHdrIndicator; - // A view group that contains all the small indicators. - private View mOnScreenIndicators; + private OnScreenIndicators mOnScreenIndicators; private PieRenderer mPieRenderer; private ZoomRenderer mZoomRenderer; @@ -151,11 +143,8 @@ public class PhotoUI implements PieListener, } private void initIndicators() { - mOnScreenIndicators = mActivity.findViewById(R.id.on_screen_indicators); - mExposureIndicator = (ImageView) mOnScreenIndicators.findViewById(R.id.menu_exposure_indicator); - mFlashIndicator = (ImageView) mOnScreenIndicators.findViewById(R.id.menu_flash_indicator); - mSceneIndicator = (ImageView) mOnScreenIndicators.findViewById(R.id.menu_scenemode_indicator); - mHdrIndicator = (ImageView) mOnScreenIndicators.findViewById(R.id.menu_hdr_indicator); + mOnScreenIndicators = new OnScreenIndicators( + mActivity.findViewById(R.id.on_screen_indicators)); } public void onCameraOpened(PreferenceGroup prefGroup, ComboPreferences prefs, @@ -294,8 +283,10 @@ public class PhotoUI implements PieListener, } } + @Override public void showGpsOnScreenIndicator(boolean hasSignal) { } + @Override public void hideGpsOnScreenIndicator() { } public void overrideSettings(final String ... keyvalues) { @@ -305,85 +296,14 @@ public class PhotoUI implements PieListener, public void updateOnScreenIndicators(Camera.Parameters params, ComboPreferences prefs) { if (params == null) return; - updateSceneOnScreenIndicator(params.getSceneMode()); - updateExposureOnScreenIndicator(params, + mOnScreenIndicators.updateSceneOnScreenIndicator(params.getSceneMode()); + mOnScreenIndicators.updateExposureOnScreenIndicator(params, CameraSettings.readExposure(prefs)); - updateFlashOnScreenIndicator(params.getFlashMode()); - updateHdrOnScreenIndicator(params.getSceneMode()); - } - - private void updateExposureOnScreenIndicator(Camera.Parameters params, int value) { - if (mExposureIndicator == null) { - return; - } - int id = 0; - float step = params.getExposureCompensationStep(); - value = (int) Math.round(value * step); - switch(value) { - case -3: - id = R.drawable.ic_indicator_ev_n3; - break; - case -2: - id = R.drawable.ic_indicator_ev_n2; - break; - case -1: - id = R.drawable.ic_indicator_ev_n1; - break; - case 0: - id = R.drawable.ic_indicator_ev_0; - break; - case 1: - id = R.drawable.ic_indicator_ev_p1; - break; - case 2: - id = R.drawable.ic_indicator_ev_p2; - break; - case 3: - id = R.drawable.ic_indicator_ev_p3; - break; - } - mExposureIndicator.setImageResource(id); - } - - private void updateFlashOnScreenIndicator(String value) { - if (mFlashIndicator == null) { - return; - } - if (value == null || Parameters.FLASH_MODE_OFF.equals(value)) { - mFlashIndicator.setImageResource(R.drawable.ic_indicator_flash_off); - } else { - if (Parameters.FLASH_MODE_AUTO.equals(value)) { - mFlashIndicator.setImageResource(R.drawable.ic_indicator_flash_auto); - } else if (Parameters.FLASH_MODE_ON.equals(value)) { - mFlashIndicator.setImageResource(R.drawable.ic_indicator_flash_on); - } else { - mFlashIndicator.setImageResource(R.drawable.ic_indicator_flash_off); - } - } + mOnScreenIndicators.updateFlashOnScreenIndicator(params.getFlashMode()); + mOnScreenIndicators.updateHdrOnScreenIndicator(params.getSceneMode()); } - private void updateSceneOnScreenIndicator(String value) { - if (mSceneIndicator == null) { - return; - } - if ((value == null) || Parameters.SCENE_MODE_AUTO.equals(value) - || Parameters.SCENE_MODE_HDR.equals(value)) { - mSceneIndicator.setImageResource(R.drawable.ic_indicator_sce_off); - } else { - mSceneIndicator.setImageResource(R.drawable.ic_indicator_sce_on); - } - } - private 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); - } - } public void setCameraState(int state) { } |