diff options
Diffstat (limited to 'src/com/android/dialer/calllog/BlockReportSpamListener.java')
-rw-r--r-- | src/com/android/dialer/calllog/BlockReportSpamListener.java | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/src/com/android/dialer/calllog/BlockReportSpamListener.java b/src/com/android/dialer/calllog/BlockReportSpamListener.java new file mode 100644 index 000000000..92cbc804b --- /dev/null +++ b/src/com/android/dialer/calllog/BlockReportSpamListener.java @@ -0,0 +1,124 @@ +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); + } +} |