summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/VideoMenu.java
diff options
context:
space:
mode:
authorByunghun Jeon <bjeon@codeaurora.org>2014-11-05 16:21:23 -0800
committerByunghun Jeon <bjeon@codeaurora.org>2014-11-19 17:53:30 -0800
commitb6b60bf6cf88015956a7651f7249cf2781fc9d1d (patch)
treee8ae09bf48607e15f5caa76199d2190b997d5a7c /src/com/android/camera/VideoMenu.java
parenta19529b701c6d74b91657441cdb7c3463fa7e8c6 (diff)
downloadandroid_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.java684
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);
+ }
+
}