package com.tuit.ar.models; import java.util.ArrayList; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class Settings extends BroadcastReceiver { final static public String UPDATE_INTERVAL = "updateInterval"; final static public String AUTOMATIC_UPDATE = "automaticUpdate"; final static public String FILTER = "filter"; final static public String FILTER_DELETE = "deleteFilter"; public static final String SHOW_AVATAR = "showAvatar"; public static final String LAZY_MODE = "lazyMode"; final static public String UPDATE_INTERVAL_DEFAULT = "5"; final static public Boolean AUTOMATIC_UPDATE_DEFAULT = Boolean.FALSE; final static public Boolean SHOW_AVATAR_DEFAULT = Boolean.FALSE; public static final Boolean LAZY_MODE_DEFAULT = Boolean.TRUE; static private ArrayList<SettingsObserver> observers = new ArrayList<SettingsObserver>(); static private Settings instance; public static Settings getInstance() { if (instance == null) instance = new Settings(); return instance; } public Settings() { super(); instance = this; } public String getSettingsName(Context context) { ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = manager.getActiveNetworkInfo(); if (networkInfo == null) return "none"; else return networkInfo.getTypeName(); } public SharedPreferences getSharedPreferences(Context context) { return context.getSharedPreferences(getSettingsName(context), Context.MODE_PRIVATE); } public void addObserver(SettingsObserver observer) { observers.add(observer); } public void removeObserver(SettingsObserver observer) { observers.remove(observer); } public void callObservers() { for (SettingsObserver observer : observers) { observer.settingsHasChanged(this); } } @Override public void onReceive(Context context, Intent intent) { ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); // Not sure what this does, but according documentation, if this is disabled, we should avoid all background data if (intent.getAction().equals(android.net.ConnectivityManager.ACTION_BACKGROUND_DATA_SETTING_CHANGED)) { SharedPreferences preferences = getSharedPreferences(context); if (manager.getBackgroundDataSetting() == false && preferences.getBoolean(Settings.AUTOMATIC_UPDATE, Settings.AUTOMATIC_UPDATE_DEFAULT)) { Editor editor = preferences.edit(); editor.putBoolean(Settings.AUTOMATIC_UPDATE, false); editor.commit(); } } } }