/*
* 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:
*
*
getString: default is null
*
* getBoolean: default is false
*
* 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 mDefaultsInternalStore =
new HashMap();
/**
* 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();
}
}