diff options
| author | Michael Kolb <kolby@google.com> | 2013-04-18 12:31:10 -0700 |
|---|---|---|
| committer | Michael Kolb <kolby@google.com> | 2013-04-18 14:31:18 -0700 |
| commit | 5b083f89c9c87f8e19e0942d1d7c2de623e527be (patch) | |
| tree | c9a9abe8cacc512a0ff814f64f3a381985de356b | |
| parent | b726c83ab60b0ec8e93cad9724857999b3bb8ec5 (diff) | |
| download | android_packages_apps_Gallery2-5b083f89c9c87f8e19e0942d1d7c2de623e527be.tar.gz android_packages_apps_Gallery2-5b083f89c9c87f8e19e0942d1d7c2de623e527be.tar.bz2 android_packages_apps_Gallery2-5b083f89c9c87f8e19e0942d1d7c2de623e527be.zip | |
Add more menu options/icons
Bug: 8640131
Added location and scene mode to secondary menu
Updated HDR icons
Change-Id: I5bed39a2ec037aecf67702d88f738befe61846d4
| -rw-r--r-- | res/values/arrays.xml | 34 | ||||
| -rw-r--r-- | res/values/strings.xml | 15 | ||||
| -rw-r--r-- | res/xml/camera_preferences.xml | 10 | ||||
| -rw-r--r-- | src/com/android/camera/PhotoMenu.java | 67 | ||||
| -rw-r--r-- | src/com/android/camera/PieController.java | 55 |
5 files changed, 133 insertions, 48 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 992db8e92..7a6859bc3 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -268,14 +268,19 @@ <item>@string/setting_on</item> </array> + <array name="pref_camera_recordlocation_labels" translatable="false"> + <item>@string/pref_camera_location_label_on</item> + <item>@string/pref_camera_location_label_off</item> + </array> + <array name="camera_recordlocation_icons" translatable="false"> - <item>@drawable/ic_menuselect_gps_off</item> - <item>@drawable/ic_menuselect_gps_on</item> + <item>@drawable/ic_location_off</item> + <item>@drawable/ic_location</item> </array> <array name="camera_recordlocation_largeicons" translatable="false"> - <item>@drawable/ic_viewfinder_gps_off</item> - <item>@drawable/ic_viewfinder_gps_on</item> + <item>@drawable/ic_location_off</item> + <item>@drawable/ic_location</item> </array> <!-- Camera Preferences White Balance dialog box entries --> @@ -328,6 +333,22 @@ <item>@string/pref_camera_scenemode_entry_party</item> </string-array> + <string-array name="pref_camera_scenemode_labels"> + <item>@string/pref_camera_scenemode_label_auto</item> + <item>@string/pref_camera_scenemode_label_action</item> + <item>@string/pref_camera_scenemode_label_night</item> + <item>@string/pref_camera_scenemode_label_sunset</item> + <item>@string/pref_camera_scenemode_label_party</item> + </string-array> + + <array name="pref_camera_scenemode_icons"> + <item>@drawable/ic_sce</item> + <item>@drawable/ic_sce_action</item> + <item>@drawable/ic_sce_night</item> + <item>@drawable/ic_sce_sunset</item> + <item>@drawable/ic_sce_party</item> + </array> + <string-array name="pref_camera_scenemode_entryvalues" translatable="false"> <item>auto</item> <item>action</item> @@ -405,6 +426,11 @@ <item>@string/pref_camera_hdr_label_on</item> </string-array> + <string-array name="pref_camera_hdr_icons" translatable="false"> + <item>@drawable/ic_hdr_off</item> + <item>@drawable/ic_hdr</item> + </string-array> + <string-array name="pref_camera_hdr_entryvalues" translatable="false"> <item>@string/setting_off_value</item> <item>@string/setting_on_value</item> diff --git a/res/values/strings.xml b/res/values/strings.xml index 8fa8f3471..d08f70a16 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -617,6 +617,10 @@ <string name="pref_camera_recordlocation_default" translatable="false">none</string> + <!-- Label for record location preference [CHAR LIMIT=50] --> + <string name="pref_camera_location_label_on">RECORD LOCATION</string> + <string name="pref_camera_location_label_off">NO LOCATION</string> + <!-- Title for countdown timer on camera settings screen [CHAR LIMIT=30]--> <string name="pref_camera_timer_title">Countdown timer</string> @@ -764,6 +768,17 @@ <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=16] --> <string name="pref_camera_scenemode_entry_party">Party</string> + <!-- Settings menu, scene mode labels [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_auto">AUTO</string> + <!-- Scene mode that takes an image quickly with little motion blur. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_action">ACTION</string> + <!-- Scene mode that takes long exposures to capture night scenes without flash. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_night">NIGHT</string> + <!-- Scene mode optimized for taking images in the sunset. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_sunset">SUNSET</string> + <!-- Scene mode optimized for taking indoor low-lights pictures. [CHAR LIMIT=50] --> + <string name="pref_camera_scenemode_label_party">PARTY</string> + <!-- Toast after trying to select a setting that is not allowed to change in scene mode [CHAR LIMIT=NONE] --> <string name="not_selectable_in_scene_mode">Not selectable in scene mode.</string> diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml index 4764cd375..8c13a3422 100644 --- a/res/xml/camera_preferences.xml +++ b/res/xml/camera_preferences.xml @@ -35,8 +35,11 @@ camera:key="pref_camera_scenemode_key" camera:defaultValue="@string/pref_camera_scenemode_default" camera:title="@string/pref_camera_scenemode_title" - camera:singleIcon="@drawable/ic_scn_holo_light" + camera:singleIcon="@drawable/ic_sce" camera:entries="@array/pref_camera_scenemode_entries" + camera:labelList="@array/pref_camera_scenemode_labels" + camera:icons="@array/pref_camera_scenemode_icons" + camera:largeIcons="@array/pref_camera_scenemode_icons" camera:entryValues="@array/pref_camera_scenemode_entryvalues" /> <IconListPreference camera:key="pref_camera_whitebalance_key" @@ -54,6 +57,7 @@ camera:icons="@array/camera_recordlocation_icons" camera:largeIcons="@array/camera_recordlocation_largeicons" camera:entries="@array/pref_camera_recordlocation_entries" + camera:labelList="@array/pref_camera_recordlocation_labels" camera:entryValues="@array/pref_camera_recordlocation_entryvalues" /> <ListPreference camera:key="pref_camera_picturesize_key" @@ -75,11 +79,13 @@ camera:entries="@array/camera_id_entries" camera:labelList="@array/camera_id_labels" camera:largeIcons="@array/camera_id_largeicons" /> - <ListPreference + <IconListPreference camera:key="pref_camera_hdr_key" camera:defaultValue="@string/pref_camera_hdr_default" camera:title="@string/pref_camera_scenemode_entry_hdr" camera:entries="@array/pref_camera_hdr_entries" + camera:icons="@array/pref_camera_hdr_icons" + camera:largeIcons="@array/pref_camera_hdr_icons" camera:labelList="@array/pref_camera_hdr_labels" camera:entryValues="@array/pref_camera_hdr_entryvalues" /> <CountDownTimerPreference 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; } |
