diff options
author | Andrew Lee <anwlee@google.com> | 2015-10-20 21:20:49 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-10-20 21:20:49 +0000 |
commit | b2ae1410907a622c59175f821d07d3c936b2882c (patch) | |
tree | 198a42611fdeb361d452d880a9c03e532d1e2d12 | |
parent | 87013734468f26070c2b07bf6d98ba4500abccd7 (diff) | |
parent | b980fc4386cdc24a605fc682d0fef0c5dc54c327 (diff) |
Merge "Add setting for hiding blocked calls." into ub-contactsdialer-a-dev
-rw-r--r-- | res/layout/blocked_number_fragment.xml | 30 | ||||
-rw-r--r-- | res/layout/blocked_number_header.xml | 6 | ||||
-rw-r--r-- | res/values/strings.xml | 6 | ||||
-rw-r--r-- | res/values/styles.xml | 7 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/CallLogAdapter.java | 7 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/CallLogFragment.java | 11 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/CallLogQueryHandler.java | 13 | ||||
-rw-r--r-- | src/com/android/dialer/filterednumber/BlockedNumberFragment.java | 15 | ||||
-rw-r--r-- | src/com/android/dialer/filterednumber/FilteredNumbersUtil.java | 21 |
9 files changed, 105 insertions, 11 deletions
diff --git a/res/layout/blocked_number_fragment.xml b/res/layout/blocked_number_fragment.xml index bb4b7f20f..906e8a10c 100644 --- a/res/layout/blocked_number_fragment.xml +++ b/res/layout/blocked_number_fragment.xml @@ -25,6 +25,36 @@ <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + card_view:cardCornerRadius="0dp"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center_vertical" + android:padding="16dp" + android:paddingEnd="8dp"> + + <TextView + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/blocked_call_settings_hide_setting" + style="@style/BlockedNumbersDescriptionTextStyle" /> + + <Switch android:id="@+id/hide_blocked_calls_switch" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="40dp" /> + + </LinearLayout> + + </android.support.v7.widget.CardView> + + <android.support.v7.widget.CardView + android:layout_width="match_parent" + android:layout_height="wrap_content" card_view:cardCornerRadius="0dp"> <LinearLayout diff --git a/res/layout/blocked_number_header.xml b/res/layout/blocked_number_header.xml index 39f532281..e16efbcf4 100644 --- a/res/layout/blocked_number_header.xml +++ b/res/layout/blocked_number_header.xml @@ -33,11 +33,9 @@ android:layout_height="wrap_content" android:text="@string/blocked_call_settings_import_description" android:textSize="@dimen/blocked_number_settings_description_text_size" - android:lineSpacingMultiplier="1.2" - android:paddingTop="8dp" - android:paddingBottom="8dp" android:paddingStart="@dimen/blocked_number_container_padding" - android:paddingEnd="@dimen/blocked_number_container_padding" /> + android:paddingEnd="@dimen/blocked_number_container_padding" + style="@style/BlockedNumbersDescriptionTextStyle" /> <Button android:id="@+id/import_button" android:layout_width="wrap_content" diff --git a/res/values/strings.xml b/res/values/strings.xml index 0b7d82c61..333a99be4 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -833,6 +833,12 @@ You previously marked some callers to be automatically sent to voicemail via other apps. </string> + <!-- Text for a setting to hide blocked calls and automatically delete voicemail from block + numbers. [CHAR LIMIT=NONE] --> + <string name="blocked_call_settings_hide_setting"> + Hide calls and delete voicemails from blocked numbers. + </string> + <!-- Label for button to view numbers of contacts previous marked to be sent to voicemail. [CHAR_LIMIT=20] --> <string name="blocked_call_settings_view_numbers_button">View Numbers</string> diff --git a/res/values/styles.xml b/res/values/styles.xml index 7828a20f1..533b88edd 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -324,4 +324,11 @@ <item name="android:paddingStart">@dimen/button_horizontal_padding</item> <item name="android:textColor">@color/dialer_flat_button_text_color</item> </style> + + <style name="BlockedNumbersDescriptionTextStyle"> + <item name="android:lineSpacingMultiplier">1.2</item> + <item name="android:paddingTop">8dp</item> + <item name="android:paddingBottom">8dp</item> + <item name="android:textSize">@dimen/blocked_number_settings_description_text_size</item> + </style> </resources> diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java index 0ee7e935d..3dccf27bb 100644 --- a/src/com/android/dialer/calllog/CallLogAdapter.java +++ b/src/com/android/dialer/calllog/CallLogAdapter.java @@ -260,10 +260,11 @@ public class CallLogAdapter extends GroupingListAdapter mCallLogListItemHelper = new CallLogListItemHelper(phoneCallDetailsHelper, resources, mTelecomCallLogCache); mCallLogGroupBuilder = new CallLogGroupBuilder(this); - mPrefs = PreferenceManager.getDefaultSharedPreferences(context); - maybeShowVoicemailPromoCard(); mFilteredNumberAsyncQueryHandler = new FilteredNumberAsyncQueryHandler(mContext.getContentResolver()); + + mPrefs = PreferenceManager.getDefaultSharedPreferences(context); + maybeShowVoicemailPromoCard(); } public void onSaveInstanceState(Bundle outState) { @@ -306,7 +307,7 @@ public class CallLogAdapter extends GroupingListAdapter mBlockedIdCache.clear(); } - public void startCache() { + public void onResume() { if (PermissionsUtil.hasPermission(mContext, android.Manifest.permission.READ_CONTACTS)) { mContactInfoCache.start(); } diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java index dff213bce..369730d96 100644 --- a/src/com/android/dialer/calllog/CallLogFragment.java +++ b/src/com/android/dialer/calllog/CallLogFragment.java @@ -42,6 +42,7 @@ import android.view.ViewGroup; import com.android.contacts.common.GeoUtil; import com.android.contacts.common.util.PermissionsUtil; import com.android.dialer.R; +import com.android.dialer.filterednumber.FilteredNumbersUtil; import com.android.dialer.util.EmptyLoader; import com.android.dialer.voicemail.VoicemailPlaybackPresenter; import com.android.dialer.widget.EmptyContentView; @@ -124,6 +125,7 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis private boolean mRefreshDataRequired = true; private boolean mHasReadCallLogPermission = false; + private boolean mShouldHideBlockedCalls = false; // Exactly same variable is in Fragment as a package private. private boolean mMenuVisible = true; @@ -209,6 +211,8 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis resolver.registerContentObserver(Status.CONTENT_URI, true, mVoicemailStatusObserver); setHasOptionsMenu(true); + mShouldHideBlockedCalls = FilteredNumbersUtil.shouldHideBlockedCalls(getActivity()); + if (mCallTypeFilter == Calls.VOICEMAIL_TYPE) { mVoicemailPlaybackPresenter = VoicemailPlaybackPresenter .getInstance(activity, state); @@ -339,9 +343,14 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis mRefreshDataRequired = true; updateEmptyMessage(mCallTypeFilter); } + if (mShouldHideBlockedCalls != FilteredNumbersUtil.shouldHideBlockedCalls(getActivity())) { + mShouldHideBlockedCalls = !mShouldHideBlockedCalls; + mRefreshDataRequired = true; + } + mHasReadCallLogPermission = hasReadCallLogPermission; refreshData(); - mAdapter.startCache(); + mAdapter.onResume(); rescheduleDisplayUpdate(); diff --git a/src/com/android/dialer/calllog/CallLogQueryHandler.java b/src/com/android/dialer/calllog/CallLogQueryHandler.java index 81e49d2d4..01489c1dc 100644 --- a/src/com/android/dialer/calllog/CallLogQueryHandler.java +++ b/src/com/android/dialer/calllog/CallLogQueryHandler.java @@ -36,6 +36,7 @@ import android.util.Log; import com.android.contacts.common.database.NoNullCursorAsyncQueryHandler; import com.android.contacts.common.util.PermissionsUtil; +import com.android.dialer.filterednumber.FilteredNumbersUtil; import com.android.dialer.util.AppCompatConstants; import com.android.dialer.util.TelecomUtil; import com.android.dialer.voicemail.VoicemailStatusHelperImpl; @@ -177,7 +178,7 @@ public class CallLogQueryHandler extends NoNullCursorAsyncQueryHandler { if (callType > CALL_TYPE_ALL) { where.append(" AND "); - where.append(String.format("(%s = ?)", Calls.TYPE)); + where.append("(" + Calls.TYPE + " = ?)"); selectionArgs.add(Integer.toString(callType)); } else { where.append(" AND NOT "); @@ -186,10 +187,18 @@ public class CallLogQueryHandler extends NoNullCursorAsyncQueryHandler { if (newerThan > 0) { where.append(" AND "); - where.append(String.format("(%s > ?)", Calls.DATE)); + where.append("(" + Calls.DATE + " > ?)"); selectionArgs.add(Long.toString(newerThan)); } + final boolean shouldHideBlockedCalls = + FilteredNumbersUtil.shouldHideBlockedCalls(mContext); + if (shouldHideBlockedCalls) { + where.append(" AND "); + where.append("(" + Calls.TYPE + " != ?)"); + selectionArgs.add(Integer.toString(AppCompatConstants.CALLS_BLOCKED_TYPE)); + } + final int limit = (mLogLimit == -1) ? NUM_LOGS_TO_DISPLAY : mLogLimit; final String selection = where.length() > 0 ? where.toString() : null; Uri uri = TelecomUtil.getCallLogUri(mContext).buildUpon() diff --git a/src/com/android/dialer/filterednumber/BlockedNumberFragment.java b/src/com/android/dialer/filterednumber/BlockedNumberFragment.java index 43f734d8d..728d8b287 100644 --- a/src/com/android/dialer/filterednumber/BlockedNumberFragment.java +++ b/src/com/android/dialer/filterednumber/BlockedNumberFragment.java @@ -22,6 +22,8 @@ import android.content.Intent; import android.content.Loader; import android.database.Cursor; import android.os.Bundle; +import android.widget.CompoundButton; +import android.widget.Switch; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -36,6 +38,7 @@ public class BlockedNumberFragment extends ListFragment implements private BlockedNumberAdapter mAdapter; + private Switch mHideSettingSwitch; private View mImportSettings; private View mImportButton; @@ -49,7 +52,13 @@ public class BlockedNumberFragment extends ListFragment implements } setListAdapter(mAdapter); - getActivity().findViewById(R.id.add_number_button).setOnClickListener(this); + mHideSettingSwitch = (Switch) getActivity().findViewById(R.id.hide_blocked_calls_switch); + mHideSettingSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + FilteredNumbersUtil.setShouldHideBlockedCalls(getActivity(), isChecked); + } + }); mImportSettings = getActivity().findViewById(R.id.import_settings); mImportButton = getActivity().findViewById(R.id.import_button); @@ -65,6 +74,8 @@ public class BlockedNumberFragment extends ListFragment implements }); } }); + + getActivity().findViewById(R.id.add_number_button).setOnClickListener(this); } @Override @@ -91,6 +102,8 @@ public class BlockedNumberFragment extends ListFragment implements mImportSettings.setVisibility(visibility); } }); + + mHideSettingSwitch.setChecked(FilteredNumbersUtil.shouldHideBlockedCalls(getActivity())); } @Override diff --git a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java index 68f262cf9..0e162acfa 100644 --- a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java +++ b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java @@ -19,6 +19,7 @@ import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.os.AsyncTask; +import android.preference.PreferenceManager; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Data; @@ -42,6 +43,8 @@ import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns; */ public class FilteredNumbersUtil { + private static final String HIDE_BLOCKED_CALLS_PREF_KEY = "hide_blocked_calls"; + public interface CheckForSendToVoicemailContactListener { public void onComplete(boolean hasSendToVoicemailContact); } @@ -213,6 +216,24 @@ public class FilteredNumbersUtil { return isBlocked; } + public static boolean shouldHideBlockedCalls(Context context) { + if (context == null) { + return false; + } + return PreferenceManager.getDefaultSharedPreferences(context) + .getBoolean(FilteredNumbersUtil.HIDE_BLOCKED_CALLS_PREF_KEY, false); + } + + public static void setShouldHideBlockedCalls(Context context, boolean shouldHide) { + if (context == null) { + return; + } + PreferenceManager.getDefaultSharedPreferences(context) + .edit() + .putBoolean(FilteredNumbersUtil.HIDE_BLOCKED_CALLS_PREF_KEY, shouldHide) + .apply(); + } + public static boolean canBlockNumber(Context context, String number) { if (PhoneNumberUtils.isEmergencyNumber(number)) { return false; |