IMS: Pop up reminder after max attendees for conference call

Pop up "Number of attendees exceed limitation" after max
attendees for conference call via "Add call".

Change-Id: Ic5fb6e6b5db3464759ca7de2a6aca7e519a32300
CRs-Fixed: 1004410
diff --git a/InCallUI/res/values-zh-rCN/strings.xml b/InCallUI/res/values-zh-rCN/strings.xml
index 881f2b1..1d5bb40 100644
--- a/InCallUI/res/values-zh-rCN/strings.xml
+++ b/InCallUI/res/values-zh-rCN/strings.xml
@@ -196,4 +196,5 @@
     <string name="closed_today_at" msgid="4060072663433467233">"已于今天<xliff:g id="CLOSE_TIME">%s</xliff:g>结束营业"</string>
     <string name="open_now" msgid="4615706338669555999">"营业中"</string>
     <string name="closed_now" msgid="2635314668145282080">"现已结束营业"</string>
+    <string name="too_many_recipients">4G会议电话的参与人数上限为6人。</string>
 </resources>
diff --git a/InCallUI/res/values/strings.xml b/InCallUI/res/values/strings.xml
index 7e2eb71..ba68759 100644
--- a/InCallUI/res/values/strings.xml
+++ b/InCallUI/res/values/strings.xml
@@ -536,4 +536,5 @@
     <string name="call_state_unknown">Unknown</string>
     <string name="call_state_disconnecting">Disconnecting</string>
     <string name="call_state_disconnected">Disconnected</string>
+    <string name="too_many_recipients">The maximum allowed participants in a 4G conference call are 6.</string>
 </resources>
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index 66f002c..d013d58 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -39,6 +39,7 @@
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.VideoProfile;
+import android.widget.Toast;
 
 import com.android.contacts.common.compat.CallSdkCompat;
 import com.android.contacts.common.compat.SdkVersionOverride;
@@ -66,6 +67,7 @@
     private Call mCall;
     private boolean mAutomaticallyMuted = false;
     private boolean mPreviousMuteState = false;
+    private static final int MAX_PARTICIPANTS_LIMIT = 6;
 
     // NOTE: Capability constant definition has been duplicated to avoid bundling
     // the Dialer with Frameworks.
@@ -257,6 +259,24 @@
     }
 
     public void mergeClicked() {
+        if (getUi().getContext().getResources().getBoolean(
+                R.bool.add_multi_participants_enabled)){
+            int participantsCount = 0;
+            if (mCall.isConferenceCall()) {
+                participantsCount = mCall.getChildCallIds().size();
+            } else {
+                Call backgroundCall = CallList.getInstance().getBackgroundCall();
+                if (backgroundCall != null && backgroundCall.isConferenceCall()) {
+                    participantsCount = backgroundCall.getChildCallIds().size();
+                }
+            }
+            Log.i(this, "Number of participantsCount is " + participantsCount);
+            if (participantsCount >= MAX_PARTICIPANTS_LIMIT) {
+                Toast.makeText(getUi().getContext(),
+                        R.string.too_many_recipients, Toast.LENGTH_SHORT).show();
+                return;
+            }
+         }
         TelecomAdapter.getInstance().merge(mCall.getId());
     }