blob: 92cbc804b3770129908f735605159d267654e3a7 [file] [log] [blame]
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);
}
}