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

Commit b1dff5e8 authored by Garik Badalyan's avatar Garik Badalyan
Browse files

Fix the dial string to include the + sign added by user for VT call

- The smart dial search normalizes the dial string and removes
  anything other than digits

- Add a fix to add the + sign back to the normalized string
  if original typed number had a + sign

- Add a check for prohibited numbers before making a call
  and display an error dialog

Change-Id: Ib36462be573ce4fecc8821980226ae2920041cd2
parent 7f768367
Loading
Loading
Loading
Loading
+36 −4
Original line number Diff line number Diff line
@@ -16,10 +16,12 @@
package com.android.dialer.list;

import android.app.Activity;
import android.app.DialogFragment;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.animation.Interpolator;
import android.widget.AbsListView;
@@ -32,12 +34,14 @@ import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
import com.android.contacts.common.list.PhoneNumberPickerFragment;
import com.android.contacts.common.util.ViewUtil;
import com.android.contacts.commonbind.analytics.AnalyticsUtil;
import com.android.dialer.dialpad.DialpadFragment.ErrorDialogFragment;
import com.android.dialer.DialtactsActivity;
import com.android.dialer.R;
import com.android.dialer.util.DialerUtils;
import com.android.phone.common.animation.AnimUtils;

public class SearchFragment extends PhoneNumberPickerFragment {
    private static final String TAG = "SearchFragment";

    private OnListFragmentScrolledListener mActivityScrollListener;

@@ -137,6 +141,32 @@ public class SearchFragment extends PhoneNumberPickerFragment {
        mAddToContactNumber = addToContactNumber;
    }

    /**
     * Return true if phone number is prohibited by a value -
     * (R.string.config_prohibited_phone_number_regexp) in the config files. False otherwise.
     */
    public boolean checkForProhibitedPhoneNumber(String number) {
        // Regular expression prohibiting manual phone call. Can be empty i.e. "no rule".
        String prohibitedPhoneNumberRegexp = getResources().getString(
            R.string.config_prohibited_phone_number_regexp);

        // "persist.radio.otaspdial" is a temporary hack needed for one carrier's automated
        // test equipment.
        if (number != null
                && !TextUtils.isEmpty(prohibitedPhoneNumberRegexp)
                && number.matches(prohibitedPhoneNumberRegexp)) {
            Log.d(TAG, "The phone number is prohibited explicitly by a rule.");
            if (getActivity() != null) {
                DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
                        R.string.dialog_phone_call_prohibited_message);
                dialogFragment.show(getFragmentManager(), "phone_prohibited_dialog");
            }

            return true;
        }
        return false;
    }

    @Override
    protected ContactEntryListAdapter createListAdapter() {
        DialerPhoneNumberListAdapter adapter = new DialerPhoneNumberListAdapter(getActivity());
@@ -151,14 +181,16 @@ public class SearchFragment extends PhoneNumberPickerFragment {
        final int shortcutType = adapter.getShortcutTypeFromPosition(position);
        final OnPhoneNumberPickerActionListener listener;

        boolean ret = checkForProhibitedPhoneNumber(mAddToContactNumber);

        switch (shortcutType) {
            case DialerPhoneNumberListAdapter.SHORTCUT_INVALID:
                super.onItemClick(position, id);
                break;
            case DialerPhoneNumberListAdapter.SHORTCUT_DIRECT_CALL:
                listener = getOnPhoneNumberPickerListener();
                if (listener != null) {
                    listener.onCallNumberDirectly(getQueryString());
                if (listener != null && !ret) {
                    listener.onCallNumberDirectly(mAddToContactNumber);
                }
                break;
            case DialerPhoneNumberListAdapter.SHORTCUT_ADD_NUMBER_TO_CONTACTS:
@@ -170,8 +202,8 @@ public class SearchFragment extends PhoneNumberPickerFragment {
                break;
            case DialerPhoneNumberListAdapter.SHORTCUT_MAKE_VIDEO_CALL:
                listener = getOnPhoneNumberPickerListener();
                if (listener != null) {
                    listener.onCallNumberDirectly(getQueryString(), true /* isVideoCall */);
                if (listener != null && !ret) {
                    listener.onCallNumberDirectly(mAddToContactNumber, true /* isVideoCall */);
                }
                break;
        }