Fix conference issues

This commit is contained in:
Margaux Clerc 2016-02-09 10:27:12 +01:00
parent b7c0f10427
commit bf62766a4e

View file

@ -369,10 +369,8 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
/*if(isTablet()){
speaker.setEnabled(false);
}*/
// speaker.setEnabled(false);
}
speaker.setEnabled(false);*/
//Options
addCall = (ImageView) findViewById(R.id.add_call);
@ -456,39 +454,23 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
}
private void refreshIncallUi(){
List<LinphoneCall> pausedCalls = LinphoneUtils.getCallsInState(LinphoneManager.getLc(), Arrays.asList(State.PausedByRemote));
if (pausedCalls.size() == 1) {
displayCallPaused(true);
} else {
displayCallPaused(false);
int confsize = 0;
if(LinphoneManager.getLc().isInConference()) {
confsize = LinphoneManager.getLc().getConferenceSize() - (LinphoneManager.getLc().isInConference() ? 1 : 0);
}
if(LinphoneManager.getLc().getCurrentCall() != null){
//Enabled transfer button
if(isTransferAllowed)
enabledTransferButton(true);
if(!isVideoEnabled(LinphoneManager.getLc().getCurrentCall()))
callInfo.setVisibility(View.VISIBLE);
}
if(LinphoneManager.getLc().getCallsNb() > 1){
callsList.setVisibility(View.VISIBLE);
//Enable conference button
if(LinphoneManager.getLc().getCallsNb() > 1 && LinphoneManager.getLc().getCallsNb() > confsize) {
enabledConferenceButton(true);
} else {
if(LinphoneManager.getLc().getCallsNb() == 1 && LinphoneManager.getLc().getCurrentCall() == null){
callsList.setVisibility(View.VISIBLE);
if(isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) {
avatar_layout.setVisibility(View.GONE);
} else {
avatar_layout.setVisibility(View.VISIBLE);
}
if(isTransferAllowed)
enabledTransferButton(false);
} else {
callsList.setVisibility(View.GONE);
}
enabledConferenceButton(false);
}
refreshInCallActions();
refreshCallList(getResources());
}
@ -761,7 +743,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
mSensorManager.unregisterListener(this);
replaceFragmentAudioByVideo();
hideStatusBar();
displayVideoCall(false);
}
private void displayNoCurrentCall(boolean display){
@ -786,9 +767,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
mControlsLayout.setVisibility(View.VISIBLE);
mActiveCallHeader.setVisibility(View.VISIBLE);
callInfo.setVisibility(View.VISIBLE);
callsList.setVisibility(View.VISIBLE);
avatar_layout.setVisibility(View.VISIBLE);
mNoCurrentCall.setVisibility(View.GONE);
switchCamera.setVisibility(View.GONE);
}
@ -877,7 +856,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
mActiveCallHeader.setVisibility(View.VISIBLE);
callInfo.setVisibility(View.VISIBLE);
avatar_layout.setVisibility(View.GONE);
mNoCurrentCall.setVisibility(View.GONE);
callsList.setVisibility(View.VISIBLE);
if (cameraNumber > 1) {
switchCamera.setVisibility(View.VISIBLE);
@ -887,7 +865,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
mControlsLayout.setVisibility(View.GONE);
mActiveCallHeader.setVisibility(View.GONE);
switchCamera.setVisibility(View.GONE);
mNoCurrentCall.setVisibility(View.GONE);
callsList.setVisibility(View.GONE);
}
}
@ -1371,11 +1348,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
refreshIncallUi();
handleViewIntent();
if (isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) {
displayVideoCall(false);
} else if(LinphoneManager.getLc().isInConference()) {
displayConference();
} else {
if (!isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) {
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
removeCallbacks();
}
@ -1537,12 +1510,9 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
isCallPaused = true;
isInConference = false;
} else if (call.getState() == State.OutgoingInit || call.getState() == State.OutgoingProgress || call.getState() == State.OutgoingRinging) {
//callState.setImageResource(R.drawable.call_state_ringing_default);
isCallPaused = false;
isInConference = false;
} else {
//callState.setImageResource(R.drawable.remove);
//callState.setImageResource(R.drawable.play);
isInConference = isConferenceRunning && call.isInConference();
isCallPaused = false;
}
@ -1573,15 +1543,36 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
public void refreshCallList(Resources resources) {
isConferenceRunning = LinphoneManager.getLc().isInConference();
if (isConferenceRunning) {
displayConference();
mNoCurrentCall.setVisibility(View.GONE);
//MultiCalls
if(LinphoneManager.getLc().getCallsNb() > 1){
callsList.setVisibility(View.VISIBLE);
}
//Active call
if(LinphoneManager.getLc().getCurrentCall() != null) {
displayNoCurrentCall(false);
if(isVideoEnabled(LinphoneManager.getLc().getCurrentCall()) && !isConferenceRunning) {
displayVideoCall(false);
} else {
conferenceList.setVisibility(View.GONE);
displayAudioCall();
}
} else {
showAudioView();
displayNoCurrentCall(true);
if(LinphoneManager.getLc().getCallsNb() == 1) {
callsList.setVisibility(View.VISIBLE);
}
}
//Conference
if (isConferenceRunning) {
displayConference(true);
} else {
displayConference(false);
}
if(callsList != null) {
callsList.setVisibility(View.VISIBLE);
callsList.removeAllViews();
int index = 0;
@ -1592,11 +1583,11 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
boolean isConfPaused = false;
for (LinphoneCall call : LinphoneManager.getLc().getCalls()) {
if(call.isInConference() && !isConferenceRunning) {
if (call.isInConference() && !isConferenceRunning) {
isConfPaused = true;
index++;
} else {
if (call != LinphoneManager.getLc().getCurrentCall()) {
if (call != LinphoneManager.getLc().getCurrentCall() && !call.isInConference()) {
displayPausedCalls(resources, call, index);
index++;
} else {
@ -1605,18 +1596,25 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
}
}
if(isConfPaused && !isConferenceRunning){
if (!isConferenceRunning) {
if (isConfPaused) {
callsList.setVisibility(View.VISIBLE);
displayPausedCalls(resources, null, index);
}
if (LinphoneManager.getLc().getCurrentCall() == null && !isConferenceRunning) {
showAudioView();
mActiveCallHeader.setVisibility(View.GONE);
mNoCurrentCall.setVisibility(View.VISIBLE);
video.setEnabled(false);
}
}
//Paused by remote
List<LinphoneCall> pausedCalls = LinphoneUtils.getCallsInState(LinphoneManager.getLc(), Arrays.asList(State.PausedByRemote));
if (pausedCalls.size() == 1) {
displayCallPaused(true);
} else {
displayCallPaused(false);
}
}
//Conference
@ -1634,9 +1632,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
private void enterConference() {
LinphoneManager.getLc().addAllToConference();
displayConferenceHeader();
mNoCurrentCall.setVisibility(View.GONE);
mActiveCallHeader.setVisibility(View.GONE);
}
public void pauseOrResumeConference() {
@ -1653,7 +1648,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
private void displayConferenceParticipant(int index, final LinphoneCall call){
LinearLayout confView = (LinearLayout) inflater.inflate(R.layout.conf_call_control_row, container, false);
conferenceList.setId(index+1);
conferenceList.setId(index + 1);
TextView contact = (TextView) confView.findViewById(R.id.contactNameOrNumber);
Contact lContact = ContactsManager.getInstance().findContactWithAddress(getContentResolver(),call.getRemoteAddress());
@ -1685,12 +1680,12 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
}
private void displayConference(){
private void displayConference(boolean isInConf){
if(isInConf) {
mControlsLayout.setVisibility(View.VISIBLE);
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
mActiveCallHeader.setVisibility(View.GONE);
mNoCurrentCall.setVisibility(View.GONE);
callsList.setVisibility(View.VISIBLE);
conferenceList.removeAllViews();
//Conference Header
@ -1699,12 +1694,15 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
//Conference participant
int index = 1;
for (LinphoneCall call : LinphoneManager.getLc().getCalls()) {
if(call.isInConference()) {
displayConferenceParticipant(index,call);
if (call.isInConference()) {
displayConferenceParticipant(index, call);
index++;
}
}
conferenceList.setVisibility(View.VISIBLE);
} else {
conferenceList.setVisibility(View.GONE);
}
}
public static Boolean isProximitySensorNearby(final SensorEvent event) {