Disable entries in CallingAccountSelector that are not selectable

This CL also unifies the disabled color for primary and secondary text.

The in call UI dialog will be implemented in a followup CL.

TEST=TAP
DEFAULT_VALUE_OK=no server.
Bug: 69675796,72618783
Test: TAP
PiperOrigin-RevId: 194147061
Change-Id: I5be5a45a7df09061a3bf391f6ae2a32d9c73b6e3
diff --git a/java/com/android/contacts/common/res/layout/select_account_list_item.xml b/java/com/android/contacts/common/res/layout/select_account_list_item.xml
index 84cb1fd..bf52d6f 100644
--- a/java/com/android/contacts/common/res/layout/select_account_list_item.xml
+++ b/java/com/android/contacts/common/res/layout/select_account_list_item.xml
@@ -54,6 +54,7 @@
         android:includeFontPadding="false"
         android:maxLines="1"
         android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textColor="@color/dialer_secondary_text_color"
         android:visibility="gone"/>
     <TextView
         android:id="@+id/hint"
@@ -62,6 +63,7 @@
         android:includeFontPadding="false"
         android:maxLines="1"
         android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textColor="@color/dialer_secondary_text_color"
         android:visibility="gone"/>
   </LinearLayout>
 
diff --git a/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java b/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
index e1fdd91..3ee21cc 100644
--- a/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
+++ b/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
@@ -57,7 +57,8 @@
  */
 public class SelectPhoneAccountDialogFragment extends DialogFragment {
 
-  private static final String ARG_OPTIONS = "options";
+  @VisibleForTesting public static final String ARG_OPTIONS = "options";
+
   private static final String ARG_IS_DEFAULT_CHECKED = "is_default_checked";
 
   private SelectPhoneAccountDialogOptions options =
@@ -221,18 +222,30 @@
     public void onDialogDismissed(@Nullable String callId) {}
   }
 
-  private static class SelectAccountListAdapter
+  static class SelectAccountListAdapter
       extends ArrayAdapter<SelectPhoneAccountDialogOptions.Entry> {
 
     private int mResId;
+    private final SelectPhoneAccountDialogOptions options;
 
     SelectAccountListAdapter(
         Context context, int resource, SelectPhoneAccountDialogOptions options) {
       super(context, resource, options.getEntriesList());
+      this.options = options;
       mResId = resource;
     }
 
     @Override
+    public boolean areAllItemsEnabled() {
+      return false;
+    }
+
+    @Override
+    public boolean isEnabled(int position) {
+      return options.getEntries(position).getEnabled();
+    }
+
+    @Override
     public View getView(int position, View convertView, ViewGroup parent) {
       LayoutInflater inflater =
           (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@@ -283,7 +296,10 @@
         holder.hintTextView.setVisibility(View.VISIBLE);
         holder.hintTextView.setText(entry.getHint());
       }
-
+      holder.labelTextView.setEnabled(entry.getEnabled());
+      holder.numberTextView.setEnabled(entry.getEnabled());
+      holder.hintTextView.setEnabled(entry.getEnabled());
+      holder.imageView.setImageAlpha(entry.getEnabled() ? 255 : 97 /* 38%*/);
       return rowView;
     }
 
@@ -297,7 +313,7 @@
       return info.get().getCountryIso().toUpperCase();
     }
 
-    private static final class ViewHolder {
+    static final class ViewHolder {
 
       TextView labelTextView;
       TextView numberTextView;
diff --git a/java/com/android/contacts/common/widget/select_phone_account_dialog_options.proto b/java/com/android/contacts/common/widget/select_phone_account_dialog_options.proto
index 9938f57..cc40c64 100644
--- a/java/com/android/contacts/common/widget/select_phone_account_dialog_options.proto
+++ b/java/com/android/contacts/common/widget/select_phone_account_dialog_options.proto
@@ -45,10 +45,10 @@
     // The hint to show under the phone account, for example showing the user
     // the account was selected frequently before.
     optional string hint = 3;
-    // Whether the account is actually selectable. Defaults to true Sometimes an
-    // account will be temporarily unusable, for example the user is already in
-    // a call so the other SIM cannot be used. Hint should also be set to inform
-    // the user why the account is unavailable.
-    optional bool enabled = 4;
+    // Whether the account is actually selectable. Defaults to true. Sometimes
+    // an account will be temporarily unusable, for example the user is already
+    // in a call so the other SIM cannot be used. Hint should also be set to
+    // inform the user why the account is unavailable.
+    optional bool enabled = 4 [default = true];
   }
 }
