diff options
author | Sara Ting <sarating@google.com> | 2012-09-12 14:43:29 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-09-12 14:43:29 -0700 |
commit | 2c0c77449c27f508143be195820f12a3af8136ad (patch) | |
tree | b135228fada7206831c0b02abc68ff79d8e67149 /src | |
parent | e472146a2a1fa8663455ef396ac23dfd19045f6a (diff) | |
parent | 7ffa24cba2977925b737e6bd39be59ba39609611 (diff) | |
download | android_packages_apps_Calendar-2c0c77449c27f508143be195820f12a3af8136ad.tar.gz android_packages_apps_Calendar-2c0c77449c27f508143be195820f12a3af8136ad.tar.bz2 android_packages_apps_Calendar-2c0c77449c27f508143be195820f12a3af8136ad.zip |
Merge "Fix emailing guests from event info page when attendees aren't synced down (too many), by emailing only the organizer." into ics-ub-calendar-aqua
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/calendar/EventInfoFragment.java | 21 | ||||
-rw-r--r-- | src/com/android/calendar/alerts/AlertReceiver.java | 10 |
2 files changed, 26 insertions, 5 deletions
diff --git a/src/com/android/calendar/EventInfoFragment.java b/src/com/android/calendar/EventInfoFragment.java index 2ea59af8..4d8a4370 100644 --- a/src/com/android/calendar/EventInfoFragment.java +++ b/src/com/android/calendar/EventInfoFragment.java @@ -307,6 +307,7 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange private TextView mWhere; private ExpandableTextView mDesc; private AttendeesView mLongAttendees; + private Button emailAttendeesButton; private Menu mMenu = null; private View mHeadlines; private ScrollView mScrollView; @@ -767,7 +768,7 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange } // Create a listener for the email guests button - View emailAttendeesButton = mView.findViewById(R.id.email_attendees_button); + emailAttendeesButton = (Button) mView.findViewById(R.id.email_attendees_button); if (emailAttendeesButton != null) { emailAttendeesButton.setOnClickListener(new View.OnClickListener() { @Override @@ -1804,8 +1805,16 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange mLongAttendees.setVisibility(View.GONE); } - if (isEmailable()) { + if (hasEmailableAttendees()) { setVisibilityCommon(mView, R.id.email_attendees_container, View.VISIBLE); + if (emailAttendeesButton != null) { + emailAttendeesButton.setText(R.string.email_guests_label); + } + } else if (hasEmailableOrganizer()) { + setVisibilityCommon(mView, R.id.email_attendees_container, View.VISIBLE); + if (emailAttendeesButton != null) { + emailAttendeesButton.setText(R.string.email_organizer_label); + } } else { setVisibilityCommon(mView, R.id.email_attendees_container, View.GONE); } @@ -1814,7 +1823,7 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange /** * Returns true if there is at least 1 attendee that is not the viewer. */ - private boolean isEmailable() { + private boolean hasEmailableAttendees() { for (Attendee attendee : mAcceptedAttendees) { if (Utils.isEmailableFrom(attendee.mEmail, mSyncAccountName)) { return true; @@ -1835,8 +1844,10 @@ public class EventInfoFragment extends DialogFragment implements OnCheckedChange return true; } } - // The meeting organizer doesn't appear as an attendee sometimes (particularly - // when viewing someone else's calendar), so handle that separately. + return false; + } + + private boolean hasEmailableOrganizer() { return mEventOrganizerEmail != null && Utils.isEmailableFrom(mEventOrganizerEmail, mSyncAccountName); } diff --git a/src/com/android/calendar/alerts/AlertReceiver.java b/src/com/android/calendar/alerts/AlertReceiver.java index b8c38770..757f0ed4 100644 --- a/src/com/android/calendar/alerts/AlertReceiver.java +++ b/src/com/android/calendar/alerts/AlertReceiver.java @@ -475,10 +475,12 @@ public class AlertReceiver extends BroadcastReceiver { Calendars.OWNER_ACCOUNT, // 0 Calendars.ACCOUNT_NAME, // 1 Events.TITLE, // 2 + Events.ORGANIZER, // 3 }; private static final int EVENT_INDEX_OWNER_ACCOUNT = 0; private static final int EVENT_INDEX_ACCOUNT_NAME = 1; private static final int EVENT_INDEX_TITLE = 2; + private static final int EVENT_INDEX_ORGANIZER = 3; private static Cursor getEventCursor(Context context, long eventId) { return context.getContentResolver().query( @@ -552,12 +554,14 @@ public class AlertReceiver extends BroadcastReceiver { String ownerAccount = null; String syncAccount = null; String eventTitle = null; + String eventOrganizer = null; Cursor eventCursor = getEventCursor(context, eventId); try { if (eventCursor != null && eventCursor.moveToFirst()) { ownerAccount = eventCursor.getString(EVENT_INDEX_OWNER_ACCOUNT); syncAccount = eventCursor.getString(EVENT_INDEX_ACCOUNT_NAME); eventTitle = eventCursor.getString(EVENT_INDEX_TITLE); + eventOrganizer = eventCursor.getString(EVENT_INDEX_ORGANIZER); } } finally { if (eventCursor != null) { @@ -592,6 +596,12 @@ public class AlertReceiver extends BroadcastReceiver { } } + // Add organizer only if no attendees to email (the case when too many attendees + // in the event to sync or show). + if (toEmails.size() == 0 && ccEmails.size() == 0 && eventOrganizer != null) { + addIfEmailable(toEmails, eventOrganizer, syncAccount); + } + Intent intent = null; if (ownerAccount != null && (toEmails.size() > 0 || ccEmails.size() > 0)) { intent = Utils.createEmailAttendeesIntent(context.getResources(), eventTitle, body, |