diff options
author | Byunghun Jeon <bjeon@codeaurora.org> | 2014-11-05 16:21:23 -0800 |
---|---|---|
committer | Byunghun Jeon <bjeon@codeaurora.org> | 2014-11-19 17:53:30 -0800 |
commit | b6b60bf6cf88015956a7651f7249cf2781fc9d1d (patch) | |
tree | e8ae09bf48607e15f5caa76199d2190b997d5a7c /src/com/android/camera/VideoMenu.java | |
parent | a19529b701c6d74b91657441cdb7c3463fa7e8c6 (diff) | |
download | android_packages_apps_Snap-b6b60bf6cf88015956a7651f7249cf2781fc9d1d.tar.gz android_packages_apps_Snap-b6b60bf6cf88015956a7651f7249cf2781fc9d1d.tar.bz2 android_packages_apps_Snap-b6b60bf6cf88015956a7651f7249cf2781fc9d1d.zip |
SnapdragonCamera: Add back missing setting menus
Adding back missing setting menus
Change-Id: I803d3f694b1953aa6a8932cbba6bb55c0d0e6352
Diffstat (limited to 'src/com/android/camera/VideoMenu.java')
-rw-r--r-- | src/com/android/camera/VideoMenu.java | 684 |
1 files changed, 560 insertions, 124 deletions
diff --git a/src/com/android/camera/VideoMenu.java b/src/com/android/camera/VideoMenu.java index 08cb3849c..3f9cde7f0 100644 --- a/src/com/android/camera/VideoMenu.java +++ b/src/com/android/camera/VideoMenu.java @@ -16,155 +16,559 @@ package com.android.camera; +import android.animation.Animator; +import android.animation.Animator.AnimatorListener; import android.content.Context; +import android.content.res.Resources; +import android.content.SharedPreferences; +import android.graphics.Rect; +import android.preference.PreferenceManager; +import android.util.Log; import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewPropertyAnimator; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.GridView; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.FrameLayout; +import android.widget.FrameLayout.LayoutParams; -import com.android.camera.ui.AbstractSettingPopup; -import com.android.camera.ui.ListPrefSettingPopup; -import com.android.camera.ui.MoreSettingPopup; -import com.android.camera.ui.PieItem; -import com.android.camera.ui.PieItem.OnClickListener; -import com.android.camera.ui.PieRenderer; +import com.android.camera.ui.CameraControls; +import com.android.camera.ui.ListSubMenu; +import com.android.camera.ui.ListMenu; import com.android.camera.ui.TimeIntervalPopup; +import com.android.camera.ui.RotateImageView; import org.codeaurora.snapcam.R; +import android.widget.HorizontalScrollView; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.view.Display; +import com.android.camera.util.CameraUtil; -public class VideoMenu extends PieController - implements MoreSettingPopup.Listener, - ListPrefSettingPopup.Listener, +public class VideoMenu extends MenuController + implements ListMenu.Listener, + ListSubMenu.Listener, TimeIntervalPopup.Listener { - private static String TAG = "CAM_VideoMenu"; + private static String TAG = "VideoMenu"; private VideoUI mUI; private String[] mOtherKeys1; private String[] mOtherKeys2; - private AbstractSettingPopup mPopup1; - private AbstractSettingPopup mPopup2; - + private ListMenu mListMenu; + private ListSubMenu mListSubMenu; + private View mPreviewMenu; private static final int POPUP_NONE = 0; private static final int POPUP_FIRST_LEVEL = 1; private static final int POPUP_SECOND_LEVEL = 2; + private static final int POPUP_IN_ANIMATION = 3; + private static final int PREVIEW_MENU_NONE = 0; + private static final int PREVIEW_MENU_IN_ANIMATION = 1; + private static final int PREVIEW_MENU_ON = 2; + private static final int MODE_FILTER = 1; + private int mSceneStatus; + private View mFrontBackSwitcher; + private View mFilterModeSwitcher; private int mPopupStatus; - private int popupNum; + private int mPreviewMenuStatus; private CameraActivity mActivity; private String mPrevSavedVideoCDS; private boolean mIsVideoTNREnabled = false; private boolean mIsVideoCDSUpdated = false; + private static final int ANIMATION_DURATION = 300; + private static final int CLICK_THRESHOLD = 200; + private int previewMenuSize; - public VideoMenu(CameraActivity activity, VideoUI ui, PieRenderer pie) { - super(activity, pie); + public VideoMenu(CameraActivity activity, VideoUI ui) { + super(activity); mUI = ui; mActivity = activity; + mFrontBackSwitcher = ui.getRootView().findViewById(R.id.front_back_switcher); + mFilterModeSwitcher = ui.getRootView().findViewById(R.id.filter_mode_switcher); } public void initialize(PreferenceGroup group) { super.initialize(group); - mPopup1 = null; - mPopup2 = null; - popupNum = 0; + mListMenu = null; + mListSubMenu = null; mPopupStatus = POPUP_NONE; - PieItem item = null; + mPreviewMenuStatus = POPUP_NONE; + initFilterModeButton(mFilterModeSwitcher); // settings popup mOtherKeys1 = new String[] { - CameraSettings.KEY_DIS, - CameraSettings.KEY_VIDEO_EFFECT, - CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL, CameraSettings.KEY_VIDEO_QUALITY, - CameraSettings.KEY_VIDEO_ENCODER, - CameraSettings.KEY_AUDIO_ENCODER, CameraSettings.KEY_VIDEO_DURATION, CameraSettings.KEY_RECORD_LOCATION, - CameraSettings.KEY_CAMERA_SAVEPATH + CameraSettings.KEY_CAMERA_SAVEPATH, + CameraSettings.KEY_WHITE_BALANCE, + CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE, + CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE }; - - //settings popup - mOtherKeys2 = new String[] { - CameraSettings.KEY_COLOR_EFFECT, - CameraSettings.KEY_VIDEO_HDR, - CameraSettings.KEY_POWER_MODE, + mOtherKeys2 = new String[] { + CameraSettings.KEY_VIDEO_QUALITY, + CameraSettings.KEY_VIDEO_DURATION, + CameraSettings.KEY_RECORD_LOCATION, + CameraSettings.KEY_CAMERA_SAVEPATH, CameraSettings.KEY_WHITE_BALANCE, CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE, CameraSettings.KEY_SEE_MORE, CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE, + CameraSettings.KEY_DIS, + CameraSettings.KEY_VIDEO_EFFECT, + CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL, + CameraSettings.KEY_VIDEO_ENCODER, + CameraSettings.KEY_AUDIO_ENCODER, + CameraSettings.KEY_VIDEO_HDR, + CameraSettings.KEY_POWER_MODE, CameraSettings.KEY_VIDEO_ROTATION, CameraSettings.KEY_VIDEO_CDS_MODE, CameraSettings.KEY_VIDEO_TNR_MODE - }; + }; + mFrontBackSwitcher.setVisibility(View.INVISIBLE); + initSwitchItem(CameraSettings.KEY_CAMERA_ID, mFrontBackSwitcher); + } + + public boolean handleBackKey() { + if (mPreviewMenuStatus == PREVIEW_MENU_ON) { + animateSlideOut(mPreviewMenu); + return true; + } + if (mPopupStatus == POPUP_NONE) + return false; + if (mPopupStatus == POPUP_FIRST_LEVEL) { + animateSlideOut(mListMenu, 1); + } else if (mPopupStatus == POPUP_SECOND_LEVEL) { + animateFadeOut(mListSubMenu, 2); + ((ListMenu) mListMenu).resetHighlight(); + } + return true; + } + + public void closeSceneMode() { + mUI.removeSceneModeMenu(); + } + + public void tryToCloseSubList() { + if (mListMenu != null) + ((ListMenu) mListMenu).resetHighlight(); + + if (mPopupStatus == POPUP_SECOND_LEVEL) { + mUI.dismissLevel2(); + mPopupStatus = POPUP_FIRST_LEVEL; + } + } + + private void animateFadeOut(final ListView v, final int level) { + if (v == null || mPopupStatus == POPUP_IN_ANIMATION) + return; + mPopupStatus = POPUP_IN_ANIMATION; + + ViewPropertyAnimator vp = v.animate(); + vp.alpha(0f).setDuration(ANIMATION_DURATION); + vp.setListener(new AnimatorListener() { + @Override + public void onAnimationStart(Animator animation) { + } - PieItem item1 = makeItem(R.drawable.ic_settings_holo_light_01); - item1.setLabel(mActivity.getResources().getString(R.string.camera_menu_more_label)); - item1.setOnClickListener(new OnClickListener() { @Override - public void onClick(PieItem item) { - if (mPopup1 == null || mPopupStatus != POPUP_FIRST_LEVEL) { + public void onAnimationRepeat(Animator animation) { + + } + + @Override + public void onAnimationEnd(Animator animation) { + if (level == 1) { + mUI.dismissLevel1(); initializePopup(); + mPopupStatus = POPUP_NONE; + mUI.cleanupListview(); + } + else if (level == 2) { + mUI.dismissLevel2(); mPopupStatus = POPUP_FIRST_LEVEL; } - mUI.showPopup(mPopup1); - popupNum = 1; + } + + @Override + public void onAnimationCancel(Animator animation) { + if (level == 1) { + mUI.dismissLevel1(); + initializePopup(); + mPopupStatus = POPUP_NONE; + mUI.cleanupListview(); + } + else if (level == 2) { + mUI.dismissLevel2(); + mPopupStatus = POPUP_FIRST_LEVEL; + } + } }); - mRenderer.addItem(item1); + vp.start(); + } + + private void animateSlideOut(final ListView v, final int level) { + if (v == null || mPopupStatus == POPUP_IN_ANIMATION) + return; + mPopupStatus = POPUP_IN_ANIMATION; + + ViewPropertyAnimator vp = v.animate(); + vp.translationX(v.getX() - v.getWidth()).setDuration(ANIMATION_DURATION); + vp.setListener(new AnimatorListener() { + @Override + public void onAnimationStart(Animator animation) { + } + + @Override + public void onAnimationRepeat(Animator animation) { + + } + + @Override + public void onAnimationEnd(Animator animation) { + if (level == 1) { + mUI.dismissLevel1(); + initializePopup(); + mPopupStatus = POPUP_NONE; + mUI.cleanupListview(); + } + else if (level == 2) { + mUI.dismissLevel2(); + mPopupStatus = POPUP_FIRST_LEVEL; + } + } - PieItem item2 = makeItem(R.drawable.ic_settings_holo_light_02); - item2.setLabel(mActivity.getResources().getString(R.string.camera_menu_more_label)); - item2.setOnClickListener(new OnClickListener() { @Override - public void onClick(PieItem item) { - if (mPopup2 == null || mPopupStatus != POPUP_FIRST_LEVEL) { + public void onAnimationCancel(Animator animation) { + if (level == 1) { + mUI.dismissLevel1(); initializePopup(); + mPopupStatus = POPUP_NONE; + mUI.cleanupListview(); + } + else if (level == 2) { + mUI.dismissLevel2(); mPopupStatus = POPUP_FIRST_LEVEL; } - mUI.showPopup(mPopup2); - popupNum = 2; + + } + }); + vp.start(); + } + + public void animateFadeIn(final ListView v) { + ViewPropertyAnimator vp = v.animate(); + vp.alpha(0.85f).setDuration(ANIMATION_DURATION); + vp.start(); + } + + public void animateSlideIn(final View v, int delta, boolean settingMenu) { + int rotation = CameraUtil.getDisplayRotation(mActivity); + boolean mIsDefaultToPortrait = CameraUtil.isDefaultToPortrait(mActivity); + if (!mIsDefaultToPortrait) { + rotation = (rotation + 90) % 360; + } + boolean portrait = (rotation == 0) || (rotation == 180); + if (settingMenu) + portrait = true; + ViewPropertyAnimator vp = v.animate(); + if (portrait) { + float dest = v.getX(); + v.setX(dest - delta); + vp.translationX(dest).setDuration(ANIMATION_DURATION); + } + else { + float dest = v.getY(); + v.setY(dest + delta); + vp.translationY(dest).setDuration(ANIMATION_DURATION); + } + vp.start(); + } + + public void animateSlideOutPreviewMenu() { + if (mPreviewMenu == null) + return; + animateSlideOut(mPreviewMenu); + } + + private void animateSlideOut(final View v) { + if (v == null || mPreviewMenuStatus == PREVIEW_MENU_IN_ANIMATION) + return; + mPreviewMenuStatus = PREVIEW_MENU_IN_ANIMATION; + int rotation = CameraUtil.getDisplayRotation(mActivity); + boolean mIsDefaultToPortrait = CameraUtil.isDefaultToPortrait(mActivity); + if (!mIsDefaultToPortrait) { + rotation = (rotation + 90) % 360; + } + boolean portrait = (rotation == 0) || (rotation == 180); + ViewPropertyAnimator vp = v.animate(); + if (portrait) { + vp.translationX(v.getX() - v.getWidth()).setDuration(ANIMATION_DURATION); + + } else { + vp.translationY(v.getY() + v.getHeight()).setDuration(ANIMATION_DURATION); + + } + vp.setListener(new AnimatorListener() { + @Override + public void onAnimationStart(Animator animation) { + } + + @Override + public void onAnimationRepeat(Animator animation) { + + } + + @Override + public void onAnimationEnd(Animator animation) { + closeSceneMode(); + mPreviewMenuStatus = PREVIEW_MENU_NONE; + } + + @Override + public void onAnimationCancel(Animator animation) { + closeSceneMode(); + mPreviewMenuStatus = PREVIEW_MENU_NONE; } }); - mRenderer.addItem(item2); + vp.start(); + } - // 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())]); + public boolean isOverMenu(MotionEvent ev) { + if (mPopupStatus == POPUP_NONE || mPopupStatus == POPUP_IN_ANIMATION) + return false; + if (mUI.getMenuLayout() == null) + return false; + Rect rec = new Rect(); + mUI.getMenuLayout().getChildAt(0).getHitRect(rec); + return rec.contains((int) ev.getX(), (int) ev.getY()); + } - final PieItem fitem = item; - item.setOnClickListener(new OnClickListener() { + public boolean isOverPreviewMenu(MotionEvent ev) { + if (mPreviewMenuStatus != PREVIEW_MENU_ON) + return false; + if (mUI.getPreviewMenuLayout() == null) + return false; + Rect rec = new Rect(); + mUI.getPreviewMenuLayout().getChildAt(0).getHitRect(rec); + rec.top += (int) mUI.getPreviewMenuLayout().getY(); + rec.bottom += (int) mUI.getPreviewMenuLayout().getY(); + return rec.contains((int) ev.getX(), (int) ev.getY()); + } + + public boolean isMenuBeingShown() { + return mPopupStatus != POPUP_NONE; + } + + public boolean isMenuBeingAnimated() { + return mPopupStatus == POPUP_IN_ANIMATION; + } + + public boolean isPreviewMenuBeingShown() { + return mPreviewMenuStatus == PREVIEW_MENU_ON; + } + + public boolean isPreviewMenuBeingAnimated() { + return mPreviewMenuStatus == PREVIEW_MENU_IN_ANIMATION; + } + + public boolean sendTouchToPreviewMenu(MotionEvent ev) { + return mUI.sendTouchToPreviewMenu(ev); + } + + public boolean sendTouchToMenu(MotionEvent ev) { + return mUI.sendTouchToMenu(ev); + } + + public void initSwitchItem(final String prefKey, View switcher) { + final IconListPreference pref = + (IconListPreference) mPreferenceGroup.findPreference(prefKey); + if (pref == null) + return; + + 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(); + } + ImageView iv = (ImageView) ((FrameLayout) switcher).getChildAt(0); + iv.setImageResource(resid); + switcher.setVisibility(View.VISIBLE); + mPreferences.add(pref); + mPreferenceMap.put(pref, switcher); + switcher.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + IconListPreference pref = (IconListPreference) mPreferenceGroup + .findPreference(prefKey); + if (pref == null) + return; + int index = pref.findIndexOfValue(pref.getValue()); + CharSequence[] values = pref.getEntryValues(); + index = (index + 1) % values.length; + pref.setValueIndex(index); + ImageView iv = (ImageView) ((FrameLayout) v).getChildAt(0); + iv.setImageResource(((IconListPreference) pref).getLargeIconIds()[index]); + if (prefKey.equals(CameraSettings.KEY_CAMERA_ID)) + mListener.onCameraPickerClicked(index); + reloadPreference(pref); + onSettingChanged(pref); + } + }); + } + + public void initFilterModeButton(View button) { + button.setVisibility(View.INVISIBLE); + final IconListPreference pref = (IconListPreference) mPreferenceGroup + .findPreference(CameraSettings.KEY_COLOR_EFFECT); + if (pref == null) + return; + + int[] iconIds = pref.getLargeIconIds(); + int resid = -1; + // The preference only has a single icon to represent it. + resid = pref.getSingleIcon(); + ImageView iv = (ImageView) ((FrameLayout) button).getChildAt(0); + iv.setImageResource(resid); + button.setVisibility(View.VISIBLE); + button.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + addFilterMode(); + View view = mUI.getPreviewMenuLayout().getChildAt(0); + animateSlideIn(view, previewMenuSize, false); + } + }); + } + + public void addModeBack() { + if (mSceneStatus == MODE_FILTER) { + addFilterMode(); + } + } + + public void addFilterMode() { + final IconListPreference pref = (IconListPreference) mPreferenceGroup + .findPreference(CameraSettings.KEY_COLOR_EFFECT); + if (pref == null) + return; + + int rotation = CameraUtil.getDisplayRotation(mActivity); + boolean mIsDefaultToPortrait = CameraUtil.isDefaultToPortrait(mActivity); + if (!mIsDefaultToPortrait) { + rotation = (rotation + 90) % 360; + } + WindowManager wm = (WindowManager) mActivity.getSystemService(Context.WINDOW_SERVICE); + Display display = wm.getDefaultDisplay(); + CharSequence[] entries = pref.getEntries(); + + Resources r = mActivity.getResources(); + int height = (int) (r.getDimension(R.dimen.filter_mode_height) + 2 + * r.getDimension(R.dimen.filter_mode_padding) + 1); + int width = (int) (r.getDimension(R.dimen.filter_mode_width) + 2 + * r.getDimension(R.dimen.filter_mode_padding) + 1); + + int gridRes = 0; + boolean portrait = (rotation == 0) || (rotation == 180); + int size = height; + if (portrait) { + gridRes = R.layout.vertical_grid; + size = width; + } else { + gridRes = R.layout.horiz_grid; + } + previewMenuSize = size; + mUI.hideUI(); + mPreviewMenuStatus = PREVIEW_MENU_ON; + mSceneStatus = MODE_FILTER; + + int[] thumbnails = pref.getThumbnailIds(); + + LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService( + Context.LAYOUT_INFLATER_SERVICE); + FrameLayout basic = (FrameLayout) inflater.inflate( + gridRes, null, false); + + mUI.dismissSceneModeMenu(); + LinearLayout previewMenuLayout = new LinearLayout(mActivity); + mUI.setPreviewMenuLayout(previewMenuLayout); + ViewGroup.LayoutParams params = null; + if (portrait) { + params = new ViewGroup.LayoutParams(size, LayoutParams.MATCH_PARENT); + previewMenuLayout.setLayoutParams(params); + ((ViewGroup) mUI.getRootView()).addView(previewMenuLayout); + } else { + params = new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, size); + previewMenuLayout.setLayoutParams(params); + ((ViewGroup) mUI.getRootView()).addView(previewMenuLayout); + previewMenuLayout.setY(display.getHeight() - size); + } + basic.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, + LayoutParams.MATCH_PARENT)); + LinearLayout layout = (LinearLayout) basic.findViewById(R.id.layout); + + final View[] views = new View[entries.length]; + int init = pref.getCurrentIndex(); + for (int i = 0; i < entries.length; i++) { + LinearLayout layout2 = (LinearLayout) inflater.inflate( + R.layout.filter_mode_view, null, false); + + ImageView imageView = (ImageView) layout2.findViewById(R.id.image); + final int j = i; + + layout2.setOnTouchListener(new View.OnTouchListener() { + private long startTime; @Override - public void onClick(PieItem item) { - // Find the index of next camera. - 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); + public boolean onTouch(View v, MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + startTime = System.currentTimeMillis(); + } else if (event.getAction() == MotionEvent.ACTION_UP) { + if (System.currentTimeMillis() - startTime < CLICK_THRESHOLD) { + pref.setValueIndex(j); + for (View v1 : views) { + v1.setBackground(null); + } + ImageView image = (ImageView) v.findViewById(R.id.image); + image.setBackgroundColor(0xff33b5e5); + onSettingChanged(pref); + } + } + return true; } }); - mRenderer.addItem(item); + + views[j] = imageView; + if (i == init) + imageView.setBackgroundColor(0xff33b5e5); + TextView label = (TextView) layout2.findViewById(R.id.label); + imageView.setImageResource(thumbnails[i]); + label.setText(entries[i]); + layout.addView(layout2); } + previewMenuLayout.addView(basic); + mPreviewMenu = basic; } - @Override - public void reloadPreferences() { - super.reloadPreferences(); - if (mPopup1 != null) { - mPopup1.reloadPreference(); - } - if (mPopup2 != null) { - mPopup2.reloadPreference(); + public void openFirstLevel() { + if (isMenuBeingShown() || CameraControls.isAnimating()) + return; + if (mListMenu == null || mPopupStatus != POPUP_FIRST_LEVEL) { + initializePopup(); + mPopupStatus = POPUP_FIRST_LEVEL; } + mUI.showPopup(mListMenu, 1, true); } public void setPreference(String key, String value) { @@ -176,7 +580,7 @@ public class VideoMenu extends PieController } public void overrideCDSMode() { - if (mPopup2 != null) { + if (mListMenu != null) { ListPreference pref_tnr = mPreferenceGroup. findPreference(CameraSettings.KEY_VIDEO_TNR_MODE); ListPreference pref_cds = mPreferenceGroup. @@ -190,9 +594,9 @@ public class VideoMenu extends PieController if ((tnr != null) && !mActivity.getString(R.string. pref_camera_video_tnr_default).equals(tnr)) { - ((MoreSettingPopup) mPopup2).setPreferenceEnabled( + mListMenu.setPreferenceEnabled( CameraSettings.KEY_VIDEO_CDS_MODE,false); - ((MoreSettingPopup) mPopup2).overrideSettings( + mListMenu.overrideSettings( CameraSettings.KEY_VIDEO_CDS_MODE, mActivity.getString(R.string.pref_camera_video_cds_value_off)); mIsVideoTNREnabled = true; @@ -203,10 +607,10 @@ public class VideoMenu extends PieController mIsVideoCDSUpdated = true; } } else if (tnr != null) { - ((MoreSettingPopup) mPopup2).setPreferenceEnabled( + mListMenu.setPreferenceEnabled( CameraSettings.KEY_VIDEO_CDS_MODE,true); if (mIsVideoTNREnabled) { - ((MoreSettingPopup) mPopup2).overrideSettings( + mListMenu.overrideSettings( CameraSettings.KEY_VIDEO_CDS_MODE, mPrevSavedVideoCDS); mIsVideoTNREnabled = false; mIsVideoCDSUpdated = false; @@ -216,49 +620,46 @@ public class VideoMenu extends PieController } @Override - public void overrideSettings(final String ... keyvalues) { + public void overrideSettings(final String... keyvalues) { overrideCDSMode(); super.overrideSettings(keyvalues); - if (((mPopup1 == null) && (mPopup2 == null)) || mPopupStatus != POPUP_FIRST_LEVEL) { + if (((mListMenu == null)) || mPopupStatus != POPUP_FIRST_LEVEL) { mPopupStatus = POPUP_FIRST_LEVEL; initializePopup(); } - ((MoreSettingPopup) mPopup1).overrideSettings(keyvalues); - ((MoreSettingPopup) mPopup2).overrideSettings(keyvalues); + mListMenu.overrideSettings(keyvalues); + } @Override // Hit when an item in the second-level popup gets selected public void onListPrefChanged(ListPreference pref) { - if (mPopup1 != null && mPopup2 != null) { - if (mPopupStatus == POPUP_SECOND_LEVEL) { - mUI.dismissPopup(true); - mPopup1.reloadPreference(); - mPopup2.reloadPreference(); - } + if (mPopupStatus == POPUP_SECOND_LEVEL) { + mListMenu.reloadPreference(); + animateFadeOut(mListSubMenu, 2); } super.onSettingChanged(pref); + ((ListMenu) mListMenu).resetHighlight(); } protected void initializePopup() { LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService( Context.LAYOUT_INFLATER_SERVICE); - MoreSettingPopup popup1 = (MoreSettingPopup) inflater.inflate( - R.layout.more_setting_popup, null, false); + ListMenu popup1 = (ListMenu) inflater.inflate( + R.layout.list_menu, null, false); popup1.setSettingChangedListener(this); - popup1.initialize(mPreferenceGroup, mOtherKeys1); + String[] keys = mOtherKeys1; + if (mActivity.isDeveloperMenuEnabled()) + keys = mOtherKeys2; + popup1.initialize(mPreferenceGroup, keys); if (mActivity.isSecureCamera()) { - // Prevent location preference from getting changed in secure camera mode + // Prevent location preference from getting changed in secure camera + // mode popup1.setPreferenceEnabled(CameraSettings.KEY_RECORD_LOCATION, false); } - mPopup1 = popup1; + mListMenu = popup1; - MoreSettingPopup popup2 = (MoreSettingPopup) inflater.inflate( - R.layout.more_setting_popup, null, false); - popup2.setSettingChangedListener(this); - popup2.initialize(mPreferenceGroup, mOtherKeys2); - mPopup2 = popup2; overrideCDSMode(); } @@ -268,40 +669,75 @@ public class VideoMenu extends PieController initializePopup(); mPopupStatus = POPUP_FIRST_LEVEL; if (topPopupOnly) { - if(popupNum == 1) mUI.showPopup(mPopup1); - else if(popupNum == 2) mUI.showPopup(mPopup2); + mUI.showPopup(mListMenu, 1, false); } } else { initializePopup(); } } + public void hideUI() { + mFrontBackSwitcher.setVisibility(View.INVISIBLE); + mFilterModeSwitcher.setVisibility(View.INVISIBLE); + } + + public void showUI() { + mFrontBackSwitcher.setVisibility(View.VISIBLE); + mFilterModeSwitcher.setVisibility(View.VISIBLE); + } + @Override // Hit when an item in the first-level popup gets selected, then bring up // the second-level popup public void onPreferenceClicked(ListPreference pref) { - if (mPopupStatus != POPUP_FIRST_LEVEL) return; + onPreferenceClicked(pref, 0); + } + @Override + // Hit when an item in the first-level popup gets selected, then bring up + // the second-level popup + public void onPreferenceClicked(ListPreference pref, int y) { 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); - mPopup1 = timeInterval; + ListSubMenu basic = (ListSubMenu) inflater.inflate( + R.layout.list_sub_menu, null, false); + basic.initialize(pref, y); + basic.setSettingChangedListener(this); + mUI.removeLevel2(); + mListSubMenu = basic; + if (mPopupStatus == POPUP_SECOND_LEVEL) { + mUI.showPopup(mListSubMenu, 2, false); } else { - ListPrefSettingPopup basic = (ListPrefSettingPopup) inflater.inflate( - R.layout.list_pref_setting_popup, null, false); - basic.initialize(pref); - basic.setSettingChangedListener(this); - mUI.dismissPopup(true); - mPopup1 = basic; + mUI.showPopup(mListSubMenu, 2, true); } - mUI.showPopup(mPopup1); mPopupStatus = POPUP_SECOND_LEVEL; } + public void onListMenuTouched() { + mUI.removeLevel2(); + } + + public void closeAllView() { + if (mUI != null) + mUI.removeLevel2(); + + if (mListMenu != null) + animateSlideOut(mListMenu, 1); + animateSlideOutPreviewMenu(); + } + + public void closeView() { + if (mUI != null) + mUI.removeLevel2(); + + if (mListMenu != null) + animateSlideOut(mListMenu, 1); + } + + @Override + public void onSettingChanged(ListPreference pref) { + super.onSettingChanged(pref); + } + } |