Supports DTMF tone in incallui split.

- Adds accessibility code for short tone.
- Also changed CallModeler listener behaviour

Change-Id: Ia052a877bdf301f478d3fcf4fd1d337dd9bc66ff
diff --git a/src/com/android/phone/CallModeler.java b/src/com/android/phone/CallModeler.java
index 8aed6e5..13005ee 100644
--- a/src/com/android/phone/CallModeler.java
+++ b/src/com/android/phone/CallModeler.java
@@ -75,7 +75,7 @@
     private final CallManager mCallManager;
     private final HashMap<Connection, Call> mCallMap = Maps.newHashMap();
     private final AtomicInteger mNextCallId = new AtomicInteger(CALL_ID_START_VALUE);
-    private Listener mListener;
+    private final ArrayList<Listener> mListeners = new ArrayList<Listener>();
 
     public CallModeler(CallStateMonitor callStateMonitor, CallManager callManager) {
         mCallStateMonitor = callStateMonitor;
@@ -101,14 +101,10 @@
         }
     }
 
-    public void setListener(Listener listener) {
+    public void addListener(Listener listener) {
         Preconditions.checkNotNull(listener);
-        Preconditions.checkState(mListener == null);
-
-        // only support setting listener once.
-        // We only have one listener anyway and supporting multiple means maintaining state for
-        // each of the listeners so that we can do proper diffs.
-        mListener = listener;
+        Preconditions.checkNotNull(mListeners);
+        mListeners.add(listener);
     }
 
     public List<Call> getFullList() {
@@ -145,8 +141,8 @@
         final Call call = getCallFromConnection(conn, true);
         call.setState(Call.State.INCOMING);
 
-        if (call != null && mListener != null) {
-            mListener.onUpdate(Lists.newArrayList(call), false);
+        for (int i = 0; i < mListeners.size(); ++i) {
+            mListeners.get(i).onUpdate(Lists.newArrayList(call), false);
         }
     }
 
@@ -158,8 +154,8 @@
         if (call != null) {
             mCallMap.remove(conn);
 
-            if (mListener != null) {
-                mListener.onDisconnect(call);
+            for (int i = 0; i < mListeners.size(); ++i) {
+                mListeners.get(i).onDisconnect(call);
             }
         }
     }
@@ -171,8 +167,8 @@
         final List<Call> updatedCalls = Lists.newArrayList();
         doUpdate(false, updatedCalls);
 
-        if (mListener != null) {
-            mListener.onUpdate(updatedCalls, false);
+        for (int i = 0; i < mListeners.size(); ++i) {
+            mListeners.get(i).onUpdate(updatedCalls, false);
         }
     }