diff options
| author | Steve Kondik <shade@chemlab.org> | 2013-11-02 22:12:13 -0700 |
|---|---|---|
| committer | Steve Kondik <shade@chemlab.org> | 2013-11-10 14:50:08 -0800 |
| commit | fd78d710c887fd17cfccc0b912c4230d28d64135 (patch) | |
| tree | 4e6459690e59d7f9303b5d871198606206be15cd | |
| parent | 93dc61d7b20e4d505457ef202bf39b8cc57210c3 (diff) | |
| download | android_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
21 files changed, 289 insertions, 146 deletions
diff --git a/res/drawable-hdpi/ic_enhance.png b/res/drawable-hdpi/ic_enhance.png Binary files differnew file mode 100755 index 000000000..b4158ba85 --- /dev/null +++ b/res/drawable-hdpi/ic_enhance.png diff --git a/res/drawable-hdpi/ic_tint.png b/res/drawable-hdpi/ic_tint.png Binary files differnew file mode 100755 index 000000000..34a0bb2de --- /dev/null +++ b/res/drawable-hdpi/ic_tint.png diff --git a/res/drawable-mdpi/ic_enhance.png b/res/drawable-mdpi/ic_enhance.png Binary files differnew file mode 100755 index 000000000..12f73baf9 --- /dev/null +++ b/res/drawable-mdpi/ic_enhance.png diff --git a/res/drawable-mdpi/ic_tint.png b/res/drawable-mdpi/ic_tint.png Binary files differnew file mode 100755 index 000000000..cd593bbde --- /dev/null +++ b/res/drawable-mdpi/ic_tint.png diff --git a/res/drawable-xhdpi/ic_beautify.png b/res/drawable-xhdpi/ic_beautify.png Binary files differnew file mode 100755 index 000000000..e1483314b --- /dev/null +++ b/res/drawable-xhdpi/ic_beautify.png diff --git a/res/drawable-xhdpi/ic_enhance.png b/res/drawable-xhdpi/ic_enhance.png Binary files differnew file mode 100755 index 000000000..9c34ea2e9 --- /dev/null +++ b/res/drawable-xhdpi/ic_enhance.png diff --git a/res/drawable-xhdpi/ic_indicator_beautify.png b/res/drawable-xhdpi/ic_indicator_beautify.png Binary files differnew file mode 100755 index 000000000..bc88810df --- /dev/null +++ b/res/drawable-xhdpi/ic_indicator_beautify.png diff --git a/res/drawable-xhdpi/ic_indicator_slowshutter.png b/res/drawable-xhdpi/ic_indicator_slowshutter.png Binary files differnew file mode 100755 index 000000000..fdfbe7f8f --- /dev/null +++ b/res/drawable-xhdpi/ic_indicator_slowshutter.png diff --git a/res/drawable-xhdpi/ic_slowshutter.png b/res/drawable-xhdpi/ic_slowshutter.png Binary files differnew file mode 100755 index 000000000..e12beda8d --- /dev/null +++ b/res/drawable-xhdpi/ic_slowshutter.png diff --git a/res/drawable-xhdpi/ic_tint.png b/res/drawable-xhdpi/ic_tint.png Binary files differnew file mode 100755 index 000000000..5cd73ab43 --- /dev/null +++ b/res/drawable-xhdpi/ic_tint.png 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 |