\ No newline at end of file
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
index c6c93ee..7cd2207 100644
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -12,7 +12,7 @@
   // Event enums to be used for Impression Logging in Dialer.
   // It's perfectly acceptable for this enum to be large
   // Values should be from 1000 to 100000.
-  // Next Tag: 1389
+  // Next Tag: 1392
   enum Type {
     UNKNOWN_AOSP_EVENT_TYPE = 1000;
 
@@ -626,7 +626,11 @@
     DUAL_SIM_SELECTION_NON_SUGGESTED_SIM_SELECTED = 1304;
     DUAL_SIM_SELECTION_PREFERRED_SET = 1305;
     DUAL_SIM_SELECTION_PREFERRED_USED = 1306;
+    DUAL_SIM_SELECTION_PREFERRED_NOT_SELECTABLE = 1389;
     DUAL_SIM_SELECTION_GLOBAL_USED = 1307;
+    DUAL_SIM_SELECTION_GLOBAL_NOT_SELECTABLE = 1390;
+    DUAL_SIM_SELECTION_SUGGESTION_AUTO_SELECTED = 1322;
+    DUAL_SIM_SELECTION_SUGGESTION_AUTO_NOT_SELECTABLE = 1391;
 
     DUO_CALL_LOG_SET_UP_INSTALL = 1308;
     DUO_CALL_LOG_SET_UP_ACTIVATE = 1309;
@@ -655,8 +659,6 @@
     // Drag bubble to bottom and end call
     BUBBLE_V2_BOTTOM_ACTION_END_CALL = 1321;
 
-    DUAL_SIM_SELECTION_SUGGESTION_AUTO_SELECTED = 1322;
-
     // Bubble appears
     BUBBLE_V2_SHOW = 1323;
 
diff --git a/java/com/android/dialer/precall/impl/CallingAccountSelector.java b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
index 6514a49..8f63fa0 100644
--- a/java/com/android/dialer/precall/impl/CallingAccountSelector.java
+++ b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
@@ -30,12 +30,13 @@
 import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.SelectPhoneAccountListener;
 import com.android.contacts.common.widget.SelectPhoneAccountDialogOptions;
 import com.android.contacts.common.widget.SelectPhoneAccountDialogOptionsUtil;
+import com.android.dialer.activecalls.ActiveCallInfo;
+import com.android.dialer.activecalls.ActiveCallsComponent;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.configprovider.ConfigProviderBindings;
-import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.DialerImpression.Type;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCallAction;
@@ -43,11 +44,13 @@
 import com.android.dialer.precall.PreCallCoordinator.PendingAction;
 import com.android.dialer.preferredsim.PreferredAccountRecorder;
 import com.android.dialer.preferredsim.PreferredAccountWorker;
+import com.android.dialer.preferredsim.PreferredAccountWorker.Result;
 import com.android.dialer.preferredsim.suggestion.SuggestionProvider;
 import com.android.dialer.preferredsim.suggestion.SuggestionProvider.Suggestion;
-import com.android.dialer.telecom.TelecomUtil;
 import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableList;
 import java.util.List;
+import java.util.Objects;
 
 /** PreCallAction to select which phone account to call with. Ignored if there's only one account */
 @SuppressWarnings("MissingPermission")
@@ -78,17 +81,6 @@
     if (accounts.size() <= 1) {
       return false;
     }
-
-    if (TelecomUtil.isInManagedCall(context)) {
-      // Most devices are DSDS (dual SIM dual standby) which only one SIM can have active calls at
-      // a time. Telecom will ignore the phone account handle and use the current active SIM, thus
-      // there's no point of selecting SIMs
-      // TODO(a bug): let the user know selections are not available and preferred SIM is not
-      // used
-      // TODO(twyen): support other dual SIM modes when the API is exposed.
-      return false;
-    }
-
     return true;
   }
 
@@ -137,12 +129,7 @@
                 return;
               }
               if (result.getPhoneAccountHandle().isPresent()) {
-                Logger.get(coordinator.getActivity())
-                    .logImpression(DialerImpression.Type.DUAL_SIM_SELECTION_PREFERRED_USED);
-                coordinator
-                    .getBuilder()
-                    .setPhoneAccountHandle(result.getPhoneAccountHandle().get());
-                pendingAction.finish();
+                usePreferredAccount(coordinator, pendingAction, result);
                 return;
               }
               PhoneAccountHandle defaultPhoneAccount =
