summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera
diff options
context:
space:
mode:
authorMichael Kolb <kolby@google.com>2013-04-10 08:50:51 -0700
committerMichael Kolb <kolby@google.com>2013-04-15 11:43:52 -0700
commit10f4ba0198904a3d7679771ce845c847d940226f (patch)
treeebd947618c629592871cbd02a54ae5097d3d5f1d /src/com/android/camera
parentd02932454e58d6858ec80d64932247f73dd0b19b (diff)
downloadandroid_packages_apps_Snap-10f4ba0198904a3d7679771ce845c847d940226f.tar.gz
android_packages_apps_Snap-10f4ba0198904a3d7679771ce845c847d940226f.tar.bz2
android_packages_apps_Snap-10f4ba0198904a3d7679771ce845c847d940226f.zip
Add menu labels
Bug: 8618169 Change-Id: Iea1ac7256450afd2870c144099459f32868c699f
Diffstat (limited to 'src/com/android/camera')
-rw-r--r--src/com/android/camera/CameraSettings.java4
-rw-r--r--src/com/android/camera/ListPreference.java15
-rw-r--r--src/com/android/camera/PhotoMenu.java15
-rw-r--r--src/com/android/camera/PieController.java2
-rw-r--r--src/com/android/camera/drawable/TextDrawable.java23
-rw-r--r--src/com/android/camera/ui/PieItem.java9
-rw-r--r--src/com/android/camera/ui/PieRenderer.java21
7 files changed, 85 insertions, 4 deletions
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index d0d575c5f..ede4156c7 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -247,8 +247,10 @@ public class CameraSettings {
// show only integer values for exposure compensation
int maxValue = Math.min(3, (int) FloatMath.floor(max * step));
int minValue = Math.max(-3, (int) FloatMath.ceil(min * step));
+ String explabel = mContext.getResources().getString(R.string.pref_exposure_label);
CharSequence entries[] = new CharSequence[maxValue - minValue + 1];
CharSequence entryValues[] = new CharSequence[maxValue - minValue + 1];
+ CharSequence labels[] = new CharSequence[maxValue - minValue + 1];
int[] icons = new int[maxValue - minValue + 1];
TypedArray iconIds = mContext.getResources().obtainTypedArray(
R.array.pref_camera_exposure_icons);
@@ -257,10 +259,12 @@ public class CameraSettings {
StringBuilder builder = new StringBuilder();
if (i > 0) builder.append('+');
entries[maxValue - i] = builder.append(i).toString();
+ labels[maxValue - i] = explabel + " " + builder.toString();
icons[maxValue - i] = iconIds.getResourceId(3 + i, 0);
}
exposure.setUseSingleIcon(true);
exposure.setEntries(entries);
+ exposure.setLabels(labels);
exposure.setEntryValues(entryValues);
exposure.setLargeIconIds(icons);
}
diff --git a/src/com/android/camera/ListPreference.java b/src/com/android/camera/ListPreference.java
index a29b19719..9ea2e34ec 100644
--- a/src/com/android/camera/ListPreference.java
+++ b/src/com/android/camera/ListPreference.java
@@ -40,6 +40,7 @@ public class ListPreference extends CameraPreference {
private CharSequence[] mEntries;
private CharSequence[] mEntryValues;
+ private CharSequence[] mLabels;
private boolean mLoaded = false;
public ListPreference(Context context, AttributeSet attrs) {
@@ -68,6 +69,8 @@ public class ListPreference extends CameraPreference {
setEntries(a.getTextArray(R.styleable.ListPreference_entries));
setEntryValues(a.getTextArray(
R.styleable.ListPreference_entryValues));
+ setLabels(a.getTextArray(
+ R.styleable.ListPreference_labels));
a.recycle();
}
@@ -83,6 +86,10 @@ public class ListPreference extends CameraPreference {
return mEntryValues;
}
+ public CharSequence[] getLabels() {
+ return mLabels;
+ }
+
public void setEntries(CharSequence entries[]) {
mEntries = entries == null ? new CharSequence[0] : entries;
}
@@ -91,6 +98,10 @@ public class ListPreference extends CameraPreference {
mEntryValues = values == null ? new CharSequence[0] : values;
}
+ public void setLabels(CharSequence labels[]) {
+ mLabels = labels == null ? new CharSequence[0] : labels;
+ }
+
public String getValue() {
if (!mLoaded) {
mValue = getSharedPreferences().getString(mKey,
@@ -135,6 +146,10 @@ public class ListPreference extends CameraPreference {
return mEntries[findIndexOfValue(getValue())].toString();
}
+ public String getLabel() {
+ return mLabels[findIndexOfValue(getValue())].toString();
+ }
+
protected void persistStringValue(String value) {
SharedPreferences.Editor editor = getSharedPreferences().edit();
editor.putString(mKey, value);
diff --git a/src/com/android/camera/PhotoMenu.java b/src/com/android/camera/PhotoMenu.java
index f5ba733c9..09c96b26a 100644
--- a/src/com/android/camera/PhotoMenu.java
+++ b/src/com/android/camera/PhotoMenu.java
@@ -17,6 +17,7 @@
package com.android.camera;
import android.content.Context;
+import android.content.res.Resources;
import android.hardware.Camera.Parameters;
import android.view.LayoutInflater;
@@ -65,20 +66,26 @@ public class PhotoMenu extends PieController
mPopup = null;
mSecondPopup = null;
PieItem item = null;
+ final Resources res = mActivity.getResources();
// flash
if (group.findPreference(CameraSettings.KEY_FLASH_MODE) != null) {
item = makeItem(CameraSettings.KEY_FLASH_MODE, POS_FLASH, 5);
+ item.setLabel(res.getString(R.string.pref_camera_flashmode_label));
mRenderer.addItem(item);
}
// exposure compensation
if (group.findPreference(CameraSettings.KEY_EXPOSURE) != null) {
item = makeItem(CameraSettings.KEY_EXPOSURE, POS_EXP, 5);
+ item.setLabel(res.getString(R.string.pref_exposure_label));
mRenderer.addItem(item);
}
// camera switcher
if (group.findPreference(CameraSettings.KEY_CAMERA_ID) != null) {
item = makeItem(R.drawable.ic_switch_photo_facing_holo_light);
+ ListPreference lpref = group.findPreference(CameraSettings.KEY_CAMERA_ID);
item.setPosition(POS_SWITCH, 5);
+ item.setLabel(lpref.getLabel());
+ final PieItem fitem = item;
item.setOnClickListener(new OnClickListener() {
@Override
public void onClick(PieItem item) {
@@ -91,6 +98,7 @@ public class PhotoMenu extends PieController
index = (index + 1) % values.length;
int newCameraId = Integer
.parseInt((String) values[index]);
+ fitem.setLabel(camPref.getLabel());
mListener.onCameraPickerClicked(newCameraId);
}
}
@@ -99,8 +107,11 @@ public class PhotoMenu extends PieController
}
// hdr
if (group.findPreference(CameraSettings.KEY_CAMERA_HDR) != null) {
+ ListPreference lp = group.findPreference(CameraSettings.KEY_CAMERA_HDR);
item = makeItem(R.drawable.ic_hdr);
+ item.setLabel(lp.getLabel());
item.setPosition(POS_HDR, 5);
+ final PieItem fitem = item;
item.setOnClickListener(new OnClickListener() {
@Override
public void onClick(PieItem item) {
@@ -112,6 +123,7 @@ public class PhotoMenu extends PieController
int index = (pref.findIndexOfValue(pref.getValue()) + 1) % 2;
pref.setValueIndex(index);
onSettingChanged(pref);
+ fitem.setLabel(pref.getLabel());
}
}
});
@@ -121,10 +133,12 @@ public class PhotoMenu extends PieController
// more settings
PieItem more = makeItem(R.drawable.ic_settings_holo_light);
more.setPosition(POS_MORE, 5);
+ more.setLabel(res.getString(R.string.camera_menu_more_label));
mRenderer.addItem(more);
// white balance
if (group.findPreference(CameraSettings.KEY_WHITE_BALANCE) != null) {
item = makeItem(CameraSettings.KEY_WHITE_BALANCE, POS_WB, 5);
+ item.setLabel(res.getString(R.string.pref_camera_whitebalance_label));
more.addItem(item);
}
// settings popup
@@ -137,6 +151,7 @@ public class PhotoMenu extends PieController
CameraSettings.KEY_TIMER_SOUND_EFFECTS,
};
item = makeItem(R.drawable.ic_settings_holo_light);
+ item.setLabel(res.getString(R.string.camera_menu_settings_label));
item.setPosition(POS_SET, 5);
item.setOnClickListener(new OnClickListener() {
@Override
diff --git a/src/com/android/camera/PieController.java b/src/com/android/camera/PieController.java
index a9b8575ef..5ccab5e72 100644
--- a/src/com/android/camera/PieController.java
+++ b/src/com/android/camera/PieController.java
@@ -104,6 +104,7 @@ public class PieController {
}
PieItem item = makeItem(resid);
item.setPosition(position, count);
+ item.setLabel(pref.getTitle().toUpperCase());
mPreferences.add(pref);
mPreferenceMap.put(pref, item);
int nOfEntries = pref.getEntries().length;
@@ -116,6 +117,7 @@ public class PieController {
inner = makeItem(pref.getEntries()[i]);
}
inner.setPosition(i, nOfEntries);
+ inner.setLabel(pref.getLabels()[i]);
item.addItem(inner);
final int index = i;
inner.setOnClickListener(new OnClickListener() {
diff --git a/src/com/android/camera/drawable/TextDrawable.java b/src/com/android/camera/drawable/TextDrawable.java
index 2e86364e7..ac5f1ce92 100644
--- a/src/com/android/camera/drawable/TextDrawable.java
+++ b/src/com/android/camera/drawable/TextDrawable.java
@@ -37,6 +37,10 @@ public class TextDrawable extends Drawable {
private int mIntrinsicWidth;
private int mIntrinsicHeight;
+ public TextDrawable(Resources res) {
+ this(res, "");
+ }
+
public TextDrawable(Resources res, CharSequence text) {
mText = text;
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
@@ -49,11 +53,24 @@ public class TextDrawable extends Drawable {
mIntrinsicHeight = mPaint.getFontMetricsInt(null);
}
+ public void setText(CharSequence txt) {
+ mText = txt;
+ if (txt == null) {
+ mIntrinsicWidth = 0;
+ mIntrinsicHeight = 0;
+ } else {
+ mIntrinsicWidth = (int) (mPaint.measureText(mText, 0, mText.length()) + .5);
+ mIntrinsicHeight = mPaint.getFontMetricsInt(null);
+ }
+ }
+
@Override
public void draw(Canvas canvas) {
- Rect bounds = getBounds();
- canvas.drawText(mText, 0, mText.length(),
- bounds.centerX(), bounds.centerY(), mPaint);
+ if (mText != null) {
+ Rect bounds = getBounds();
+ canvas.drawText(mText, 0, mText.length(),
+ bounds.centerX(), bounds.centerY(), mPaint);
+ }
}
@Override
diff --git a/src/com/android/camera/ui/PieItem.java b/src/com/android/camera/ui/PieItem.java
index 6128e0422..6dbcb85d5 100644
--- a/src/com/android/camera/ui/PieItem.java
+++ b/src/com/android/camera/ui/PieItem.java
@@ -44,6 +44,7 @@ public class PieItem {
private Path mPath;
private OnClickListener mOnClickListener;
private float mAlpha;
+ private CharSequence mLabel;
// Gray out the view when disabled
private static final float ENABLED_ALPHA = 1;
@@ -59,6 +60,14 @@ public class PieItem {
mEnabled = true;
}
+ public void setLabel(CharSequence txt) {
+ mLabel = txt;
+ }
+
+ public CharSequence getLabel() {
+ return mLabel;
+ }
+
public void setPosition(int pos, int count) {
mPosition = pos;
mCount = count;
diff --git a/src/com/android/camera/ui/PieRenderer.java b/src/com/android/camera/ui/PieRenderer.java
index 0969e4e63..4374fa624 100644
--- a/src/com/android/camera/ui/PieRenderer.java
+++ b/src/com/android/camera/ui/PieRenderer.java
@@ -27,7 +27,6 @@ import android.graphics.PointF;
import android.graphics.RectF;
import android.os.Handler;
import android.os.Message;
-import android.util.Log;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
import android.view.animation.Animation;
@@ -35,6 +34,7 @@ import android.view.animation.Animation.AnimationListener;
import android.view.animation.LinearInterpolator;
import android.view.animation.Transformation;
+import com.android.camera.drawable.TextDrawable;
import com.android.gallery3d.R;
import java.util.ArrayList;
@@ -133,6 +133,7 @@ public class PieRenderer extends OverlayRenderer
private FadeOutAnimation mFadeOut;
private volatile boolean mFocusCancelled;
private PointF mPolar = new PointF();
+ private TextDrawable mLabel;
@@ -213,6 +214,7 @@ public class PieRenderer extends OverlayRenderer
mSliceRadius = res.getDimensionPixelSize(R.dimen.pie_item_radius);
mArcRadius = res.getDimensionPixelSize(R.dimen.pie_arc_radius);
mArcOffset = res.getDimensionPixelSize(R.dimen.pie_arc_offset);
+ mLabel = new TextDrawable(res);
}
private PieItem getRoot() {
@@ -269,6 +271,7 @@ public class PieRenderer extends OverlayRenderer
}
}
}
+ mLabel.setText("");
mOpen.clear();
mOpen.add(root);
layoutPie();
@@ -335,6 +338,15 @@ public class PieRenderer extends OverlayRenderer
private void layoutPie() {
layoutItems(0, getRoot().getItems());
+ layoutLabel(0);
+ }
+
+ private void layoutLabel(int level) {
+ int x = mPieCenterX;
+ int y = mArcCenterY - mArcRadius - (level + 2) * mRadiusInc;
+ int w = mLabel.getIntrinsicWidth();
+ int h = mLabel.getIntrinsicHeight();
+ mLabel.setBounds(x - w/2, y - h/2, x + w/2, y + h/2);
}
private void layoutItems(int level, List<PieItem> items) {
@@ -480,6 +492,7 @@ public class PieRenderer extends OverlayRenderer
for (PieItem item : getParent().getItems()) {
drawItem(Math.max(0, mOpen.size() - 2), canvas, item, alpha);
}
+ mLabel.draw(canvas);
}
if (hasOpenItem()) {
int level = getLevel();
@@ -491,6 +504,7 @@ public class PieRenderer extends OverlayRenderer
drawItem(level, canvas, inner, (mXFade != null) ? (1 - 0.5f * alpha) : 1);
}
}
+ mLabel.draw(canvas);
}
canvas.restoreToCount(state);
}
@@ -606,6 +620,7 @@ public class PieRenderer extends OverlayRenderer
} else {
deselect();
}
+ mLabel.setText("");
return false;
}
PieItem item = findItem(mPolar);
@@ -665,6 +680,8 @@ public class PieRenderer extends OverlayRenderer
if (item != null && item.isEnabled()) {
item.setSelected(true);
mCurrentItem = item;
+ mLabel.setText(mCurrentItem.getLabel());
+ layoutLabel(getLevel());
} else {
mCurrentItem = null;
}
@@ -690,6 +707,7 @@ public class PieRenderer extends OverlayRenderer
mCurrentItem = item;
if ((mCurrentItem != getOpenItem()) && mCurrentItem.hasItems()) {
openCurrentItem();
+ layoutLabel(getLevel());
}
} else {
mCurrentItem = null;
@@ -728,6 +746,7 @@ public class PieRenderer extends OverlayRenderer
mXFade = null;
ci.setSelected(false);
mOpening = false;
+ mLabel.setText("");
}
@Override