diff options
author | Jeff Sharkey <jsharkey@android.com> | 2009-09-17 21:28:48 -0700 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2009-09-18 00:07:29 -0700 |
commit | ec03cbcb0c39daa717bc2a8216ba5b3a2e9266b2 (patch) | |
tree | fba17fd5a1d47e2f36631619e2b76ee7149872a6 /src/com/android/calendar/EventInfoActivity.java | |
parent | 35c53a5ee41d4a41461fd13221954296d44b88d6 (diff) | |
download | android_packages_apps_Calendar-ec03cbcb0c39daa717bc2a8216ba5b3a2e9266b2.tar.gz android_packages_apps_Calendar-ec03cbcb0c39daa717bc2a8216ba5b3a2e9266b2.tar.bz2 android_packages_apps_Calendar-ec03cbcb0c39daa717bc2a8216ba5b3a2e9266b2.zip |
Switch Calendar to new FastTrack API.
As part of http://b/2087222 we have a new API specifically
for launching FastTrack. This allows SHOW_OR_CREATE to be
returned to its original behavior.
I've tested this change and confirmed that it's WAI, and
may have also fixed up some deprecated references.
Diffstat (limited to 'src/com/android/calendar/EventInfoActivity.java')
-rw-r--r-- | src/com/android/calendar/EventInfoActivity.java | 48 |
1 files changed, 28 insertions, 20 deletions
diff --git a/src/com/android/calendar/EventInfoActivity.java b/src/com/android/calendar/EventInfoActivity.java index c56adcab..6bf3b360 100644 --- a/src/com/android/calendar/EventInfoActivity.java +++ b/src/com/android/calendar/EventInfoActivity.java @@ -47,11 +47,14 @@ import android.provider.Calendar.Attendees; import android.provider.Calendar.Calendars; import android.provider.Calendar.Events; import android.provider.Calendar.Reminders; +import android.provider.ContactsContract.CommonDataKinds; import android.provider.ContactsContract.Contacts; +import android.provider.ContactsContract.FastTrack; import android.provider.ContactsContract.Intents; import android.provider.ContactsContract.Presence; import android.provider.ContactsContract.RawContacts; import android.provider.ContactsContract.CommonDataKinds.Email; +import android.text.TextUtils; import android.text.format.DateFormat; import android.text.format.DateUtils; import android.text.format.Time; @@ -1072,27 +1075,32 @@ public class EventInfoActivity extends Activity implements View.OnClickListener, * Send the intent that shows the Contact info corresponding to the email address. */ public void showContactInfo(Attendee attendee, Rect rect) { - Uri contactUri = Uri.fromParts("mailto", attendee.mEmail, null); - - Intent contactIntent = new Intent(Intents.SHOW_OR_CREATE_CONTACT); - contactIntent.setData(contactUri); - - // Pass along full E-mail string for possible create dialog - Rfc822Token sender = new Rfc822Token(attendee.mName, attendee.mEmail, null); - contactIntent.putExtra(Intents.EXTRA_CREATE_DESCRIPTION, - sender.toString()); - - // Mark target position using on-screen coordinates - contactIntent.putExtra(Intents.EXTRA_TARGET_RECT, rect); - - // Show the small version of fast track - contactIntent.putExtra(Intents.EXTRA_MODE, Intents.MODE_SMALL); + // First perform lookup query to find existing contact + final ContentResolver resolver = getContentResolver(); + final String address = attendee.mEmail; + final Uri dataUri = Uri.withAppendedPath(CommonDataKinds.Email.CONTENT_FILTER_URI, + Uri.encode(address)); + final Uri lookupUri = ContactsContract.Data.getContactLookupUri(resolver, dataUri); + + if (lookupUri != null) { + // Found matching contact, trigger FastTrack + FastTrack.showFastTrack(this, rect, lookupUri, FastTrack.MODE_MEDIUM, null); + } else { + // No matching contact, ask user to create one + final Uri mailUri = Uri.fromParts("mailto", address, null); + final Intent intent = new Intent(Intents.SHOW_OR_CREATE_CONTACT, mailUri); + + // Pass along full E-mail string for possible create dialog + Rfc822Token sender = new Rfc822Token(attendee.mName, attendee.mEmail, null); + intent.putExtra(Intents.EXTRA_CREATE_DESCRIPTION, sender.toString()); + + // Only provide personal name hint if we have one + final String senderPersonal = attendee.mName; + if (!TextUtils.isEmpty(senderPersonal)) { + intent.putExtra(Intents.Insert.NAME, senderPersonal); + } - // Only provide personal name hint if we have one - if (attendee.mName != null && attendee.mName.length() > 0) { - contactIntent.putExtra(Intents.Insert.NAME, attendee.mName); + startActivity(intent); } - - startActivity(contactIntent); } } |