diff options
author | David Brown <dab@google.com> | 2010-09-15 13:34:13 -0700 |
---|---|---|
committer | David Brown <dab@google.com> | 2010-09-15 18:05:29 -0700 |
commit | 747c61535281b4d2958e293e83245a19ba58f6a0 (patch) | |
tree | 46cdb4cb17ae7fbe0404bd52977c174bf91af609 /core | |
parent | 134b28a7f049719cb74fd5baadbbcc5915bc861b (diff) | |
download | frameworks_base-747c61535281b4d2958e293e83245a19ba58f6a0.zip frameworks_base-747c61535281b4d2958e293e83245a19ba58f6a0.tar.gz frameworks_base-747c61535281b4d2958e293e83245a19ba58f6a0.tar.bz2 |
ContactsContract: update SipAddress to be multi-valued
This is step (1) of the device-side changes to deal with SIP addresses
becoming first-class objects in focus.
It'll be multi-valued in focus, so make it multi-valued on the device
(just like Phone, Email, Im, etc.)
Possible types are CUSTOM, HOME, WORK, and OTHER.
Also while I was in there, fixed the typo in "TYPE_MAINDEN_NAME" in the
Nickname class. (I can't remove it, since it's public API, so I added a
new constant with the correct spelling and deprecated the misspelled
one.)
Bug: 3004838
TESTED: on passion:
- Flashed this change onto a device that already had a contact with a
SipAddress, verified that it still shows up fine in the UI.
- Wiped data, rerean SetupWizard and logged in, made sure that SIP
addresses got synced down properly.
- Edited SIP address on the device, made sure it got correctly synced
up to the SIP user-defined field.
Change-Id: I6ecf551b64f87de03a7807e6212297d91f9e3981
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/provider/ContactsContract.java | 69 | ||||
-rw-r--r-- | core/res/res/values/strings.xml | 11 |
2 files changed, 69 insertions, 11 deletions
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java index 13cbda8..09cc3e0 100644 --- a/core/java/android/provider/ContactsContract.java +++ b/core/java/android/provider/ContactsContract.java @@ -3552,7 +3552,7 @@ public final class ContactsContract { * <li>{@link #TYPE_CUSTOM}. Put the actual type in {@link #LABEL}.</li> * <li>{@link #TYPE_DEFAULT}</li> * <li>{@link #TYPE_OTHER_NAME}</li> - * <li>{@link #TYPE_MAINDEN_NAME}</li> + * <li>{@link #TYPE_MAIDEN_NAME}</li> * <li>{@link #TYPE_SHORT_NAME}</li> * <li>{@link #TYPE_INITIALS}</li> * </ul> @@ -3578,6 +3578,9 @@ public final class ContactsContract { public static final int TYPE_DEFAULT = 1; public static final int TYPE_OTHER_NAME = 2; + public static final int TYPE_MAIDEN_NAME = 3; + /** @deprecated Use TYPE_MAIDEN_NAME instead. */ + @Deprecated public static final int TYPE_MAINDEN_NAME = 3; public static final int TYPE_SHORT_NAME = 4; public static final int TYPE_INITIALS = 5; @@ -4882,17 +4885,30 @@ public final class ContactsContract { * <td>{@link #DATA1}</td> * <td></td> * </tr> + * <tr> + * <td>int</td> + * <td>{@link #TYPE}</td> + * <td>{@link #DATA2}</td> + * <td>Allowed values are: + * <p> + * <ul> + * <li>{@link #TYPE_CUSTOM}. Put the actual type in {@link #LABEL}.</li> + * <li>{@link #TYPE_HOME}</li> + * <li>{@link #TYPE_WORK}</li> + * <li>{@link #TYPE_OTHER}</li> + * </ul> + * </p> + * </td> + * </tr> + * <tr> + * <td>String</td> + * <td>{@link #LABEL}</td> + * <td>{@link #DATA3}</td> + * <td></td> + * </tr> * </table> */ - public static final class SipAddress implements DataColumnsWithJoins { - // TODO: Ultimately this class will probably implement - // CommonColumns too (in addition to DataColumnsWithJoins) - // since it may make sense to have multiple SIP addresses with - // different types+labels, just like with phone numbers. - // - // But that can be extended in the future without breaking any - // public API, so let's keep this class ultra-simple for now. - + public static final class SipAddress implements DataColumnsWithJoins, CommonColumns { /** * This utility class cannot be instantiated */ @@ -4901,11 +4917,44 @@ public final class ContactsContract { /** MIME type used when storing this in data table. */ public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/sip_address"; + public static final int TYPE_HOME = 1; + public static final int TYPE_WORK = 2; + public static final int TYPE_OTHER = 3; + /** * The SIP address. * <P>Type: TEXT</P> */ public static final String SIP_ADDRESS = DATA1; + // ...and TYPE and LABEL come from the CommonColumns interface. + + /** + * Return the string resource that best describes the given + * {@link #TYPE}. Will always return a valid resource. + */ + public static final int getTypeLabelResource(int type) { + switch (type) { + case TYPE_HOME: return com.android.internal.R.string.sipAddressTypeHome; + case TYPE_WORK: return com.android.internal.R.string.sipAddressTypeWork; + case TYPE_OTHER: return com.android.internal.R.string.sipAddressTypeOther; + default: return com.android.internal.R.string.sipAddressTypeCustom; + } + } + + /** + * Return a {@link CharSequence} that best describes the given type, + * possibly substituting the given {@link #LABEL} value + * for {@link #TYPE_CUSTOM}. + */ + public static final CharSequence getTypeLabel(Resources res, int type, + CharSequence label) { + if (type == TYPE_CUSTOM && !TextUtils.isEmpty(label)) { + return label; + } else { + final int labelRes = getTypeLabelResource(type); + return res.getText(labelRes); + } + } } } diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index dc89acb..808b371 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -1379,7 +1379,7 @@ <!-- Other IM address type --> <string name="imTypeOther">Other</string> - <!-- Custom IM address type --> + <!-- Custom IM protocol type --> <string name="imProtocolCustom">Custom</string> <!-- AIM IM protocol type --> <string name="imProtocolAim">AIM</string> @@ -1407,6 +1407,15 @@ <!-- Custom organization type --> <string name="orgTypeCustom">Custom</string> + <!-- Custom SIP address type --> + <string name="sipAddressTypeCustom">Custom</string> + <!-- Home SIP address type --> + <string name="sipAddressTypeHome">Home</string> + <!-- Work SIP address type --> + <string name="sipAddressTypeWork">Work</string> + <!-- Other SIP address type --> + <string name="sipAddressTypeOther">Other</string> + <!-- Attbution of a contact status update, when the time of update is unknown --> <string name="contact_status_update_attribution">via <xliff:g id="source" example="Google Talk">%1$s</xliff:g></string> |