package macbury.pod.managers;
import android.app.AlarmManager;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.Uri;
import android.preference.PreferenceManager;
import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.koushikdutta.ion.Ion;
import java.util.Date;
import macbury.pod.R;
import macbury.pod.extensions.DateDeserializer;
/**
* Created by macbury on 09.09.14.
*/
public class SettingsManager {
public static final String KEY_API_RADIO_URI = "KEY_API_RADIO_URI";
public static final String KEY_API_ENDPOINT = "pref_key_api_endpoint";
public static final String KEY_SYNC_FREQ = "pref_key_sync_frequency";
public static final String KEY_PROXY_ENABLED = "pref_key_proxy_enabled";
public static final String KEY_PROXY_HOST = "pref_key_proxy_host";
public static final String KEY_PROXY_PORT = "pref_key_proxy_port";
public static final String KEY_LAST_UPDATE = "pref_key_last_update";
public static final int DEFAULT_SYNC_FREQ = 360;
public static final int DEFAULT_PROXY_PORT = 9050;
public static final String DEFAULT_PROXY_HOST = "127.0.0.1";
private final SharedPreferences settings;
private final Context context;
public SettingsManager(Context context) {
this.context = context;
settings = PreferenceManager.getDefaultSharedPreferences(context);
PreferenceManager.setDefaultValues(context, R.xml.settings, false);
}
public void update() {
updateION();
App.current().alarms.setup();
}
private void updateION() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Date.class, new DateDeserializer())
.create();
Ion.Config ionConfig = Ion.getDefault(context).configure();
ionConfig.setLogging("ION", Log.ERROR);
ionConfig.userAgent("Enklawa Pod");
if (useProxy()) {
ionConfig.proxy(getProxyHost(), getProxyPort());
} else {
ionConfig.disableProxy();
}
ionConfig.setGson(gson);
}
public String getApiEndpoint() {
return settings.getString(KEY_API_ENDPOINT, App.current().getString(R.string.default_pod_url));
}
public long getSyncFreq() {
return Long.parseLong(settings.getString(KEY_SYNC_FREQ, String.valueOf(AlarmManager.INTERVAL_HOUR)));
}
public boolean useProxy() {
return settings.getBoolean(KEY_PROXY_ENABLED, false);
}
public String getProxyHost() {
return settings.getString(KEY_PROXY_HOST, DEFAULT_PROXY_HOST);
}
public int getProxyPort() {
return Integer.parseInt(settings.getString(KEY_PROXY_PORT, ""));
}
public void setRadioURI(String radioURL) {
settings.edit().putString(KEY_API_RADIO_URI, radioURL).commit();
}
public Uri getRadioURI() {
return Uri.parse(settings.getString(KEY_API_RADIO_URI, null));
}
}