summaryrefslogtreecommitdiffstats
path: root/java/com/android/dialer/searchfragment/list
diff options
context:
space:
mode:
authorcalderwoodra <calderwoodra@google.com>2017-09-20 16:08:29 -0700
committerEric Erfanian <erfanian@google.com>2017-09-22 15:57:51 +0000
commit13221d724c9f26b8ff94c38d0911bbdcabdcb169 (patch)
treebc153a4094ebac2c5e531c7736d1eaa9b07cdea5 /java/com/android/dialer/searchfragment/list
parentab0b8567b62b88082a3213a6b085302dc216cfeb (diff)
downloadandroid_packages_apps_Dialer-13221d724c9f26b8ff94c38d0911bbdcabdcb169.tar.gz
android_packages_apps_Dialer-13221d724c9f26b8ff94c38d0911bbdcabdcb169.tar.bz2
android_packages_apps_Dialer-13221d724c9f26b8ff94c38d0911bbdcabdcb169.zip
Added dismiss button to location permission request.
This change adds a dismiss button to the location permission prompt shown in the search UI. A few other minor changes: - Permission prompt is always the first element in the list - Adjusted a few dimensions and strings screenshot: http://screen/9CkRPUQ5dwh Bug: 65858857 Test: SAT, NSFT PiperOrigin-RevId: 169466585 Change-Id: I8177c23fe3f635fec5fdcdbe6675428cebb19f5d
Diffstat (limited to 'java/com/android/dialer/searchfragment/list')
-rw-r--r--java/com/android/dialer/searchfragment/list/NewSearchFragment.java18
-rw-r--r--java/com/android/dialer/searchfragment/list/SearchAdapter.java31
-rw-r--r--java/com/android/dialer/searchfragment/list/SearchCursorManager.java15
3 files changed, 45 insertions, 19 deletions
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
index 1dbd953dd..47a4ee608 100644
--- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
+++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
@@ -24,6 +24,7 @@ import android.content.Loader;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.os.Bundle;
+import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
@@ -53,6 +54,7 @@ import com.android.dialer.searchfragment.remote.RemoteContactsCursorLoader;
import com.android.dialer.searchfragment.remote.RemoteDirectoriesCursorLoader;
import com.android.dialer.searchfragment.remote.RemoteDirectoriesCursorLoader.Directory;
import com.android.dialer.util.CallUtil;
+import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.util.ViewUtil;
import com.android.dialer.widget.EmptyContentView;
@@ -76,6 +78,7 @@ public final class NewSearchFragment extends Fragment
private static final int ENRICHED_CALLING_CAPABILITIES_UPDATED_DELAY = 400;
private static final String KEY_SHOW_ZERO_SUGGEST = "use_zero_suggest";
+ private static final String KEY_LOCATION_PROMPT_DISMISSED = "search_location_prompt_dismissed";
@VisibleForTesting public static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
@VisibleForTesting private static final int LOCATION_PERMISSION_REQUEST_CODE = 2;
@@ -326,9 +329,12 @@ public final class NewSearchFragment extends Fragment
// Should not be called before remote directories (not contacts) have finished loading.
private void loadNearbyPlacesCursor() {
- if (!PermissionsUtil.hasLocationPermissions(getContext())) {
+ if (!PermissionsUtil.hasLocationPermissions(getContext())
+ && !DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(getContext())
+ .getBoolean(KEY_LOCATION_PROMPT_DISMISSED, false)) {
if (adapter != null) {
- adapter.showLocationPermissionRequest(v -> requestLocationPermission());
+ adapter.showLocationPermissionRequest(
+ v -> requestLocationPermission(), v -> dismissLocationPermission());
}
return;
}
@@ -353,6 +359,14 @@ public final class NewSearchFragment extends Fragment
requestPermissions(deniedPermissions, LOCATION_PERMISSION_REQUEST_CODE);
}
+ private void dismissLocationPermission() {
+ PreferenceManager.getDefaultSharedPreferences(getContext())
+ .edit()
+ .putBoolean(KEY_LOCATION_PROMPT_DISMISSED, true)
+ .apply();
+ adapter.hideLocationPermissionRequest();
+ }
+
@Override
public void onResume() {
super.onResume();
diff --git a/java/com/android/dialer/searchfragment/list/SearchAdapter.java b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
index 358a59a41..22bfa6dbd 100644
--- a/java/com/android/dialer/searchfragment/list/SearchAdapter.java
+++ b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
@@ -56,7 +56,8 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder>
private boolean showZeroSuggest;
private String query;
private CallInitiationType.Type callInitiationType = CallInitiationType.Type.UNKNOWN_INITIATION;
- private OnClickListener locationRequestClickListener;
+ private OnClickListener allowClickListener;
+ private OnClickListener dismissClickListener;
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
public SearchAdapter(Activity activity, SearchCursorManager searchCursorManager) {
@@ -87,7 +88,8 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder>
case RowType.LOCATION_REQUEST:
return new LocationPermissionViewHolder(
LayoutInflater.from(activity).inflate(R.layout.location_permission_row, root, false),
- locationRequestClickListener);
+ allowClickListener,
+ dismissClickListener);
case RowType.INVALID:
default:
throw Assert.createIllegalStateFailException("Invalid RowType: " + rowType);
@@ -178,10 +180,12 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder>
* Updates the adapter to show the location request row element. If the element was previously
* hidden, the adapter will call {@link #notifyDataSetChanged()}.
*/
- public void showLocationPermissionRequest(OnClickListener clickListener) {
- Assert.isNotNull(locationRequestClickListener = clickListener);
+ public void showLocationPermissionRequest(
+ OnClickListener allowClickListener, OnClickListener dismissClickListener) {
+ this.allowClickListener = Assert.isNotNull(allowClickListener);
+ this.dismissClickListener = Assert.isNotNull(dismissClickListener);
if (searchCursorManager.showLocationPermissionRequest(true)) {
- notifyDataSetChanged();
+ notifyItemRemoved(0);
}
}
@@ -190,9 +194,10 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder>
* visible, the adapter will call {@link #notifyDataSetChanged()}.
*/
void hideLocationPermissionRequest() {
- locationRequestClickListener = null;
+ allowClickListener = null;
+ dismissClickListener = null;
if (searchCursorManager.showLocationPermissionRequest(false)) {
- notifyDataSetChanged();
+ notifyItemRemoved(0);
}
}
@@ -242,13 +247,19 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder>
/** Viewholder for R.layout.location_permission_row that requests the location permission. */
private static class LocationPermissionViewHolder extends RecyclerView.ViewHolder {
- LocationPermissionViewHolder(View itemView, OnClickListener locationRequestClickListener) {
+ LocationPermissionViewHolder(
+ View itemView, OnClickListener allowClickListener, OnClickListener dismissClickListener) {
super(itemView);
- Assert.isNotNull(locationRequestClickListener);
+ Assert.isNotNull(allowClickListener);
+ Assert.isNotNull(dismissClickListener);
itemView
.findViewById(
com.android.dialer.searchfragment.nearbyplaces.R.id.location_permission_allow)
- .setOnClickListener(locationRequestClickListener);
+ .setOnClickListener(allowClickListener);
+ itemView
+ .findViewById(
+ com.android.dialer.searchfragment.nearbyplaces.R.id.location_permission_dismiss)
+ .setOnClickListener(dismissClickListener);
}
}
}
diff --git a/java/com/android/dialer/searchfragment/list/SearchCursorManager.java b/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
index f8d1e1be5..c6aca8e68 100644
--- a/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
+++ b/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
@@ -244,6 +244,13 @@ public final class SearchCursorManager {
* @return Cursor moved to position specific to passed in position.
*/
SearchCursor getCursor(int position) {
+ if (showLocationPermissionRequest) {
+ if (position == 0) {
+ return LOCATION_PERMISSION_CURSOR;
+ }
+ position--;
+ }
+
if (contactsCursor != null) {
int count = contactsCursor.getCount();
@@ -254,13 +261,7 @@ public final class SearchCursorManager {
position -= count;
}
- if (showLocationPermissionRequest) {
- if (position == 0) {
- return LOCATION_PERMISSION_CURSOR;
- }
- position--;
-
- } else if (nearbyPlacesCursor != null) {
+ if (!showLocationPermissionRequest && nearbyPlacesCursor != null) {
int count = nearbyPlacesCursor.getCount();
if (position - count < 0) {