/** Bind the contact details provided by the given {@link Cursor}. */ protected void bindContactInfo(Cursor c) { // TODO: Bring back phonetic name final String displayName = c.getString(ContactQuery.DISPLAY_NAME); final String phoneticName = null; this.setDisplayName(displayName, null); final boolean starred = c.getInt(ContactQuery.STARRED) != 0; mStarredView.setChecked(starred); // Set the presence status if (!c.isNull(ContactQuery.CONTACT_PRESENCE_STATUS)) { int presence = c.getInt(ContactQuery.CONTACT_PRESENCE_STATUS); mPresenceView.setImageResource(StatusUpdates.getPresenceIconResourceId(presence)); mPresenceView.setVisibility(View.VISIBLE); } else { mPresenceView.setVisibility(View.GONE); } // Set the status update String status = c.getString(ContactQuery.CONTACT_STATUS); if (!TextUtils.isEmpty(status)) { mStatusView.setText(status); mStatusView.setVisibility(View.VISIBLE); CharSequence timestamp = null; if (!c.isNull(ContactQuery.CONTACT_STATUS_TIMESTAMP)) { long date = c.getLong(ContactQuery.CONTACT_STATUS_TIMESTAMP); // Set the date/time field by mixing relative and absolute // times. int flags = DateUtils.FORMAT_ABBREV_RELATIVE; timestamp = DateUtils.getRelativeTimeSpanString( date, System.currentTimeMillis(), DateUtils.MINUTE_IN_MILLIS, flags); } String label = null; if (!c.isNull(ContactQuery.CONTACT_STATUS_LABEL)) { String resPackage = c.getString(ContactQuery.CONTACT_STATUS_RES_PACKAGE); int labelResource = c.getInt(ContactQuery.CONTACT_STATUS_LABEL); Resources resources; if (TextUtils.isEmpty(resPackage)) { resources = getResources(); } else { PackageManager pm = getContext().getPackageManager(); try { resources = pm.getResourcesForApplication(resPackage); } catch (NameNotFoundException e) { Log.w(TAG, "Contact status update resource package not found: " + resPackage); resources = null; } } if (resources != null) { try { label = resources.getString(labelResource); } catch (NotFoundException e) { Log.w( TAG, "Contact status update resource not found: " + resPackage + "@" + labelResource); } } } CharSequence attribution; if (timestamp != null && label != null) { attribution = getContext() .getString( InternalResource.getString("contact_status_update_attribution_with_date"), timestamp, label); } else if (timestamp == null && label != null) { attribution = getContext() .getString(InternalResource.getString("contact_status_update_attribution"), label); } else if (timestamp != null) { attribution = timestamp; } else { attribution = null; } if (attribution != null) { mStatusAttributionView.setText(attribution); mStatusAttributionView.setVisibility(View.VISIBLE); } else { mStatusAttributionView.setVisibility(View.GONE); } } else { mStatusView.setVisibility(View.GONE); mStatusAttributionView.setVisibility(View.GONE); } }
/** Manually set the presence. */ public void setPresence(int presence) { mPresenceView.setImageResource(StatusUpdates.getPresenceIconResourceId(presence)); }