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()){ /*if(isTablet()){
speaker.setEnabled(false); speaker.setEnabled(false);
}*/ }
speaker.setEnabled(false);*/
// speaker.setEnabled(false);
//Options //Options
addCall = (ImageView) findViewById(R.id.add_call); addCall = (ImageView) findViewById(R.id.add_call);
@ -456,39 +454,23 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
} }
private void refreshIncallUi(){ private void refreshIncallUi(){
List<LinphoneCall> pausedCalls = LinphoneUtils.getCallsInState(LinphoneManager.getLc(), Arrays.asList(State.PausedByRemote)); int confsize = 0;
if (pausedCalls.size() == 1) {
displayCallPaused(true); if(LinphoneManager.getLc().isInConference()) {
} else { confsize = LinphoneManager.getLc().getConferenceSize() - (LinphoneManager.getLc().isInConference() ? 1 : 0);
displayCallPaused(false);
} }
if(LinphoneManager.getLc().getCurrentCall() != null){ //Enabled transfer button
if(isTransferAllowed) if(isTransferAllowed)
enabledTransferButton(true); enabledTransferButton(true);
if(!isVideoEnabled(LinphoneManager.getLc().getCurrentCall()))
callInfo.setVisibility(View.VISIBLE);
}
if(LinphoneManager.getLc().getCallsNb() > 1){ //Enable conference button
callsList.setVisibility(View.VISIBLE); if(LinphoneManager.getLc().getCallsNb() > 1 && LinphoneManager.getLc().getCallsNb() > confsize) {
enabledConferenceButton(true); enabledConferenceButton(true);
} else { } 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); enabledConferenceButton(false);
} }
refreshInCallActions(); refreshInCallActions();
refreshCallList(getResources()); refreshCallList(getResources());
} }
@ -761,7 +743,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
mSensorManager.unregisterListener(this); mSensorManager.unregisterListener(this);
replaceFragmentAudioByVideo(); replaceFragmentAudioByVideo();
hideStatusBar(); hideStatusBar();
displayVideoCall(false);
} }
private void displayNoCurrentCall(boolean display){ private void displayNoCurrentCall(boolean display){
@ -786,9 +767,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
mControlsLayout.setVisibility(View.VISIBLE); mControlsLayout.setVisibility(View.VISIBLE);
mActiveCallHeader.setVisibility(View.VISIBLE); mActiveCallHeader.setVisibility(View.VISIBLE);
callInfo.setVisibility(View.VISIBLE); callInfo.setVisibility(View.VISIBLE);
callsList.setVisibility(View.VISIBLE);
avatar_layout.setVisibility(View.VISIBLE); avatar_layout.setVisibility(View.VISIBLE);
mNoCurrentCall.setVisibility(View.GONE);
switchCamera.setVisibility(View.GONE); switchCamera.setVisibility(View.GONE);
} }
@ -877,7 +856,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
mActiveCallHeader.setVisibility(View.VISIBLE); mActiveCallHeader.setVisibility(View.VISIBLE);
callInfo.setVisibility(View.VISIBLE); callInfo.setVisibility(View.VISIBLE);
avatar_layout.setVisibility(View.GONE); avatar_layout.setVisibility(View.GONE);
mNoCurrentCall.setVisibility(View.GONE);
callsList.setVisibility(View.VISIBLE); callsList.setVisibility(View.VISIBLE);
if (cameraNumber > 1) { if (cameraNumber > 1) {
switchCamera.setVisibility(View.VISIBLE); switchCamera.setVisibility(View.VISIBLE);
@ -887,7 +865,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
mControlsLayout.setVisibility(View.GONE); mControlsLayout.setVisibility(View.GONE);
mActiveCallHeader.setVisibility(View.GONE); mActiveCallHeader.setVisibility(View.GONE);
switchCamera.setVisibility(View.GONE); switchCamera.setVisibility(View.GONE);
mNoCurrentCall.setVisibility(View.GONE);
callsList.setVisibility(View.GONE); callsList.setVisibility(View.GONE);
} }
} }
@ -1371,11 +1348,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
refreshIncallUi(); refreshIncallUi();
handleViewIntent(); handleViewIntent();
if (isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) { if (!isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) {
displayVideoCall(false);
} else if(LinphoneManager.getLc().isInConference()) {
displayConference();
} else {
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL); mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
removeCallbacks(); removeCallbacks();
} }
@ -1537,12 +1510,9 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
isCallPaused = true; isCallPaused = true;
isInConference = false; isInConference = false;
} else if (call.getState() == State.OutgoingInit || call.getState() == State.OutgoingProgress || call.getState() == State.OutgoingRinging) { } else if (call.getState() == State.OutgoingInit || call.getState() == State.OutgoingProgress || call.getState() == State.OutgoingRinging) {
//callState.setImageResource(R.drawable.call_state_ringing_default);
isCallPaused = false; isCallPaused = false;
isInConference = false; isInConference = false;
} else { } else {
//callState.setImageResource(R.drawable.remove);
//callState.setImageResource(R.drawable.play);
isInConference = isConferenceRunning && call.isInConference(); isInConference = isConferenceRunning && call.isInConference();
isCallPaused = false; isCallPaused = false;
} }
@ -1573,15 +1543,36 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
public void refreshCallList(Resources resources) { public void refreshCallList(Resources resources) {
isConferenceRunning = LinphoneManager.getLc().isInConference(); isConferenceRunning = LinphoneManager.getLc().isInConference();
if (isConferenceRunning) {
displayConference(); //MultiCalls
mNoCurrentCall.setVisibility(View.GONE); 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 { } 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) { if(callsList != null) {
callsList.setVisibility(View.VISIBLE);
callsList.removeAllViews(); callsList.removeAllViews();
int index = 0; int index = 0;
@ -1596,7 +1587,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
isConfPaused = true; isConfPaused = true;
index++; index++;
} else { } else {
if (call != LinphoneManager.getLc().getCurrentCall()) { if (call != LinphoneManager.getLc().getCurrentCall() && !call.isInConference()) {
displayPausedCalls(resources, call, index); displayPausedCalls(resources, call, index);
index++; index++;
} else { } 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); 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 //Conference
@ -1634,9 +1632,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
private void enterConference() { private void enterConference() {
LinphoneManager.getLc().addAllToConference(); LinphoneManager.getLc().addAllToConference();
displayConferenceHeader();
mNoCurrentCall.setVisibility(View.GONE);
mActiveCallHeader.setVisibility(View.GONE);
} }
public void pauseOrResumeConference() { public void pauseOrResumeConference() {
@ -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); mControlsLayout.setVisibility(View.VISIBLE);
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL); mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
mActiveCallHeader.setVisibility(View.GONE); mActiveCallHeader.setVisibility(View.GONE);
mNoCurrentCall.setVisibility(View.GONE); mNoCurrentCall.setVisibility(View.GONE);
callsList.setVisibility(View.VISIBLE);
conferenceList.removeAllViews(); conferenceList.removeAllViews();
//Conference Header //Conference Header
@ -1705,6 +1700,9 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
} }
} }
conferenceList.setVisibility(View.VISIBLE); conferenceList.setVisibility(View.VISIBLE);
} else {
conferenceList.setVisibility(View.GONE);
}
} }
public static Boolean isProximitySensorNearby(final SensorEvent event) { public static Boolean isProximitySensorNearby(final SensorEvent event) {