@@ -150,10 +137,7 @@
                       .getSystemService(TelecomManager.class)
                       .getDefaultOutgoingPhoneAccount(builder.getUri().getScheme());
               if (defaultPhoneAccount != null) {
-                Logger.get(coordinator.getActivity())
-                    .logImpression(DialerImpression.Type.DUAL_SIM_SELECTION_GLOBAL_USED);
-                builder.setPhoneAccountHandle(defaultPhoneAccount);
-                pendingAction.finish();
+                useDefaultAccount(coordinator, pendingAction, result, defaultPhoneAccount);
                 return;
               }
               if (result.getSuggestion().isPresent()) {
@@ -161,18 +145,7 @@
                     "CallingAccountSelector.processPreferredAccount",
                     "SIM suggested: " + result.getSuggestion().get().reason);
                 if (result.getSuggestion().get().shouldAutoSelect) {
-                  Logger.get(coordinator.getActivity())
-                      .logImpression(
-                          DialerImpression.Type.DUAL_SIM_SELECTION_SUGGESTION_AUTO_SELECTED);
-                  LogUtil.i(
-                      "CallingAccountSelector.processPreferredAccount", "Auto selected suggestion");
-                  builder.setPhoneAccountHandle(result.getSuggestion().get().phoneAccountHandle);
-                  builder
-                      .getInCallUiIntentExtras()
-                      .putString(
-                          SuggestionProvider.EXTRA_SIM_SUGGESTION_REASON,
-                          result.getSuggestion().get().reason.name());
-                  pendingAction.finish();
+                  useSuggestedAccount(coordinator, pendingAction, result);
                   return;
                 }
               }
@@ -187,6 +160,120 @@
         .executeParallel(activity);
   }
 
