package edu.stanford.cs.sujogger.util; import java.util.Calendar; import edu.stanford.cs.sujogger.R; import edu.stanford.cs.sujogger.db.GPStracking.GameMessages; import android.content.Context; import android.database.Cursor; import android.graphics.Color; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CursorAdapter; import android.widget.TextView; public class GameMessageAdapter extends CursorAdapter { private static final String TAG = "OGT.GameMessageAdapter"; private Cursor mCursor; private boolean mFlinging = false; private boolean mFull; public GameMessageAdapter(Context context, Cursor c, boolean full) { this(context, c, true, full); } public GameMessageAdapter(Context context, Cursor c, boolean autoRequery, boolean full) { super(context, c, autoRequery); mCursor = c; mFull = full; } @Override public void changeCursor(Cursor cursor) { mCursor = cursor; super.changeCursor(cursor); } @Override public Object getItem(int position) { if (position >= 0 && position < mCursor.getCount()) { mCursor.moveToPosition(position); Log.d(TAG, "getItem(): id = " + mCursor.getLong(0)); return mCursor.getLong(0); } else return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { View ret = super.getView(position, convertView, parent); //TODO: Facebook if (ret != null) { RemoteImageView image = (RemoteImageView) ret.findViewById(R.id.msg_item_image); if (image != null && !mFlinging) { Log.d(TAG, "getView(): trying to fetch image"); image.loadImage(); } } return ret; } @Override public void bindView(View view, Context context, Cursor cursor) { int type = cursor.getInt(2); long sendTime = cursor.getLong(3); String subject = cursor.getString(6); String firstName = cursor.getString(13); String lastName = cursor.getString(14); String imgUrl = cursor.getString(15); if (type == GameMessages.TYPE_INVITE) view.setBackgroundColor(Color.rgb(0, 40, 0)); else if (type == GameMessages.TYPE_CHALLENGE) view.setBackgroundColor(Color.rgb(40, 0, 0)); else if (type == GameMessages.TYPE_GENERIC) view.setBackgroundColor(Color.rgb(0, 0, 0)); //TODO: Facebook RemoteImageView image = (RemoteImageView)view.findViewById(R.id.msg_item_image); image.setLocalURI(Common.getCacheFileName(imgUrl)); image.setRemoteURI(imgUrl); //image.setVisibility(View.GONE); TextView nameText = (TextView)view.findViewById(R.id.msg_item_name); nameText.setText(firstName + " " + lastName); TextView subjectText = (TextView)view.findViewById(R.id.msg_item_subject); subjectText.setText(subject); TextView timeText = (TextView)view.findViewById(R.id.msg_item_time); Calendar c = Calendar.getInstance(); int yearNow = c.get(Calendar.YEAR); int monthNow = c.get(Calendar.MONTH) + 1; int dayNow = c.get(Calendar.DAY_OF_MONTH); c.setTimeInMillis(sendTime); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH) + 1; int day = c.get(Calendar.DAY_OF_MONTH); if (year == yearNow && month == monthNow && day == dayNow) { int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); timeText.setText(Common.timeString(hour, minute)); } else { timeText.setText(month + "/" + day + "/" + year); } if (mFull) { String body = cursor.getString(7); TextView bodyText = (TextView)view.findViewById(R.id.msg_item_body); if (body == null) { bodyText.setVisibility(View.GONE); bodyText.setText(""); } else { bodyText.setVisibility(View.VISIBLE); bodyText.setText(body); } } } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { if (mFull) { final View v = LayoutInflater.from(context).inflate(R.layout.message_item_full, parent, false); bindView(v, context, cursor); return v; } else { final View v = LayoutInflater.from(context).inflate(R.layout.message_item, parent, false); bindView(v, context, cursor); return v; } } }