summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSara Ting <sarating@google.com>2012-09-12 14:43:29 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-09-12 14:43:29 -0700
commit2c0c77449c27f508143be195820f12a3af8136ad (patch)
treeb135228fada7206831c0b02abc68ff79d8e67149 /src
parente472146a2a1fa8663455ef396ac23dfd19045f6a (diff)
parent7ffa24cba2977925b737e6bd39be59ba39609611 (diff)
downloadandroid_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.java21
-rw-r--r--src/com/android/calendar/alerts/AlertReceiver.java10
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,