Home | History | Annotate | Download | only in interactions
      1 package com.android.contacts.interactions;
      2 
      3 import android.content.ContentUris;
      4 import android.content.ContentValues;
      5 import android.content.Context;
      6 import android.content.Intent;
      7 import android.graphics.drawable.Drawable;
      8 import android.provider.CalendarContract.Attendees;
      9 import android.provider.CalendarContract.Events;
     10 import android.text.Spannable;
     11 import android.text.TextUtils;
     12 import android.text.format.Time;
     13 
     14 import com.android.contacts.R;
     15 
     16 /**
     17  * Represents a calendar event interaction, wrapping the columns in
     18  * {@link android.provider.CalendarContract.Attendees}.
     19  */
     20 public class CalendarInteraction implements ContactInteraction {
     21     private static final String TAG = CalendarInteraction.class.getSimpleName();
     22 
     23     private static final int CALENDAR_ICON_RES = R.drawable.quantum_ic_event_vd_theme_24;
     24 
     25     private ContentValues mValues;
     26 
     27     public CalendarInteraction(ContentValues values) {
     28         mValues = values;
     29     }
     30 
     31     @Override
     32     public Intent getIntent() {
     33         return new Intent(Intent.ACTION_VIEW).setData(
     34                 ContentUris.withAppendedId(Events.CONTENT_URI, getEventId()));
     35     }
     36 
     37     @Override
     38     public long getInteractionDate() {
     39         return getDtstart();
     40     }
     41 
     42     @Override
     43     public String getViewHeader(Context context) {
     44         String title = getTitle();
     45         if (TextUtils.isEmpty(title)) {
     46             return context.getResources().getString(R.string.untitled_event);
     47         }
     48         return title;
     49     }
     50 
     51     @Override
     52     public String getViewBody(Context context) {
     53         return null;
     54     }
     55 
     56     @Override
     57     public String getViewFooter(Context context) {
     58         // Pulled from com.android.calendar.EventInfoFragment.updateEvent(View view)
     59         // TODO: build callback to update time zone if different than preferences
     60         String localTimezone = Time.getCurrentTimezone();
     61 
     62         Long dateEnd = getDtend();
     63         Long dateStart = getDtstart();
     64         if (dateStart == null && dateEnd == null) {
     65             return null;
     66         } else if (dateEnd == null) {
     67             dateEnd = dateStart;
     68         } else if (dateStart == null) {
     69             dateStart = dateEnd;
     70         }
     71 
     72         String displayedDatetime = CalendarInteractionUtils.getDisplayedDatetime(
     73                 dateStart, dateEnd, System.currentTimeMillis(), localTimezone,
     74                 getAllDay(), context);
     75 
     76         return displayedDatetime;
     77     }
     78 
     79     @Override
     80     public Drawable getIcon(Context context) {
     81         return context.getResources().getDrawable(CALENDAR_ICON_RES);
     82     }
     83 
     84     @Override
     85     public Drawable getBodyIcon(Context context) {
     86         return null;
     87     }
     88 
     89     @Override
     90     public Drawable getFooterIcon(Context context) {
     91         return null;
     92     }
     93 
     94     public String getAttendeeEmail() {
     95         return mValues.getAsString(Attendees.ATTENDEE_EMAIL);
     96     }
     97 
     98     public String getAttendeeIdentity() {
     99         return mValues.getAsString(Attendees.ATTENDEE_IDENTITY);
    100     }
    101 
    102     public String getAttendeeIdNamespace() {
    103         return mValues.getAsString(Attendees.ATTENDEE_ID_NAMESPACE);
    104     }
    105 
    106     public String getAttendeeName() {
    107         return mValues.getAsString(Attendees.ATTENDEE_NAME);
    108     }
    109 
    110     public Integer getAttendeeRelationship() {
    111         return mValues.getAsInteger(Attendees.ATTENDEE_RELATIONSHIP);
    112     }
    113 
    114     public Integer getAttendeeStatus() {
    115         return mValues.getAsInteger(Attendees.ATTENDEE_STATUS);
    116     }
    117 
    118     public Integer getAttendeeType() {
    119         return mValues.getAsInteger(Attendees.ATTENDEE_TYPE);
    120     }
    121 
    122     public Integer getEventId() {
    123         return mValues.getAsInteger(Attendees.EVENT_ID);
    124     }
    125 
    126     public Integer getAccessLevel() {
    127         return mValues.getAsInteger(Attendees.ACCESS_LEVEL);
    128     }
    129 
    130     public Boolean getAllDay() {
    131         return mValues.getAsInteger(Attendees.ALL_DAY) == 1 ? true : false;
    132     }
    133 
    134     public Integer getAvailability() {
    135         return mValues.getAsInteger(Attendees.AVAILABILITY);
    136     }
    137 
    138     public Integer getCalendarId() {
    139         return mValues.getAsInteger(Attendees.CALENDAR_ID);
    140     }
    141 
    142     public Boolean getCanInviteOthers() {
    143         return mValues.getAsBoolean(Attendees.CAN_INVITE_OTHERS);
    144     }
    145 
    146     public String getCustomAppPackage() {
    147         return mValues.getAsString(Attendees.CUSTOM_APP_PACKAGE);
    148     }
    149 
    150     public String getCustomAppUri() {
    151         return mValues.getAsString(Attendees.CUSTOM_APP_URI);
    152     }
    153 
    154     public String getDescription() {
    155         return mValues.getAsString(Attendees.DESCRIPTION);
    156     }
    157 
    158     public Integer getDisplayColor() {
    159         return mValues.getAsInteger(Attendees.DISPLAY_COLOR);
    160     }
    161 
    162     public Long getDtend() {
    163         return mValues.getAsLong(Attendees.DTEND);
    164     }
    165 
    166     public Long getDtstart() {
    167         return mValues.getAsLong(Attendees.DTSTART);
    168     }
    169 
    170     public String getDuration() {
    171         return mValues.getAsString(Attendees.DURATION);
    172     }
    173 
    174     public Integer getEventColor() {
    175         return mValues.getAsInteger(Attendees.EVENT_COLOR);
    176     }
    177 
    178     public String getEventColorKey() {
    179         return mValues.getAsString(Attendees.EVENT_COLOR_KEY);
    180     }
    181 
    182     public String getEventEndTimezone() {
    183         return mValues.getAsString(Attendees.EVENT_END_TIMEZONE);
    184     }
    185 
    186     public String getEventLocation() {
    187         return mValues.getAsString(Attendees.EVENT_LOCATION);
    188     }
    189 
    190     public String getExdate() {
    191         return mValues.getAsString(Attendees.EXDATE);
    192     }
    193 
    194     public String getExrule() {
    195         return mValues.getAsString(Attendees.EXRULE);
    196     }
    197 
    198     public Boolean getGuestsCanInviteOthers() {
    199         return mValues.getAsBoolean(Attendees.GUESTS_CAN_INVITE_OTHERS);
    200     }
    201 
    202     public Boolean getGuestsCanModify() {
    203         return mValues.getAsBoolean(Attendees.GUESTS_CAN_MODIFY);
    204     }
    205 
    206     public Boolean getGuestsCanSeeGuests() {
    207         return mValues.getAsBoolean(Attendees.GUESTS_CAN_SEE_GUESTS);
    208     }
    209 
    210     public Boolean getHasAlarm() {
    211         return mValues.getAsBoolean(Attendees.HAS_ALARM);
    212     }
    213 
    214     public Boolean getHasAttendeeData() {
    215         return mValues.getAsBoolean(Attendees.HAS_ATTENDEE_DATA);
    216     }
    217 
    218     public Boolean getHasExtendedProperties() {
    219         return mValues.getAsBoolean(Attendees.HAS_EXTENDED_PROPERTIES);
    220     }
    221 
    222     public String getIsOrganizer() {
    223         return mValues.getAsString(Attendees.IS_ORGANIZER);
    224     }
    225 
    226     public Long getLastDate() {
    227         return mValues.getAsLong(Attendees.LAST_DATE);
    228     }
    229 
    230     public Boolean getLastSynced() {
    231         return mValues.getAsBoolean(Attendees.LAST_SYNCED);
    232     }
    233 
    234     public String getOrganizer() {
    235         return mValues.getAsString(Attendees.ORGANIZER);
    236     }
    237 
    238     public Boolean getOriginalAllDay() {
    239         return mValues.getAsBoolean(Attendees.ORIGINAL_ALL_DAY);
    240     }
    241 
    242     public String getOriginalId() {
    243         return mValues.getAsString(Attendees.ORIGINAL_ID);
    244     }
    245 
    246     public Long getOriginalInstanceTime() {
    247         return mValues.getAsLong(Attendees.ORIGINAL_INSTANCE_TIME);
    248     }
    249 
    250     public String getOriginalSyncId() {
    251         return mValues.getAsString(Attendees.ORIGINAL_SYNC_ID);
    252     }
    253 
    254     public String getRdate() {
    255         return mValues.getAsString(Attendees.RDATE);
    256     }
    257 
    258     public String getRrule() {
    259         return mValues.getAsString(Attendees.RRULE);
    260     }
    261 
    262     public Integer getSelfAttendeeStatus() {
    263         return mValues.getAsInteger(Attendees.SELF_ATTENDEE_STATUS);
    264     }
    265 
    266     public Integer getStatus() {
    267         return mValues.getAsInteger(Attendees.STATUS);
    268     }
    269 
    270     public String getTitle() {
    271         return mValues.getAsString(Attendees.TITLE);
    272     }
    273 
    274     public String getUid2445() {
    275         return mValues.getAsString(Attendees.UID_2445);
    276     }
    277 
    278     @Override
    279     public Spannable getContentDescription(Context context) {
    280         // The default TalkBack is good
    281         return null;
    282     }
    283 
    284     @Override
    285     public int getIconResourceId() {
    286         return CALENDAR_ICON_RES;
    287     }
    288 }
    289