/* * Copyright (C) 2016 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.egg.neko; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import java.util.ArrayList; import java.util.List; import java.util.Map; public class PrefState implements OnSharedPreferenceChangeListener { private static final String FILE_NAME = "mPrefs"; private static final String FOOD_STATE = "food"; private static final String CAT_KEY_PREFIX = "cat:"; private final Context mContext; private final SharedPreferences mPrefs; private PrefsListener mListener; public PrefState(Context context) { mContext = context; mPrefs = mContext.getSharedPreferences(FILE_NAME, 0); } // Can also be used for renaming. public void addCat(Cat cat) { mPrefs.edit() .putString(CAT_KEY_PREFIX + String.valueOf(cat.getSeed()), cat.getName()) .apply(); } public void removeCat(Cat cat) { mPrefs.edit().remove(CAT_KEY_PREFIX + String.valueOf(cat.getSeed())).apply(); } public List getCats() { ArrayList cats = new ArrayList<>(); Map map = mPrefs.getAll(); for (String key : map.keySet()) { if (key.startsWith(CAT_KEY_PREFIX)) { long seed = Long.parseLong(key.substring(CAT_KEY_PREFIX.length())); Cat cat = new Cat(mContext, seed); cat.setName(String.valueOf(map.get(key))); cats.add(cat); } } return cats; } public int getFoodState() { return mPrefs.getInt(FOOD_STATE, 0); } public void setFoodState(int foodState) { mPrefs.edit().putInt(FOOD_STATE, foodState).apply(); } public void setListener(PrefsListener listener) { mListener = listener; if (mListener != null) { mPrefs.registerOnSharedPreferenceChangeListener(this); } else { mPrefs.unregisterOnSharedPreferenceChangeListener(this); } } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { mListener.onPrefsChanged(); } public interface PrefsListener { void onPrefsChanged(); } }