package com.electronapps.LJPro;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.codehaus.jackson.annotate.JsonProperty;
import com.electronapps.LJPro.LJTypes.Post;
import com.electronapps.LJPro.Html;
import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CursorAdapter;
import android.widget.FilterQueryProvider;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.ToggleButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class FPGridAdapter extends CursorAdapter implements FilterQueryProvider{
public static final String TAG = AccountsAdapter.class.getSimpleName();
private LayoutInflater mInflater;
private Cursor mCursor;
private FriendsPage mActivity;
private int layoutResource;
private int subjInd;
private int jnameInd;
private int upicInd;
private int jtypeInd;
private int pnameInd;
private String mAccount;
Context mContext;
private int teaserInd;
private int snipInd;
public FPGridAdapter(Context context, String accountname, Cursor c, int layoutId) {
super(context, c);
this.mCursor=c;
mAccount=accountname;
mContext=context.getApplicationContext();
this.mActivity=(FriendsPage) context;
getIndices();
this.mInflater = LayoutInflater.from(context);
this.layoutResource = layoutId;
setFilterQueryProvider(this);
}
private void getIndices() {
subjInd=mCursor.getColumnIndex(LJDB.KEY_SUBJECT);
jnameInd=mCursor.getColumnIndex(LJDB.KEY_JOURNALNAME);
jtypeInd=mCursor.getColumnIndex(LJDB.KEY_JOURNALTYPE);
snipInd=mCursor.getColumnIndex(LJDB.KEY_SNIPPET);
upicInd=mCursor.getColumnIndex(LJDB.KEY_USERPIC);
pnameInd=mCursor.getColumnIndex(LJDB.KEY_POSTERNAME);
teaserInd=mCursor.getColumnIndex(LJDB.KEY_TEASER);
ALL_FRIENDS=mActivity.getString(R.string.allfriends);
ALL_J=mActivity.getString(R.string.jonly);
ALL_C=mActivity.getString(R.string.conly);
ALL_S=mActivity.getString(R.string.sonly);
STARRED=mActivity.getString(R.string.starred);
mConstraint=ALL_FRIENDS;
}
private String mConstraint;
private static class ViewHolder{
ImageView preview;
TextView journalname;
TextView snippet;
TextView postername;
TextView subject;
}
HashMap<Integer,Boolean> starMap=new HashMap<Integer,Boolean>();
@Override
public void bindView(View v, Context context, Cursor c)
{
ViewHolder holder = (ViewHolder) v.getTag();
holder.journalname.setText(c.getString(jnameInd));
if (c.getString(jtypeInd).equals("C")) {
holder.postername.setText(c.getString(pnameInd));
holder.postername.setVisibility(View.VISIBLE);
}
else {
holder.postername.setVisibility(View.GONE);
holder.postername.setText("");
}
if (c.getString(subjInd)==null||c.getString(subjInd).length()==0){
holder.subject.setVisibility(View.GONE);
}
else {
holder.subject.setVisibility(View.VISIBLE);
holder.subject.setText(c.getString(subjInd)==null?"":c.getString(subjInd));
}
holder.preview.setImageResource(R.drawable.empty);
if (c.getString(teaserInd)!=null) {
holder.preview.setVisibility(View.VISIBLE);
holder.snippet.setVisibility(View.GONE);
holder.preview.setTag(c.getString(teaserInd));
}
else {
holder.preview.setVisibility(View.GONE);
holder.snippet.setVisibility(View.VISIBLE);
holder.snippet.setText(c.getString(snipInd));
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View v = mInflater.inflate(layoutResource, null);
ViewHolder holder = new ViewHolder();
holder.preview=(ImageView) v.findViewById(R.id.imgpreview);
holder.journalname = (TextView) v.findViewById(R.id.journalname);
holder.postername=(TextView) v.findViewById(R.id.postername);
holder.snippet=(TextView) v.findViewById(R.id.snippet);
holder.subject=(TextView) v.findViewById(R.id.subject);
v.setTag(holder);
return v;
}
public static String ALL_FRIENDS;
public static String ALL_J;
public static String ALL_C;
public static String STARRED;
public static String ALL_S;
public Cursor runQuery(CharSequence constraint) {
if(constraint==null||constraint.equals(mConstraint)) {
return mCursor;
}
else {
mConstraint=(String)constraint;
String extraWhere="";
String [] args;
if (constraint.equals(ALL_J)|constraint.equals(ALL_C)|constraint.equals(ALL_S)) {
extraWhere="AND "+LJDB.KEY_JOURNALTYPE+"=?";
if (constraint.equals(ALL_J)) {
String [] extraArgs={"P"};
args=extraArgs;
}
else if (constraint.equals(ALL_C)) {
String [] extraArgs={"C"};
args=extraArgs;
}
else {
String [] extraArgs={"Y"};
args=extraArgs;
}
}
else if(constraint.equals(STARRED)) {
extraWhere="AND "+LJDB.KEY_STARRED+"=?";
String[] extraArgs={"1"};
args=extraArgs;
}
else if(constraint.equals(ALL_FRIENDS)) {
extraWhere=null;
args=null;
}
else {
String[] extraArgs=mActivity.getGroupsHash().get(constraint);
args=extraArgs;
if (extraArgs!=null) {
for (int i=0;i<extraArgs.length;i++){
if (i==0) extraWhere+=" AND ("+LJDB.KEY_JOURNALNAME+"=?";
else extraWhere+=" OR "+LJDB.KEY_JOURNALNAME+"=?";
}
extraWhere+=")";
}
}
LJDB db=mActivity.getDBConn();
mActivity.setLastQuery(extraWhere,args);
Cursor results=db.getFriendsPage(mAccount,extraWhere,args,null);
return results;
}
}
@Override
public void changeCursor(Cursor c) {
super.changeCursor(c);
starMap.clear();
}
}