182862573bcf246128782b91ea627285c43133a8dAndrew Flynn/*
282862573bcf246128782b91ea627285c43133a8dAndrew Flynn * Copyright (C) 2015 The Android Open Source Project
382862573bcf246128782b91ea627285c43133a8dAndrew Flynn *
482862573bcf246128782b91ea627285c43133a8dAndrew Flynn * Licensed under the Apache License, Version 2.0 (the "License");
582862573bcf246128782b91ea627285c43133a8dAndrew Flynn * you may not use this file except in compliance with the License.
682862573bcf246128782b91ea627285c43133a8dAndrew Flynn * You may obtain a copy of the License at
782862573bcf246128782b91ea627285c43133a8dAndrew Flynn *
882862573bcf246128782b91ea627285c43133a8dAndrew Flynn *      http://www.apache.org/licenses/LICENSE-2.0
982862573bcf246128782b91ea627285c43133a8dAndrew Flynn *
1082862573bcf246128782b91ea627285c43133a8dAndrew Flynn * Unless required by applicable law or agreed to in writing, software
1182862573bcf246128782b91ea627285c43133a8dAndrew Flynn * distributed under the License is distributed on an "AS IS" BASIS,
1282862573bcf246128782b91ea627285c43133a8dAndrew Flynn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1382862573bcf246128782b91ea627285c43133a8dAndrew Flynn * See the License for the specific language governing permissions and
1482862573bcf246128782b91ea627285c43133a8dAndrew Flynn * limitations under the License.
1582862573bcf246128782b91ea627285c43133a8dAndrew Flynn */
1682862573bcf246128782b91ea627285c43133a8dAndrew Flynn
1782862573bcf246128782b91ea627285c43133a8dAndrew Flynnpackage com.android.systemui;
1882862573bcf246128782b91ea627285c43133a8dAndrew Flynn
1982862573bcf246128782b91ea627285c43133a8dAndrew Flynnimport android.annotation.StringDef;
2082862573bcf246128782b91ea627285c43133a8dAndrew Flynnimport android.content.Context;
2182862573bcf246128782b91ea627285c43133a8dAndrew Flynnimport android.content.SharedPreferences;
2282862573bcf246128782b91ea627285c43133a8dAndrew Flynnimport android.content.SharedPreferences.OnSharedPreferenceChangeListener;
2382862573bcf246128782b91ea627285c43133a8dAndrew Flynn
2482862573bcf246128782b91ea627285c43133a8dAndrew Flynnimport java.lang.annotation.Retention;
2582862573bcf246128782b91ea627285c43133a8dAndrew Flynnimport java.lang.annotation.RetentionPolicy;
2682862573bcf246128782b91ea627285c43133a8dAndrew Flynnimport java.util.Map;
2782862573bcf246128782b91ea627285c43133a8dAndrew Flynn
2882862573bcf246128782b91ea627285c43133a8dAndrew Flynnpublic final class Prefs {
2982862573bcf246128782b91ea627285c43133a8dAndrew Flynn    private Prefs() {} // no instantation
3082862573bcf246128782b91ea627285c43133a8dAndrew Flynn
3182862573bcf246128782b91ea627285c43133a8dAndrew Flynn    @Retention(RetentionPolicy.SOURCE)
3282862573bcf246128782b91ea627285c43133a8dAndrew Flynn    @StringDef({
3382862573bcf246128782b91ea627285c43133a8dAndrew Flynn        Key.SEARCH_APP_WIDGET_ID,
3482862573bcf246128782b91ea627285c43133a8dAndrew Flynn        Key.DEBUG_MODE_ENABLED,
3582862573bcf246128782b91ea627285c43133a8dAndrew Flynn        Key.HOTSPOT_TILE_LAST_USED,
3682862573bcf246128782b91ea627285c43133a8dAndrew Flynn        Key.COLOR_INVERSION_TILE_LAST_USED,
3782862573bcf246128782b91ea627285c43133a8dAndrew Flynn        Key.DND_TILE_VISIBLE,
38f55b7f2fb614b917b7d1943396880978258dd1bbJohn Spurlock        Key.DND_TILE_COMBINED_ICON,
39f55b7f2fb614b917b7d1943396880978258dd1bbJohn Spurlock        Key.DND_CONFIRMED_PRIORITY_INTRODUCTION,
40d9c75dba75ad4742dbaadc34db99d2b76cebca91John Spurlock        Key.DND_CONFIRMED_SILENCE_INTRODUCTION,
41f55b7f2fb614b917b7d1943396880978258dd1bbJohn Spurlock        Key.DND_FAVORITE_BUCKET_INDEX,
42f55b7f2fb614b917b7d1943396880978258dd1bbJohn Spurlock        Key.DND_NONE_SELECTED,
43d9c75dba75ad4742dbaadc34db99d2b76cebca91John Spurlock        Key.DND_FAVORITE_ZEN,
4482862573bcf246128782b91ea627285c43133a8dAndrew Flynn    })
4582862573bcf246128782b91ea627285c43133a8dAndrew Flynn    public @interface Key {
4682862573bcf246128782b91ea627285c43133a8dAndrew Flynn        String SEARCH_APP_WIDGET_ID = "searchAppWidgetId";
47af3bb6936786a8c14ac01da3d81d196d17b68b96Winson Chung        String SEARCH_APP_WIDGET_PACKAGE = "searchAppWidgetPackage";
4882862573bcf246128782b91ea627285c43133a8dAndrew Flynn        String DEBUG_MODE_ENABLED = "debugModeEnabled";
4982862573bcf246128782b91ea627285c43133a8dAndrew Flynn        String HOTSPOT_TILE_LAST_USED = "HotspotTileLastUsed";
5082862573bcf246128782b91ea627285c43133a8dAndrew Flynn        String COLOR_INVERSION_TILE_LAST_USED = "ColorInversionTileLastUsed";
5182862573bcf246128782b91ea627285c43133a8dAndrew Flynn        String DND_TILE_VISIBLE = "DndTileVisible";
5282862573bcf246128782b91ea627285c43133a8dAndrew Flynn        String DND_TILE_COMBINED_ICON = "DndTileCombinedIcon";
53f55b7f2fb614b917b7d1943396880978258dd1bbJohn Spurlock        String DND_CONFIRMED_PRIORITY_INTRODUCTION = "DndConfirmedPriorityIntroduction";
54d9c75dba75ad4742dbaadc34db99d2b76cebca91John Spurlock        String DND_CONFIRMED_SILENCE_INTRODUCTION = "DndConfirmedSilenceIntroduction";
55f55b7f2fb614b917b7d1943396880978258dd1bbJohn Spurlock        String DND_FAVORITE_BUCKET_INDEX = "DndCountdownMinuteIndex";
56f55b7f2fb614b917b7d1943396880978258dd1bbJohn Spurlock        String DND_NONE_SELECTED = "DndNoneSelected";
57d9c75dba75ad4742dbaadc34db99d2b76cebca91John Spurlock        String DND_FAVORITE_ZEN = "DndFavoriteZen";
5882862573bcf246128782b91ea627285c43133a8dAndrew Flynn    }
5982862573bcf246128782b91ea627285c43133a8dAndrew Flynn
6082862573bcf246128782b91ea627285c43133a8dAndrew Flynn    public static boolean getBoolean(Context context, @Key String key, boolean defaultValue) {
6182862573bcf246128782b91ea627285c43133a8dAndrew Flynn        return get(context).getBoolean(key, defaultValue);
6282862573bcf246128782b91ea627285c43133a8dAndrew Flynn    }
6382862573bcf246128782b91ea627285c43133a8dAndrew Flynn
6482862573bcf246128782b91ea627285c43133a8dAndrew Flynn    public static void putBoolean(Context context, @Key String key, boolean value) {
6582862573bcf246128782b91ea627285c43133a8dAndrew Flynn        get(context).edit().putBoolean(key, value).apply();
6682862573bcf246128782b91ea627285c43133a8dAndrew Flynn    }
6782862573bcf246128782b91ea627285c43133a8dAndrew Flynn
6882862573bcf246128782b91ea627285c43133a8dAndrew Flynn    public static int getInt(Context context, @Key String key, int defaultValue) {
6982862573bcf246128782b91ea627285c43133a8dAndrew Flynn        return get(context).getInt(key, defaultValue);
7082862573bcf246128782b91ea627285c43133a8dAndrew Flynn    }
7182862573bcf246128782b91ea627285c43133a8dAndrew Flynn
7282862573bcf246128782b91ea627285c43133a8dAndrew Flynn    public static void putInt(Context context, @Key String key, int value) {
7382862573bcf246128782b91ea627285c43133a8dAndrew Flynn        get(context).edit().putInt(key, value).apply();
7482862573bcf246128782b91ea627285c43133a8dAndrew Flynn    }
7582862573bcf246128782b91ea627285c43133a8dAndrew Flynn
7682862573bcf246128782b91ea627285c43133a8dAndrew Flynn    public static long getLong(Context context, @Key String key, long defaultValue) {
7782862573bcf246128782b91ea627285c43133a8dAndrew Flynn        return get(context).getLong(key, defaultValue);
7882862573bcf246128782b91ea627285c43133a8dAndrew Flynn    }
7982862573bcf246128782b91ea627285c43133a8dAndrew Flynn
8082862573bcf246128782b91ea627285c43133a8dAndrew Flynn    public static void putLong(Context context, @Key String key, long value) {
8182862573bcf246128782b91ea627285c43133a8dAndrew Flynn        get(context).edit().putLong(key, value).apply();
8282862573bcf246128782b91ea627285c43133a8dAndrew Flynn    }
8382862573bcf246128782b91ea627285c43133a8dAndrew Flynn
84af3bb6936786a8c14ac01da3d81d196d17b68b96Winson Chung    public static String getString(Context context, @Key String key, String defaultValue) {
85af3bb6936786a8c14ac01da3d81d196d17b68b96Winson Chung        return get(context).getString(key, defaultValue);
86af3bb6936786a8c14ac01da3d81d196d17b68b96Winson Chung    }
87af3bb6936786a8c14ac01da3d81d196d17b68b96Winson Chung
88af3bb6936786a8c14ac01da3d81d196d17b68b96Winson Chung    public static void putString(Context context, @Key String key, String value) {
89af3bb6936786a8c14ac01da3d81d196d17b68b96Winson Chung        get(context).edit().putString(key, value).apply();
90af3bb6936786a8c14ac01da3d81d196d17b68b96Winson Chung    }
91af3bb6936786a8c14ac01da3d81d196d17b68b96Winson Chung
9282862573bcf246128782b91ea627285c43133a8dAndrew Flynn    public static Map<String, ?> getAll(Context context) {
9382862573bcf246128782b91ea627285c43133a8dAndrew Flynn        return get(context).getAll();
9482862573bcf246128782b91ea627285c43133a8dAndrew Flynn    }
9582862573bcf246128782b91ea627285c43133a8dAndrew Flynn
9682862573bcf246128782b91ea627285c43133a8dAndrew Flynn    public static void remove(Context context, @Key String key) {
9782862573bcf246128782b91ea627285c43133a8dAndrew Flynn        get(context).edit().remove(key).apply();
9882862573bcf246128782b91ea627285c43133a8dAndrew Flynn    }
9982862573bcf246128782b91ea627285c43133a8dAndrew Flynn
10082862573bcf246128782b91ea627285c43133a8dAndrew Flynn    public static void registerListener(Context context,
10182862573bcf246128782b91ea627285c43133a8dAndrew Flynn            OnSharedPreferenceChangeListener listener) {
10282862573bcf246128782b91ea627285c43133a8dAndrew Flynn        get(context).registerOnSharedPreferenceChangeListener(listener);
10382862573bcf246128782b91ea627285c43133a8dAndrew Flynn    }
10482862573bcf246128782b91ea627285c43133a8dAndrew Flynn
10582862573bcf246128782b91ea627285c43133a8dAndrew Flynn    public static void unregisterListener(Context context,
10682862573bcf246128782b91ea627285c43133a8dAndrew Flynn            OnSharedPreferenceChangeListener listener) {
10782862573bcf246128782b91ea627285c43133a8dAndrew Flynn        get(context).unregisterOnSharedPreferenceChangeListener(listener);
10882862573bcf246128782b91ea627285c43133a8dAndrew Flynn    }
10982862573bcf246128782b91ea627285c43133a8dAndrew Flynn
11082862573bcf246128782b91ea627285c43133a8dAndrew Flynn    private static SharedPreferences get(Context context) {
11182862573bcf246128782b91ea627285c43133a8dAndrew Flynn        return context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);
11282862573bcf246128782b91ea627285c43133a8dAndrew Flynn    }
11382862573bcf246128782b91ea627285c43133a8dAndrew Flynn}
114