From 25c0ec4c1252a8d0f9de74ba7ade74bc7af3f5b2 Mon Sep 17 00:00:00 2001 From: Michael Kolb Date: Thu, 18 Apr 2013 12:31:10 -0700 Subject: Add more menu options/icons Bug: 8640131 Added location and scene mode to secondary menu Updated HDR icons Change-Id: I5bed39a2ec037aecf67702d88f738befe61846d4 --- src/com/android/camera/PhotoMenu.java | 67 ++++++++++++------------------- src/com/android/camera/PieController.java | 55 +++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 42 deletions(-) diff --git a/src/com/android/camera/PhotoMenu.java b/src/com/android/camera/PhotoMenu.java index 77f2fc508..31fe670ff 100644 --- a/src/com/android/camera/PhotoMenu.java +++ b/src/com/android/camera/PhotoMenu.java @@ -41,8 +41,10 @@ public class PhotoMenu extends PieController private static final int POS_MORE = 2; private static final int POS_FLASH = 3; private static final int POS_SWITCH = 4; - private static final int POS_WB = 1; + private static final int POS_LOCATION = 1; + private static final int POS_WB = 3; private static final int POS_SET = 2; + private static final int POS_SCENE = 4; private final String mSettingOff; @@ -81,61 +83,31 @@ public class PhotoMenu extends PieController } // camera switcher if (group.findPreference(CameraSettings.KEY_CAMERA_ID) != null) { - item = makeItem(R.drawable.ic_switch_back); - item.setPosition(POS_SWITCH, 5); - IconListPreference lpref = (IconListPreference) group.findPreference( - CameraSettings.KEY_CAMERA_ID); - item.setImageResource(mActivity, - ((IconListPreference) lpref).getIconIds() - [lpref.findIndexOfValue(lpref.getValue())]); - item.setLabel(lpref.getLabel()); + item = makeSwitchItem(CameraSettings.KEY_CAMERA_ID, POS_SWITCH, 5, false); final PieItem fitem = item; item.setOnClickListener(new OnClickListener() { @Override public void onClick(PieItem item) { // Find the index of next camera. - ListPreference camPref = mPreferenceGroup + ListPreference pref = mPreferenceGroup .findPreference(CameraSettings.KEY_CAMERA_ID); - if (camPref != null) { - int index = camPref.findIndexOfValue(camPref.getValue()); - CharSequence[] values = camPref.getEntryValues(); + if (pref != null) { + int index = pref.findIndexOfValue(pref.getValue()); + CharSequence[] values = pref.getEntryValues(); index = (index + 1) % values.length; - int newCameraId = Integer - .parseInt((String) values[index]); - fitem.setLabel(camPref.getLabel()); - fitem.setImageResource(mActivity, - ((IconListPreference) camPref).getIconIds()[index]); - mListener.onCameraPickerClicked(newCameraId); + pref.setValueIndex(index); + mListener.onCameraPickerClicked(index); } + updateItem(fitem, CameraSettings.KEY_CAMERA_ID); } }); mRenderer.addItem(item); } // 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) { - // Find the index of next camera. - ListPreference pref = mPreferenceGroup - .findPreference(CameraSettings.KEY_CAMERA_HDR); - if (pref != null) { - // toggle hdr value - int index = (pref.findIndexOfValue(pref.getValue()) + 1) % 2; - pref.setValueIndex(index); - onSettingChanged(pref); - fitem.setLabel(pref.getLabel()); - } - } - }); + item = makeSwitchItem(CameraSettings.KEY_CAMERA_HDR, POS_HDR, 5, true); mRenderer.addItem(item); } - // more settings PieItem more = makeItem(R.drawable.ic_settings_holo_light); more.setPosition(POS_MORE, 5); @@ -147,10 +119,21 @@ public class PhotoMenu extends PieController item.setLabel(res.getString(R.string.pref_camera_whitebalance_label)); more.addItem(item); } + // location + if (group.findPreference(CameraSettings.KEY_RECORD_LOCATION) != null) { + item = makeSwitchItem(CameraSettings.KEY_RECORD_LOCATION, POS_LOCATION, 5, true); + more.addItem(item); + } + // scene mode + if (group.findPreference(CameraSettings.KEY_SCENE_MODE) != null) { + IconListPreference pref = (IconListPreference) group.findPreference( + CameraSettings.KEY_SCENE_MODE); + pref.setUseSingleIcon(true); + item = makeItem(CameraSettings.KEY_SCENE_MODE, POS_SCENE, 5); + more.addItem(item); + } // settings popup mOtherKeys = new String[] { - CameraSettings.KEY_SCENE_MODE, - CameraSettings.KEY_RECORD_LOCATION, CameraSettings.KEY_PICTURE_SIZE, CameraSettings.KEY_FOCUS_MODE, CameraSettings.KEY_TIMER, diff --git a/src/com/android/camera/PieController.java b/src/com/android/camera/PieController.java index 5ccab5e72..565a20ed1 100644 --- a/src/com/android/camera/PieController.java +++ b/src/com/android/camera/PieController.java @@ -133,6 +133,50 @@ public class PieController { return item; } + public PieItem makeSwitchItem(final String prefKey, int position, int count, + boolean addListener) { + final IconListPreference pref = + (IconListPreference) mPreferenceGroup.findPreference(prefKey); + if (pref == null) return null; + int[] iconIds = pref.getLargeIconIds(); + int resid = -1; + int index = pref.findIndexOfValue(pref.getValue()); + if (!pref.getUseSingleIcon() && iconIds != null) { + // Each entry has a corresponding icon. + resid = iconIds[index]; + } else { + // The preference only has a single icon to represent it. + resid = pref.getSingleIcon(); + } + PieItem item = makeItem(resid); + item.setPosition(position, count); + item.setLabel(pref.getLabels()[index]); + item.setImageResource(mActivity, resid); + mPreferences.add(pref); + mPreferenceMap.put(pref, item); + if (addListener) { + final PieItem fitem = item; + item.setOnClickListener(new OnClickListener() { + @Override + public void onClick(PieItem item) { + IconListPreference pref = (IconListPreference) mPreferenceGroup + .findPreference(prefKey); + int index = pref.findIndexOfValue(pref.getValue()); + CharSequence[] values = pref.getEntryValues(); + index = (index + 1) % values.length; + pref.setValueIndex(index); + fitem.setLabel(pref.getLabels()[index]); + fitem.setImageResource(mActivity, + ((IconListPreference) pref).getLargeIconIds()[index]); + reloadPreference(pref); + onSettingChanged(pref); + } + }); + } + return item; + } + + public PieItem makeDialItem(ListPreference pref, int iconId, float center, float sweep) { PieItem item = makeItem(iconId); return item; @@ -143,6 +187,17 @@ public class PieController { mRenderer.addItem(item); } + public void updateItem(PieItem item, String prefKey) { + IconListPreference pref = (IconListPreference) mPreferenceGroup + .findPreference(prefKey); + if (pref != null) { + int index = pref.findIndexOfValue(pref.getValue()); + item.setLabel(pref.getLabels()[index]); + item.setImageResource(mActivity, + ((IconListPreference) pref).getLargeIconIds()[index]); + } + } + public void setPreferenceGroup(PreferenceGroup group) { mPreferenceGroup = group; } -- cgit v1.2.3