summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/CaptureUI.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/CaptureUI.java')
-rw-r--r--[-rwxr-xr-x]src/com/android/camera/CaptureUI.java167
1 files changed, 164 insertions, 3 deletions
diff --git a/src/com/android/camera/CaptureUI.java b/src/com/android/camera/CaptureUI.java
index b026af892..e2935b9ae 100755..100644
--- a/src/com/android/camera/CaptureUI.java
+++ b/src/com/android/camera/CaptureUI.java
@@ -38,8 +38,10 @@ import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicYuvToRGB;
import android.renderscript.Type;
import android.text.TextUtils;
+import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
+import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.Surface;
@@ -49,12 +51,14 @@ import android.view.ViewGroup;
import android.view.ViewPropertyAnimator;
import android.view.Window;
import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.CheckBox;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
-
import com.android.camera.ui.AutoFitSurfaceView;
import com.android.camera.ui.Camera2FaceView;
import com.android.camera.ui.CameraControls;
@@ -186,10 +190,16 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
private RotateImageView mMuteButton;
private ImageView mSeekbarToggleButton;
private View mProModeCloseButton;
+ private RotateLayout mSceneModeLabelRect;
+ private LinearLayout mSceneModeLabelView;
+ private TextView mSceneModeName;
+ private ImageView mSceneModeLabelCloseIcon;
+ private AlertDialog mSceneModeInstructionalDialog = null;
int mPreviewWidth;
int mPreviewHeight;
private boolean mIsVideoUI = false;
+ private boolean mIsSceneModeLabelClose = false;
private void previewUIReady() {
if((mSurfaceHolder != null && mSurfaceHolder.getSurface().isValid())) {
@@ -326,6 +336,17 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
RotateImageView muteButton = (RotateImageView) mRootView.findViewById(R.id.mute_button);
muteButton.setVisibility(View.GONE);
+ mSceneModeLabelRect = (RotateLayout)mRootView.findViewById(R.id.scene_mode_label_rect);
+ mSceneModeName = (TextView)mRootView.findViewById(R.id.scene_mode_label);
+ mSceneModeLabelCloseIcon = (ImageView)mRootView.findViewById(R.id.scene_mode_label_close);
+ mSceneModeLabelCloseIcon.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mIsSceneModeLabelClose = true;
+ mSceneModeLabelRect.setVisibility(View.GONE);
+ }
+ });
+
mCameraControls = (OneUICameraControls) mRootView.findViewById(R.id.camera_controls);
mFaceView = (Camera2FaceView) mRootView.findViewById(R.id.face_view);
@@ -418,6 +439,7 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
initFilterModeButton();
initFlashButton();
setMakeupButtonIcon();
+ showSceneModeLabel();
if(mModule.isTrackingFocusSettingOn()) {
mTrackingFocusRenderer.setVisible(false);
mTrackingFocusRenderer.setVisible(true);
@@ -601,6 +623,117 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
}
}
+ private boolean needShowInstructional() {
+ boolean needShow = true;
+ final SharedPreferences pref = mActivity.getSharedPreferences(
+ ComboPreferences.getGlobalSharedPreferencesName(mActivity), Context.MODE_PRIVATE);
+ int index = mSettingsManager.getValueIndex(SettingsManager.KEY_SCENE_MODE);
+ if ( index < 1 ) {
+ needShow = false;
+ }else{
+ final String instructionalKey = SettingsManager.KEY_SCENE_MODE + "_" + index;
+ needShow = pref.getBoolean(instructionalKey, false) ? false : true;
+ }
+
+ return needShow;
+
+ }
+
+ private void showSceneInstructionalDialog(int orientation) {
+ LayoutInflater inflater =
+ (LayoutInflater)mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ View view = inflater.inflate(R.layout.scene_mode_instructional, null);
+
+ int index = mSettingsManager.getValueIndex(SettingsManager.KEY_SCENE_MODE);
+ TextView name = (TextView)view.findViewById(R.id.scene_mode_name);
+ CharSequence sceneModeNameArray[] =
+ mSettingsManager.getEntries(SettingsManager.KEY_SCENE_MODE);
+ name.setText(sceneModeNameArray[index]);
+
+ ImageView icon = (ImageView)view.findViewById(R.id.scene_mode_icon);
+ int[] resId = mSettingsManager.getResource(SettingsManager.KEY_SCEND_MODE_INSTRUCTIONAL,
+ SettingsManager.RESOURCE_TYPE_THUMBNAIL);
+ icon.setImageResource(resId[index]);
+
+ TextView instructional = (TextView)view.findViewById(R.id.scene_mode_instructional);
+ CharSequence instructionalArray[] =
+ mSettingsManager.getEntries(SettingsManager.KEY_SCEND_MODE_INSTRUCTIONAL);
+ if ( instructionalArray[index].length() == 0 ) {
+ //For now, not all scene mode has instructional
+ return;
+ }
+ instructional.setText(instructionalArray[index]);
+
+ final CheckBox remember = (CheckBox)view.findViewById(R.id.remember_selected);
+ Button ok = (Button)view.findViewById(R.id.scene_mode_instructional_ok);
+ ok.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View view) {
+
+ if ( remember.isChecked()) {
+ final SharedPreferences pref = mActivity.getSharedPreferences(
+ ComboPreferences.getGlobalSharedPreferencesName(mActivity),
+ Context.MODE_PRIVATE);
+
+ String instructionalKey = SettingsManager.KEY_SCENE_MODE + "_" + index;
+ SharedPreferences.Editor editor = pref.edit();
+ editor.putBoolean(instructionalKey, true);
+ editor.commit();
+ }
+ mSceneModeInstructionalDialog.dismiss();
+ mSceneModeInstructionalDialog = null;
+ }
+ });
+
+ mSceneModeInstructionalDialog =
+ new AlertDialog.Builder(mActivity, AlertDialog.THEME_HOLO_LIGHT)
+ .setView(view).create();
+ try {
+ mSceneModeInstructionalDialog.show();
+ }catch(Exception e) {
+ e.printStackTrace();
+ return;
+ }
+ if ( orientation != 0 ) {
+ rotationSceneModeInstructionalDialog(view, orientation);
+ }
+ }
+
+ private int getScreenWidth() {
+ DisplayMetrics metric = new DisplayMetrics();
+ mActivity.getWindowManager().getDefaultDisplay().getMetrics(metric);
+ return metric.widthPixels < metric.heightPixels ? metric.widthPixels : metric.heightPixels;
+ }
+
+ private void rotationSceneModeInstructionalDialog(View view, int orientation) {
+ view.setRotation(-orientation);
+ int screenWidth = getScreenWidth();
+ int dialogSize = screenWidth*9/10;
+ Window dialogWindow = mSceneModeInstructionalDialog.getWindow();
+ WindowManager.LayoutParams lp = dialogWindow.getAttributes();
+ dialogWindow.setGravity(Gravity.CENTER);
+ lp.width = lp.height = dialogSize;
+ dialogWindow.setAttributes(lp);
+ if ( orientation == 180 ) {
+ dialogSize -= 40;
+ RelativeLayout layout = (RelativeLayout)view.findViewById(R.id.mode_layout_rect);
+ FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(dialogSize, dialogSize);
+ layout.setLayoutParams(params);
+ }
+ }
+
+ private void showSceneModeLabel() {
+ mIsSceneModeLabelClose = false;
+ int index = mSettingsManager.getValueIndex(SettingsManager.KEY_SCENE_MODE);
+ CharSequence sceneModeNameArray[] = mSettingsManager.getEntries(SettingsManager.KEY_SCENE_MODE);
+ if ( index > 0 && index < sceneModeNameArray.length ) {
+ mSceneModeName.setText(sceneModeNameArray[index]);
+ mSceneModeLabelRect.setVisibility(View.VISIBLE);
+ }else{
+ mSceneModeLabelRect.setVisibility(View.GONE);
+ }
+ }
+
+
public void resetTrackingFocus() {
if(mModule.isTrackingFocusSettingOn()) {
mTrackingFocusRenderer.setVisible(false);
@@ -1215,6 +1348,24 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
if (mZoomRenderer != null) {
mZoomRenderer.setOrientation(orientation);
}
+
+ if ( mSceneModeLabelRect != null ) {
+ if (orientation == 180) {
+ mSceneModeName.setRotation(180);
+ mSceneModeLabelCloseIcon.setRotation(180);
+ mSceneModeLabelRect.setOrientation(0, false);
+ } else {
+ mSceneModeName.setRotation(0);
+ mSceneModeLabelCloseIcon.setRotation(0);
+ mSceneModeLabelRect.setOrientation(orientation, false);
+ }
+ }
+
+ if ( mSceneModeInstructionalDialog != null && mSceneModeInstructionalDialog.isShowing()) {
+ mSceneModeInstructionalDialog.dismiss();
+ mSceneModeInstructionalDialog = null;
+ showSceneInstructionalDialog(orientation);
+ }
}
public int getOrientation() {
@@ -1338,9 +1489,18 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
@Override
public void onSettingsChanged(List<SettingsManager.SettingState> settings) {
for( SettingsManager.SettingState state : settings) {
- if( state.key.equals(SettingsManager.KEY_COLOR_EFFECT) ) {
+ if (state.key.equals(SettingsManager.KEY_COLOR_EFFECT)) {
enableView(mFilterModeSwitcher, SettingsManager.KEY_COLOR_EFFECT);
- break;
+ } else if (state.key.equals(SettingsManager.KEY_SCENE_MODE)) {
+ String value = mSettingsManager.getValue(SettingsManager.KEY_SCENE_MODE);
+ if ( value.equals("104") ) {//panorama
+ mSceneModeLabelRect.setVisibility(View.GONE);
+ }else{
+ if ( needShowInstructional() ) {
+ showSceneInstructionalDialog(mOrientation);
+ }
+ showSceneModeLabel();
+ }
}
}
}
@@ -1425,4 +1585,5 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
public ImageView getVideoButton() {
return mVideoButton;
}
+
}