#16928: Update all UI elemnts from SipCall
diff --git a/src/com/savoirfairelinux/sflphone/client/CallElementList.java b/src/com/savoirfairelinux/sflphone/client/CallElementList.java
index b6654d6..dff3d45 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallElementList.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallElementList.java
@@ -241,13 +241,11 @@
{
Log.i(TAG, "Adding call " + c.mCallInfo.mDisplayName);
mAdapter.add(c);
- sflphoneHome.onSelectedCallAction(c);
}
public void removeCall(SipCall c)
{
Log.i(TAG, "Removing call " + c.mCallInfo.mDisplayName);
- sflphoneHome.onUnselectedCallAction();
mAdapter.remove(c);
}
diff --git a/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java b/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
index 54209c1..b3e57ec 100644
--- a/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
@@ -227,7 +227,7 @@
Log.i(TAG, "Selected " + items[item]);
switch (item) {
case 0:
- call.placeCall();
+ call.placeCallUpdateUi();
break;
case 1:
call.sendTextMessage();
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java
index 942b251..906f44f 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java
@@ -57,8 +57,8 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
+import android.view.View.OnClickListener;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
@@ -171,6 +171,8 @@
LocalBroadcastManager.getInstance(this).registerReceiver(mCallList, new IntentFilter("new-call-created"));
LocalBroadcastManager.getInstance(this).registerReceiver(mCallList, new IntentFilter("call-state-changed"));
LocalBroadcastManager.getInstance(this).registerReceiver(mCallList, new IntentFilter("incoming-call"));
+
+ SipCall.setSFLPhoneHomeContext(this);
}
@Override
@@ -311,6 +313,9 @@
public void onUnselectedCallAction() {
buttonCall.setTag(null);
buttonCall.setTag(null);
+
+ buttonCall.setEnabled(true);
+ buttonHangup.setEnabled(false);
}
public void setIncomingCallID(String accountID, String callID, String from) {
@@ -491,8 +496,7 @@
SipCall call = CallList.getCallInstance(info);
call.launchCallActivity(this);
- call.printCallInfo();
- call.placeCall();
+ call.placeCallUpdateUi();
Log.d(TAG, "service.placeCall(" + accountID + ", " + callID + ", " + to + ");");
service.placeCall(accountID, callID, to);
diff --git a/src/com/savoirfairelinux/sflphone/client/SipCall.java b/src/com/savoirfairelinux/sflphone/client/SipCall.java
index d6fef42..9ead4b8 100644
--- a/src/com/savoirfairelinux/sflphone/client/SipCall.java
+++ b/src/com/savoirfairelinux/sflphone/client/SipCall.java
@@ -45,8 +45,10 @@
public class SipCall
{
final static String TAG = "SipCall";
- public static CallElementList mCallElementList = null;
public CallInfo mCallInfo;
+ // Update UI on actions (answer, hangup)
+ static private CallElementList mCallElementList = null;
+ static private SFLPhoneHome mHome = null;
public static final int CALL_STATE_NULL = 0;
public static final int CALL_STATE_INCOMING = 1;
@@ -141,6 +143,11 @@
mCallElementList = list;
}
+ public static void setSFLPhoneHomeContext(SFLPhoneHome home)
+ {
+ mHome = home;
+ }
+
public void setCallID(String callID) {
mCallInfo.mCallID = callID;
}
@@ -241,20 +248,28 @@
return mCallInfo.mMediaState;
}
- public void placeCall()
+ public void placeCallUpdateUi()
+ {
+ if(mCallElementList != null)
+ mCallElementList.addCall(this);
+
+ if(mHome != null)
+ mHome.onSelectedCallAction(this);
+ }
+
+ public void receiveCallUpdateUi()
{
if(mCallElementList != null)
mCallElementList.addCall(this);
+
+ if(mHome != null)
+ mHome.onSelectedCallAction(this);
}
- public void receiveCall()
+ public void answerUpdateUi()
{
- if(mCallElementList != null)
- mCallElementList.addCall(this);
- }
-
- public void answer()
- {
+ if(mHome != null)
+ mHome.onSelectedCallAction(this);
}
@@ -272,12 +287,16 @@
/**
* Perform hangup action without sending request to the service
+ * Used when SipService haved been notified that this call hung up
*/
- public void hangup() {
+ public void hangupUpdateUi() {
Log.i(TAG, "Hangup call " + mCallInfo.mCallID);
if(mCallElementList != null)
mCallElementList.removeCall(this);
+
+ if(mHome != null)
+ mHome.onUnselectedCallAction();
}
/**