save/load prefs
[adBlock.git] / src / de / ub0r / android / adBlock / AdBlock.java
blob3350ae4f2722d7512d8c5accb006394038a44cd4
1 package de.ub0r.android.adBlock;
3 import java.util.ArrayList;
5 import android.app.Activity;
6 import android.app.AlertDialog;
7 import android.content.DialogInterface;
8 import android.content.Intent;
9 import android.content.SharedPreferences;
10 import android.os.Bundle;
11 import android.preference.PreferenceManager;
12 import android.view.View;
13 import android.view.View.OnClickListener;
14 import android.widget.AdapterView;
15 import android.widget.ArrayAdapter;
16 import android.widget.Button;
17 import android.widget.EditText;
18 import android.widget.ListView;
19 import android.widget.AdapterView.OnItemClickListener;
21 /**
22 * Main Activity to controle ad blocking proxy.
24 * @author flx
26 public class AdBlock extends Activity implements OnClickListener,
27 OnItemClickListener {
29 /** Preferences: Port. */
30 private static final String PREFS_PORT = "port";
31 /** Preferences: Filter. */
32 private static final String PREFS_FILTER = "filter";
34 /** ItemDialog: edit. */
35 private static final short ITEM_DIALOG_EDIT = 0;
36 /** ItemDialog: delete. */
37 private static final short ITEM_DIALOG_DELETE = 1;
39 /** Prefs. */
40 private SharedPreferences preferences;
42 /** The filter. */
43 private ArrayList<String> filter = new ArrayList<String>();
44 /** The ArrayAdapter. */
45 private ArrayAdapter<String> adapter = null;
47 /** Editmode? */
48 private int itemToEdit = -1;
50 /**
51 * Called when the activity is first created.
53 * @param savedInstanceState
54 * saved InstanceState
56 @Override
57 public final void onCreate(final Bundle savedInstanceState) {
58 super.onCreate(savedInstanceState);
59 this.setContentView(R.layout.main);
61 this.preferences = PreferenceManager.getDefaultSharedPreferences(this);
62 ((EditText) this.findViewById(R.id.port)).setText(this.preferences
63 .getString(PREFS_PORT, "8080"));
64 String f = this.preferences.getString(PREFS_FILTER, "");
65 for (String s : f.split("\n")) {
66 if (s.length() > 0) {
67 this.filter.add(s);
71 ((Button) this.findViewById(R.id.start_service))
72 .setOnClickListener(this);
73 ((Button) this.findViewById(R.id.stop_service))
74 .setOnClickListener(this);
75 ((Button) this.findViewById(R.id.filter_add_)).setOnClickListener(this);
76 ListView lv = (ListView) this.findViewById(R.id.filter);
77 this.adapter = new ArrayAdapter<String>(this,
78 android.R.layout.simple_list_item_1, this.filter);
79 lv.setAdapter(this.adapter);
80 lv.setTextFilterEnabled(true);
81 lv.setOnItemClickListener(this);
84 /** Called on pause. */
85 @Override
86 public final void onPause() {
87 super.onPause();
88 SharedPreferences.Editor editor = this.preferences.edit();
89 editor.putString(PREFS_PORT, ((EditText) this.findViewById(R.id.port))
90 .getText().toString());
91 StringBuilder sb = new StringBuilder();
92 for (String s : this.filter) {
93 sb.append(s + "\n");
95 editor.putString(PREFS_FILTER, sb.toString());
96 editor.commit();
99 /**
100 * OnClickListener.
102 * @param v
103 * view
105 @Override
106 public final void onClick(final View v) {
107 switch (v.getId()) {
108 case R.id.start_service:
109 this.startService(new Intent(this, Proxy.class));
110 break;
111 case R.id.stop_service:
112 this.stopService(new Intent(this, Proxy.class));
113 case R.id.filter_add_:
114 EditText et = (EditText) this.findViewById(R.id.filter_add);
115 String f = et.getText().toString();
116 if (f.length() > 0) {
117 if (this.itemToEdit >= 0) {
118 this.filter.remove(this.itemToEdit);
119 this.itemToEdit = -1;
121 this.filter.add(f);
122 et.setText("");
123 this.adapter.notifyDataSetChanged();
125 break;
126 default:
127 break;
132 * Handle clicked ListItem.
134 * @param parent
135 * parent AdapterView
136 * @param v
137 * View
138 * @param position
139 * Position
140 * @param id
141 * id
143 @Override
144 public final void onItemClick(final AdapterView<?> parent, final View v,
145 final int position, final long id) {
147 AlertDialog.Builder builder = new AlertDialog.Builder(this);
148 // builder.setTitle("Pick a color");
149 builder.setItems(
150 this.getResources().getStringArray(R.array.itemDialog),
151 new DialogInterface.OnClickListener() {
152 public void onClick(final DialogInterface dialog,
153 final int item) {
154 switch (item) {
155 case ITEM_DIALOG_EDIT:
156 AdBlock.this.itemToEdit = position;
157 ((EditText) AdBlock.this
158 .findViewById(R.id.filter_add))
159 .setText(AdBlock.this.adapter
160 .getItem(position));
161 break;
162 case ITEM_DIALOG_DELETE:
163 AdBlock.this.filter.remove(position);
164 AdBlock.this.adapter.notifyDataSetChanged();
165 break;
166 default:
167 break;
171 AlertDialog alert = builder.create();
172 alert.show();