summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Kondik <shade@chemlab.org>2013-11-02 22:12:13 -0700
committerSteve Kondik <shade@chemlab.org>2013-11-10 14:50:08 -0800
commitfd78d710c887fd17cfccc0b912c4230d28d64135 (patch)
tree4e6459690e59d7f9303b5d871198606206be15cd
parent93dc61d7b20e4d505457ef202bf39b8cc57210c3 (diff)
downloadandroid_packages_apps_Gallery2-fd78d710c887fd17cfccc0b912c4230d28d64135.tar.gz
android_packages_apps_Gallery2-fd78d710c887fd17cfccc0b912c4230d28d64135.tar.bz2
android_packages_apps_Gallery2-fd78d710c887fd17cfccc0b912c4230d28d64135.zip
camera: Improve UX consistency
* Create "Enhance" submenu for HDR, beauty, etc * Reorganize to simplify the menu structure * Match video mode menus with camera mode Change-Id: I69c72462b5b2481cf817bce7ccc4757d7f8d6e70
-rwxr-xr-xres/drawable-hdpi/ic_enhance.pngbin0 -> 4583 bytes
-rwxr-xr-xres/drawable-hdpi/ic_tint.pngbin0 -> 4170 bytes
-rwxr-xr-xres/drawable-mdpi/ic_enhance.pngbin0 -> 2929 bytes
-rwxr-xr-xres/drawable-mdpi/ic_tint.pngbin0 -> 2724 bytes
-rwxr-xr-xres/drawable-xhdpi/ic_beautify.pngbin0 -> 8182 bytes
-rwxr-xr-xres/drawable-xhdpi/ic_enhance.pngbin0 -> 6017 bytes
-rwxr-xr-xres/drawable-xhdpi/ic_indicator_beautify.pngbin0 -> 4112 bytes
-rwxr-xr-xres/drawable-xhdpi/ic_indicator_slowshutter.pngbin0 -> 3456 bytes
-rwxr-xr-xres/drawable-xhdpi/ic_slowshutter.pngbin0 -> 4800 bytes
-rwxr-xr-xres/drawable-xhdpi/ic_tint.pngbin0 -> 5715 bytes
-rwxr-xr-x[-rw-r--r--]res/values/cm_arrays.xml24
-rw-r--r--res/values/cm_strings.xml5
-rw-r--r--res/xml/camera_preferences.xml10
-rw-r--r--res/xml/video_preferences.xml6
-rw-r--r--src/com/android/camera/CameraSettings.java9
-rwxr-xr-x[-rw-r--r--]src/com/android/camera/OnScreenIndicators.java8
-rwxr-xr-x[-rw-r--r--]src/com/android/camera/PhotoMenu.java69
-rw-r--r--src/com/android/camera/PhotoUI.java10
-rwxr-xr-x[-rw-r--r--]src/com/android/camera/VideoMenu.java273
-rw-r--r--src/com/android/camera/VideoModule.java2
-rw-r--r--src/com/android/camera/VideoUI.java19
21 files changed, 289 insertions, 146 deletions
diff --git a/res/drawable-hdpi/ic_enhance.png b/res/drawable-hdpi/ic_enhance.png
new file mode 100755
index 000000000..b4158ba85
--- /dev/null
+++ b/res/drawable-hdpi/ic_enhance.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_tint.png b/res/drawable-hdpi/ic_tint.png
new file mode 100755
index 000000000..34a0bb2de
--- /dev/null
+++ b/res/drawable-hdpi/ic_tint.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_enhance.png b/res/drawable-mdpi/ic_enhance.png
new file mode 100755
index 000000000..12f73baf9
--- /dev/null
+++ b/res/drawable-mdpi/ic_enhance.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_tint.png b/res/drawable-mdpi/ic_tint.png
new file mode 100755
index 000000000..cd593bbde
--- /dev/null
+++ b/res/drawable-mdpi/ic_tint.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_beautify.png b/res/drawable-xhdpi/ic_beautify.png
new file mode 100755
index 000000000..e1483314b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_beautify.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_enhance.png b/res/drawable-xhdpi/ic_enhance.png
new file mode 100755
index 000000000..9c34ea2e9
--- /dev/null
+++ b/res/drawable-xhdpi/ic_enhance.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_indicator_beautify.png b/res/drawable-xhdpi/ic_indicator_beautify.png
new file mode 100755
index 000000000..bc88810df
--- /dev/null
+++ b/res/drawable-xhdpi/ic_indicator_beautify.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_indicator_slowshutter.png b/res/drawable-xhdpi/ic_indicator_slowshutter.png
new file mode 100755
index 000000000..fdfbe7f8f
--- /dev/null
+++ b/res/drawable-xhdpi/ic_indicator_slowshutter.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_slowshutter.png b/res/drawable-xhdpi/ic_slowshutter.png
new file mode 100755
index 000000000..e12beda8d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_slowshutter.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_tint.png b/res/drawable-xhdpi/ic_tint.png
new file mode 100755
index 000000000..5cd73ab43
--- /dev/null
+++ b/res/drawable-xhdpi/ic_tint.png
Binary files differ
diff --git a/res/values/cm_arrays.xml b/res/values/cm_arrays.xml
index 221f170e9..18f78334d 100644..100755
--- a/res/values/cm_arrays.xml
+++ b/res/values/cm_arrays.xml
@@ -177,21 +177,45 @@
<string-array name="pref_camera_slow_shutter_entries" translatable="false">
<item>@string/pref_camera_slow_shutter_entry_off</item>
<item>@string/pref_camera_slow_shutter_entry_auto</item>
+ <!--
<item>@string/pref_camera_slow_shutter_entry_half_second</item>
<item>@string/pref_camera_slow_shutter_entry_1s</item>
<item>@string/pref_camera_slow_shutter_entry_2s</item>
<item>@string/pref_camera_slow_shutter_entry_4s</item>
<item>@string/pref_camera_slow_shutter_entry_8s</item>
+ -->
</string-array>
<string-array name="pref_camera_slow_shutter_entryvalues" translatable="false">
<item>slow-shutter-off</item>
<item>slow-shutter-auto</item>
+ <!--
<item>slow-shutter-1/2s</item>
<item>slow-shutter-1s</item>
<item>slow-shutter-2s</item>
<item>slow-shutter-4s</item>
<item>slow-shutter-8s</item>
+ -->
+ </string-array>
+
+ <string-array name="pref_camera_slow_shutter_icons" translatable="false">
+ <item>@drawable/ic_slowshutter</item>
+ <item>@drawable/ic_slowshutter</item>
+ </string-array>
+
+ <string-array name="pref_camera_beauty_mode_icons" translatable="false">
+ <item>@drawable/ic_beautify</item>
+ <item>@drawable/ic_beautify</item>
+ </string-array>
+
+ <string-array name="pref_camera_beauty_mode_labels" translatable="false">
+ <item>@string/camera_menu_beauty_mode_label</item>
+ <item>@string/camera_menu_beauty_mode_label</item>
+ </string-array>
+
+ <string-array name="pref_camera_slow_shutter_labels" translatable="false">
+ <item>@string/camera_menu_slow_shutter_label</item>
+ <item>@string/camera_menu_slow_shutter_label</item>
</string-array>
</resources>
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
index 453fb0f85..030872d92 100644
--- a/res/values/cm_strings.xml
+++ b/res/values/cm_strings.xml
@@ -260,4 +260,9 @@
<string name="pref_camera_slow_shutter_entry_4s">4 seconds</string>
<string name="pref_camera_slow_shutter_entry_8s">8 seconds</string>
+ <string name="camera_menu_enhance_label">ENHANCE</string>
+ <string name="camera_menu_slow_shutter_label">SLOW SHUTTER</string>
+ <string name="camera_menu_beauty_mode_label">BEAUTIFY</string>
+ <string name="camera_menu_colorize_label">COLORIZE</string>
+ <string name="camera_menu_effects_label">EFFECTS</string>
</resources>
diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml
index 0da6df6e2..b35cad4d6 100644
--- a/res/xml/camera_preferences.xml
+++ b/res/xml/camera_preferences.xml
@@ -132,16 +132,22 @@
camera:title="@string/pref_camera_timer_sound_title"
camera:entries="@array/pref_camera_timer_sound_entries"
camera:entryValues="@array/pref_camera_timer_sound_entryvalues" />
- <ListPreference
+ <IconListPreference
camera:key="pref_camera_beauty_mode"
camera:defaultValue="@string/pref_camera_beauty_mode_default"
camera:title="@string/pref_camera_beauty_mode_title"
+ camera:icons="@array/pref_camera_beauty_mode_icons"
+ camera:largeIcons="@array/pref_camera_beauty_mode_icons"
+ camera:labelList="@array/pref_camera_beauty_mode_labels"
camera:entries="@array/pref_switch_entries"
camera:entryValues="@array/pref_switch_entryvalues" />
- <ListPreference
+ <IconListPreference
camera:key="pref_camera_slow_shutter"
camera:defaultValue="@string/pref_camera_slow_shutter_default"
camera:title="@string/pref_camera_slow_shutter_title"
+ camera:icons="@array/pref_camera_slow_shutter_icons"
+ camera:largeIcons="@array/pref_camera_slow_shutter_icons"
+ camera:labelList="@array/pref_camera_slow_shutter_labels"
camera:entries="@array/pref_camera_slow_shutter_entries"
camera:entryValues="@array/pref_camera_slow_shutter_entryvalues" />
diff --git a/res/xml/video_preferences.xml b/res/xml/video_preferences.xml
index b2967ee0b..b91e06b0a 100644
--- a/res/xml/video_preferences.xml
+++ b/res/xml/video_preferences.xml
@@ -79,6 +79,7 @@
camera:icons="@array/camera_recordlocation_icons"
camera:largeIcons="@array/camera_recordlocation_largeicons"
camera:entries="@array/pref_switch_entries"
+ camera:labelList="@array/pref_camera_recordlocation_labels"
camera:entryValues="@array/pref_switch_entryvalues" />
<IconListPreference
camera:key="pref_camera_video_hdr_key"
@@ -107,10 +108,13 @@
camera:title="@string/pref_video_jpeg_title"
camera:entries="@array/pref_camera_jpeg_entries"
camera:entryValues="@array/pref_camera_jpeg_entryvalues" />
- <ListPreference
+ <IconListPreference
camera:key="pref_camera_beauty_mode"
camera:defaultValue="@string/pref_camera_beauty_mode_default"
camera:title="@string/pref_camera_beauty_mode_title"
+ camera:icons="@array/pref_camera_beauty_mode_icons"
+ camera:largeIcons="@array/pref_camera_beauty_mode_icons"
+ camera:labelList="@array/pref_camera_beauty_mode_labels"
camera:entries="@array/pref_switch_entries"
camera:entryValues="@array/pref_switch_entryvalues" />
</PreferenceGroup>
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index f14e359ba..671ce4dee 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -721,6 +721,10 @@ public class CameraSettings {
return params.get("face-beautify") != null;
}
+ public static boolean isBeautyModeEnabled(Parameters params) {
+ return isBeautyModeSupported(params) && (Integer.valueOf(params.get("face-beautify")) > 0);
+ }
+
public static List<String> getSupportedSlowShutter(Parameters params) {
String p = params.get("slow-shutter-values");
if (p != null) {
@@ -735,6 +739,11 @@ public class CameraSettings {
}
}
+ public static boolean isSlowShutterEnabled(Parameters params) {
+ return (getSupportedSlowShutter(params) != null) &&
+ !"slow-shutter-off".equals(params.get("slow-shutter"));
+ }
+
/**
* Enable video mode for certain cameras.
*
diff --git a/src/com/android/camera/OnScreenIndicators.java b/src/com/android/camera/OnScreenIndicators.java
index be9a6b201..482307125 100644..100755
--- a/src/com/android/camera/OnScreenIndicators.java
+++ b/src/com/android/camera/OnScreenIndicators.java
@@ -173,7 +173,13 @@ public class OnScreenIndicators {
if (mSceneIndicator == null) {
return;
}
- if ((value == null) || Parameters.SCENE_MODE_AUTO.equals(value)) {
+ if (value == null) {
+ mSceneIndicator.setImageResource(R.drawable.ic_indicator_sce_off);
+ } else if ("beauty".equals(value)) {
+ mSceneIndicator.setImageResource(R.drawable.ic_indicator_beautify);
+ } else if ("slow".equals(value)) {
+ mSceneIndicator.setImageResource(R.drawable.ic_indicator_slowshutter);
+ } else if (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);
diff --git a/src/com/android/camera/PhotoMenu.java b/src/com/android/camera/PhotoMenu.java
index 96e97b3d1..0cfdaa925 100644..100755
--- a/src/com/android/camera/PhotoMenu.java
+++ b/src/com/android/camera/PhotoMenu.java
@@ -67,17 +67,54 @@ public class PhotoMenu extends PieController
Locale locale = res.getConfiguration().locale;
// the order is from left to right in the menu
- // hdr
- if (group.findPreference(CameraSettings.KEY_CAMERA_HDR) != null) {
- item = makeSwitchItem(CameraSettings.KEY_CAMERA_HDR, true);
- mRenderer.addItem(item);
- }
// exposure compensation
if (group.findPreference(CameraSettings.KEY_EXPOSURE) != null) {
item = makeItem(CameraSettings.KEY_EXPOSURE);
item.setLabel(res.getString(R.string.pref_exposure_label));
mRenderer.addItem(item);
}
+ // enhance
+ PieItem enhance = makeItem(R.drawable.ic_enhance);
+ enhance.setLabel(res.getString(R.string.camera_menu_enhance_label));
+ mRenderer.addItem(enhance);
+ // hdr
+ if (group.findPreference(CameraSettings.KEY_CAMERA_HDR) != null) {
+ item = makeSwitchItem(CameraSettings.KEY_CAMERA_HDR, true);
+ enhance.addItem(item);
+ }
+ // beautify
+ if (group.findPreference(CameraSettings.KEY_BEAUTY_MODE) != null) {
+ item = makeSwitchItem(CameraSettings.KEY_BEAUTY_MODE, true);
+ enhance.addItem(item);
+ }
+ // slow shutter
+ if (group.findPreference(CameraSettings.KEY_SLOW_SHUTTER) != null) {
+ item = makeSwitchItem(CameraSettings.KEY_SLOW_SHUTTER, true);
+ enhance.addItem(item);
+ }
+ // color effect
+ final ListPreference colorPref = group.findPreference(CameraSettings.KEY_COLOR_EFFECT);
+ if (colorPref != null) {
+ item = makeItem(R.drawable.ic_tint);
+ item.setLabel(res.getString(
+ R.string.pref_camera_coloreffect_title).toUpperCase(locale));
+ item.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(PieItem item) {
+ ListPrefSettingPopup popup =
+ (ListPrefSettingPopup) mActivity.getLayoutInflater().inflate(
+ R.layout.list_pref_setting_popup, null, false);
+ popup.initialize(colorPref);
+ popup.setSettingChangedListener(PhotoMenu.this);
+ mUI.dismissPopup();
+ mPopup = popup;
+ mPopupStatus = POPUP_SECOND_LEVEL;
+ mUI.showPopup(mPopup);
+ }
+ });
+ enhance.addItem(item);
+ }
+
// more settings
PieItem more = makeItem(R.drawable.ic_settings_holo_light);
more.setLabel(res.getString(R.string.camera_menu_settings_label));
@@ -187,19 +224,16 @@ public class PhotoMenu extends PieController
mUI.showPopup(mPopup);
}
});
- more.addItem(item);
+ enhance.addItem(item);
}
// extra settings popup
mOtherKeys = new String[] {
CameraSettings.KEY_STORAGE,
+ CameraSettings.KEY_POWER_SHUTTER,
CameraSettings.KEY_FOCUS_MODE,
CameraSettings.KEY_FOCUS_TIME,
- CameraSettings.KEY_BEAUTY_MODE,
- CameraSettings.KEY_SLOW_SHUTTER,
- CameraSettings.KEY_POWER_SHUTTER,
CameraSettings.KEY_ISO_MODE,
CameraSettings.KEY_JPEG,
- CameraSettings.KEY_COLOR_EFFECT,
CameraSettings.KEY_BURST_MODE
};
item = makeItem(R.drawable.ic_settings_holo_light);
@@ -223,7 +257,7 @@ public class PhotoMenu extends PieController
}
@Override
- // Hit when an item in a popup gets selected
+ // Hit when an item in the second-level popup gets selected
public void onListPrefChanged(ListPreference pref) {
if (mPopup != null) {
if (mPopupStatus == POPUP_SECOND_LEVEL) {
@@ -234,7 +268,7 @@ public class PhotoMenu extends PieController
}
public void popupDismissed() {
- // the popup gets dismissed
+ // if the 2nd level popup gets dismissed
if (mPopup != null) {
if (mPopupStatus == POPUP_SECOND_LEVEL) {
mPopup = null;
@@ -258,11 +292,20 @@ public class PhotoMenu extends PieController
@Override
public void onSettingChanged(ListPreference pref) {
// Reset the scene mode if HDR is set to on. Reset HDR if scene mode is
- // set to non-auto.
+ // set to non-auto. Also disable beautify when HDR is active.
if (notSame(pref, CameraSettings.KEY_CAMERA_HDR, mSettingOff)) {
setPreference(CameraSettings.KEY_SCENE_MODE, Parameters.SCENE_MODE_AUTO);
+ setPreference(CameraSettings.KEY_BEAUTY_MODE, mSettingOff);
+ setPreference(CameraSettings.KEY_SLOW_SHUTTER, "slow-shutter-off");
} else if (notSame(pref, CameraSettings.KEY_SCENE_MODE, Parameters.SCENE_MODE_AUTO)) {
setPreference(CameraSettings.KEY_CAMERA_HDR, mSettingOff);
+ setPreference(CameraSettings.KEY_SLOW_SHUTTER, "slow-shutter-off");
+ } else if (notSame(pref, CameraSettings.KEY_BEAUTY_MODE, mSettingOff)) {
+ setPreference(CameraSettings.KEY_CAMERA_HDR, mSettingOff);
+ setPreference(CameraSettings.KEY_SLOW_SHUTTER, "slow-shutter-off");
+ } else if (notSame(pref, CameraSettings.KEY_SLOW_SHUTTER, "slow-shutter-off")) {
+ setPreference(CameraSettings.KEY_CAMERA_HDR, mSettingOff);
+ setPreference(CameraSettings.KEY_BEAUTY_MODE, mSettingOff);
}
super.onSettingChanged(pref);
}
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java
index bf804e3f7..394111b56 100644
--- a/src/com/android/camera/PhotoUI.java
+++ b/src/com/android/camera/PhotoUI.java
@@ -315,7 +315,15 @@ public class PhotoUI implements PieListener,
public void updateOnScreenIndicators(Camera.Parameters params,
PreferenceGroup group, ComboPreferences prefs) {
if (params == null || group == null) return;
- mOnScreenIndicators.updateSceneOnScreenIndicator(params.getSceneMode());
+ String scene = params.getSceneMode();
+ // use the scene indicator for beautify/slowshutter since they
+ // will never coexist with scenemodes or hdr
+ if (CameraSettings.isBeautyModeEnabled(params)) {
+ scene = "beauty";
+ } else if (CameraSettings.isSlowShutterEnabled(params)) {
+ scene = "slow";
+ }
+ mOnScreenIndicators.updateSceneOnScreenIndicator(scene);
mOnScreenIndicators.updateExposureOnScreenIndicator(params,
CameraSettings.readExposure(prefs));
mOnScreenIndicators.updateFlashOnScreenIndicator(params.getFlashMode());
diff --git a/src/com/android/camera/VideoMenu.java b/src/com/android/camera/VideoMenu.java
index 20ca44a65..842bb1149 100644..100755
--- a/src/com/android/camera/VideoMenu.java
+++ b/src/com/android/camera/VideoMenu.java
@@ -18,6 +18,7 @@
package com.android.camera;
import android.content.Context;
+import android.content.res.Resources;
import android.view.LayoutInflater;
import com.android.camera.ui.AbstractSettingPopup;
@@ -29,6 +30,8 @@ import com.android.camera.ui.PieRenderer;
import com.android.camera.ui.TimeIntervalPopup;
import com.android.gallery3d.R;
+import java.util.Locale;
+
public class VideoMenu extends PieController
implements MoreSettingPopup.Listener,
ListPrefSettingPopup.Listener,
@@ -57,108 +60,172 @@ public class VideoMenu extends PieController
mPopup = null;
mPopupStatus = POPUP_NONE;
PieItem item = null;
+ final Resources res = mActivity.getResources();
+ Locale locale = res.getConfiguration().locale;
+ // the order is from left to right in the menu
+
+ // exposure compensation
+ if (group.findPreference(CameraSettings.KEY_EXPOSURE) != null) {
+ item = makeItem(CameraSettings.KEY_EXPOSURE);
+ mRenderer.addItem(item);
+ }
+ // enhance
+ PieItem enhance = makeItem(R.drawable.ic_enhance);
+ enhance.setLabel(res.getString(R.string.camera_menu_enhance_label));
+ mRenderer.addItem(enhance);
// hdr
if (group.findPreference(CameraSettings.KEY_VIDEO_HDR) != null) {
item = makeSwitchItem(CameraSettings.KEY_VIDEO_HDR, true);
- mRenderer.addItem(item);
+ enhance.addItem(item);
}
- // white balance
- if (group.findPreference(CameraSettings.KEY_WHITE_BALANCE) != null) {
- item = makeItem(CameraSettings.KEY_WHITE_BALANCE);
- mRenderer.addItem(item);
+ // beautify
+ if (group.findPreference(CameraSettings.KEY_BEAUTY_MODE) != null) {
+ item = makeSwitchItem(CameraSettings.KEY_BEAUTY_MODE, true);
+ enhance.addItem(item);
}
- // exposure compensation
- if (group.findPreference(CameraSettings.KEY_EXPOSURE) != null) {
- item = makeItem(CameraSettings.KEY_EXPOSURE);
+ // color effect
+ final ListPreference colorPref =
+ group.findPreference(CameraSettings.KEY_VIDEOCAMERA_COLOR_EFFECT);
+ if (colorPref != null) {
+ item = makeItem(R.drawable.ic_tint);
+ item.setLabel(res.getString(
+ R.string.pref_camera_coloreffect_title).toUpperCase(locale));
+ item.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(PieItem item) {
+ ListPrefSettingPopup popup =
+ (ListPrefSettingPopup) mActivity.getLayoutInflater().inflate(
+ R.layout.list_pref_setting_popup, null, false);
+ popup.initialize(colorPref);
+ popup.setSettingChangedListener(VideoMenu.this);
+ mUI.dismissPopup();
+ mPopup = popup;
+ mPopupStatus = POPUP_SECOND_LEVEL;
+ mUI.showPopup(mPopup);
+ }
+ });
+ enhance.addItem(item);
+ }
+ // video effects
+ if (group.findPreference(CameraSettings.KEY_VIDEO_EFFECT) != null) {
+ item = makeItem(CameraSettings.KEY_VIDEO_EFFECT);
+ item.setLabel(res.getString(R.string.camera_menu_effects_label));
+ enhance.addItem(item);
+ }
+
+ // more settings
+ PieItem more = makeItem(R.drawable.ic_settings_holo_light);
+ more.setLabel(res.getString(R.string.camera_menu_settings_label));
+ mRenderer.addItem(more);
+ // flash
+ if (group.findPreference(CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE) != null) {
+ item = makeItem(CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE);
mRenderer.addItem(item);
}
- // settings popup
- mOtherKeys = new String[] {
- CameraSettings.KEY_VIDEO_EFFECT,
- CameraSettings.KEY_BEAUTY_MODE,
- CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL,
- CameraSettings.KEY_VIDEO_QUALITY,
- CameraSettings.KEY_RECORD_LOCATION,
- CameraSettings.KEY_STORAGE,
- CameraSettings.KEY_POWER_SHUTTER,
- CameraSettings.KEY_VIDEOCAMERA_COLOR_EFFECT,
- CameraSettings.KEY_VIDEOCAMERA_JPEG
- };
- item = makeItem(R.drawable.ic_settings_holo_light);
- item.setLabel(mActivity.getResources().getString(R.string.camera_menu_settings_label));
- item.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(PieItem item) {
- if (mPopup == null || mPopupStatus != POPUP_FIRST_LEVEL) {
- initializePopup();
- mPopupStatus = POPUP_FIRST_LEVEL;
- }
- mUI.showPopup(mPopup);
- }
- });
- mRenderer.addItem(item);
// camera switcher
if (group.findPreference(CameraSettings.KEY_CAMERA_ID) != null) {
- item = makeItem(R.drawable.ic_switch_back);
- IconListPreference lpref = (IconListPreference) group.findPreference(
- CameraSettings.KEY_CAMERA_ID);
- item.setLabel(lpref.getLabel());
- item.setImageResource(mActivity,
- ((IconListPreference) lpref).getIconIds()
- [lpref.findIndexOfValue(lpref.getValue())]);
-
+ item = makeSwitchItem(CameraSettings.KEY_CAMERA_ID, false);
final PieItem fitem = item;
- item.setOnSuperClickListener(new OnClickListener() {
-
- @Override
- public void onClick(PieItem item) {
- mListener.onCameraPickerSuperClicked();
- }
- });
item.setOnClickListener(new OnClickListener() {
-
@Override
public void onClick(PieItem item) {
// Find the index of next camera.
- ListPreference pref =
- mPreferenceGroup.findPreference(CameraSettings.KEY_CAMERA_ID);
+ ListPreference pref = mPreferenceGroup
+ .findPreference(CameraSettings.KEY_CAMERA_ID);
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.setImageResource(mActivity,
- ((IconListPreference) pref).getIconIds()[index]);
- fitem.setLabel(pref.getLabel());
- mListener.onCameraPickerClicked(newCameraId);
+ pref.setValueIndex(index);
+ mListener.onCameraPickerClicked(index);
}
+ updateItem(fitem, CameraSettings.KEY_CAMERA_ID);
}
});
mRenderer.addItem(item);
}
- // flash
- if (group.findPreference(CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE) != null) {
- item = makeItem(CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE);
- mRenderer.addItem(item);
+ // location
+ if (group.findPreference(CameraSettings.KEY_RECORD_LOCATION) != null) {
+ item = makeSwitchItem(CameraSettings.KEY_RECORD_LOCATION, true);
+ more.addItem(item);
+ if (mActivity.isSecureCamera()) {
+ // Prevent location preference from getting changed in secure camera mode
+ item.setEnabled(false);
+ }
}
- }
-
- @Override
- public void reloadPreferences() {
- super.reloadPreferences();
- if (mPopup != null) {
- mPopup.reloadPreference();
+ // time lapse
+ final ListPreference tlPref =
+ group.findPreference(CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL);
+ item = makeItem(R.drawable.ic_timer);
+ item.setLabel(res.getString(
+ R.string.pref_video_time_lapse_frame_interval_title).toUpperCase(locale));
+ item.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(PieItem item) {
+ TimeIntervalPopup timeInterval =
+ (TimeIntervalPopup) mActivity.getLayoutInflater().inflate(
+ R.layout.time_interval_popup, null, false);
+ timeInterval.initialize((IconListPreference) tlPref);
+ timeInterval.setSettingChangedListener(VideoMenu.this);
+ mUI.dismissPopup();
+ mPopup = timeInterval;
+ mPopupStatus = POPUP_SECOND_LEVEL;
+ mUI.showPopup(mPopup);
+ }
+ });
+ more.addItem(item);
+ // video size
+ final ListPreference sizePref = group.findPreference(CameraSettings.KEY_VIDEO_QUALITY);
+ if (sizePref != null) {
+ item = makeItem(R.drawable.ic_imagesize);
+ item.setLabel(res.getString(
+ R.string.pref_video_quality_title).toUpperCase(locale));
+ item.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(PieItem item) {
+ ListPrefSettingPopup popup =
+ (ListPrefSettingPopup) mActivity.getLayoutInflater().inflate(
+ R.layout.list_pref_setting_popup, null, false);
+ popup.initialize(sizePref);
+ popup.setSettingChangedListener(VideoMenu.this);
+ mUI.dismissPopup();
+ mPopup = popup;
+ mPopupStatus = POPUP_SECOND_LEVEL;
+ mUI.showPopup(mPopup);
+ }
+ });
+ more.addItem(item);
}
- }
-
- @Override
- public void overrideSettings(final String ... keyvalues) {
- super.overrideSettings(keyvalues);
- if (mPopup == null || mPopupStatus != POPUP_FIRST_LEVEL) {
- mPopupStatus = POPUP_FIRST_LEVEL;
- initializePopup();
+ // white balance
+ if (group.findPreference(CameraSettings.KEY_WHITE_BALANCE) != null) {
+ item = makeItem(CameraSettings.KEY_WHITE_BALANCE);
+ item.setLabel(res.getString(R.string.pref_camera_whitebalance_label));
+ more.addItem(item);
}
- ((MoreSettingPopup) mPopup).overrideSettings(keyvalues);
+ // extra settings popup
+ mOtherKeys = new String[] {
+ CameraSettings.KEY_STORAGE,
+ CameraSettings.KEY_POWER_SHUTTER,
+ CameraSettings.KEY_VIDEOCAMERA_JPEG
+ };
+ item = makeItem(R.drawable.ic_settings_holo_light);
+ item.setLabel(res.getString(R.string.camera_menu_more_label).toUpperCase(locale));
+ item.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(PieItem item) {
+ if (mPopup == null || mPopupStatus != POPUP_FIRST_LEVEL) {
+ LayoutInflater inflater = mActivity.getLayoutInflater();
+ MoreSettingPopup popup = (MoreSettingPopup) inflater.inflate(
+ R.layout.more_setting_popup, null, false);
+ popup.initialize(mPreferenceGroup, mOtherKeys);
+ popup.setSettingChangedListener(VideoMenu.this);
+ mPopup = popup;
+ mPopupStatus = POPUP_FIRST_LEVEL;
+ }
+ mUI.showPopup(mPopup);
+ }
+ });
+ more.addItem(item);
}
@Override
@@ -166,33 +233,18 @@ public class VideoMenu extends PieController
public void onListPrefChanged(ListPreference pref) {
if (mPopup != null) {
if (mPopupStatus == POPUP_SECOND_LEVEL) {
- mUI.dismissPopup(true);
+ mUI.dismissPopup();
}
}
- super.onSettingChanged(pref);
- }
-
- protected void initializePopup() {
- LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
-
- MoreSettingPopup popup = (MoreSettingPopup) inflater.inflate(
- R.layout.more_setting_popup, null, false);
- popup.setSettingChangedListener(this);
- popup.initialize(mPreferenceGroup, mOtherKeys);
- if (mActivity.isSecureCamera()) {
- // Prevent location preference from getting changed in secure camera mode
- popup.setPreferenceEnabled(CameraSettings.KEY_RECORD_LOCATION, false);
- }
- mPopup = popup;
+ onSettingChanged(pref);
}
- public void popupDismissed(boolean topPopupOnly) {
- initializePopup();
+ public void popupDismissed() {
// if the 2nd level popup gets dismissed
- if (mPopupStatus == POPUP_SECOND_LEVEL) {
- mPopupStatus = POPUP_FIRST_LEVEL;
- if (topPopupOnly) mUI.showPopup(mPopup);
+ if (mPopup != null) {
+ if (mPopupStatus == POPUP_SECOND_LEVEL) {
+ mPopup = null;
+ }
}
}
@@ -202,24 +254,13 @@ public class VideoMenu extends PieController
public void onPreferenceClicked(ListPreference pref) {
if (mPopupStatus != POPUP_FIRST_LEVEL) return;
- LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
-
- if (CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL.equals(pref.getKey())) {
- TimeIntervalPopup timeInterval = (TimeIntervalPopup) inflater.inflate(
- R.layout.time_interval_popup, null, false);
- timeInterval.initialize((IconListPreference) pref);
- timeInterval.setSettingChangedListener(this);
- mUI.dismissPopup(true);
- mPopup = timeInterval;
- } else {
- ListPrefSettingPopup basic = (ListPrefSettingPopup) inflater.inflate(
- R.layout.list_pref_setting_popup, null, false);
- basic.initialize(pref);
- basic.setSettingChangedListener(this);
- mUI.dismissPopup(true);
- mPopup = basic;
- }
+ LayoutInflater inflater = mActivity.getLayoutInflater();
+ ListPrefSettingPopup basic = (ListPrefSettingPopup) inflater.inflate(
+ R.layout.list_pref_setting_popup, null, false);
+ basic.initialize(pref);
+ basic.setSettingChangedListener(this);
+ mUI.dismissPopup();
+ mPopup = basic;
mUI.showPopup(mPopup);
mPopupStatus = POPUP_SECOND_LEVEL;
}
diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java
index 761fc128e..70b3ce0e3 100644
--- a/src/com/android/camera/VideoModule.java
+++ b/src/com/android/camera/VideoModule.java
@@ -556,7 +556,7 @@ public class VideoModule implements CameraModule,
if (!mMediaRecorderRecording) {
// check for dismissing popup
- mUI.dismissPopup(true);
+ mUI.dismissPopup();
return;
}
diff --git a/src/com/android/camera/VideoUI.java b/src/com/android/camera/VideoUI.java
index 47fe2bcfd..69a123e63 100644
--- a/src/com/android/camera/VideoUI.java
+++ b/src/com/android/camera/VideoUI.java
@@ -169,7 +169,7 @@ public class VideoUI implements SurfaceHolder.Callback, PieRenderer.PieListener,
public boolean collapseCameraControls() {
boolean ret = false;
if (mPopup != null) {
- dismissPopup(false);
+ dismissPopup();
ret = true;
}
return ret;
@@ -177,7 +177,7 @@ public class VideoUI implements SurfaceHolder.Callback, PieRenderer.PieListener,
public boolean removeTopLevelPopup() {
if (mPopup != null) {
- dismissPopup(true);
+ dismissPopup();
return true;
}
return false;
@@ -336,14 +336,11 @@ public class VideoUI implements SurfaceHolder.Callback, PieRenderer.PieListener,
mGestures.addTouchReceiver(mPopup);
}
- public void dismissPopup(boolean topLevelOnly) {
- dismissPopup(topLevelOnly, true);
+ public void dismissPopup() {
+ dismissPopup(true);
}
- public void dismissPopup(boolean topLevelPopupOnly, boolean fullScreen) {
- // In review mode, we do not want to bring up the camera UI
- if (mController.isInReviewMode()) return;
-
+ private void dismissPopup(boolean fullScreen) {
if (fullScreen) {
mActivity.showUI();
mBlocker.setVisibility(View.VISIBLE);
@@ -354,7 +351,7 @@ public class VideoUI implements SurfaceHolder.Callback, PieRenderer.PieListener,
((FrameLayout) mRootView).removeView(mPopup);
mPopup = null;
}
- mVideoMenu.popupDismissed(topLevelPopupOnly);
+ mVideoMenu.popupDismissed();
}
public void onShowSwitcherPopup() {
@@ -388,7 +385,7 @@ public class VideoUI implements SurfaceHolder.Callback, PieRenderer.PieListener,
// PieListener
@Override
public void onPieOpened(int centerX, int centerY) {
- dismissPopup(false, true);
+ dismissPopup();
mActivity.cancelActivityTouchHandling();
mActivity.setSwipingEnabled(false);
}
@@ -501,7 +498,7 @@ public class VideoUI implements SurfaceHolder.Callback, PieRenderer.PieListener,
mGestures.setEnabled(full);
}
if (mPopup != null) {
- dismissPopup(false, full);
+ dismissPopup();
}
if (mRenderOverlay != null) {
// this can not happen in capture mode