diff options
author | Owen Lin <owenlin@google.com> | 2010-03-10 10:53:02 +0800 |
---|---|---|
committer | Owen Lin <owenlin@google.com> | 2010-03-14 16:52:10 +0800 |
commit | c24155c65b45f554ffc29c523d7ea8e63ea10d33 (patch) | |
tree | 334b1fa881954897069231b978a80208aef9a555 /src/com/android/camera/Camera.java | |
parent | 7da52284cebf4e292033975e428b21affb661d73 (diff) | |
download | LegacyCamera-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.java | 118 |
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 { |