Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7646e217 authored by uabdullah's avatar uabdullah Committed by android-build-merger
Browse files

Merge changes I9ab50a7a,I8a57b632

am: 37434b49

Change-Id: I3aa03e8a1b17aff9679200f20edd181d6d722a44
parents ba875505 37434b49
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -28,13 +28,13 @@ import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
import com.android.dialer.common.concurrent.DialerExecutorComponent;
import com.android.dialer.common.database.Selection;
import com.android.dialer.contactactions.ContactActionModule;
import com.android.dialer.historyitemactions.HistoryItemActionModule;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;

/** {@link ContactActionModule} for deleting a call log item in the new call log. */
public final class DeleteCallLogItemModule implements ContactActionModule {
/** {@link HistoryItemActionModule} for deleting a call log item in the new call log. */
public final class DeleteCallLogItemModule implements HistoryItemActionModule {
  private static final String TAG = DeleteCallLogItemModule.class.getName();

  private final Context context;
+61 −47
Original line number Diff line number Diff line
@@ -25,36 +25,42 @@ import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.calllog.model.CoalescedRow;
import com.android.dialer.calllogutils.CallLogContactTypes;
import com.android.dialer.calllogutils.PhoneNumberDisplayUtil;
import com.android.dialer.contactactions.ContactActionModule;
import com.android.dialer.contactactions.DividerModule;
import com.android.dialer.contactactions.IntentModule;
import com.android.dialer.contactactions.SharedModules;
import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.historyitemactions.DividerModule;
import com.android.dialer.historyitemactions.HistoryItemActionModule;
import com.android.dialer.historyitemactions.IntentModule;
import com.android.dialer.historyitemactions.SharedModules;
import com.android.dialer.logging.ReportingLocation;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import com.android.dialer.telecom.TelecomUtil;
import com.google.common.base.Optional;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Configures the modules for the bottom sheet; these are the rows below the top row (primary
 * action) in the bottom sheet.
 */
@SuppressWarnings("Guava")
final class Modules {