+  private void usePreferredAccount(
+      PreCallCoordinator coordinator, PendingAction pendingAction, Result result) {
+    String phoneNumber = coordinator.getBuilder().getUri().getSchemeSpecificPart();
+    if (isSelectable(coordinator.getActivity(), result.getPhoneAccountHandle().get())) {
+      Logger.get(coordinator.getActivity()).logImpression(Type.DUAL_SIM_SELECTION_PREFERRED_USED);
+      coordinator.getBuilder().setPhoneAccountHandle(result.getPhoneAccountHandle().get());
+      pendingAction.finish();
+    } else {
+      Logger.get(coordinator.getActivity())
+          .logImpression(Type.DUAL_SIM_SELECTION_PREFERRED_NOT_SELECTABLE);
+      LogUtil.i("CallingAccountSelector.usePreferredAccount", "preferred account not selectable");
+      showDialog(
+          coordinator,
+          pendingAction,
+          result.getDataId().orNull(),
+          phoneNumber,
+          result.getSuggestion().orNull());
+    }
+  }
+
+  private void useDefaultAccount(
+      PreCallCoordinator coordinator,
+      PendingAction pendingAction,
+      Result result,
+      PhoneAccountHandle defaultPhoneAccount) {
+    CallIntentBuilder builder = coordinator.getBuilder();
+    String phoneNumber = builder.getUri().getSchemeSpecificPart();
+    if (isSelectable(coordinator.getActivity(), defaultPhoneAccount)) {
+      Logger.get(coordinator.getActivity()).logImpression(Type.DUAL_SIM_SELECTION_GLOBAL_USED);
+      builder.setPhoneAccountHandle(defaultPhoneAccount);
+      pendingAction.finish();
+    } else {
+      Logger.get(coordinator.getActivity())
+          .logImpression(Type.DUAL_SIM_SELECTION_GLOBAL_NOT_SELECTABLE);
+      LogUtil.i("CallingAccountSelector.useDefaultAccount", "default account not selectable");
+      showDialog(
+          coordinator,
+          pendingAction,
+          result.getDataId().orNull(),
+          phoneNumber,
+          result.getSuggestion().orNull());
+    }
+  }
+
+  private void useSuggestedAccount(
+      PreCallCoordinator coordinator, PendingAction pendingAction, Result result) {
+    CallIntentBuilder builder = coordinator.getBuilder();
+    String phoneNumber = builder.getUri().getSchemeSpecificPart();
+    if (isSelectable(coordinator.getActivity(), result.getSuggestion().get().phoneAccountHandle)) {
+      Logger.get(coordinator.getActivity())
+          .logImpression(Type.DUAL_SIM_SELECTION_SUGGESTION_AUTO_SELECTED);
+      LogUtil.i("CallingAccountSelector.processPreferredAccount", "Auto selected suggestion");
+      builder.setPhoneAccountHandle(result.getSuggestion().get().phoneAccountHandle);
+      builder
+          .getInCallUiIntentExtras()
+          .putString(
+              SuggestionProvider.EXTRA_SIM_SUGGESTION_REASON,
+              result.getSuggestion().get().reason.name());
+      pendingAction.finish();
+    } else {
+      LogUtil.i("CallingAccountSelector.useSuggestedAccount", "suggested account not selectable");
+      Logger.get(coordinator.getActivity())
+          .logImpression(Type.DUAL_SIM_SELECTION_SUGGESTION_AUTO_NOT_SELECTABLE);
+      showDialog(
+          coordinator,
+          pendingAction,
+          result.getDataId().orNull(),
+          phoneNumber,
+          result.getSuggestion().orNull());
+    }
+  }
+
+  /**
+   * Most devices are DSDS (dual SIM dual standby) which only one SIM can have active calls at a
+   * time. TODO(twyen): support other dual SIM modes when the API is exposed.
+   */
+  private static boolean isSelectable(Context context, PhoneAccountHandle phoneAccountHandle) {
+    ImmutableList<ActiveCallInfo> activeCalls =
+        ActiveCallsComponent.get(context).activeCalls().getActiveCalls();
+    if (activeCalls.isEmpty()) {
+      return true;
+    }
+    for (ActiveCallInfo activeCall : activeCalls) {
+      if (Objects.equals(phoneAccountHandle, activeCall.phoneAccountHandle().orNull())) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  private static Optional<String> getActiveCallLabel(Context context) {
+    ImmutableList<ActiveCallInfo> activeCalls =
+        ActiveCallsComponent.get(context).activeCalls().getActiveCalls();
+
+    if (activeCalls.isEmpty()) {
+      LogUtil.e("CallingAccountSelector.getActiveCallLabel", "active calls no longer exist");
+      return Optional.absent();
+    }
+    ActiveCallInfo activeCall = activeCalls.get(0);
+    if (!activeCall.phoneAccountHandle().isPresent()) {
+      LogUtil.e("CallingAccountSelector.getActiveCallLabel", "active call has no phone account");
+      return Optional.absent();
+    }
+    PhoneAccount phoneAccount =
+        context
+            .getSystemService(TelecomManager.class)
+            .getPhoneAccount(activeCall.phoneAccountHandle().get());
+    if (phoneAccount == null) {
+      LogUtil.e("CallingAccountSelector.getActiveCallLabel", "phone account not found");
+      return Optional.absent();
+    }
+    return Optional.of(phoneAccount.getLabel().toString());
+  }
+
   @MainThread
   private void showDialog(
       PreCallCoordinator coordinator,
@@ -228,10 +315,23 @@
       SelectPhoneAccountDialogOptions.Entry.Builder entryBuilder =
           SelectPhoneAccountDialogOptions.Entry.newBuilder();
       SelectPhoneAccountDialogOptionsUtil.setPhoneAccountHandle(entryBuilder, phoneAccountHandle);
-      Optional<String> hint =
-          SuggestionProvider.getHint(coordinator.getActivity(), phoneAccountHandle, suggestion);
-      if (hint.isPresent()) {
-        entryBuilder.setHint(hint.get());
+      if (isSelectable(coordinator.getActivity(), phoneAccountHandle)) {
+        Optional<String> hint =
+            SuggestionProvider.getHint(coordinator.getActivity(), phoneAccountHandle, suggestion);
+        if (hint.isPresent()) {
+          entryBuilder.setHint(hint.get());
+        }
+      } else {
+        entryBuilder.setEnabled(false);
+        Optional<String> activeCallLabel = getActiveCallLabel(coordinator.getActivity());
+        if (activeCallLabel.isPresent()) {
+          entryBuilder.setHint(
+              coordinator
+                  .getActivity()
+                  .getString(
+                      R.string.pre_call_select_phone_account_hint_other_sim_in_use,
+                      activeCallLabel.get()));
+        }
       }
       optionsBuilder.addEntries(entryBuilder);
     }
diff --git a/java/com/android/dialer/precall/impl/res/values/strings.xml b/java/com/android/dialer/precall/impl/res/values/strings.xml
index 4bd5d36..3691271 100644
--- a/java/com/android/dialer/precall/impl/res/values/strings.xml
+++ b/java/com/android/dialer/precall/impl/res/values/strings.xml
@@ -14,7 +14,7 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<resources>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <!-- Toast when the user tried to place a call but has revoked phone permission [CHAR_LIMIT=none]  -->
   <string name="pre_call_permission_check_no_phone_permission">Cannot make call without phone permission</string>
 
@@ -26,4 +26,8 @@
    same contact and never ask again [CHAR LIMIT=40]-->
   <string name="pre_call_select_phone_account_remember">Remember this choice</string>
 
+  <!-- Hint to show under a SIM entry when selecting SIM for call on a multi-SIM device, when the
+  call cannot be placed with the SIM because there is already a call on the other SIM,
+  [CHAR LIMIT=40]-->
+  <string name="pre_call_select_phone_account_hint_other_sim_in_use">Not available while using <xliff:g example="SIM 1" id="other_sim">%1$s</xliff:g></string>
 </resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/theme/res/color/dialer_primary_text_color.xml b/java/com/android/dialer/theme/res/color/dialer_primary_text_color.xml
new file mode 100644
index 0000000..347db41
--- /dev/null
+++ b/java/com/android/dialer/theme/res/color/dialer_primary_text_color.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<!-- Primary text color in the Phone app -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:state_enabled="false" android:color="@color/dialer_disabled_text_color"/>
+  <item android:color="#212121"/>
+</selector>
\ No newline at end of file
diff --git a/java/com/android/dialer/theme/res/color/dialer_secondary_text_color.xml b/java/com/android/dialer/theme/res/color/dialer_secondary_text_color.xml
new file mode 100644
index 0000000..920b467
--- /dev/null
+++ b/java/com/android/dialer/theme/res/color/dialer_secondary_text_color.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<!-- Secondary text color in the Phone app -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:state_enabled="false" android:color="@color/dialer_disabled_text_color"/>
+  <item android:color="#636363"/>
+</selector>
\ No newline at end of file
diff --git a/java/com/android/dialer/theme/res/values/colors.xml b/java/com/android/dialer/theme/res/values/colors.xml
index e80fc4b..2185d86 100644
--- a/java/com/android/dialer/theme/res/values/colors.xml
+++ b/java/com/android/dialer/theme/res/values/colors.xml
@@ -36,15 +36,11 @@
 
   <color name="dialer_secondary_color">#F50057</color>
 
-  <!-- Primary text color in the Phone app -->
-  <color name="dialer_primary_text_color">#333333</color>
   <color name="dialer_primary_text_color_white">#ffffff</color>
   <color name="dialer_edit_text_hint_color">#DE78909C</color>
 
-  <!-- Secondary text color in the Phone app -->
-  <color name="dialer_secondary_text_color">#636363</color>
   <!-- 38% opacity -->
-  <color name="dialer_secondary_text_color_hiden">#61000000</color>
+  <color name="dialer_disabled_text_color">#9E9E9E</color>
 
   <color name="dialer_link_color">#2A56C6</color>
 
diff --git a/java/com/android/incallui/ConferenceParticipantListAdapter.java b/java/com/android/incallui/ConferenceParticipantListAdapter.java
index 4780974..dc793f7 100644
--- a/java/com/android/incallui/ConferenceParticipantListAdapter.java
+++ b/java/com/android/incallui/ConferenceParticipantListAdapter.java
@@ -356,7 +356,7 @@
     statusTextView.setText(onHoldText);
     statusTextView.setVisibility(View.VISIBLE);
 
-    int onHoldColor = getContext().getColor(R.color.dialer_secondary_text_color_hiden);
+    int onHoldColor = getContext().getColor(R.color.dialer_disabled_text_color);
     nameTextView.setTextColor(onHoldColor);
     numberTextView.setTextColor(onHoldColor);
 
diff --git a/java/com/android/incallui/res/layout/caller_in_conference.xml b/java/com/android/incallui/res/layout/caller_in_conference.xml
index be4eca5..23bb285 100644
--- a/java/com/android/incallui/res/layout/caller_in_conference.xml
+++ b/java/com/android/incallui/res/layout/caller_in_conference.xml
@@ -68,7 +68,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             style="@style/SecondaryText"
-            android:textColor="@color/dialer_secondary_text_color_hiden"
+            android:textColor="@color/dialer_disabled_text_color"
             android:visibility="gone"/>
 
         <!-- Number -->