summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorDavid Brown <dab@google.com>2010-09-15 13:34:13 -0700
committerDavid Brown <dab@google.com>2010-09-15 18:05:29 -0700
commit747c61535281b4d2958e293e83245a19ba58f6a0 (patch)
tree46cdb4cb17ae7fbe0404bd52977c174bf91af609 /core
parent134b28a7f049719cb74fd5baadbbcc5915bc861b (diff)
downloadframeworks_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.java69
-rw-r--r--core/res/res/values/strings.xml11
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>