175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting/*
275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting * Copyright (C) 2012 The Android Open Source Project
375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting *
475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting * Licensed under the Apache License, Version 2.0 (the "License");
575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting * you may not use this file except in compliance with the License.
675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting * You may obtain a copy of the License at
775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting *
875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting *      http://www.apache.org/licenses/LICENSE-2.0
975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting *
1075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting * Unless required by applicable law or agreed to in writing, software
1175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting * distributed under the License is distributed on an "AS IS" BASIS,
1275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting * See the License for the specific language governing permissions and
1475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting * limitations under the License.
1575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting */
1675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
1775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Tingpackage com.android.calendar;
1875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
1975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Tingimport android.content.SharedPreferences;
2075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Tingimport android.content.SharedPreferences.Editor;
2175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Tingimport android.content.SharedPreferences.OnSharedPreferenceChangeListener;
2275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
2375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Tingimport java.util.HashMap;
2475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Tingimport java.util.Map;
2575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Tingimport java.util.Set;
2675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
2775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Tingclass FakeSharedPreferences implements SharedPreferences, SharedPreferences.Editor {
2875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
2975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    private HashMap<String, Object> mValues = new HashMap<String, Object>();
3075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    private HashMap<String, Object> mTempValues = new HashMap<String, Object>();
3175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
3275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
3375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public Editor edit() {
3475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return this;
3575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
3675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
3775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
3875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public boolean contains(String key) {
3975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return mValues.containsKey(key);
4075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
4175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
4275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
4375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public Map<String, ?> getAll() {
4475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return new HashMap<String, Object>(mValues);
4575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
4675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
4775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
4875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public boolean getBoolean(String key, boolean defValue) {
4975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        if (mValues.containsKey(key)) {
5075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting            return ((Boolean)mValues.get(key)).booleanValue();
5175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        }
5275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return defValue;
5375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
5475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
5575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
5675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public float getFloat(String key, float defValue) {
5775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        if (mValues.containsKey(key)) {
5875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting            return ((Float)mValues.get(key)).floatValue();
5975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        }
6075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return defValue;
6175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
6275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
6375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
6475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public int getInt(String key, int defValue) {
6575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        if (mValues.containsKey(key)) {
6675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting            return ((Integer)mValues.get(key)).intValue();
6775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        }
6875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return defValue;
6975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
7075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
7175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
7275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public long getLong(String key, long defValue) {
7375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        if (mValues.containsKey(key)) {
7475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting            return ((Long)mValues.get(key)).longValue();
7575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        }
7675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return defValue;
7775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
7875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
7975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
8075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public String getString(String key, String defValue) {
8175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        if (mValues.containsKey(key))
8275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting            return (String)mValues.get(key);
8375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return defValue;
8475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
8575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
8675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @SuppressWarnings("unchecked")
8775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
8875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public Set<String> getStringSet(String key, Set<String> defValues) {
8975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        if (mValues.containsKey(key)) {
9075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting            return (Set<String>) mValues.get(key);
9175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        }
9275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return defValues;
9375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
9475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
9575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
9675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public void registerOnSharedPreferenceChangeListener(
9775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting            OnSharedPreferenceChangeListener listener) {
9875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        throw new UnsupportedOperationException();
9975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
10075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
10175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
10275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public void unregisterOnSharedPreferenceChangeListener(
10375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting            OnSharedPreferenceChangeListener listener) {
10475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        throw new UnsupportedOperationException();
10575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
10675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
10775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
10875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public Editor putBoolean(String key, boolean value) {
10975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        mTempValues.put(key, Boolean.valueOf(value));
11075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return this;
11175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
11275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
11375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
11475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public Editor putFloat(String key, float value) {
11575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        mTempValues.put(key, value);
11675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return this;
11775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
11875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
11975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
12075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public Editor putInt(String key, int value) {
12175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        mTempValues.put(key, value);
12275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return this;
12375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
12475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
12575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
12675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public Editor putLong(String key, long value) {
12775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        mTempValues.put(key, value);
12875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return this;
12975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
13075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
13175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
13275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public Editor putString(String key, String value) {
13375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        mTempValues.put(key, value);
13475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return this;
13575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
13675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
13775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
13875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public Editor putStringSet(String key, Set<String> values) {
13975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        mTempValues.put(key, values);
14075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return this;
14175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
14275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
14375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
14475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public Editor remove(String key) {
14575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        mTempValues.remove(key);
14675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return this;
14775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
14875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
14975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
15075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public Editor clear() {
15175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        mTempValues.clear();
15275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return this;
15375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
15475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
15575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @SuppressWarnings("unchecked")
15675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
15775f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public boolean commit() {
15875f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        mValues = (HashMap<String, Object>)mTempValues.clone();
15975f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        return true;
16075f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
16175f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting
16275f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    @Override
16375f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    public void apply() {
16475f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting        commit();
16575f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting    }
16675f53668f94c3ced9d3cc8583d7e45ce725ff9deSara Ting}