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.java66
1 files changed, 53 insertions, 13 deletions
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index c118f9601..a645fb82b 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -137,11 +137,7 @@ public class SpeedDialFragment extends Fragment {
LogUtil.enterBlock("SpeedDialFragment.onCreateView");
View rootLayout = inflater.inflate(R.layout.fragment_speed_dial, container, false);
emptyContentView = rootLayout.findViewById(R.id.speed_dial_empty_content_view);
- emptyContentView.setActionLabel(R.string.speed_dial_turn_on_contacts_permission);
- emptyContentView.setDescription(R.string.speed_dial_contacts_permission_description);
emptyContentView.setImage(R.drawable.empty_speed_dial);
- emptyContentView.setActionClickedListener(
- new SpeedDialEmptyContentViewClickedListener(getContext(), this));
speedDialLoaderListener =
DialerExecutorComponent.get(getContext())
@@ -232,11 +228,8 @@ public class SpeedDialFragment extends Fragment {
return;
}
- if (!PermissionsUtil.hasContactsReadPermissions(getContext())) {
- emptyContentView.setVisibility(View.VISIBLE);
+ if (showContactsPermissionEmptyContentView()) {
return;
- } else {
- emptyContentView.setVisibility(View.GONE);
}
speedDialLoaderListener.listen(
@@ -274,20 +267,51 @@ public class SpeedDialFragment extends Fragment {
.speedDialUiItemMutator()
.insertDuoChannels(getContext(), speedDialUiItems));
adapter.notifyDataSetChanged();
+ maybeShowNoContactsEmptyContentView();
+
if (getActivity() != null) {
FragmentUtils.getParentUnsafe(this, HostInterface.class)
.setHasFrequents(adapter.hasFrequents());
}
}
+ /** Returns true if the empty content view was shown. */
+ private boolean showContactsPermissionEmptyContentView() {
+ if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
+ emptyContentView.setVisibility(View.GONE);
+ return false;
+ }
+
+ emptyContentView.setVisibility(View.VISIBLE);
+ emptyContentView.setActionLabel(R.string.speed_dial_turn_on_contacts_permission);
+ emptyContentView.setDescription(R.string.speed_dial_contacts_permission_description);
+ emptyContentView.setActionClickedListener(
+ new SpeedDialContactPermissionEmptyViewListener(getContext(), this));
+ return true;
+ }
+
+ private void maybeShowNoContactsEmptyContentView() {
+ if (adapter.getItemCount() != 0) {
+ emptyContentView.setVisibility(View.GONE);
+ return;
+ }
+
+ emptyContentView.setVisibility(View.VISIBLE);
+ emptyContentView.setActionLabel(R.string.speed_dial_no_contacts_action_text);
+ emptyContentView.setDescription(R.string.speed_dial_no_contacts_description);
+ emptyContentView.setActionClickedListener(new SpeedDialNoContactsEmptyViewListener(this));
+ }
+
@Override
public void onStart() {
super.onStart();
PermissionsUtil.registerPermissionReceiver(
getActivity(), readContactsPermissionGrantedReceiver, Manifest.permission.READ_CONTACTS);
- getContext()
- .getContentResolver()
- .registerContentObserver(Contacts.CONTENT_STREQUENT_URI, true, strequentsContentObserver);
+ if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
+ getContext()
+ .getContentResolver()
+ .registerContentObserver(Contacts.CONTENT_STREQUENT_URI, true, strequentsContentObserver);
+ }
}
@Override
@@ -559,13 +583,13 @@ public class SpeedDialFragment extends Fragment {
}
}
- private static final class SpeedDialEmptyContentViewClickedListener
+ private static final class SpeedDialContactPermissionEmptyViewListener
implements OnEmptyViewActionButtonClickedListener {
private final Context context;
private final Fragment fragment;
- private SpeedDialEmptyContentViewClickedListener(Context context, Fragment fragment) {
+ private SpeedDialContactPermissionEmptyViewListener(Context context, Fragment fragment) {
this.context = context;
this.fragment = fragment;
}
@@ -583,6 +607,22 @@ public class SpeedDialFragment extends Fragment {
}
}
+ private static final class SpeedDialNoContactsEmptyViewListener
+ implements OnEmptyViewActionButtonClickedListener {
+
+ private final Fragment fragment;
+
+ SpeedDialNoContactsEmptyViewListener(Fragment fragment) {
+ this.fragment = fragment;
+ }
+
+ @Override
+ public void onEmptyViewActionButtonClicked() {
+ Intent intent = new Intent(Intent.ACTION_PICK, Phone.CONTENT_URI);
+ fragment.startActivityForResult(intent, ActivityRequestCodes.SPEED_DIAL_ADD_FAVORITE);
+ }
+ }
+
/** Listener for when a SpeedDialUiItem is updated. */
private class UpdateSpeedDialAdapterListener {