Loading java/com/android/dialer/speeddial/SpeedDialAdapter.java +18 −12 Original line number Diff line number Diff line Loading @@ -34,10 +34,10 @@ import com.android.dialer.speeddial.HeaderViewHolder.SpeedDialHeaderListener; import com.android.dialer.speeddial.SuggestionViewHolder.SuggestedContactsListener; import com.android.dialer.speeddial.draghelper.SpeedDialItemTouchHelperCallback.ItemTouchHelperAdapter; import com.android.dialer.speeddial.loader.SpeedDialUiItem; import com.google.common.collect.ImmutableList; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; Loading Loading @@ -146,7 +146,13 @@ public final class SpeedDialAdapter extends RecyclerView.Adapter<RecyclerView.Vi public void setSpeedDialUiItems(List<SpeedDialUiItem> immutableSpeedDialUiItems) { speedDialUiItems = new ArrayList<>(); speedDialUiItems.addAll(immutableSpeedDialUiItems); speedDialUiItems.sort((o1, o2) -> Boolean.compare(o2.isStarred(), o1.isStarred())); speedDialUiItems.sort( (o1, o2) -> { if (o1.isStarred() && o2.isStarred()) { return Integer.compare(o1.pinnedPosition().or(-1), o2.pinnedPosition().or(-1)); } return Boolean.compare(o2.isStarred(), o1.isStarred()); }); positionToRowTypeMap.clear(); if (speedDialUiItems.isEmpty()) { return; Loading @@ -168,6 +174,13 @@ public final class SpeedDialAdapter extends RecyclerView.Adapter<RecyclerView.Vi } } public ImmutableList<SpeedDialUiItem> getSpeedDialUiItems() { if (speedDialUiItems == null || speedDialUiItems.isEmpty()) { return ImmutableList.of(); } return ImmutableList.copyOf(speedDialUiItems); } public SpanSizeLookup getSpanSizeLookup() { return new SpanSizeLookup() { @Override Loading @@ -189,16 +202,9 @@ public final class SpeedDialAdapter extends RecyclerView.Adapter<RecyclerView.Vi @Override public void onItemMove(int fromPosition, int toPosition) { if (fromPosition < toPosition) { for (int i = fromPosition; i < toPosition && i < speedDialUiItems.size() - 1; i++) { Collections.swap(speedDialUiItems, i, i + 1); } } else { for (int i = fromPosition - 1; i > toPosition; i--) { Collections.swap(speedDialUiItems, i, i - 1); } } // TODO(calderwoodra): store pinned positions // fromPosition/toPosition correspond to adapter position, which is off by 1 from the list // position b/c of the favorites header. So subtract 1 here. speedDialUiItems.add(toPosition - 1, speedDialUiItems.remove(fromPosition - 1)); notifyItemMoved(fromPosition, toPosition); } Loading java/com/android/dialer/speeddial/SpeedDialFragment.java +17 −3 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.callintent.CallIntentBuilder; import com.android.dialer.common.FragmentUtils; import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.DefaultFutureCallback; import com.android.dialer.common.concurrent.DialerExecutorComponent; import com.android.dialer.common.concurrent.SupportUiListener; import com.android.dialer.constants.ActivityRequestCodes; Loading @@ -54,6 +55,7 @@ import com.android.dialer.speeddial.loader.SpeedDialUiItem; import com.android.dialer.speeddial.loader.UiItemLoaderComponent; import com.android.dialer.util.IntentUtil; import com.google.common.collect.ImmutableList; import com.google.common.util.concurrent.Futures; /** * Fragment for displaying: Loading Loading @@ -143,7 +145,7 @@ public class SpeedDialFragment extends Fragment { speedDialLoaderListener.listen( getContext(), UiItemLoaderComponent.get(getContext()).speedDialUiItemLoader().loadSpeedDialUiItems(), UiItemLoaderComponent.get(getContext()).speedDialUiItemMutator().loadSpeedDialUiItems(), this::onSpeedDialUiItemListLoaded, throwable -> { throw new RuntimeException(throwable); Loading @@ -158,7 +160,7 @@ public class SpeedDialFragment extends Fragment { speedDialLoaderListener.listen( getContext(), UiItemLoaderComponent.get(getContext()) .speedDialUiItemLoader() .speedDialUiItemMutator() .starContact(data.getData()), this::onSpeedDialUiItemListLoaded, throwable -> { Loading @@ -173,7 +175,7 @@ public class SpeedDialFragment extends Fragment { // TODO(calderwoodra): Use DiffUtil to properly update and animate the change adapter.setSpeedDialUiItems( UiItemLoaderComponent.get(getContext()) .speedDialUiItemLoader() .speedDialUiItemMutator() .insertDuoChannels(getContext(), speedDialUiItems)); adapter.notifyDataSetChanged(); if (getActivity() != null) { Loading @@ -187,6 +189,18 @@ public class SpeedDialFragment extends Fragment { super.onPause(); contextMenu.hideMenu(); contextMenuBackground.setVisibility(View.GONE); Futures.addCallback( DialerExecutorComponent.get(getContext()) .backgroundExecutor() .submit( () -> { UiItemLoaderComponent.get(getContext()) .speedDialUiItemMutator() .updatePinnedPosition(adapter.getSpeedDialUiItems()); return null; }), new DefaultFutureCallback<>(), DialerExecutorComponent.get(getContext()).backgroundExecutor()); } @Override Loading java/com/android/dialer/speeddial/database/SpeedDialEntry.java +7 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.provider.ContactsContract.CommonDataKinds.Phone; import android.support.annotation.IntDef; import android.support.annotation.Nullable; import com.google.auto.value.AutoValue; import com.google.common.base.Optional; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading @@ -35,6 +36,9 @@ public abstract class SpeedDialEntry { @Nullable public abstract Long id(); /** Position the contact is pinned to in the UI. Will be absent if it hasn't be set yet. */ public abstract Optional<Integer> pinnedPosition(); /** @see {@link Contacts#_ID} */ public abstract long contactId(); Loading @@ -53,7 +57,7 @@ public abstract class SpeedDialEntry { public abstract Builder toBuilder(); public static Builder builder() { return new AutoValue_SpeedDialEntry.Builder(); return new AutoValue_SpeedDialEntry.Builder().setPinnedPosition(Optional.absent()); } /** Builder class for speed dial entry. */ Loading @@ -62,6 +66,8 @@ public abstract class SpeedDialEntry { public abstract Builder setId(Long id); public abstract Builder setPinnedPosition(Optional<Integer> pinnedPosition); public abstract Builder setContactId(long contactId); public abstract Builder setLookupKey(String lookupKey); Loading java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java +24 −6 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.text.TextUtils; import com.android.dialer.common.Assert; import com.android.dialer.common.database.Selection; import com.android.dialer.speeddial.database.SpeedDialEntry.Channel; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import java.util.ArrayList; Loading @@ -38,12 +39,20 @@ import java.util.List; public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper implements SpeedDialEntryDao { /** * If the pinned position is absent, then we need to write an impossible value in the table like * -1 so that it doesn't default to 0. When we read this value from the table, we'll translate it * to Optional.absent() in the resulting {@link SpeedDialEntry}. */ private static final int PINNED_POSITION_ABSENT = -1; private static final int DATABASE_VERSION = 2; private static final String DATABASE_NAME = "CPSpeedDialEntry"; // Column names private static final String TABLE_NAME = "speed_dial_entries"; private static final String ID = "id"; private static final String PINNED_POSITION = "pinned_position"; private static final String CONTACT_ID = "contact_id"; private static final String LOOKUP_KEY = "lookup_key"; private static final String PHONE_NUMBER = "phone_number"; Loading @@ -53,12 +62,13 @@ public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper // Column positions private static final int POSITION_ID = 0; private static final int POSITION_CONTACT_ID = 1; private static final int POSITION_LOOKUP_KEY = 2; private static final int POSITION_PHONE_NUMBER = 3; private static final int POSITION_PHONE_TYPE = 4; private static final int POSITION_PHONE_LABEL = 5; private static final int POSITION_PHONE_TECHNOLOGY = 6; private static final int POSITION_PINNED_POSITION = 1; private static final int POSITION_CONTACT_ID = 2; private static final int POSITION_LOOKUP_KEY = 3; private static final int POSITION_PHONE_NUMBER = 4; private static final int POSITION_PHONE_TYPE = 5; private static final int POSITION_PHONE_LABEL = 6; private static final int POSITION_PHONE_TECHNOLOGY = 7; // Create Table Query private static final String CREATE_TABLE_SQL = Loading @@ -66,6 +76,7 @@ public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper + TABLE_NAME + " (" + (ID + " integer primary key, ") + (PINNED_POSITION + " integer, ") + (CONTACT_ID + " integer, ") + (LOOKUP_KEY + " text, ") + (PHONE_NUMBER + " text, ") Loading Loading @@ -119,11 +130,17 @@ public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper .build(); } Optional<Integer> pinnedPosition = Optional.of(cursor.getInt(POSITION_PINNED_POSITION)); if (pinnedPosition.or(PINNED_POSITION_ABSENT) == PINNED_POSITION_ABSENT) { pinnedPosition = Optional.absent(); } SpeedDialEntry entry = SpeedDialEntry.builder() .setDefaultChannel(channel) .setContactId(cursor.getLong(POSITION_CONTACT_ID)) .setLookupKey(cursor.getString(POSITION_LOOKUP_KEY)) .setPinnedPosition(pinnedPosition) .setId(cursor.getLong(POSITION_ID)) .build(); entries.add(entry); Loading Loading @@ -226,6 +243,7 @@ public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper if (includeId) { values.put(ID, entry.id()); } values.put(PINNED_POSITION, entry.pinnedPosition().or(PINNED_POSITION_ABSENT)); values.put(CONTACT_ID, entry.contactId()); values.put(LOOKUP_KEY, entry.lookupKey()); if (entry.defaultChannel() != null) { Loading java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java +10 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ 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.base.Optional; import com.google.common.collect.ImmutableList; import java.util.ArrayList; import java.util.List; Loading Loading @@ -83,7 +84,9 @@ public abstract class SpeedDialUiItem { } public static Builder builder() { return new AutoValue_SpeedDialUiItem.Builder().setChannels(ImmutableList.of()); return new AutoValue_SpeedDialUiItem.Builder() .setChannels(ImmutableList.of()) .setPinnedPosition(Optional.absent()); } /** Loading Loading @@ -139,6 +142,7 @@ public abstract class SpeedDialUiItem { public SpeedDialEntry buildSpeedDialEntry() { return SpeedDialEntry.builder() .setId(speedDialEntryId()) .setPinnedPosition(pinnedPosition()) .setLookupKey(lookupKey()) .setContactId(contactId()) .setDefaultChannel(defaultChannel()) Loading Loading @@ -212,6 +216,9 @@ public abstract class SpeedDialUiItem { @Nullable public abstract Long speedDialEntryId(); /** @see SpeedDialEntry#pinnedPosition() */ public abstract Optional<Integer> pinnedPosition(); /** @see android.provider.ContactsContract.Contacts#DISPLAY_NAME */ public abstract String name(); Loading Loading @@ -255,6 +262,8 @@ public abstract class SpeedDialUiItem { /** Set to null if {@link #isStarred()} is false. */ public abstract Builder setSpeedDialEntryId(@Nullable Long id); public abstract Builder setPinnedPosition(Optional<Integer> pinnedPosition); public abstract Builder setName(String name); public abstract Builder setContactId(long contactId); Loading Loading
java/com/android/dialer/speeddial/SpeedDialAdapter.java +18 −12 Original line number Diff line number Diff line Loading @@ -34,10 +34,10 @@ import com.android.dialer.speeddial.HeaderViewHolder.SpeedDialHeaderListener; import com.android.dialer.speeddial.SuggestionViewHolder.SuggestedContactsListener; import com.android.dialer.speeddial.draghelper.SpeedDialItemTouchHelperCallback.ItemTouchHelperAdapter; import com.android.dialer.speeddial.loader.SpeedDialUiItem; import com.google.common.collect.ImmutableList; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; Loading Loading @@ -146,7 +146,13 @@ public final class SpeedDialAdapter extends RecyclerView.Adapter<RecyclerView.Vi public void setSpeedDialUiItems(List<SpeedDialUiItem> immutableSpeedDialUiItems) { speedDialUiItems = new ArrayList<>(); speedDialUiItems.addAll(immutableSpeedDialUiItems); speedDialUiItems.sort((o1, o2) -> Boolean.compare(o2.isStarred(), o1.isStarred())); speedDialUiItems.sort( (o1, o2) -> { if (o1.isStarred() && o2.isStarred()) { return Integer.compare(o1.pinnedPosition().or(-1), o2.pinnedPosition().or(-1)); } return Boolean.compare(o2.isStarred(), o1.isStarred()); }); positionToRowTypeMap.clear(); if (speedDialUiItems.isEmpty()) { return; Loading @@ -168,6 +174,13 @@ public final class SpeedDialAdapter extends RecyclerView.Adapter<RecyclerView.Vi } } public ImmutableList<SpeedDialUiItem> getSpeedDialUiItems() { if (speedDialUiItems == null || speedDialUiItems.isEmpty()) { return ImmutableList.of(); } return ImmutableList.copyOf(speedDialUiItems); } public SpanSizeLookup getSpanSizeLookup() { return new SpanSizeLookup() { @Override Loading @@ -189,16 +202,9 @@ public final class SpeedDialAdapter extends RecyclerView.Adapter<RecyclerView.Vi @Override public void onItemMove(int fromPosition, int toPosition) { if (fromPosition < toPosition) { for (int i = fromPosition; i < toPosition && i < speedDialUiItems.size() - 1; i++) { Collections.swap(speedDialUiItems, i, i + 1); } } else { for (int i = fromPosition - 1; i > toPosition; i--) { Collections.swap(speedDialUiItems, i, i - 1); } } // TODO(calderwoodra): store pinned positions // fromPosition/toPosition correspond to adapter position, which is off by 1 from the list // position b/c of the favorites header. So subtract 1 here. speedDialUiItems.add(toPosition - 1, speedDialUiItems.remove(fromPosition - 1)); notifyItemMoved(fromPosition, toPosition); } Loading
java/com/android/dialer/speeddial/SpeedDialFragment.java +17 −3 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import com.android.dialer.callintent.CallInitiationType; import com.android.dialer.callintent.CallIntentBuilder; import com.android.dialer.common.FragmentUtils; import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.DefaultFutureCallback; import com.android.dialer.common.concurrent.DialerExecutorComponent; import com.android.dialer.common.concurrent.SupportUiListener; import com.android.dialer.constants.ActivityRequestCodes; Loading @@ -54,6 +55,7 @@ import com.android.dialer.speeddial.loader.SpeedDialUiItem; import com.android.dialer.speeddial.loader.UiItemLoaderComponent; import com.android.dialer.util.IntentUtil; import com.google.common.collect.ImmutableList; import com.google.common.util.concurrent.Futures; /** * Fragment for displaying: Loading Loading @@ -143,7 +145,7 @@ public class SpeedDialFragment extends Fragment { speedDialLoaderListener.listen( getContext(), UiItemLoaderComponent.get(getContext()).speedDialUiItemLoader().loadSpeedDialUiItems(), UiItemLoaderComponent.get(getContext()).speedDialUiItemMutator().loadSpeedDialUiItems(), this::onSpeedDialUiItemListLoaded, throwable -> { throw new RuntimeException(throwable); Loading @@ -158,7 +160,7 @@ public class SpeedDialFragment extends Fragment { speedDialLoaderListener.listen( getContext(), UiItemLoaderComponent.get(getContext()) .speedDialUiItemLoader() .speedDialUiItemMutator() .starContact(data.getData()), this::onSpeedDialUiItemListLoaded, throwable -> { Loading @@ -173,7 +175,7 @@ public class SpeedDialFragment extends Fragment { // TODO(calderwoodra): Use DiffUtil to properly update and animate the change adapter.setSpeedDialUiItems( UiItemLoaderComponent.get(getContext()) .speedDialUiItemLoader() .speedDialUiItemMutator() .insertDuoChannels(getContext(), speedDialUiItems)); adapter.notifyDataSetChanged(); if (getActivity() != null) { Loading @@ -187,6 +189,18 @@ public class SpeedDialFragment extends Fragment { super.onPause(); contextMenu.hideMenu(); contextMenuBackground.setVisibility(View.GONE); Futures.addCallback( DialerExecutorComponent.get(getContext()) .backgroundExecutor() .submit( () -> { UiItemLoaderComponent.get(getContext()) .speedDialUiItemMutator() .updatePinnedPosition(adapter.getSpeedDialUiItems()); return null; }), new DefaultFutureCallback<>(), DialerExecutorComponent.get(getContext()).backgroundExecutor()); } @Override Loading
java/com/android/dialer/speeddial/database/SpeedDialEntry.java +7 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.provider.ContactsContract.CommonDataKinds.Phone; import android.support.annotation.IntDef; import android.support.annotation.Nullable; import com.google.auto.value.AutoValue; import com.google.common.base.Optional; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading @@ -35,6 +36,9 @@ public abstract class SpeedDialEntry { @Nullable public abstract Long id(); /** Position the contact is pinned to in the UI. Will be absent if it hasn't be set yet. */ public abstract Optional<Integer> pinnedPosition(); /** @see {@link Contacts#_ID} */ public abstract long contactId(); Loading @@ -53,7 +57,7 @@ public abstract class SpeedDialEntry { public abstract Builder toBuilder(); public static Builder builder() { return new AutoValue_SpeedDialEntry.Builder(); return new AutoValue_SpeedDialEntry.Builder().setPinnedPosition(Optional.absent()); } /** Builder class for speed dial entry. */ Loading @@ -62,6 +66,8 @@ public abstract class SpeedDialEntry { public abstract Builder setId(Long id); public abstract Builder setPinnedPosition(Optional<Integer> pinnedPosition); public abstract Builder setContactId(long contactId); public abstract Builder setLookupKey(String lookupKey); Loading
java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java +24 −6 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.text.TextUtils; import com.android.dialer.common.Assert; import com.android.dialer.common.database.Selection; import com.android.dialer.speeddial.database.SpeedDialEntry.Channel; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import java.util.ArrayList; Loading @@ -38,12 +39,20 @@ import java.util.List; public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper implements SpeedDialEntryDao { /** * If the pinned position is absent, then we need to write an impossible value in the table like * -1 so that it doesn't default to 0. When we read this value from the table, we'll translate it * to Optional.absent() in the resulting {@link SpeedDialEntry}. */ private static final int PINNED_POSITION_ABSENT = -1; private static final int DATABASE_VERSION = 2; private static final String DATABASE_NAME = "CPSpeedDialEntry"; // Column names private static final String TABLE_NAME = "speed_dial_entries"; private static final String ID = "id"; private static final String PINNED_POSITION = "pinned_position"; private static final String CONTACT_ID = "contact_id"; private static final String LOOKUP_KEY = "lookup_key"; private static final String PHONE_NUMBER = "phone_number"; Loading @@ -53,12 +62,13 @@ public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper // Column positions private static final int POSITION_ID = 0; private static final int POSITION_CONTACT_ID = 1; private static final int POSITION_LOOKUP_KEY = 2; private static final int POSITION_PHONE_NUMBER = 3; private static final int POSITION_PHONE_TYPE = 4; private static final int POSITION_PHONE_LABEL = 5; private static final int POSITION_PHONE_TECHNOLOGY = 6; private static final int POSITION_PINNED_POSITION = 1; private static final int POSITION_CONTACT_ID = 2; private static final int POSITION_LOOKUP_KEY = 3; private static final int POSITION_PHONE_NUMBER = 4; private static final int POSITION_PHONE_TYPE = 5; private static final int POSITION_PHONE_LABEL = 6; private static final int POSITION_PHONE_TECHNOLOGY = 7; // Create Table Query private static final String CREATE_TABLE_SQL = Loading @@ -66,6 +76,7 @@ public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper + TABLE_NAME + " (" + (ID + " integer primary key, ") + (PINNED_POSITION + " integer, ") + (CONTACT_ID + " integer, ") + (LOOKUP_KEY + " text, ") + (PHONE_NUMBER + " text, ") Loading Loading @@ -119,11 +130,17 @@ public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper .build(); } Optional<Integer> pinnedPosition = Optional.of(cursor.getInt(POSITION_PINNED_POSITION)); if (pinnedPosition.or(PINNED_POSITION_ABSENT) == PINNED_POSITION_ABSENT) { pinnedPosition = Optional.absent(); } SpeedDialEntry entry = SpeedDialEntry.builder() .setDefaultChannel(channel) .setContactId(cursor.getLong(POSITION_CONTACT_ID)) .setLookupKey(cursor.getString(POSITION_LOOKUP_KEY)) .setPinnedPosition(pinnedPosition) .setId(cursor.getLong(POSITION_ID)) .build(); entries.add(entry); Loading Loading @@ -226,6 +243,7 @@ public final class SpeedDialEntryDatabaseHelper extends SQLiteOpenHelper if (includeId) { values.put(ID, entry.id()); } values.put(PINNED_POSITION, entry.pinnedPosition().or(PINNED_POSITION_ABSENT)); values.put(CONTACT_ID, entry.contactId()); values.put(LOOKUP_KEY, entry.lookupKey()); if (entry.defaultChannel() != null) { Loading
java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java +10 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ 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.base.Optional; import com.google.common.collect.ImmutableList; import java.util.ArrayList; import java.util.List; Loading Loading @@ -83,7 +84,9 @@ public abstract class SpeedDialUiItem { } public static Builder builder() { return new AutoValue_SpeedDialUiItem.Builder().setChannels(ImmutableList.of()); return new AutoValue_SpeedDialUiItem.Builder() .setChannels(ImmutableList.of()) .setPinnedPosition(Optional.absent()); } /** Loading Loading @@ -139,6 +142,7 @@ public abstract class SpeedDialUiItem { public SpeedDialEntry buildSpeedDialEntry() { return SpeedDialEntry.builder() .setId(speedDialEntryId()) .setPinnedPosition(pinnedPosition()) .setLookupKey(lookupKey()) .setContactId(contactId()) .setDefaultChannel(defaultChannel()) Loading Loading @@ -212,6 +216,9 @@ public abstract class SpeedDialUiItem { @Nullable public abstract Long speedDialEntryId(); /** @see SpeedDialEntry#pinnedPosition() */ public abstract Optional<Integer> pinnedPosition(); /** @see android.provider.ContactsContract.Contacts#DISPLAY_NAME */ public abstract String name(); Loading Loading @@ -255,6 +262,8 @@ public abstract class SpeedDialUiItem { /** Set to null if {@link #isStarred()} is false. */ public abstract Builder setSpeedDialEntryId(@Nullable Long id); public abstract Builder setPinnedPosition(Optional<Integer> pinnedPosition); public abstract Builder setName(String name); public abstract Builder setContactId(long contactId); Loading