| /* |
| * 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 java.util.HashMap; |
| |
| /** |
| * A class for storing default values and possible values of |
| * SharedPreferences settings. It is optional to store defaults |
| * and possible values for a setting. If a default is not specified, |
| * the SettingsManager API chooses a default based on the type |
| * requested: |
| * |
| * <ul>getString: default is null</ul> |
| * <ul>getInteger: default is 0</ul> |
| * <ul>getBoolean: default is false</ul> |
| * |
| * If possible values aren't specified for a |
| * SharedPreferences key, then calling getIndexOfCurrentValue |
| * and setValueByIndex will throw an IllegalArgumentException. |
| */ |
| class DefaultsStore { |
| |
| /** |
| * A class for storing a default value and set of possible |
| * values. Since all settings values are saved as Strings in |
| * SharedPreferences, the default and possible values are |
| * Strings. This simplifies default values management. |
| */ |
| private static class Defaults { |
| private String mDefaultValue; |
| private String[] mPossibleValues; |
| |
| public Defaults(String defaultValue, String[] possibleValues) { |
| mDefaultValue = defaultValue; |
| mPossibleValues = possibleValues; |
| } |
| |
| public String getDefaultValue() { |
| return mDefaultValue; |
| } |
| |
| public String[] getPossibleValues() { |
| return mPossibleValues; |
| } |
| } |
| |
| /** Map of Defaults for SharedPreferences keys. */ |
| private static HashMap<String, Defaults> mDefaultsInternalStore = |
| new HashMap<String, Defaults>(); |
| |
| /** |
| * Store a default value and a set of possible values |
| * for a SharedPreferences key. |
| */ |
| public void storeDefaults(String key, String defaultValue, String[] possibleValues) { |
| Defaults defaults = new Defaults(defaultValue, possibleValues); |
| mDefaultsInternalStore.put(key, defaults); |
| } |
| |
| /** |
| * Get the default value for a SharedPreferences key, |
| * if one has been stored. |
| */ |
| public String getDefaultValue(String key) { |
| Defaults defaults = mDefaultsInternalStore.get(key); |
| if (defaults == null) { |
| return null; |
| } |
| return defaults.getDefaultValue(); |
| } |
| |
| /** |
| * Get the set of possible values for a SharedPreferences key, |
| * if a set has been stored. |
| */ |
| public String[] getPossibleValues(String key) { |
| Defaults defaults = mDefaultsInternalStore.get(key); |
| if (defaults == null) { |
| return null; |
| } |
| return defaults.getPossibleValues(); |
| } |
| } |