summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/settings/ManagedSwitchPreference.java
diff options
context:
space:
mode:
authorAlan Newberger <alann@google.com>2014-07-17 09:55:34 -0700
committerAlan Newberger <alann@google.com>2014-07-18 10:28:37 -0700
commit39529585aee23703553c551eadceca78742cf52b (patch)
tree757cc8ee1f51afb7d432fdadf5e405d45e9db623 /src/com/android/camera/settings/ManagedSwitchPreference.java
parent71ae986c611c49674d53af48e56da629de0ace93 (diff)
downloadandroid_packages_apps_Camera2-39529585aee23703553c551eadceca78742cf52b.tar.gz
android_packages_apps_Camera2-39529585aee23703553c551eadceca78742cf52b.tar.bz2
android_packages_apps_Camera2-39529585aee23703553c551eadceca78742cf52b.zip
Route switch preferences through SettingManager
This CL adds a custom switch which uses SettingsManager to control boolean settings. It relocates SettingsManager to the application to allow access from multiple activities. Bug: 16327665 Change-Id: I6af084a4443ea79ca270dab382a66ea527897a38
Diffstat (limited to 'src/com/android/camera/settings/ManagedSwitchPreference.java')
-rw-r--r--src/com/android/camera/settings/ManagedSwitchPreference.java97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/com/android/camera/settings/ManagedSwitchPreference.java b/src/com/android/camera/settings/ManagedSwitchPreference.java
new file mode 100644
index 000000000..12ae0aa4f
--- /dev/null
+++ b/src/com/android/camera/settings/ManagedSwitchPreference.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.settings;
+
+import android.app.Activity;
+import android.app.Application;
+import android.content.Context;
+
+import android.preference.SwitchPreference;
+import android.util.AttributeSet;
+
+import com.android.camera.app.CameraApp;
+
+/**
+ * This class allows Settings UIs to display and set boolean values controlled
+ * via the {@link SettingManager}. The Default {@link SwitchPreference} uses
+ * {@link android.content.SharedPreferences} as a backing store; since the
+ * {@link SettingManager} stores all settings as Strings we need to ensure we
+ * get and set boolean settings through the manager.
+ */
+public class ManagedSwitchPreference extends SwitchPreference {
+ public ManagedSwitchPreference(Context context) {
+ super(context);
+ }
+
+ public ManagedSwitchPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public ManagedSwitchPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ @Override
+ public boolean getPersistedBoolean(boolean defaultReturnValue) {
+ CameraApp cameraApp = getCameraApp();
+ if (cameraApp == null) {
+ // The context and app may not be initialized upon initial inflation of the
+ // preference from XML. In that case return the default value.
+ return defaultReturnValue;
+ }
+ SettingsManager settingsManager = cameraApp.getSettingsManager();
+ if (settingsManager != null) {
+ return settingsManager.getBoolean(SettingsManager.SCOPE_GLOBAL, getKey());
+ } else {
+ // If the SettingsManager is for some reason not initialized,
+ // perhaps triggered by a monkey, return default value.
+ return defaultReturnValue;
+ }
+ }
+
+ @Override
+ public boolean persistBoolean(boolean value) {
+ CameraApp cameraApp = getCameraApp();
+ if (cameraApp == null) {
+ // The context may not be initialized upon initial inflation of the
+ // preference from XML. In that case return false to note the value won't
+ // be persisted.
+ return false;
+ }
+ SettingsManager settingsManager = cameraApp.getSettingsManager();
+ if (settingsManager != null) {
+ settingsManager.set(SettingsManager.SCOPE_GLOBAL, getKey(), value);
+ return true;
+ } else {
+ // If the SettingsManager is for some reason not initialized,
+ // perhaps triggered by a monkey, return false to note the value
+ // was not persisted.
+ return false;
+ }
+ }
+
+ private CameraApp getCameraApp() {
+ Context context = getContext();
+ if (context instanceof Activity) {
+ Application application = ((Activity) context).getApplication();
+ if (application instanceof CameraApp) {
+ return (CameraApp) application;
+ }
+ }
+ return null;
+ }
+}