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);
}
}