diff options
author | calderwoodra <calderwoodra@google.com> | 2018-04-10 14:45:16 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-10 15:42:13 -0700 |
commit | 2bee0528c1f42b698a606f24da4fa652ceb8d322 (patch) | |
tree | 7b31dcd02a359b27f32a7476c3ed94bd262f6d82 /java/com/android/dialer/speeddial/SpeedDialUiItem.java | |
parent | 2bdb59f0392e54be3dc2c57c32ce126e1e4af7cf (diff) |
Wire up SpeedDial fragment with SpeedDialUiItemLoader.
This change is mostly just a migration from a cursor loader and
cursor to a listenable future and list of POJOs.
Bug: 36841782
Test: tap
PiperOrigin-RevId: 192349724
Change-Id: I37140dcc2e5e03bc5745573c0d777e18c4f1a880
Diffstat (limited to 'java/com/android/dialer/speeddial/SpeedDialUiItem.java')
-rw-r--r-- | java/com/android/dialer/speeddial/SpeedDialUiItem.java | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/java/com/android/dialer/speeddial/SpeedDialUiItem.java b/java/com/android/dialer/speeddial/SpeedDialUiItem.java deleted file mode 100644 index 17552adf7..000000000 --- a/java/com/android/dialer/speeddial/SpeedDialUiItem.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (C) 2018 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.speeddial; - -import android.database.Cursor; -import android.provider.ContactsContract.CommonDataKinds.Phone; -import android.support.annotation.Nullable; -import android.text.TextUtils; -import com.android.dialer.common.Assert; -import com.android.dialer.speeddial.database.SpeedDialEntry; -import com.android.dialer.speeddial.database.SpeedDialEntry.Channel; -import com.google.auto.value.AutoValue; -import com.google.common.collect.ImmutableList; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -/** - * POJO representation of each speed dial list element. - * - * <p>Contains all data needed for the UI so that the UI never needs do additional contact queries. - * - * <p>Differs from {@link SpeedDialEntry} in that entries are specific to favorited/starred contacts - * and {@link SpeedDialUiItem}s can be both favorites and suggested contacts. - */ -@AutoValue -public abstract class SpeedDialUiItem { - - public static final int LOOKUP_KEY = 0; - public static final int CONTACT_ID = 1; - public static final int DISPLAY_NAME = 2; - public static final int STARRED = 3; - public static final int NUMBER = 4; - public static final int LABEL = 5; - public static final int PHOTO_ID = 6; - public static final int PHOTO_URI = 7; - - public static final String[] PHONE_PROJECTION = { - Phone.LOOKUP_KEY, - Phone.CONTACT_ID, - Phone.DISPLAY_NAME, - Phone.STARRED, - Phone.NUMBER, - Phone.LABEL, - Phone.PHOTO_ID, - Phone.PHOTO_URI - }; - - public static Builder builder() { - return new AutoValue_SpeedDialUiItem.Builder().setChannels(ImmutableList.of()); - } - - /** Convert a cursor with projection {@link #PHONE_PROJECTION} into a {@link SpeedDialUiItem}. */ - public static SpeedDialUiItem fromCursor(Cursor cursor) { - Assert.checkArgument(cursor != null); - Assert.checkArgument(cursor.getCount() != 0); - String lookupKey = cursor.getString(LOOKUP_KEY); - SpeedDialUiItem.Builder builder = - SpeedDialUiItem.builder() - .setLookupKey(lookupKey) - .setContactId(cursor.getLong(CONTACT_ID)) - // TODO(a bug): handle last name first preference - .setName(cursor.getString(DISPLAY_NAME)) - .setIsStarred(cursor.getInt(STARRED) == 1) - .setPhotoId(cursor.getLong(PHOTO_ID)) - .setPhotoUri( - TextUtils.isEmpty(cursor.getString(PHOTO_URI)) ? "" : cursor.getString(PHOTO_URI)); - - // While there are more rows and the lookup keys are the same, add a channel for each of the - // contact's phone numbers. - List<Channel> channels = new ArrayList<>(); - do { - channels.add( - Channel.builder() - .setNumber(cursor.getString(NUMBER)) - .setLabel(TextUtils.isEmpty(cursor.getString(LABEL)) ? "" : cursor.getString(LABEL)) - // TODO(a bug): add another channel for each technology (Duo, ViLTE, ect.) - .setTechnology(Channel.VOICE) - .build()); - } while (cursor.moveToNext() && Objects.equals(lookupKey, cursor.getString(LOOKUP_KEY))); - - builder.setChannels(ImmutableList.copyOf(channels)); - return builder.build(); - } - - /** @see android.provider.ContactsContract.Contacts#DISPLAY_NAME */ - public abstract String name(); - - /** @see android.provider.ContactsContract.Contacts#_ID */ - public abstract long contactId(); - - /** @see android.provider.ContactsContract.Contacts#LOOKUP_KEY */ - public abstract String lookupKey(); - - /** @see android.provider.ContactsContract.Contacts#STARRED */ - public abstract boolean isStarred(); - - /** @see Phone#PHOTO_ID */ - public abstract long photoId(); - - /** @see Phone#PHOTO_URI */ - public abstract String photoUri(); - - /** - * Since a contact can have multiple phone numbers and each number can have multiple technologies, - * enumerate each one here so that the user can choose the correct one. Each channel here - * represents a row in the {@link com.android.dialer.speeddial.DisambigDialog}. - * - * @see com.android.dialer.speeddial.database.SpeedDialEntry.Channel - */ - public abstract ImmutableList<Channel> channels(); - - /** - * Will be null when the user hasn't chosen a default yet. - * - * @see com.android.dialer.speeddial.database.SpeedDialEntry#defaultChannel() - */ - public abstract @Nullable Channel defaultChannel(); - - public abstract Builder toBuilder(); - - /** Builder class for speed dial contact. */ - @AutoValue.Builder - public abstract static class Builder { - - public abstract Builder setName(String name); - - public abstract Builder setContactId(long contactId); - - public abstract Builder setLookupKey(String lookupKey); - - public abstract Builder setIsStarred(boolean isStarred); - - public abstract Builder setPhotoId(long photoId); - - public abstract Builder setPhotoUri(String photoUri); - - public abstract Builder setChannels(ImmutableList<Channel> channels); - - /** Set to null if the user hasn't chosen a default or the channel no longer exists. */ - public abstract Builder setDefaultChannel(@Nullable Channel defaultChannel); - - public abstract SpeedDialUiItem build(); - } -} |