summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values-v21/styles.xml2
-rw-r--r--res/values/arrays.xml1
-rw-r--r--res/values/styles.xml2
-rw-r--r--src/com/android/camera/ButtonManager.java45
-rw-r--r--src/com/android/camera/MultiToggleImageButton.java16
-rw-r--r--src/com/android/camera/PhotoModule.java7
-rw-r--r--src/com/android/camera/settings/AppUpgrader.java9
-rw-r--r--src/com/android/camera/settings/CameraSettingsActivity.java4
-rw-r--r--src/com/android/camera/widget/FilmstripLayout.java34
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);
}
}