package org.ohmage.adapters; import android.content.Context; import android.database.Cursor; import android.support.v4.widget.CursorAdapter; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import org.ohmage.ConfigHelper; import org.ohmage.R; import org.ohmage.activity.SubActionClickListener; import org.ohmage.db.DbContract.Campaigns; import org.ohmage.db.DbContract.Surveys; import org.ohmage.db.Models.Campaign; import org.ohmage.db.Models.Survey; import org.ohmage.logprobe.Analytics; public class SurveyListCursorAdapter extends CursorAdapter{ private final LayoutInflater mInflater; private final SubActionClickListener mListener; public SurveyListCursorAdapter(Context context, Cursor c, SubActionClickListener listener, int flags) { super(context, c, flags); mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mListener = listener; } @Override public void bindView(View view, Context context, Cursor cursor) { ImageView iconImage = (ImageView) view.findViewById(R.id.icon_image); TextView titleText = (TextView) view.findViewById(R.id.main_text); TextView campaignText = (TextView) view.findViewById(R.id.sub_text); ImageButton actionButton = (ImageButton) view.findViewById(R.id.action_button); final String campaignUrn = cursor.getString(cursor.getColumnIndex(Surveys.CAMPAIGN_URN)); final String campaignName = cursor.getString(cursor.getColumnIndex(Surveys.CAMPAIGN_NAME)); final int campaignStatus = cursor.getInt(cursor.getColumnIndex(Campaigns.CAMPAIGN_STATUS)); final String surveyId = cursor.getString(cursor.getColumnIndex(Surveys.SURVEY_ID)); iconImage.setVisibility(View.GONE); titleText.setText(cursor.getString(cursor.getColumnIndex(Surveys.SURVEY_TITLE))); campaignText.setText(campaignName); // Only show campaign name if we aren't in single campaign mode campaignText.setVisibility((ConfigHelper.isSingleCampaignMode()) ? View.GONE : View.VISIBLE); actionButton.setFocusable(false); actionButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Analytics.widget(v, null, campaignUrn + ":" + surveyId); if(campaignStatus == Campaign.STATUS_READY) { mListener.onSubActionClicked(Campaigns.buildSurveysUri(campaignUrn, surveyId)); } else { mListener.onSubActionClicked(null); } } }); actionButton.setImageResource(R.drawable.ic_menu_edit); int status = cursor.getInt(cursor.getColumnIndex(Surveys.SURVEY_STATUS)); boolean anytime = cursor.getInt(cursor.getColumnIndex(Surveys.SURVEY_ANYTIME)) == 0 ? false : true; if(campaignStatus == Campaign.STATUS_READY) { switch (status) { case Survey.STATUS_NORMAL: if (anytime) { actionButton.setContentDescription(context.getString(R.string.survey_list_item_action_button_description)); actionButton.setImageResource(R.drawable.subaction_survey_ready); } else { actionButton.setContentDescription(context.getString(R.string.survey_list_item_action_button_disabled_description)); actionButton.setImageResource(R.drawable.subaction_survey_disabled); actionButton.setEnabled(false); } break; case Survey.STATUS_TRIGGERED: actionButton.setContentDescription(context.getString(R.string.survey_list_item_action_button_pending_description)); actionButton.setImageResource(R.drawable.subaction_survey_pending); break; default: //campaign is in some unknown state! actionButton.setVisibility(View.INVISIBLE); break; } } else { actionButton.setContentDescription(context.getString(R.string.survey_list_item_action_button_disabled_description)); actionButton.setImageResource(R.drawable.subaction_survey_disabled); } } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { return mInflater.inflate(R.layout.ohmage_list_item, null); } }