From 257368c2dff97da3b9be7653190699b5686e1b56 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Mon, 12 Oct 2015 15:04:13 -0700 Subject: Implement behavior for import settings visibility. Check to see if there are any contacts being sent to voicemail. If true, show the import settings in the BlockedNumberFragment, otherwise hide those settings. Bug: 23351616 Change-Id: I370d80508571ac654d8c10afab332b552f8dd99e --- .../filterednumber/BlockedNumberFragment.java | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'src/com/android') diff --git a/src/com/android/dialer/filterednumber/BlockedNumberFragment.java b/src/com/android/dialer/filterednumber/BlockedNumberFragment.java index e12fd6b38..5740305f7 100644 --- a/src/com/android/dialer/filterednumber/BlockedNumberFragment.java +++ b/src/com/android/dialer/filterednumber/BlockedNumberFragment.java @@ -21,7 +21,9 @@ import android.content.CursorLoader; import android.content.Intent; import android.content.Loader; import android.database.Cursor; +import android.os.AsyncTask; import android.os.Bundle; +import android.provider.ContactsContract.Contacts; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -32,7 +34,16 @@ import com.android.dialer.database.FilteredNumberContract; public class BlockedNumberFragment extends ListFragment implements LoaderManager.LoaderCallbacks, View.OnClickListener { + private static class SendToVoicemailContactQuery { + static final String[] PROJECTION = { + Contacts._ID + }; + + static final String SELECT_SEND_TO_VOICEMAIL_TRUE = Contacts.SEND_TO_VOICEMAIL + "=1"; + } + private BlockedNumberAdapter mAdapter; + private View mImportSettings; @Override public void onActivityCreated(Bundle savedInstanceState) { @@ -47,6 +58,8 @@ public class BlockedNumberFragment extends ListFragment implements getActivity().findViewById(R.id.add_number_button).setOnClickListener(this); getListView().getEmptyView().findViewById(R.id.add_number_button).setOnClickListener(this); + + mImportSettings = getActivity().findViewById(R.id.importsettings); } @Override @@ -61,6 +74,12 @@ public class BlockedNumberFragment extends ListFragment implements getLoaderManager().initLoader(0, null, this); } + @Override + public void onResume() { + super.onResume(); + checkForSendToVoicemailContact(); + } + @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -102,4 +121,44 @@ public class BlockedNumberFragment extends ListFragment implements manageBlockedNumbersActivity.enterSearchUi(); } } + + /** + * Checks if there exists a contact with {@code Contacts.SEND_TO_VOICEMAIL} set to true, + * and updates the visibility of the import settings buttons accordingly. + */ + private void checkForSendToVoicemailContact() { + final AsyncTask task = new AsyncTask() { + @Override + public Boolean doInBackground(Object[] params) { + if (getActivity() == null) { + return false; + } + + final Cursor cursor = getActivity().getContentResolver().query( + Contacts.CONTENT_URI, + SendToVoicemailContactQuery.PROJECTION, + SendToVoicemailContactQuery.SELECT_SEND_TO_VOICEMAIL_TRUE, + null, + null); + + boolean hasSendToVoicemailContacts = false; + if (cursor != null) { + try { + hasSendToVoicemailContacts = cursor.getCount() > 0; + } finally { + cursor.close(); + } + } + + return hasSendToVoicemailContacts; + } + + @Override + public void onPostExecute(Boolean hasSendToVoicemailContact) { + final int visibility = hasSendToVoicemailContact ? View.VISIBLE : View.GONE; + mImportSettings.setVisibility(visibility); + } + }; + task.execute(); + } } -- cgit v1.2.3