diff options
-rw-r--r-- | res/values-v21/styles.xml | 2 | ||||
-rw-r--r-- | res/values/arrays.xml | 1 | ||||
-rw-r--r-- | res/values/styles.xml | 2 | ||||
-rw-r--r-- | src/com/android/camera/ButtonManager.java | 45 | ||||
-rw-r--r-- | src/com/android/camera/MultiToggleImageButton.java | 16 | ||||
-rw-r--r-- | src/com/android/camera/PhotoModule.java | 7 | ||||
-rw-r--r-- | src/com/android/camera/settings/AppUpgrader.java | 9 | ||||
-rw-r--r-- | src/com/android/camera/settings/CameraSettingsActivity.java | 4 | ||||
-rw-r--r-- | src/com/android/camera/widget/FilmstripLayout.java | 34 |
9 files changed, 68 insertions, 52 deletions
diff --git a/res/values-v21/styles.xml b/res/values-v21/styles.xml index c48c3f041..6bfcc9ef5 100644 --- a/res/values-v21/styles.xml +++ b/res/values-v21/styles.xml @@ -34,7 +34,7 @@ <item name="android:backgroundStacked">@null</item> </style> - <style name="Theme.CameraSettings" parent="@android:style/Theme.Material.Light"> + <style name="Theme.CameraSettings" parent="@android:style/Theme.Material"> <item name="android:windowFullscreen">true</item> </style> </resources> diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 9ebeea8a3..3fb106370 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -434,7 +434,6 @@ <item>@integer/camera_mode_photosphere</item> <item>@integer/camera_mode_panorama</item> <item>@integer/camera_mode_photo</item> - <item>@integer/camera_mode_photo</item> </integer-array> <!-- An array of camera mode indices that should always be visible in mode drawer. --> diff --git a/res/values/styles.xml b/res/values/styles.xml index e46cb7afc..fd6baea11 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -204,7 +204,7 @@ <item name="android:layout_margin">6dp</item> <item name="android:background">@null</item> </style> - <style name="Theme.CameraSettings" parent="@android:style/Theme.Holo.Light"> + <style name="Theme.CameraSettings" parent="@android:style/Theme.Holo"> <item name="android:windowFullscreen">true</item> </style> <style name="start_up_dialog_content"> diff --git a/src/com/android/camera/ButtonManager.java b/src/com/android/camera/ButtonManager.java index 2fbe6798a..b7fa08f2e 100644 --- a/src/com/android/camera/ButtonManager.java +++ b/src/com/android/camera/ButtonManager.java @@ -16,14 +16,10 @@ package com.android.camera; -import android.app.Activity; import android.content.Context; import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; import android.widget.ImageButton; import android.widget.LinearLayout; @@ -34,7 +30,6 @@ import com.android.camera.settings.SettingsManager; import com.android.camera.ui.RadioOptions; import com.android.camera.util.PhotoSphereHelper; import com.android.camera.widget.ModeOptions; - import com.android.camera2.R; /** @@ -382,7 +377,7 @@ public class ButtonManager implements SettingsManager.OnSettingChangedListener { mListener.onButtonEnabledChanged(this, buttonId); } } - button.setTag(R.string.tag_enabled_id, (Integer) buttonId); + button.setTag(R.string.tag_enabled_id, buttonId); if (button.getVisibility() != View.VISIBLE) { button.setVisibility(View.VISIBLE); @@ -407,7 +402,7 @@ public class ButtonManager implements SettingsManager.OnSettingChangedListener { mListener.onButtonEnabledChanged(this, buttonId); } } - button.setTag(R.string.tag_enabled_id, (Integer) buttonId); + button.setTag(R.string.tag_enabled_id, buttonId); if (button.getVisibility() != View.VISIBLE) { button.setVisibility(View.VISIBLE); @@ -460,14 +455,38 @@ public class ButtonManager implements SettingsManager.OnSettingChangedListener { } /** + * Disable click reactions for a button without affecting visual state. + * For most cases you'll want to use {@link #disableButton(int)}. + * @param buttonId The id of the button. + */ + public void disableButtonClick(int buttonId) { + ImageButton button = getButtonOrError(buttonId); + if (button instanceof MultiToggleImageButton) { + ((MultiToggleImageButton) button).setClickEnabled(false); + } + } + + /** + * Enable click reactions for a button without affecting visual state. + * For most cases you'll want to use {@link #enableButton(int)}. + * @param buttonId The id of the button. + */ + public void enableButtonClick(int buttonId) { + ImageButton button = getButtonOrError(buttonId); + if (button instanceof MultiToggleImageButton) { + ((MultiToggleImageButton) button).setClickEnabled(true); + } + } + + /** * Hide a button by id. */ public void hideButton(int buttonId) { View button; try { - button = (View) getButtonOrError(buttonId); + button = getButtonOrError(buttonId); } catch (IllegalArgumentException e) { - button = (View) getImageButtonOrError(buttonId); + button = getImageButtonOrError(buttonId); } if (button.getVisibility() == View.VISIBLE) { button.setVisibility(View.GONE); @@ -543,9 +562,9 @@ public class ButtonManager implements SettingsManager.OnSettingChangedListener { public boolean isEnabled(int buttonId) { View button; try { - button = (View) getButtonOrError(buttonId); + button = getButtonOrError(buttonId); } catch (IllegalArgumentException e) { - button = (View) getImageButtonOrError(buttonId); + button = getImageButtonOrError(buttonId); } Integer enabledId = (Integer) button.getTag(R.string.tag_enabled_id); @@ -562,9 +581,9 @@ public class ButtonManager implements SettingsManager.OnSettingChangedListener { public boolean isVisible(int buttonId) { View button; try { - button = (View) getButtonOrError(buttonId); + button = getButtonOrError(buttonId); } catch (IllegalArgumentException e) { - button = (View) getImageButtonOrError(buttonId); + button = getImageButtonOrError(buttonId); } return (button.getVisibility() == View.VISIBLE); } diff --git a/src/com/android/camera/MultiToggleImageButton.java b/src/com/android/camera/MultiToggleImageButton.java index 4ce63c472..ee75e21a2 100644 --- a/src/com/android/camera/MultiToggleImageButton.java +++ b/src/com/android/camera/MultiToggleImageButton.java @@ -170,24 +170,34 @@ public class MultiToggleImageButton extends ImageButton { animator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { - mClickEnabled = false; + setClickEnabled(false); } @Override public void onAnimationEnd(Animator animation) { setStateInternal(state, callListener); - mClickEnabled = true; + setClickEnabled(true); } @Override public void onAnimationCancel(Animator animation) { setStateInternal(state, callListener); - mClickEnabled = true; + setClickEnabled(true); } }); animator.start(); } + /** + * Enable or disable click reactions for this button + * without affecting visual state. + * For most cases you'll want to use {@link #setEnabled(boolean)}. + * @param enabled True if click enabled, false otherwise. + */ + public void setClickEnabled(boolean enabled) { + mClickEnabled = enabled; + } + private void setStateInternal(int state, boolean callListener) { mState = state; if (mImageIds != null) { diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index 59539b0b8..45002f2cd 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -110,7 +110,7 @@ public class PhotoModule RemoteCameraModule, CountDownView.OnCountDownStatusListener { - private static final String PHOTO_MODULE_STRING_ID = "PhotoModule"; + public static final String PHOTO_MODULE_STRING_ID = "PhotoModule"; private static final Log.Tag TAG = new Log.Tag(PHOTO_MODULE_STRING_ID); @@ -388,13 +388,16 @@ public class PhotoModule // in the new module. The new module will set the enabled/disabled // of this button when the module's preferred camera becomes available. ButtonManager buttonManager = mActivity.getButtonManager(); - buttonManager.disableButton(ButtonManager.BUTTON_HDR_PLUS); + + buttonManager.disableButtonClick(ButtonManager.BUTTON_HDR_PLUS); mAppController.getCameraAppUI().freezeScreenUntilPreviewReady(); // Do not post this to avoid this module switch getting interleaved with // other button callbacks. mActivity.onModeSelected(mGcamModeIndex); + + buttonManager.enableButtonClick(ButtonManager.BUTTON_HDR_PLUS); } } diff --git a/src/com/android/camera/settings/AppUpgrader.java b/src/com/android/camera/settings/AppUpgrader.java index 8d7e57912..a4cc0bb61 100644 --- a/src/com/android/camera/settings/AppUpgrader.java +++ b/src/com/android/camera/settings/AppUpgrader.java @@ -266,6 +266,15 @@ public class AppUpgrader extends SettingsUpgrader { return; } + // infos might be null if the underlying camera device is broken. In + // that case, just delete the old settings and force the user to + // reselect, it's the least evil solution given we want to only upgrade + // settings once. + if (infos == null) { + settingsManager.remove(SettingsManager.SCOPE_GLOBAL, key); + return; + } + String pictureSize = settingsManager.getString(SettingsManager.SCOPE_GLOBAL, key); int camera = SettingsUtil.getCameraId(infos, facing); if (camera != -1) { diff --git a/src/com/android/camera/settings/CameraSettingsActivity.java b/src/com/android/camera/settings/CameraSettingsActivity.java index 94e8a3230..3692a75a7 100644 --- a/src/com/android/camera/settings/CameraSettingsActivity.java +++ b/src/com/android/camera/settings/CameraSettingsActivity.java @@ -405,6 +405,10 @@ public class CameraSettingsActivity extends FragmentActivity { * accordingly. */ private void loadSizes() { + if (mInfos == null) { + Log.w(TAG, "null deviceInfo, cannot display resolution sizes"); + return; + } // Back camera. int backCameraId = SettingsUtil.getCameraId(mInfos, SettingsUtil.CAMERA_FACING_BACK); if (backCameraId >= 0) { diff --git a/src/com/android/camera/widget/FilmstripLayout.java b/src/com/android/camera/widget/FilmstripLayout.java index d38010680..099f834ef 100644 --- a/src/com/android/camera/widget/FilmstripLayout.java +++ b/src/com/android/camera/widget/FilmstripLayout.java @@ -28,7 +28,6 @@ import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Looper; import android.util.AttributeSet; -import android.util.FloatMath; import android.view.MotionEvent; import android.view.View; import android.widget.FrameLayout; @@ -107,9 +106,6 @@ public class FilmstripLayout extends FrameLayout implements FilmstripContentPane new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { - if (mAnimationDirection == ANIM_DIRECTION_IN && !mDrawHidingBackground) { - mBackgroundDrawable.setFraction(valueAnimator.getAnimatedFraction()); - } translateContentLayout((Float) valueAnimator.getAnimatedValue()); mBackgroundDrawable.invalidateSelf(); } @@ -298,9 +294,6 @@ public class FilmstripLayout extends FrameLayout implements FilmstripContentPane private void setDrawHidingBackground(boolean hiding) { mDrawHidingBackground = hiding; - if (!mDrawHidingBackground) { - mBackgroundDrawable.setFraction(0f); - } } private void translateContentLayout(float fraction) { @@ -465,7 +458,6 @@ public class FilmstripLayout extends FrameLayout implements FilmstripContentPane private class MyBackgroundDrawable extends Drawable { private Paint mPaint; - private float mFraction; private int mOffset; public MyBackgroundDrawable() { @@ -475,10 +467,6 @@ public class FilmstripLayout extends FrameLayout implements FilmstripContentPane mPaint.setAlpha(255); } - public void setFraction(float f) { - mFraction = f; - } - /** * Adjust the target width and translation calculation when we start translating * from a point where width != translationX so that alpha scales smoothly. @@ -523,28 +511,12 @@ public class FilmstripLayout extends FrameLayout implements FilmstripContentPane private void drawHiding(Canvas canvas) { setAlpha(1.0f - mFilmstripContentTranslationProgress); - canvas.drawRect( - mFilmstripContentLayout.getLeft() + mFilmstripContentLayout.getTranslationX(), - mFilmstripContentLayout.getTop() + mFilmstripContentLayout.getTranslationY(), - getMeasuredWidth(), getMeasuredHeight(), mPaint); + canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), mPaint); } private void drawShowing(Canvas canvas) { - int width = getMeasuredWidth(); - float translation = mFilmstripContentLayout.getTranslationX(); - if (translation == 0f) { - canvas.drawRect(getBounds(), mPaint); - return; - } - final float height = getMeasuredHeight(); - float x = width * (1.1f + mFraction * 0.9f); - float y = height / 2f; - float refX = width * (1 - mFraction); - float refY = y * (1 - mFraction); - - setAlpha(mFraction); - canvas.drawCircle(x, getMeasuredHeight() / 2, - FloatMath.sqrt((x - refX) * (x - refX) + (y - refY) * (y - refY)), mPaint); + setAlpha(1.0f - mFilmstripContentTranslationProgress); + canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), mPaint); } } |