  static List<ContactActionModule> fromRow(Context context, CoalescedRow row) {
  static List<HistoryItemActionModule> fromRow(Context context, CoalescedRow row) {
    // Conditionally add each module, which are items in the bottom sheet's menu.
    List<ContactActionModule> modules = new ArrayList<>();
    List<HistoryItemActionModule> modules = new ArrayList<>();

    String normalizedNumber = row.number().getNormalizedNumber();
    boolean canPlaceCalls =
        PhoneNumberHelper.canPlaceCallsTo(normalizedNumber, row.numberPresentation());

    if (canPlaceCalls) {
      addModuleForCalls(context, modules, row, normalizedNumber);
      SharedModules.maybeAddModuleForSendingTextMessage(
          context, modules, normalizedNumber, row.numberAttributes().getIsBlocked());
      modules.addAll(createModulesForCalls(context, row, normalizedNumber));
      Optional<HistoryItemActionModule> moduleForSendingTextMessage =
          SharedModules.createModuleForSendingTextMessage(
              context, normalizedNumber, row.numberAttributes().getIsBlocked());
      if (moduleForSendingTextMessage.isPresent()) {
        modules.add(moduleForSendingTextMessage.get());
      }
    }

    if (!modules.isEmpty()) {
@@ -65,45 +71,52 @@ final class Modules {
    // TODO(zachh): Module for CallComposer.

    if (canPlaceCalls) {
      SharedModules.maybeAddModuleForAddingToContacts(
      Optional<HistoryItemActionModule> moduleForAddingToContacts =
          SharedModules.createModuleForAddingToContacts(
              context,
          modules,
              row.number(),
              row.numberAttributes().getName(),
              row.numberAttributes().getLookupUri(),
              row.numberAttributes().getIsBlocked(),
              row.numberAttributes().getIsSpam());
      SharedModules.addModulesHandlingBlockedOrSpamNumber(
      if (moduleForAddingToContacts.isPresent()) {
        modules.add(moduleForAddingToContacts.get());
      }

      modules.addAll(
          SharedModules.createModulesHandlingBlockedOrSpamNumber(
              context,
          modules,
              row.number().getNormalizedNumber(),
              row.number().getCountryIso(),
              row.callType(),
              row.numberAttributes().getIsBlocked(),
              row.numberAttributes().getIsSpam(),
          ReportingLocation.Type.CALL_LOG_HISTORY);
      SharedModules.maybeAddModuleForCopyingNumber(context, modules, normalizedNumber);
              ReportingLocation.Type.CALL_LOG_HISTORY));

      Optional<HistoryItemActionModule> moduleForCopyingNumber =
          SharedModules.createModuleForCopyingNumber(context, normalizedNumber);
      if (moduleForCopyingNumber.isPresent()) {
        modules.add(moduleForCopyingNumber.get());
      }
    }

    // TODO(zachh): Revisit if DialerContact is the best thing to pass to CallDetails; could
    // it use a ContactPrimaryActionInfo instead?
    addModuleForAccessingCallDetails(context, modules, row);
    // it use a HistoryItemPrimaryActionInfo instead?
    modules.add(createModuleForAccessingCallDetails(context, row));

    modules.add(new DeleteCallLogItemModule(context, row.coalescedIds()));

    return modules;
  }

  private static void addModuleForCalls(
      Context context,
      List<ContactActionModule> modules,
      CoalescedRow row,
      String normalizedNumber) {
  private static List<HistoryItemActionModule> createModulesForCalls(
      Context context, CoalescedRow row, String normalizedNumber) {
    // Don't add call options if a number is blocked.
    if (row.numberAttributes().getIsBlocked()) {
      return;
      return Collections.emptyList();
    }

    List<HistoryItemActionModule> modules = new ArrayList<>();
    PhoneAccountHandle phoneAccountHandle =
        TelecomUtil.composePhoneAccountHandle(
            row.phoneAccountComponentName(), row.phoneAccountId());
@@ -123,15 +136,16 @@ final class Modules {

    // TODO(zachh): Also show video option if the call log entry is for an audio call but video
    // capabilities are present?

    return modules;
  }

  private static void addModuleForAccessingCallDetails(
      Context context, List<ContactActionModule> modules, CoalescedRow row) {
  private static HistoryItemActionModule createModuleForAccessingCallDetails(
      Context context, CoalescedRow row) {
    boolean canReportAsInvalidNumber = row.numberAttributes().getCanReportAsInvalidNumber();
    boolean canSupportAssistedDialing = !TextUtils.isEmpty(row.numberAttributes().getLookupUri());

    modules.add(
        new IntentModule(
    return new IntentModule(
        context,
        CallDetailsActivity.newInstance(
            context,
@@ -140,7 +154,7 @@ final class Modules {
            canReportAsInvalidNumber,
            canSupportAssistedDialing),
        R.string.call_details_menu_label,
            R.drawable.quantum_ic_info_outline_vd_theme_24));
        R.drawable.quantum_ic_info_outline_vd_theme_24);
  }

  private static DialerContact createDialerContactFromRow(Context context, CoalescedRow row) {
+2 −2
Original line number Diff line number Diff line
@@ -22,8 +22,8 @@ import android.view.View;
import com.android.dialer.calllog.CallLogComponent;
import com.android.dialer.calllog.model.CoalescedRow;
import com.android.dialer.common.concurrent.DefaultFutureCallback;
import com.android.dialer.contactactions.ContactActionBottomSheet;
import com.android.dialer.glidephotomanager.GlidePhotoManager;
import com.android.dialer.historyitemactions.HistoryItemActionBottomSheet;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.MoreExecutors;

@@ -34,7 +34,7 @@ public final class NewCallLogMenu {
  public static View.OnClickListener createOnClickListener(
      Context context, CoalescedRow row, GlidePhotoManager glidePhotoManager) {
    return view -> {
      ContactActionBottomSheet.show(
      HistoryItemActionBottomSheet.show(
          context,
          PrimaryAction.fromRow(context, row),
          Modules.fromRow(context, row),
+3 −3
Original line number Diff line number Diff line
@@ -22,14 +22,14 @@ import com.android.dialer.calllog.model.CoalescedRow;
import com.android.dialer.calllogutils.CallLogEntryText;
import com.android.dialer.calllogutils.CallLogIntents;
import com.android.dialer.calllogutils.NumberAttributesConverter;
import com.android.dialer.contactactions.ContactPrimaryActionInfo;
import com.android.dialer.historyitemactions.HistoryItemPrimaryActionInfo;

/** Configures the primary action row (top row) for the bottom sheet. */
final class PrimaryAction {

  static ContactPrimaryActionInfo fromRow(Context context, CoalescedRow row) {
  static HistoryItemPrimaryActionInfo fromRow(Context context, CoalescedRow row) {
    CharSequence primaryText = CallLogEntryText.buildPrimaryText(context, row);
    return ContactPrimaryActionInfo.builder()
    return HistoryItemPrimaryActionInfo.builder()
        .setNumber(row.number())
        .setPhotoInfo(
            NumberAttributesConverter.toPhotoInfoBuilder(row.numberAttributes())
+1 −1
Original line number Diff line number Diff line
@@ -13,4 +13,4 @@
 ~ See the License for the specific language governing permissions and
 ~ limitations under the License
 -->
<manifest package="com.android.dialer.contactactions"/>
<manifest package="com.android.dialer.historyitemactions"/>
Loading