| package com.android.dialer.calllog; |
| |
| import android.app.Activity; |
| import android.app.FragmentManager; |
| import android.content.ContentValues; |
| import android.content.DialogInterface; |
| import android.net.Uri; |
| import android.support.v7.widget.RecyclerView; |
| |
| import com.android.dialer.util.BlockReportSpamDialogs; |
| import com.android.dialer.database.FilteredNumberAsyncQueryHandler; |
| import com.android.dialer.service.ExtendedCallInfoService; |
| |
| /** |
| * Listener to show dialogs for block and report spam actions. |
| */ |
| public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClickListener { |
| |
| private final FragmentManager mFragmentManager; |
| private final RecyclerView.Adapter mAdapter; |
| private final ExtendedCallInfoService mExtendedCallInfoService; |
| private final FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler; |
| |
| public BlockReportSpamListener(FragmentManager fragmentManager, RecyclerView.Adapter adapter, |
| ExtendedCallInfoService extendedCallInfoService, |
| FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler) { |
| mFragmentManager = fragmentManager; |
| mAdapter = adapter; |
| mExtendedCallInfoService = extendedCallInfoService; |
| mFilteredNumberAsyncQueryHandler = filteredNumberAsyncQueryHandler; |
| } |
| |
| @Override |
| public void onBlockReportSpam(String displayNumber, final String number, |
| final String countryIso, final int callType) { |
| BlockReportSpamDialogs.BlockReportSpamDialogFragment.newInstance( |
| displayNumber, |
| false, |
| new BlockReportSpamDialogs.OnSpamDialogClickListener() { |
| @Override |
| public void onClick(boolean isSpamChecked) { |
| if (isSpamChecked) { |
| mExtendedCallInfoService.reportSpam( |
| number, countryIso, callType, |
| ExtendedCallInfoService.REPORTING_LOCATION_CALL_LOG_HISTORY); |
| } |
| mFilteredNumberAsyncQueryHandler.blockNumber( |
| new FilteredNumberAsyncQueryHandler.OnBlockNumberListener() { |
| @Override |
| public void onBlockComplete(Uri uri) { |
| mAdapter.notifyDataSetChanged(); |
| } |
| }, |
| number, |
| countryIso); |
| } |
| }, null) |
| .show(mFragmentManager, BlockReportSpamDialogs.BLOCK_REPORT_SPAM_DIALOG_TAG); |
| } |
| |
| @Override |
| public void onBlock(String displayNumber, final String number, final String countryIso, |
| final int callType) { |
| BlockReportSpamDialogs.BlockDialogFragment.newInstance(displayNumber, |
| new BlockReportSpamDialogs.OnConfirmListener() { |
| @Override |
| public void onClick() { |
| mExtendedCallInfoService.reportSpam(number, countryIso, callType, |
| ExtendedCallInfoService.REPORTING_LOCATION_CALL_LOG_HISTORY); |
| mFilteredNumberAsyncQueryHandler.blockNumber( |
| new FilteredNumberAsyncQueryHandler.OnBlockNumberListener() { |
| @Override |
| public void onBlockComplete(Uri uri) { |
| mAdapter.notifyDataSetChanged(); |
| } |
| }, |
| number, |
| countryIso); |
| } |
| }, null) |
| .show(mFragmentManager, BlockReportSpamDialogs.BLOCK_DIALOG_TAG); |
| } |
| |
| @Override |
| public void onUnblock(String displayNumber, final String number, final String countryIso, |
| final Integer blockId, final boolean isSpam, final int callType) { |
| BlockReportSpamDialogs.UnblockDialogFragment.newInstance(displayNumber, isSpam, |
| new BlockReportSpamDialogs.OnConfirmListener() { |
| @Override |
| public void onClick() { |
| if (isSpam) { |
| mExtendedCallInfoService.reportNotSpam( |
| number, countryIso, callType, |
| ExtendedCallInfoService.REPORTING_LOCATION_CALL_LOG_HISTORY); |
| } |
| mFilteredNumberAsyncQueryHandler.unblock( |
| new FilteredNumberAsyncQueryHandler.OnUnblockNumberListener() { |
| @Override |
| public void onUnblockComplete(int rows, ContentValues values) { |
| mAdapter.notifyDataSetChanged(); |
| } |
| }, |
| blockId); |
| } |
| }, null) |
| .show(mFragmentManager, BlockReportSpamDialogs.UNBLOCK_DIALOG_TAG); |
| } |
| |
| @Override |
| public void onReportNotSpam(String displayNumber, final String number, final String countryIso, |
| final int callType) { |
| BlockReportSpamDialogs.ReportNotSpamDialogFragment.newInstance(displayNumber, |
| new BlockReportSpamDialogs.OnConfirmListener() { |
| @Override |
| public void onClick() { |
| mExtendedCallInfoService.reportNotSpam( |
| number, countryIso, callType, |
| ExtendedCallInfoService.REPORTING_LOCATION_CALL_LOG_HISTORY); |
| mAdapter.notifyDataSetChanged(); |
| } |
| }, null) |
| .show(mFragmentManager, BlockReportSpamDialogs.NOT_SPAM_DIALOG_TAG); |
| } |
| } |