1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.dialer.service; 18 19 import android.support.annotation.Nullable; 20 import android.view.View; 21 import android.view.ViewStub; 22 import android.widget.QuickContactBadge; 23 import android.widget.TextView; 24 25 import java.util.List; 26 27 /** 28 * Interface responsible for rendering spam buttons. 29 */ 30 public interface ExtendedBlockingButtonRenderer { 31 32 final class ViewHolderInfo { 33 34 public final List<View> completeListItemViews; 35 public final List<View> extendedBlockedViews; 36 public final List<View> blockedNumberViews; 37 public final String phoneNumber; 38 public final String countryIso; 39 public final String nameOrNumber; 40 public final String displayNumber; 41 ViewHolderInfo( List<View> completeListItemViews, List<View> extendedBlockedViews, List<View> blockedNumberViews, String phoneNumber, String countryIso, String nameOrNumber, String displayNumber)42 public ViewHolderInfo( 43 /* All existing views amongst the list item actions, even if invisible */ 44 List<View> completeListItemViews, 45 /* Views that should be seen if the number is in the blacklist */ 46 List<View> extendedBlockedViews, 47 /* Views that should be seen if the number is in the extended blacklist */ 48 List<View> blockedNumberViews, 49 String phoneNumber, 50 String countryIso, 51 String nameOrNumber, 52 String displayNumber) { 53 54 this.completeListItemViews = completeListItemViews; 55 this.extendedBlockedViews = extendedBlockedViews; 56 this.blockedNumberViews = blockedNumberViews; 57 this.phoneNumber = phoneNumber; 58 this.countryIso = countryIso; 59 this.nameOrNumber = nameOrNumber; 60 this.displayNumber = displayNumber; 61 } 62 } 63 64 interface Listener { onBlockedNumber(String number, @Nullable String countryIso)65 void onBlockedNumber(String number, @Nullable String countryIso); onUnblockedNumber(String number, @Nullable String countryIso)66 void onUnblockedNumber(String number, @Nullable String countryIso); 67 } 68 69 /** 70 * Renders buttons for a phone number. 71 */ render(ViewStub viewStub)72 void render(ViewStub viewStub); 73 setViewHolderInfo(ViewHolderInfo info)74 void setViewHolderInfo(ViewHolderInfo info); 75 76 /** 77 * Updates the photo and label for the given phone number and country iso. 78 * 79 * @param number Phone number for which the rendering occurs. 80 * @param countryIso Two-letter country code. 81 * @param badge {@link QuickContactBadge} in which the photo should be rendered. 82 * @param view Textview that will hold the new label. 83 */ updatePhotoAndLabelIfNecessary( String number, String countryIso, QuickContactBadge badge, TextView view)84 void updatePhotoAndLabelIfNecessary( 85 String number, String countryIso, QuickContactBadge badge, TextView view); 86 } 87