summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/OnScreenIndicators.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/OnScreenIndicators.java')
-rw-r--r--src/com/android/camera/OnScreenIndicators.java190
1 files changed, 190 insertions, 0 deletions
diff --git a/src/com/android/camera/OnScreenIndicators.java b/src/com/android/camera/OnScreenIndicators.java
new file mode 100644
index 000000000..77c8fafc0
--- /dev/null
+++ b/src/com/android/camera/OnScreenIndicators.java
@@ -0,0 +1,190 @@
+/*
+ * 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.content.Context;
+import android.content.res.TypedArray;
+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 int[] mWBArray;
+ private final View mOnScreenIndicators;
+ private final ImageView mExposureIndicator;
+ private final ImageView mFlashIndicator;
+ private final ImageView mSceneIndicator;
+ private final ImageView mLocationIndicator;
+ private final ImageView mTimerIndicator;
+ private final ImageView mWBIndicator;
+
+ 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);
+ mFlashIndicator = (ImageView) onScreenIndicatorsView.findViewById(
+ R.id.menu_flash_indicator);
+ mSceneIndicator = (ImageView) onScreenIndicatorsView.findViewById(
+ R.id.menu_scenemode_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);
+ }
+
+ /**
+ * Resets all indicators to show the default values.
+ */
+ public void resetToDefault() {
+ updateExposureOnScreenIndicator(0);
+ updateFlashOnScreenIndicator(Parameters.FLASH_MODE_OFF);
+ updateSceneOnScreenIndicator(Parameters.SCENE_MODE_AUTO);
+ updateWBIndicator(2);
+ updateTimerIndicator(false);
+ updateLocationIndicator(false);
+ }
+
+ /**
+ * 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);
+ }
+
+ 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.
+ *
+ * @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)
+ || Parameters.FLASH_MODE_TORCH.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)) {
+ 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 visibility of all indicators.
+ *
+ * @param visibility View.VISIBLE, View.GONE etc.
+ */
+ public void setVisibility(int visibility) {
+ mOnScreenIndicators.setVisibility(visibility);
+ }
+}