diff options
author | Alan Newberger <alann@google.com> | 2014-07-17 09:55:34 -0700 |
---|---|---|
committer | Alan Newberger <alann@google.com> | 2014-07-18 10:28:37 -0700 |
commit | 39529585aee23703553c551eadceca78742cf52b (patch) | |
tree | 757cc8ee1f51afb7d432fdadf5e405d45e9db623 /src/com/android/camera/settings/ManagedSwitchPreference.java | |
parent | 71ae986c611c49674d53af48e56da629de0ace93 (diff) | |
download | android_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.java | 97 |
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; + } +} |