diff options
Diffstat (limited to 'java/com/android/dialer/simulator/impl/SimulatorContacts.java')
-rw-r--r-- | java/com/android/dialer/simulator/impl/SimulatorContacts.java | 319 |
1 files changed, 0 insertions, 319 deletions
diff --git a/java/com/android/dialer/simulator/impl/SimulatorContacts.java b/java/com/android/dialer/simulator/impl/SimulatorContacts.java deleted file mode 100644 index c5e25b357..000000000 --- a/java/com/android/dialer/simulator/impl/SimulatorContacts.java +++ /dev/null @@ -1,319 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.dialer.simulator.impl; - -import android.content.ContentProviderOperation; -import android.content.Context; -import android.content.OperationApplicationException; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.os.RemoteException; -import android.provider.ContactsContract; -import android.provider.ContactsContract.CommonDataKinds.Phone; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.WorkerThread; -import android.text.TextUtils; -import com.android.dialer.common.Assert; -import com.google.auto.value.AutoValue; -import java.io.ByteArrayOutputStream; -import java.util.ArrayList; -import java.util.List; - -/** Populates the device database with contacts. */ -final class SimulatorContacts { - // Phone numbers from https://www.google.com/about/company/facts/locations/ - private static final Contact[] SIMPLE_CONTACTS = { - // US, contact with e164 number. - Contact.builder() - .setName("Michelangelo") - .addPhoneNumber(new PhoneNumber("+1-302-6365454", Phone.TYPE_MOBILE)) - .addEmail(new Email("m@example.com")) - .setIsStarred(true) - .setOrangePhoto() - .build(), - // US, contact with a non-e164 number. - Contact.builder() - .setName("Leonardo da Vinci") - .addPhoneNumber(new PhoneNumber("(425) 739-5600", Phone.TYPE_MOBILE)) - .addEmail(new Email("l@example.com")) - .setIsStarred(true) - .setBluePhoto() - .build(), - // UK, number where the (0) should be dropped. - Contact.builder() - .setName("Raphael") - .addPhoneNumber(new PhoneNumber("+44 (0) 20 7031 3000", Phone.TYPE_MOBILE)) - .addEmail(new Email("r@example.com")) - .setIsStarred(true) - .setRedPhoto() - .build(), - // US and Australia, contact with a long name and multiple phone numbers. - Contact.builder() - .setName("Donatello di Niccolò di Betto Bardi") - .addPhoneNumber(new PhoneNumber("+1-650-2530000", Phone.TYPE_HOME)) - .addPhoneNumber(new PhoneNumber("+1 404-487-9000", Phone.TYPE_WORK)) - .addPhoneNumber(new PhoneNumber("+61 2 9374 4001", Phone.TYPE_FAX_HOME)) - .setIsStarred(true) - .setPurplePhoto() - .build(), - // US, phone number shared with another contact and 2nd phone number with wait and pause. - Contact.builder() - .setName("Splinter") - .addPhoneNumber(new PhoneNumber("+1-650-2530000", Phone.TYPE_HOME)) - .addPhoneNumber(new PhoneNumber("+1 303-245-0086;123,456", Phone.TYPE_WORK)) - .build(), - // France, number with Japanese name. - Contact.builder() - .setName("スパイク・スピーゲル") - .addPhoneNumber(new PhoneNumber("+33 (0)1 42 68 53 00", Phone.TYPE_MOBILE)) - .build(), - // Israel, RTL name and non-e164 number. - Contact.builder() - .setName("עקב אריה טברסק") - .addPhoneNumber(new PhoneNumber("+33 (0)1 42 68 53 00", Phone.TYPE_MOBILE)) - .build(), - // UAE, RTL name. - Contact.builder() - .setName("سلام دنیا") - .addPhoneNumber(new PhoneNumber("+971 4 4509500", Phone.TYPE_MOBILE)) - .build(), - // Brazil, contact with no name. - Contact.builder() - .addPhoneNumber(new PhoneNumber("+55-31-2128-6800", Phone.TYPE_MOBILE)) - .build(), - // Short number, contact with no name. - Contact.builder().addPhoneNumber(new PhoneNumber("611", Phone.TYPE_MOBILE)).build(), - // US, number with an anonymous prefix. - Contact.builder() - .setName("Anonymous") - .addPhoneNumber(new PhoneNumber("*86 512-343-5283", Phone.TYPE_MOBILE)) - .build(), - // None, contact with no phone number. - Contact.builder() - .setName("No Phone Number") - .addEmail(new Email("no@example.com")) - .setIsStarred(true) - .build(), - }; - - @WorkerThread - static void populateContacts(@NonNull Context context) { - Assert.isWorkerThread(); - ArrayList<ContentProviderOperation> operations = new ArrayList<>(); - for (Contact contact : SIMPLE_CONTACTS) { - addContact(contact, operations); - } - try { - context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operations); - } catch (RemoteException | OperationApplicationException e) { - Assert.fail("error adding contacts: " + e); - } - } - - private static void addContact(Contact contact, List<ContentProviderOperation> operations) { - int index = operations.size(); - - operations.add( - ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) - .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, contact.getAccountType()) - .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, contact.getAccountName()) - .withValue(ContactsContract.RawContacts.STARRED, contact.getIsStarred()) - .withYieldAllowed(true) - .build()); - - if (!TextUtils.isEmpty(contact.getName())) { - operations.add( - ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) - .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, index) - .withValue( - ContactsContract.Data.MIMETYPE, - ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) - .withValue( - ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, contact.getName()) - .build()); - } - - if (contact.getPhotoStream() != null) { - operations.add( - ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) - .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, index) - .withValue( - ContactsContract.Data.MIMETYPE, - ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) - .withValue( - ContactsContract.CommonDataKinds.Photo.PHOTO, - contact.getPhotoStream().toByteArray()) - .build()); - } - - for (PhoneNumber phoneNumber : contact.getPhoneNumbers()) { - operations.add( - ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) - .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, index) - .withValue( - ContactsContract.Data.MIMETYPE, - ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) - .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber.value) - .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneNumber.type) - .withValue(ContactsContract.CommonDataKinds.Phone.LABEL, phoneNumber.label) - .build()); - } - - for (Email email : contact.getEmails()) { - operations.add( - ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) - .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, index) - .withValue( - ContactsContract.Data.MIMETYPE, - ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) - .withValue(ContactsContract.CommonDataKinds.Email.DATA, email.value) - .withValue(ContactsContract.CommonDataKinds.Email.TYPE, email.type) - .withValue(ContactsContract.CommonDataKinds.Email.LABEL, email.label) - .build()); - } - } - - @AutoValue - abstract static class Contact { - @NonNull - abstract String getAccountType(); - - @NonNull - abstract String getAccountName(); - - @Nullable - abstract String getName(); - - abstract boolean getIsStarred(); - - @Nullable - abstract ByteArrayOutputStream getPhotoStream(); - - @NonNull - abstract List<PhoneNumber> getPhoneNumbers(); - - @NonNull - abstract List<Email> getEmails(); - - static Builder builder() { - return new AutoValue_SimulatorContacts_Contact.Builder() - .setAccountType("com.google") - .setAccountName("foo@example") - .setIsStarred(false) - .setPhoneNumbers(new ArrayList<>()) - .setEmails(new ArrayList<>()); - } - - @AutoValue.Builder - abstract static class Builder { - @NonNull private final List<PhoneNumber> phoneNumbers = new ArrayList<>(); - @NonNull private final List<Email> emails = new ArrayList<>(); - - abstract Builder setAccountType(@NonNull String accountType); - - abstract Builder setAccountName(@NonNull String accountName); - - abstract Builder setName(@NonNull String name); - - abstract Builder setIsStarred(boolean isStarred); - - abstract Builder setPhotoStream(ByteArrayOutputStream photoStream); - - abstract Builder setPhoneNumbers(@NonNull List<PhoneNumber> phoneNumbers); - - abstract Builder setEmails(@NonNull List<Email> emails); - - abstract Contact build(); - - Builder addPhoneNumber(PhoneNumber phoneNumber) { - phoneNumbers.add(phoneNumber); - return setPhoneNumbers(phoneNumbers); - } - - Builder addEmail(Email email) { - emails.add(email); - return setEmails(emails); - } - - Builder setRedPhoto() { - setPhotoStream(getPhotoStreamWithColor(Color.rgb(0xe3, 0x33, 0x1c))); - return this; - } - - Builder setBluePhoto() { - setPhotoStream(getPhotoStreamWithColor(Color.rgb(0x00, 0xaa, 0xe6))); - return this; - } - - Builder setOrangePhoto() { - setPhotoStream(getPhotoStreamWithColor(Color.rgb(0xea, 0x95, 0x00))); - return this; - } - - Builder setPurplePhoto() { - setPhotoStream(getPhotoStreamWithColor(Color.rgb(0x99, 0x5a, 0xa0))); - return this; - } - - /** Creates a contact photo with a green background and a circle of the given color. */ - private static ByteArrayOutputStream getPhotoStreamWithColor(int color) { - int width = 300; - int height = 300; - Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - canvas.drawColor(Color.argb(0xff, 0x4c, 0x9c, 0x23)); - Paint paint = new Paint(); - paint.setColor(color); - paint.setStyle(Paint.Style.FILL); - canvas.drawCircle(width / 2, height / 2, width / 3, paint); - - ByteArrayOutputStream photoStream = new ByteArrayOutputStream(); - bitmap.compress(Bitmap.CompressFormat.PNG, 75, photoStream); - return photoStream; - } - } - } - - static class PhoneNumber { - public final String value; - public final int type; - public final String label; - - PhoneNumber(String value, int type) { - this.value = value; - this.type = type; - label = "simulator phone number"; - } - } - - static class Email { - public final String value; - public final int type; - public final String label; - - Email(String simpleEmail) { - value = simpleEmail; - type = ContactsContract.CommonDataKinds.Email.TYPE_WORK; - label = "simulator email"; - } - } - - private SimulatorContacts() {} -} |