summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/speeddial/SpeedDialFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/speeddial/SpeedDialFragment.java')
-rw-r--r--java/com/android/dialer/speeddial/SpeedDialFragment.java70
1 files changed, 33 insertions, 37 deletions
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index 03a3c75bf..d1f195be1 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -17,23 +17,28 @@
package com.android.dialer.speeddial;
import android.content.Intent;
-import android.database.Cursor;
import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
-import android.support.v4.app.LoaderManager.LoaderCallbacks;
-import android.support.v4.content.Loader;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.common.Assert;
import com.android.dialer.precall.PreCall;
import com.android.dialer.speeddial.FavoritesViewHolder.FavoriteContactsListener;
import com.android.dialer.speeddial.HeaderViewHolder.SpeedDialHeaderListener;
import com.android.dialer.speeddial.SuggestionViewHolder.SuggestedContactsListener;
+import com.android.dialer.speeddial.database.SpeedDialEntry.Channel;
+import com.android.dialer.speeddial.loader.SpeedDialUiItem;
+import com.android.dialer.speeddial.loader.UiItemLoaderComponent;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
+import java.util.List;
/**
* Fragment for displaying:
@@ -47,13 +52,9 @@ import com.android.dialer.speeddial.SuggestionViewHolder.SuggestedContactsListen
*/
public class SpeedDialFragment extends Fragment {
- private static final int STREQUENT_CONTACTS_LOADER_ID = 1;
-
private final SpeedDialHeaderListener headerListener = new SpeedDialFragmentHeaderListener();
private final FavoriteContactsListener favoritesListener = new SpeedDialFavoritesListener();
private final SuggestedContactsListener suggestedListener = new SpeedDialSuggestedListener();
- private final SpeedDialFragmentLoaderCallback loaderCallback =
- new SpeedDialFragmentLoaderCallback();
private SpeedDialAdapter adapter;
@@ -72,7 +73,6 @@ public class SpeedDialFragment extends Fragment {
new SpeedDialAdapter(getContext(), favoritesListener, suggestedListener, headerListener);
recyclerView.setLayoutManager(adapter.getLayoutManager(getContext()));
recyclerView.setAdapter(adapter);
- getLoaderManager().initLoader(STREQUENT_CONTACTS_LOADER_ID, null /* args */, loaderCallback);
return view;
}
@@ -84,7 +84,28 @@ public class SpeedDialFragment extends Fragment {
@Override
public void onResume() {
super.onResume();
- getLoaderManager().restartLoader(STREQUENT_CONTACTS_LOADER_ID, null, loaderCallback);
+ Futures.addCallback(
+ UiItemLoaderComponent.get(getContext().getApplicationContext())
+ .speedDialUiItemLoader()
+ .loadSpeedDialUiItems(),
+ new FutureCallback<List<SpeedDialUiItem>>() {
+ @Override
+ public void onSuccess(List<SpeedDialUiItem> speedDialUiItems) {
+ // TODO(calderwoodra): this is bad
+ new Handler(Looper.getMainLooper())
+ .post(
+ () -> {
+ adapter.setSpeedDialUiItems(speedDialUiItems);
+ adapter.notifyDataSetChanged();
+ });
+ }
+
+ @Override
+ public void onFailure(Throwable throwable) {
+ throw new RuntimeException(throwable);
+ }
+ },
+ MoreExecutors.directExecutor());
}
private class SpeedDialFragmentHeaderListener implements SpeedDialHeaderListener {
@@ -98,8 +119,8 @@ public class SpeedDialFragment extends Fragment {
private class SpeedDialFavoritesListener implements FavoriteContactsListener {
@Override
- public void onAmbiguousContactClicked(String lookupKey) {
- DisambigDialog.show(lookupKey, getFragmentManager());
+ public void onAmbiguousContactClicked(List<Channel> channels) {
+ // TODO(calderwoodra): implement the disambig dialog with channels
}
@Override
@@ -130,29 +151,4 @@ public class SpeedDialFragment extends Fragment {
getContext(), new CallIntentBuilder(number, CallInitiationType.Type.SPEED_DIAL));
}
}
-
- /**
- * Loader callback that registers a content observer. {@link #unregisterContentObserver()} needs
- * to be called during tear down of the fragment.
- */
- private class SpeedDialFragmentLoaderCallback implements LoaderCallbacks<Cursor> {
-
- @Override
- public Loader<Cursor> onCreateLoader(int id, Bundle args) {
- if (id == STREQUENT_CONTACTS_LOADER_ID) {
- return new StrequentContactsCursorLoader(getContext());
- }
- throw Assert.createIllegalStateFailException("Invalid loader id: " + id);
- }
-
- @Override
- public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
- adapter.setCursor((SpeedDialCursor) data);
- }
-
- @Override
- public void onLoaderReset(Loader<Cursor> loader) {
- adapter.setCursor(null);
- }
- }
}