summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/Camera.java
diff options
context:
space:
mode:
authorOwen Lin <owenlin@google.com>2010-03-10 10:53:02 +0800
committerOwen Lin <owenlin@google.com>2010-03-14 16:52:10 +0800
commitc24155c65b45f554ffc29c523d7ea8e63ea10d33 (patch)
tree334b1fa881954897069231b978a80208aef9a555 /src/com/android/camera/Camera.java
parent7da52284cebf4e292033975e428b21affb661d73 (diff)
downloadLegacyCamera-c24155c65b45f554ffc29c523d7ea8e63ea10d33.zip
LegacyCamera-c24155c65b45f554ffc29c523d7ea8e63ea10d33.tar.gz
LegacyCamera-c24155c65b45f554ffc29c523d7ea8e63ea10d33.tar.bz2
Restore Settings.
Change-Id: Ie5c26869151dd8959c122bf3c748d61420ac5c30
Diffstat (limited to 'src/com/android/camera/Camera.java')
-rw-r--r--src/com/android/camera/Camera.java118
1 files changed, 60 insertions, 58 deletions
diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java
index 9a40af5..391ec0d 100644
--- a/src/com/android/camera/Camera.java
+++ b/src/com/android/camera/Camera.java
@@ -25,7 +25,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
-import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -90,8 +89,7 @@ import java.util.List;
/** The Camera activity which can preview and take pictures. */
public class Camera extends NoSearchActivity implements View.OnClickListener,
ShutterButton.OnShutterButtonListener, SurfaceHolder.Callback,
- Switcher.OnSwitchListener, OnScreenSettings.OnVisibilityChangedListener,
- OnSharedPreferenceChangeListener {
+ Switcher.OnSwitchListener {
private static final String TAG = "camera";
@@ -340,8 +338,8 @@ public class Camera extends NoSearchActivity implements View.OnClickListener,
CameraSettings settings = new CameraSettings(this, mInitialParams);
mHeadUpDisplay.initialize(this,
settings.getPreferenceGroup(R.xml.camera_preferences));
+ mHeadUpDisplay.setListener(new MyHeadUpDisplayListener());
mGLRootView.setContentPane(mHeadUpDisplay);
-
initializeZoom();
mFirstTimeInitialized = true;
}
@@ -362,8 +360,10 @@ public class Camera extends NoSearchActivity implements View.OnClickListener,
mOrientationListener.enable();
// Start location update if needed.
- mRecordLocation = RecordLocationPreference.get(
- mPreferences, getContentResolver());
+ synchronized (mPreferences) {
+ mRecordLocation = RecordLocationPreference.get(
+ mPreferences, getContentResolver());
+ }
if (mRecordLocation) startReceivingLocationUpdates();
installIntentFilter();
@@ -440,20 +440,6 @@ public class Camera extends NoSearchActivity implements View.OnClickListener,
}
}
- public void onVisibilityChanged(boolean visible) {
- // When the on-screen setting is not displayed, we show the gripper.
- // When the on-screen setting is displayed, we hide the gripper.
- int reverseVisibility = visible ? View.INVISIBLE : View.VISIBLE;
- findViewById(R.id.btn_gripper).setVisibility(reverseVisibility);
- findViewById(R.id.indicator_bar).setVisibility(reverseVisibility);
-
- if (visible) {
- mPreferences.registerOnSharedPreferenceChangeListener(this);
- } else {
- mPreferences.unregisterOnSharedPreferenceChangeListener(this);
- }
- }
-
private class ZoomGestureListener extends
GestureDetector.SimpleOnGestureListener {
@@ -1031,17 +1017,6 @@ public class Camera extends NoSearchActivity implements View.OnClickListener,
updateStorageHint(mPicturesRemaining);
}
- private void restorePreferences() {
- // Unregister the listener since "upgrade preference" will change
- // a bunch of preferences. We can handle them with one
- // setCameraParameters().
- mPreferences.unregisterOnSharedPreferenceChangeListener(this);
- mSettings.clearSettings();
- CameraSettings.upgradePreferences(mPreferences);
- setCameraParameters();
- mPreferences.registerOnSharedPreferenceChangeListener(this);
- }
-
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_retake:
@@ -1251,8 +1226,6 @@ public class Camera extends NoSearchActivity implements View.OnClickListener,
super.onResume();
mGLRootView.onResume();
- mPreferences.registerOnSharedPreferenceChangeListener(this);
-
mPausing = false;
mJpegPictureCallbackTime = 0;
mZoomValue = 0;
@@ -1292,7 +1265,6 @@ public class Camera extends NoSearchActivity implements View.OnClickListener,
// Close the camera now because other activities may need to use it.
closeCamera();
resetScreenOn();
- mPreferences.unregisterOnSharedPreferenceChangeListener(this);
if (mSettings != null && mSettings.isVisible()) {
mSettings.setVisible(false);
@@ -1301,6 +1273,7 @@ public class Camera extends NoSearchActivity implements View.OnClickListener,
if (mFirstTimeInitialized) {
mOrientationListener.disable();
mHeadUpDisplay.setGpsHasSignal(false);
+ mHeadUpDisplay.collapse();
if (!mIsImageCaptureIntent) {
mThumbController.storeData(
ImageManager.getLastImageThumbPath());
@@ -1614,7 +1587,9 @@ public class Camera extends NoSearchActivity implements View.OnClickListener,
if (mPreviewing) stopPreview();
setPreviewDisplay(mSurfaceHolder);
- setCameraParameters();
+ synchronized (mPreferences) {
+ setCameraParameters();
+ }
final long wallTimeStart = SystemClock.elapsedRealtime();
final long threadTimeStart = Debug.threadCpuTimeNanos();
@@ -2047,32 +2022,22 @@ public class Camera extends NoSearchActivity implements View.OnClickListener,
return true;
}
- public void onSharedPreferenceChanged(
- final SharedPreferences preferences, final String key) {
- Runnable runnable = new Runnable() {
- public void run() {
- // ignore the events after "onPause()"
- if (mPausing) return;
-
- if (CameraSettings.KEY_RECORD_LOCATION.equals(key)) {
- mRecordLocation = RecordLocationPreference.get(
- preferences, getContentResolver());
- if (mRecordLocation) {
- startReceivingLocationUpdates();
- } else {
- stopReceivingLocationUpdates();
- }
- } else if (CameraSettings.KEY_QUICK_CAPTURE.equals(key)) {
- mQuickCapture = getQuickCaptureSettings();
+ private void onSharedPreferenceChanged() {
+ // ignore the events after "onPause()"
+ if (mPausing) return;
+ synchronized (mPreferences) {
+ boolean recordLocation = RecordLocationPreference.get(
+ mPreferences, getContentResolver());
+ if (mRecordLocation != recordLocation) {
+ if (mRecordLocation) {
+ startReceivingLocationUpdates();
} else {
- // All preferences except RECORD_LOCATION are camera
- // parameters. Call setCameraParametersWhenIdle() to
- // take effect when the camera is idle.
- setCameraParametersWhenIdle();
+ stopReceivingLocationUpdates();
}
}
- };
- runOnUiThread(runnable);
+ mQuickCapture = getQuickCaptureSettings();
+ setCameraParametersWhenIdle();
+ }
}
private boolean getQuickCaptureSettings() {
@@ -2114,6 +2079,43 @@ public class Camera extends NoSearchActivity implements View.OnClickListener,
}
return mQualityNumbers[index];
}
+
+ private class MyHeadUpDisplayListener implements HeadUpDisplay.Listener {
+
+ // The callback functions here will be called from the GLThread. So,
+ // we need to post these runnables to the main thread
+ public void onSharedPreferencesChanged() {
+ mHandler.post(new Runnable() {
+ public void run() {
+ Camera.this.onSharedPreferenceChanged();
+ }
+ });
+ }
+
+ public void onRestorePreferencesClicked() {
+ mHandler.post(new Runnable() {
+ public void run() {
+ Camera.this.onRestorePreferencesClicked();
+ }
+ });
+ }
+
+ public void onPopupWindowVisibilityChanged(int visibility) {
+ }
+ }
+
+ protected void onRestorePreferencesClicked() {
+ if (mPausing) return;
+ Runnable runnable = new Runnable() {
+ public void run() {
+ mHeadUpDisplay.restorePreferences();
+ }
+ };
+ MenuHelper.confirmAction(this,
+ getString(R.string.confirm_restore_title),
+ getString(R.string.confirm_restore_message),
+ runnable);
+ }
}
class FocusRectangle extends View {