package com.aberdyne.droidnavi;
import java.util.ArrayList;
import java.util.Set;
import java.util.TreeSet;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
public class PreferenceStore {
private static PreferenceStore m_instance = null;
private final String PREF_SERVER_LIST = "serverList";
private Activity m_parent = null;
private PreferenceStore(Activity activity) {
m_parent = activity;
}
static public PreferenceStore createPreferenceStore(Activity activity) {
if(m_instance == null) {
m_instance = new PreferenceStore(activity);
}
return m_instance;
}
/**
* Add a new server IP to the stored preferences for later retrieval
* @param serverIp A string to a valid IP address
* @return True if everything went ok. False if something went wrong or if serverIp
* was null.
*/
public synchronized boolean addServer(String serverIp) {
if(serverIp == null) return false;
// Get the current serverIps or create a new one if it doesn't exist
SharedPreferences pref = m_parent.getPreferences(Context.MODE_PRIVATE);
Set<String> set = pref.getStringSet(PREF_SERVER_LIST, null);
set = (set == null) ? new TreeSet<String>() : set;
try {
set.add(serverIp);
} catch (Exception e) {
return false;
}
// Replace set
SharedPreferences.Editor editor = pref.edit();
editor.putStringSet(PREF_SERVER_LIST, set);
editor.commit();
return true;
}
/**
* Remove the IP from the server list
* @param serverIp A valid IP that should be on the list
*/
public synchronized void removeServer(String serverIp) {
if(serverIp == null) return;
SharedPreferences pref = m_parent.getPreferences(Context.MODE_PRIVATE);
Set<String> set = pref.getStringSet(PREF_SERVER_LIST, null);
if(set != null) {
set.remove(serverIp);
SharedPreferences.Editor editor = pref.edit();
editor.putStringSet(PREF_SERVER_LIST, set);
editor.commit();
}
}
/**
* Retrieve a copy of the currently stored server list
* @return An array of string IPs
*/
public ArrayList<String> getServerList() {
SharedPreferences pref = m_parent.getPreferences(Context.MODE_PRIVATE);
Set<String> serverSet = pref.getStringSet(PREF_SERVER_LIST, null);
if(serverSet == null) {
return null;
}
ArrayList<String> list = new ArrayList<String>(serverSet);
return list;
}
}