package com.rubika.aotalk.adapter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import com.rubika.aotalk.item.Friend;
import com.rubika.aotalk.util.ImageLoader;
import com.rubika.aotalk.util.Logging;
import com.rubika.aotalk.util.Statics;
import com.rubika.aotalk.R;
import com.rubika.aotalk.TheLeet;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import android.widget.ImageView;
import android.widget.TextView;
public class FriendAdapter extends ArrayAdapter<Friend> {
private static final String APP_TAG = "--> The Leet :: FriendAdapter";
private boolean iconsEnabled;
private SharedPreferences settings;
private ImageLoader imageLoader;
private List<Friend> friendsOrg = new ArrayList<Friend>();
private List<Friend> friendsFlt = new ArrayList<Friend>();
private AdapterFilter filter;
public FriendAdapter(Context context, int textViewResourceId, List<Friend> friends, boolean enableIcons) {
super(context, textViewResourceId, friends);
iconsEnabled = enableIcons;
settings = PreferenceManager.getDefaultSharedPreferences(context);
imageLoader = new ImageLoader(context);
friendsOrg = friends;
friendsFlt = friends;
}
@Override
public void add(Friend object) {
friendsOrg.add(object);
super.add(object);
}
@Override
public void addAll(Collection<? extends Friend> friends) {
friendsOrg.clear();
friendsOrg.addAll(friends);
}
@Override
public void clear() {
friendsOrg.clear();
friendsFlt.clear();
super.clear();
}
@Override
public Filter getFilter() {
if (filter == null){
filter = new AdapterFilter();
}
return filter;
}
private class AdapterFilter extends Filter{
@Override
protected FilterResults performFiltering(CharSequence constraint) {
Logging.log(APP_TAG, "filtering results: " + constraint);
FilterResults results = new FilterResults();
ArrayList<Friend> i = new ArrayList<Friend>();
if (constraint!= null && constraint.toString().length() > 0) {
for (int index = 0; index < friendsOrg.size(); index++) {
Friend si = friendsOrg.get(index);
if(si.toString().startsWith(constraint.toString().toLowerCase())){
i.add(si);
}
}
results.values = i;
results.count = i.size();
} else {
synchronized (friendsOrg) {
results.values = friendsOrg;
results.count = friendsOrg.size();
}
}
return results;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
friendsFlt = (List<Friend>)results.values;
notifyDataSetChanged();
Logging.log(APP_TAG, "returning filtered results: " + friendsFlt.size());
}
}
@Override
public int getCount() {
return friendsFlt.size();
}
@Override
public Friend getItem(int position) {
return friendsFlt.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item_friend, null);
}
TextView t = (TextView)convertView.findViewById(R.id.title);
t.setText(getItem(position).getName());
if(getItem(position).isOnline()) {
t.setTextColor(Color.parseColor(getContext().getString(R.color.mainwhite)));
} else {
t.setTextColor(Color.parseColor(getContext().getString(R.color.subgrey)));
}
ImageView i = (ImageView)convertView.findViewById(R.id.icon);
if (iconsEnabled && settings.getBoolean("enableFaces", true)) {
if (getItem(position).getIcon() != null) {
imageLoader.DisplayImage(Statics.PHOTO_PATH + getItem(position).getIcon(), i);
} else {
i.setImageDrawable(TheLeet.getContext().getResources().getDrawable(R.drawable.ic_notification_old));
}
i.setVisibility(View.VISIBLE);
t.setPadding((int)Math.round(t.getPaddingRight() * 1.5), 0, t.getPaddingRight(), 0);
} else {
i.setVisibility(View.GONE);
t.setPadding(t.getPaddingRight(), t.getPaddingRight(), t.getPaddingRight(), t.getPaddingRight());
}
ImageView s = (ImageView)convertView.findViewById(R.id.aospeak);
if (iconsEnabled && getItem(position).getAOSpeakStatus()) {
s.setImageDrawable(getContext().getResources().getDrawable(R.drawable.aospeak));
s.setVisibility(View.VISIBLE);
} else {
s.setVisibility(View.GONE);
}
return convertView;
}
}