summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorcalderwoodra <calderwoodra@google.com>2017-08-26 00:57:40 -0700
committerEric Erfanian <erfanian@google.com>2017-08-30 23:28:29 +0000
commitdfd12e6b3fec3cd4a7af247b94d950eccd34f790 (patch)
tree8fa2f2499c513508c6ecb304e9bd7561d7385c34 /java
parent6e1adcc3ca6d754a1c262e058b0305c65a5d1166 (diff)
Fix some bugs in the new SearchFragment.
Call initiation type is now correct. from the bug: 1. Messed up UI on taking off Contacts permission. 12. Phone app crash on doing voice search 21. fragment can get into weird state where it resets to show all contacts even when there is a query in the search box. Bug: 64902476 Test: manual PiperOrigin-RevId: 166567893 Change-Id: I343f9c659ae83065b1b535e3d6c120ed723a0ed5
Diffstat (limited to 'java')
-rw-r--r--java/com/android/dialer/app/DialtactsActivity.java18
-rw-r--r--java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java9
-rw-r--r--java/com/android/dialer/searchfragment/list/NewSearchFragment.java13
-rw-r--r--java/com/android/dialer/searchfragment/list/SearchAdapter.java13
4 files changed, 39 insertions, 14 deletions
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index 04545b5c7..01bdfc223 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -93,6 +93,7 @@ import com.android.dialer.app.widget.ActionBarController;
import com.android.dialer.app.widget.SearchEditTextLayout;
import com.android.dialer.callcomposer.CallComposerActivity;
import com.android.dialer.calldetails.CallDetailsActivity;
+import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.Assert;
@@ -305,8 +306,11 @@ public class DialtactsActivity extends TransactionSafeActivity
mSmartDialSearchFragment.setQueryString(mSearchQuery);
} else if (mRegularSearchFragment != null && mRegularSearchFragment.isVisible()) {
mRegularSearchFragment.setQueryString(mSearchQuery);
- } else if (mNewSearchFragment != null) {
+ } else if (mNewSearchFragment != null && mNewSearchFragment.isVisible()) {
mNewSearchFragment.setQuery(mSearchQuery);
+ // When the user switches between dialpad and the serachbar, we need to reset the
+ // call initiation type.
+ mNewSearchFragment.setCallInitiationType(getCallInitiationType());
}
}
@@ -965,9 +969,10 @@ public class DialtactsActivity extends TransactionSafeActivity
fragment.updatePosition(true /* animate */);
} else if (mNewSearchFragment != null) {
int animationDuration = getResources().getInteger(R.integer.dialpad_slide_in_duration);
+ int actionbarHeight = getResources().getDimensionPixelSize(R.dimen.action_bar_height_large);
int shadowHeight = getResources().getDrawable(R.drawable.search_shadow).getIntrinsicHeight();
- int start = isDialpadShown() ? mActionBarHeight - shadowHeight : 0;
- int end = isDialpadShown() ? 0 : mActionBarHeight - shadowHeight;
+ int start = isDialpadShown() ? actionbarHeight - shadowHeight : 0;
+ int end = isDialpadShown() ? 0 : actionbarHeight - shadowHeight;
mNewSearchFragment.animatePosition(start, end, animationDuration);
}
}
@@ -1209,6 +1214,7 @@ public class DialtactsActivity extends TransactionSafeActivity
((SearchFragment) fragment).setQueryString(query);
} else if (useNewSearch) {
((NewSearchFragment) fragment).setQuery(query);
+ ((NewSearchFragment) fragment).setCallInitiationType(getCallInitiationType());
}
transaction.commit();
@@ -1596,6 +1602,12 @@ public class DialtactsActivity extends TransactionSafeActivity
return isMultiSelectModeEnabled;
}
+ private CallInitiationType.Type getCallInitiationType() {
+ return mIsDialpadShown
+ ? CallInitiationType.Type.DIALPAD
+ : CallInitiationType.Type.REGULAR_SEARCH;
+ }
+
/** Popup menu accessible from the search bar */
protected class OptionsPopupMenu extends PopupMenu {
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
index d75a66122..84fd64ae5 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
@@ -20,12 +20,16 @@ import android.content.Context;
import android.content.CursorLoader;
import android.database.Cursor;
import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.annotation.Nullable;
import com.android.dialer.searchfragment.common.Projections;
/** Cursor Loader for CP2 contacts. */
public final class SearchContactsCursorLoader extends CursorLoader {
- public SearchContactsCursorLoader(Context context) {
+ private final String query;
+
+ /** @param query Contacts cursor will be filtered based on this query. */
+ public SearchContactsCursorLoader(Context context, @Nullable String query) {
super(
context,
Phone.CONTENT_URI,
@@ -33,6 +37,7 @@ public final class SearchContactsCursorLoader extends CursorLoader {
null,
null,
Phone.SORT_KEY_PRIMARY + " ASC");
+ this.query = query;
}
@Override
@@ -40,7 +45,7 @@ public final class SearchContactsCursorLoader extends CursorLoader {
// All contacts
Cursor cursor = super.loadInBackground();
// Filtering logic
- ContactFilterCursor contactFilterCursor = new ContactFilterCursor(cursor, null);
+ ContactFilterCursor contactFilterCursor = new ContactFilterCursor(cursor, query);
// Header logic
return SearchContactsCursor.newInstnace(getContext(), contactFilterCursor);
}
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
index 7d355c91c..7fee9699a 100644
--- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
+++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
@@ -34,6 +34,7 @@ import android.view.ViewGroup;
import android.view.animation.Interpolator;
import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
import com.android.dialer.animation.AnimUtils;
+import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.ThreadUtil;
@@ -77,6 +78,7 @@ public final class NewSearchFragment extends Fragment
private RecyclerView recyclerView;
private SearchAdapter adapter;
private String query;
+ private CallInitiationType.Type callInitiationType = CallInitiationType.Type.UNKNOWN_INITIATION;
private boolean remoteDirectoriesDisabledForTesting;
private final List<Directory> directories = new ArrayList<>();
@@ -94,6 +96,7 @@ public final class NewSearchFragment extends Fragment
LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle bundle) {
View view = inflater.inflate(R.layout.fragment_search, parent, false);
adapter = new SearchAdapter(getActivity(), new SearchCursorManager());
+ adapter.setCallInitiationType(callInitiationType);
emptyContentView = view.findViewById(R.id.empty_view);
recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
@@ -123,9 +126,8 @@ public final class NewSearchFragment extends Fragment
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle bundle) {
- // TODO(calderwoodra) add enterprise loader
if (id == CONTACTS_LOADER_ID) {
- return new SearchContactsCursorLoader(getContext());
+ return new SearchContactsCursorLoader(getContext(), query);
} else if (id == NEARBY_PLACES_LOADER_ID) {
return new NearbyPlacesCursorLoader(getContext(), query);
} else if (id == REMOTE_DIRECTORIES_LOADER_ID) {
@@ -182,6 +184,13 @@ public final class NewSearchFragment extends Fragment
}
}
+ public void setCallInitiationType(CallInitiationType.Type callInitiationType) {
+ this.callInitiationType = callInitiationType;
+ if (adapter != null) {
+ adapter.setCallInitiationType(callInitiationType);
+ }
+ }
+
public void animatePosition(int start, int end, int duration) {
// Called before the view is ready, prepare a runnable to run in onCreateView
if (getView() == null) {
diff --git a/java/com/android/dialer/searchfragment/list/SearchAdapter.java b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
index 4cb44a2db..f08d60e09 100644
--- a/java/com/android/dialer/searchfragment/list/SearchAdapter.java
+++ b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
@@ -25,7 +25,6 @@ import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.android.dialer.callcomposer.CallComposerActivity;
import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallInitiationType.Type;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.Assert;
@@ -51,6 +50,7 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder>
private final Activity activity;
private String query;
+ private CallInitiationType.Type callInitiationType = CallInitiationType.Type.UNKNOWN_INITIATION;
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
public SearchAdapter(Activity activity, SearchCursorManager searchCursorManager) {
@@ -124,6 +124,10 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder>
}
}
+ void setCallInitiationType(CallInitiationType.Type callInitiationType) {
+ this.callInitiationType = callInitiationType;
+ }
+
public void setNearbyPlacesCursor(SearchCursor nearbyPlacesCursor) {
if (searchCursorManager.setNearbyPlacesCursor(nearbyPlacesCursor)) {
notifyDataSetChanged();
@@ -149,7 +153,7 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder>
private void placeCall(String phoneNumber, int position, boolean isVideoCall) {
CallSpecificAppData callSpecificAppData =
CallSpecificAppData.newBuilder()
- .setCallInitiationType(getCallInitiationType())
+ .setCallInitiationType(callInitiationType)
.setPositionOfSelectedSearchResult(position)
.setCharactersInSearchString(query == null ? 0 : query.length())
.build();
@@ -172,9 +176,4 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder>
Intent intent = CallComposerActivity.newIntent(activity, contact);
DialerUtils.startActivityWithErrorToast(activity, intent);
}
-
- private CallInitiationType.Type getCallInitiationType() {
- // TODO(calderwoodra): add correct initiation type
- return Type.REGULAR_SEARCH;
- }
}