/**
* Shadow - Anonymous web browser for Android devices
* Copyright (C) 2009 Connell Gauld
*
* Thanks to University of Cambridge,
* Alastair Beresford and Andrew Rice
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
package uk.ac.cam.cl.dtg.android.tor.Shadow;
import java.util.ArrayList;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnDismissListener;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
/**
* Activity for showing the preferences
* @author Connell Gauld
*
*/
public class EditPreferences extends PreferenceActivity implements OnDismissListener, OnClickListener {
PreferenceCategory mWhitelist = null;
Preference mAddSite = null;
WhitelistItemPreference mLastSelected = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
mWhitelist = (PreferenceCategory) this.findPreference("pref_whitelist");
mAddSite = (Preference) this.findPreference("pref_addsite");
populateWhitelist();
}
private void populateWhitelist() {
CookieManager c = CookieManager.getInstance();
mWhitelist.removeAll();
ArrayList<String> v = c.getWhitelist();
int size = v.size();
for (int i=0; i<size; i++) {
String site = v.get(i);
WhitelistItemPreference p = new WhitelistItemPreference(this);
p.setSite(site);
p.setTitle(site);
mWhitelist.addPreference(p);
}
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
Preference preference) {
super.onPreferenceTreeClick(preferenceScreen, preference);
if (preference == mAddSite) {
AddSiteDialog asd = new AddSiteDialog(this);
asd.setOnDismissListener(this);
asd.show();
} else if (preference instanceof WhitelistItemPreference) {
mLastSelected = (WhitelistItemPreference)preference;
AlertDialog.Builder b = new Builder(this);
b.setTitle(mLastSelected.getSite())
.setPositiveButton("Delete", this)
.setNeutralButton("Cancel", null)
.show();
}
return false;
}
@Override
public void onDismiss(DialogInterface dialog) {
populateWhitelist();
}
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) {
if (mLastSelected != null) {
CookieManager.getInstance().removeFromWhitelist(mLastSelected.getSite());
populateWhitelist();
}
}
}
}