Try to resume call, enter conf on URI picker return.

This commit is contained in:
Guillaume Beraudo 2011-10-13 15:57:31 +02:00
parent e436b2b620
commit 1724555a8c

View file

@ -101,11 +101,11 @@ public class ConferenceActivity extends ListActivity implements
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
} }
// private void pauseCurrentCallOrLeaveConference() { private void pauseCurrentCallOrLeaveConference() {
// LinphoneCall call = lc().getCurrentCall(); LinphoneCall call = lc().getCurrentCall();
// if (call != null) lc().pauseCall(call); if (call != null) lc().pauseCall(call);
// lc().leaveConference(); lc().leaveConference();
// } }
private LinphoneManagerWaitHelper waitHelper; private LinphoneManagerWaitHelper waitHelper;
private ToggleButton mMuteMicButton; private ToggleButton mMuteMicButton;
@ -261,7 +261,12 @@ public class ConferenceActivity extends ListActivity implements
// v.setText(inConf ? R.string.in_conf : R.string.out_conf); // v.setText(inConf ? R.string.in_conf : R.string.out_conf);
} }
private LinphoneCall activateCallOnReturnFromUriPicker;
private boolean enterConferenceOnReturnFromUriPicker;
private void openUriPicker(String pickerType, int requestCode) { private void openUriPicker(String pickerType, int requestCode) {
activateCallOnReturnFromUriPicker = lc().getCurrentCall();
enterConferenceOnReturnFromUriPicker = lc().isInConference();
pauseCurrentCallOrLeaveConference();
Intent intent = new Intent().setClass(this, UriPickerActivity.class); Intent intent = new Intent().setClass(this, UriPickerActivity.class);
intent.putExtra(UriPickerActivity.EXTRA_PICKER_TYPE, pickerType); intent.putExtra(UriPickerActivity.EXTRA_PICKER_TYPE, pickerType);
startActivityForResult(intent, requestCode); startActivityForResult(intent, requestCode);
@ -693,6 +698,7 @@ public class ConferenceActivity extends ListActivity implements
if (resultCode != RESULT_OK) { if (resultCode != RESULT_OK) {
callToTransfer = null; callToTransfer = null;
Toast.makeText(this, R.string.uri_picking_canceled, Toast.LENGTH_LONG).show(); Toast.makeText(this, R.string.uri_picking_canceled, Toast.LENGTH_LONG).show();
eventuallyResumeConfOrCallOnPickerReturn(true);
return; return;
} }
@ -701,6 +707,7 @@ public class ConferenceActivity extends ListActivity implements
case ID_ADD_CALL: case ID_ADD_CALL:
try { try {
lc().invite(uri); lc().invite(uri);
eventuallyResumeConfOrCallOnPickerReturn(false);
} catch (LinphoneCoreException e) { } catch (LinphoneCoreException e) {
Log.e(e); Log.e(e);
Toast.makeText(this, R.string.error_adding_new_call, Toast.LENGTH_LONG).show(); Toast.makeText(this, R.string.error_adding_new_call, Toast.LENGTH_LONG).show();
@ -708,6 +715,11 @@ public class ConferenceActivity extends ListActivity implements
break; break;
case ID_TRANSFER_CALL: case ID_TRANSFER_CALL:
lc().transferCall(callToTransfer, uri); lc().transferCall(callToTransfer, uri);
// don't re-enter conference if call to transfer from conference
boolean doResume = !callToTransfer.isInConference();
// don't resume call if it is the call to transfer
doResume &= activateCallOnReturnFromUriPicker != callToTransfer;
eventuallyResumeConfOrCallOnPickerReturn(doResume);
Toast.makeText(this, R.string.transfer_started, Toast.LENGTH_LONG).show(); Toast.makeText(this, R.string.transfer_started, Toast.LENGTH_LONG).show();
break; break;
default: default:
@ -715,6 +727,18 @@ public class ConferenceActivity extends ListActivity implements
} }
} }
private void eventuallyResumeConfOrCallOnPickerReturn(boolean doCallConfResuming) {
if (doCallConfResuming) {
if (activateCallOnReturnFromUriPicker != null) {
lc().resumeCall(activateCallOnReturnFromUriPicker);
} else if (enterConferenceOnReturnFromUriPicker) {
lc().enterConference();
}
}
activateCallOnReturnFromUriPicker = null;
enterConferenceOnReturnFromUriPicker = false;
}
@Override @Override
public boolean onKeyUp(int keyCode, KeyEvent event) { public boolean onKeyUp(int keyCode, KeyEvent event) {
if (LinphoneUtils.onKeyBackGoHome(this, keyCode)) return true; if (LinphoneUtils.onKeyBackGoHome(this, keyCode)) return true;