1package eu.siacs.conversations.ui.adapter;
2
3import java.util.ArrayList;
4import java.util.List;
5import java.util.Locale;
6
7import android.content.Context;
8import android.widget.ArrayAdapter;
9import android.widget.Filter;
10
11public class KnownHostsAdapter extends ArrayAdapter<String> {
12 private ArrayList<String> domains;
13 private Filter domainFilter = new Filter() {
14
15 @Override
16 protected FilterResults performFiltering(CharSequence constraint) {
17 if (constraint != null) {
18 ArrayList<String> suggestions = new ArrayList<String>();
19 final String[] split = constraint.toString().split("@");
20 if (split.length == 1) {
21 for (String domain : domains) {
22 suggestions.add(split[0].toLowerCase(Locale.getDefault()) + "@" + domain);
23 }
24 } else if (split.length == 2) {
25 for (String domain : domains) {
26 if (domain.contains(split[1])) {
27 suggestions.add(split[0].toLowerCase(Locale.getDefault()) + "@" + domain);
28 }
29 }
30 } else {
31 return new FilterResults();
32 }
33 FilterResults filterResults = new FilterResults();
34 filterResults.values = suggestions;
35 filterResults.count = suggestions.size();
36 return filterResults;
37 } else {
38 return new FilterResults();
39 }
40 }
41
42 @Override
43 protected void publishResults(CharSequence constraint,
44 FilterResults results) {
45 ArrayList<String> filteredList = (ArrayList<String>) results.values;
46 if (results != null && results.count > 0) {
47 clear();
48 for (String c : filteredList) {
49 add(c);
50 }
51 notifyDataSetChanged();
52 }
53 }
54 };
55
56 public KnownHostsAdapter(Context context, int viewResourceId,
57 List<String> mKnownHosts) {
58 super(context, viewResourceId, mKnownHosts);
59 domains = new ArrayList<String>(mKnownHosts.size());
60 for (String domain : mKnownHosts) {
61 domains.add(new String(domain));
62 }
63 }
64
65 @Override
66 public Filter getFilter() {
67 return domainFilter;
68 }
69}