summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorDmitri Plotnikov <dplotnikov@google.com>2009-09-18 20:22:27 -0700
committerDmitri Plotnikov <dplotnikov@google.com>2009-09-18 20:24:28 -0700
commit48828f54daafda2edb122258c4c6a7d2ca704128 (patch)
treea63a1f346f1c2bb881b8e8a4dce99e52fa33f6e1 /src/com/android
parent9b43551f1ce33b79141772737a262ce609bd0ceb (diff)
downloadpackages_providers_ContactsProvider-48828f54daafda2edb122258c4c6a7d2ca704128.zip
packages_providers_ContactsProvider-48828f54daafda2edb122258c4c6a7d2ca704128.tar.gz
packages_providers_ContactsProvider-48828f54daafda2edb122258c4c6a7d2ca704128.tar.bz2
Adding support for contacts/data/phones/#, contacts/data/emails/# and contacts/data/postals/#
Change-Id: I6f22e419d29b08b9d9e136d700cc4bd8f35a2397
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/providers/contacts/ContactsProvider2.java67
1 files changed, 60 insertions, 7 deletions
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index c51b85e..14ab008 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -161,11 +161,14 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
private static final int DATA = 3000;
private static final int DATA_ID = 3001;
private static final int PHONES = 3002;
- private static final int PHONES_FILTER = 3003;
- private static final int EMAILS = 3004;
- private static final int EMAILS_LOOKUP = 3005;
- private static final int EMAILS_FILTER = 3006;
- private static final int POSTALS = 3007;
+ private static final int PHONES_ID = 3003;
+ private static final int PHONES_FILTER = 3004;
+ private static final int EMAILS = 3005;
+ private static final int EMAILS_ID = 3006;
+ private static final int EMAILS_LOOKUP = 3007;
+ private static final int EMAILS_FILTER = 3008;
+ private static final int POSTALS = 3009;
+ private static final int POSTALS_ID = 3010;
private static final int PHONE_LOOKUP = 4000;
@@ -363,13 +366,16 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
matcher.addURI(ContactsContract.AUTHORITY, "data", DATA);
matcher.addURI(ContactsContract.AUTHORITY, "data/#", DATA_ID);
matcher.addURI(ContactsContract.AUTHORITY, "data/phones", PHONES);
+ matcher.addURI(ContactsContract.AUTHORITY, "data/phones/#", PHONES_ID);
matcher.addURI(ContactsContract.AUTHORITY, "data/phones/filter", PHONES_FILTER);
matcher.addURI(ContactsContract.AUTHORITY, "data/phones/filter/*", PHONES_FILTER);
matcher.addURI(ContactsContract.AUTHORITY, "data/emails", EMAILS);
+ matcher.addURI(ContactsContract.AUTHORITY, "data/emails/#", EMAILS_ID);
matcher.addURI(ContactsContract.AUTHORITY, "data/emails/lookup/*", EMAILS_LOOKUP);
matcher.addURI(ContactsContract.AUTHORITY, "data/emails/filter", EMAILS_FILTER);
matcher.addURI(ContactsContract.AUTHORITY, "data/emails/filter/*", EMAILS_FILTER);
matcher.addURI(ContactsContract.AUTHORITY, "data/postals", POSTALS);
+ matcher.addURI(ContactsContract.AUTHORITY, "data/postals/#", POSTALS_ID);
matcher.addURI(ContactsContract.AUTHORITY, "groups", GROUPS);
matcher.addURI(ContactsContract.AUTHORITY, "groups/#", GROUPS_ID);
@@ -2313,7 +2319,10 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
callerIsSyncAdapter);
}
- case DATA_ID: {
+ case DATA_ID:
+ case PHONES_ID:
+ case EMAILS_ID:
+ case POSTALS_ID: {
long dataId = ContentUris.parseId(uri);
mSyncToNetwork |= !callerIsSyncAdapter;
return deleteData(Data._ID + "=" + dataId, null, callerIsSyncAdapter);
@@ -2504,7 +2513,10 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
break;
}
- case DATA_ID: {
+ case DATA_ID:
+ case PHONES_ID:
+ case EMAILS_ID:
+ case POSTALS_ID: {
count = updateData(uri, values, selection, selectionArgs, callerIsSyncAdapter);
if (count > 0) {
mSyncToNetwork |= !callerIsSyncAdapter;
@@ -2816,6 +2828,7 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
mDb.beginTransaction();
try {
+
for (String table : new String[]{Tables.RAW_CONTACTS, Tables.GROUPS, Tables.SETTINGS}) {
// Find all the accounts the contacts DB knows about, mark the ones that aren't
// in the valid set for deletion.
@@ -3020,6 +3033,15 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
break;
}
+ case PHONES_ID: {
+ qb.setTables(mOpenHelper.getDataView());
+ qb.setProjectionMap(sDataProjectionMap);
+ appendAccountFromParameter(qb, uri);
+ qb.appendWhere(" AND " + Data.MIMETYPE + " = '" + Phone.CONTENT_ITEM_TYPE + "'");
+ qb.appendWhere(" AND " + Data._ID + "=" + uri.getLastPathSegment());
+ break;
+ }
+
case PHONES_FILTER: {
qb.setTables(mOpenHelper.getDataView());
qb.setProjectionMap(sDistinctDataProjectionMap);
@@ -3066,6 +3088,15 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
break;
}
+ case EMAILS_ID: {
+ qb.setTables(mOpenHelper.getDataView());
+ qb.setProjectionMap(sDataProjectionMap);
+ appendAccountFromParameter(qb, uri);
+ qb.appendWhere(" AND " + Data.MIMETYPE + " = '" + Email.CONTENT_ITEM_TYPE + "'");
+ qb.appendWhere(" AND " + Data._ID + "=" + uri.getLastPathSegment());
+ break;
+ }
+
case EMAILS_LOOKUP: {
qb.setTables(mOpenHelper.getDataView());
qb.setProjectionMap(sDataProjectionMap);
@@ -3113,6 +3144,16 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
break;
}
+ case POSTALS_ID: {
+ qb.setTables(mOpenHelper.getDataView());
+ qb.setProjectionMap(sDataProjectionMap);
+ appendAccountFromParameter(qb, uri);
+ qb.appendWhere(" AND " + Data.MIMETYPE + " = '"
+ + StructuredPostal.CONTENT_ITEM_TYPE + "'");
+ qb.appendWhere(" AND " + Data._ID + "=" + uri.getLastPathSegment());
+ break;
+ }
+
case RAW_CONTACTS: {
qb.setTables(mOpenHelper.getRawContactView());
qb.setProjectionMap(sRawContactsProjectionMap);
@@ -4095,6 +4136,18 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun
return RawContacts.CONTENT_ITEM_TYPE;
case DATA_ID:
return mOpenHelper.getDataMimeType(ContentUris.parseId(uri));
+ case PHONES:
+ return Phone.CONTENT_TYPE;
+ case PHONES_ID:
+ return Phone.CONTENT_ITEM_TYPE;
+ case EMAILS:
+ return Email.CONTENT_TYPE;
+ case EMAILS_ID:
+ return Email.CONTENT_ITEM_TYPE;
+ case POSTALS:
+ return StructuredPostal.CONTENT_TYPE;
+ case POSTALS_ID:
+ return StructuredPostal.CONTENT_ITEM_TYPE;
case AGGREGATION_EXCEPTIONS:
return AggregationExceptions.CONTENT_TYPE;
case AGGREGATION_EXCEPTION_ID: