summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Kolb <kolby@google.com>2013-04-18 12:31:10 -0700
committerMichael Kolb <kolby@google.com>2013-04-18 14:31:18 -0700
commit5b083f89c9c87f8e19e0942d1d7c2de623e527be (patch)
treec9a9abe8cacc512a0ff814f64f3a381985de356b
parentb726c83ab60b0ec8e93cad9724857999b3bb8ec5 (diff)
downloadandroid_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.xml34
-rw-r--r--res/values/strings.xml15
-rw-r--r--res/xml/camera_preferences.xml10
-rw-r--r--src/com/android/camera/PhotoMenu.java67
-rw-r--r--src/com/android/camera/PieController.java55
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;
}