Simple resume button in conferencing.
This commit is contained in:
parent
90f97a665a
commit
6bfe63cc93
8 changed files with 74 additions and 6 deletions
|
@ -8,5 +8,5 @@
|
||||||
<classpathentry kind="src" path="submodules/linphone/coreapi/help/java"/>
|
<classpathentry kind="src" path="submodules/linphone/coreapi/help/java"/>
|
||||||
<classpathentry kind="src" path="test"/>
|
<classpathentry kind="src" path="test"/>
|
||||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
<LinearLayout android:id="@+id/conf_control_buttons"
|
<LinearLayout android:id="@+id/conf_control_buttons"
|
||||||
android:layout_width="fill_parent" android:layout_height="wrap_content"
|
android:layout_width="fill_parent" android:layout_height="wrap_content"
|
||||||
android:layout_alignParentTop="true">
|
android:layout_alignParentTop="true">
|
||||||
|
<Button android:id="@+id/conf_simple_resume" style="@style/conf_icon_text_button"
|
||||||
|
android:drawableTop="@drawable/conf_resume" android:text="@string/conf_simple_resume_bt_txt"/>
|
||||||
<Button android:id="@+id/conf_simple_permute" style="@style/conf_icon_text_button"
|
<Button android:id="@+id/conf_simple_permute" style="@style/conf_icon_text_button"
|
||||||
android:drawableTop="@drawable/conf_permute" android:text="@string/conf_simple_permute_bt_txt"/>
|
android:drawableTop="@drawable/conf_permute" android:text="@string/conf_simple_permute_bt_txt"/>
|
||||||
<Button android:id="@+id/conf_simple_merge" style="@style/conf_icon_text_button"
|
<Button android:id="@+id/conf_simple_merge" style="@style/conf_icon_text_button"
|
||||||
|
|
|
@ -48,3 +48,5 @@ ng_floorgain=0.01
|
||||||
[video]
|
[video]
|
||||||
size=vga
|
size=vga
|
||||||
|
|
||||||
|
[misc]
|
||||||
|
max_calls=10
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
<string name="error_adding_new_call">Error adding new call</string>
|
<string name="error_adding_new_call">Error adding new call</string>
|
||||||
<string name="transfer_started">Transfer initiated</string>
|
<string name="transfer_started">Transfer initiated</string>
|
||||||
<string name="transfer_dialog_title">Transfer call to</string>
|
<string name="transfer_dialog_title">Transfer call to</string>
|
||||||
|
<string name="resume_dialog_title">Resume call</string>
|
||||||
|
|
||||||
<string name="skipable_error_service_not_ready">Warning: service is not ready</string>
|
<string name="skipable_error_service_not_ready">Warning: service is not ready</string>
|
||||||
|
|
||||||
|
@ -43,6 +44,7 @@
|
||||||
<string name="conf_choice_terminate">Terminate</string>
|
<string name="conf_choice_terminate">Terminate</string>
|
||||||
|
|
||||||
<string name="hangup">Hang up</string>
|
<string name="hangup">Hang up</string>
|
||||||
|
<string name="conf_simple_resume_bt_txt">Resume</string>
|
||||||
<string name="conf_simple_merge_bt_txt">Merge</string>
|
<string name="conf_simple_merge_bt_txt">Merge</string>
|
||||||
<string name="conf_simple_transfer_bt_txt">Transfer</string>
|
<string name="conf_simple_transfer_bt_txt">Transfer</string>
|
||||||
<string name="conf_simple_permute_bt_txt">Permute</string>
|
<string name="conf_simple_permute_bt_txt">Permute</string>
|
||||||
|
|
|
@ -132,6 +132,7 @@ public class ConferenceActivity extends ListActivity implements
|
||||||
|
|
||||||
findViewById(R.id.incallNumpadShow).setOnClickListener(this);
|
findViewById(R.id.incallNumpadShow).setOnClickListener(this);
|
||||||
findViewById(R.id.conf_simple_merge).setOnClickListener(this);
|
findViewById(R.id.conf_simple_merge).setOnClickListener(this);
|
||||||
|
findViewById(R.id.conf_simple_resume).setOnClickListener(this);
|
||||||
View transferView = findViewById(R.id.conf_simple_transfer);
|
View transferView = findViewById(R.id.conf_simple_transfer);
|
||||||
transferView.setOnClickListener(this);
|
transferView.setOnClickListener(this);
|
||||||
if (!allowTransfers) {
|
if (!allowTransfers) {
|
||||||
|
@ -365,6 +366,10 @@ public class ConferenceActivity extends ListActivity implements
|
||||||
findViewById(R.id.conf_control_buttons).setVisibility(GONE);
|
findViewById(R.id.conf_control_buttons).setVisibility(GONE);
|
||||||
lc().addAllToConference();
|
lc().addAllToConference();
|
||||||
break;
|
break;
|
||||||
|
case R.id.conf_simple_resume:
|
||||||
|
findViewById(R.id.conf_control_buttons).setVisibility(GONE);
|
||||||
|
handleSimpleResume();
|
||||||
|
break;
|
||||||
case R.id.conf_simple_transfer:
|
case R.id.conf_simple_transfer:
|
||||||
findViewById(R.id.conf_control_buttons).setVisibility(GONE);
|
findViewById(R.id.conf_control_buttons).setVisibility(GONE);
|
||||||
LinphoneCall tCall = lc().getCurrentCall();
|
LinphoneCall tCall = lc().getCurrentCall();
|
||||||
|
@ -399,6 +404,36 @@ public class ConferenceActivity extends ListActivity implements
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void handleSimpleResume() {
|
||||||
|
int nbCalls = lc().getCallsNb();
|
||||||
|
if (nbCalls == 0) {
|
||||||
|
return;
|
||||||
|
} else if (nbCalls == 1) {
|
||||||
|
// resume first one
|
||||||
|
for (LinphoneCall call : LinphoneUtils.getLinphoneCalls(lc())) {
|
||||||
|
if (call.getState() == State.Paused) {
|
||||||
|
lc().resumeCall(call);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Create a dialog for user to select
|
||||||
|
final List<LinphoneCall> existingCalls = LinphoneUtils.getLinphoneCalls(lc());
|
||||||
|
final List<String> numbers = new ArrayList<String>(existingCalls.size());
|
||||||
|
Resources r = getResources();
|
||||||
|
for(LinphoneCall c : existingCalls) {
|
||||||
|
numbers.add(LinphoneManager.extractADisplayName(r, c.getRemoteAddress()));
|
||||||
|
}
|
||||||
|
ListAdapter adapter = new ArrayAdapter<String>(ConferenceActivity.this, android.R.layout.select_dialog_item, numbers);
|
||||||
|
DialogInterface.OnClickListener l = new DialogInterface.OnClickListener() {
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
lc().resumeCall(existingCalls.get(which));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
new AlertDialog.Builder(ConferenceActivity.this).setTitle(R.string.resume_dialog_title).setAdapter(adapter, l).create().show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void prepareForTransferingExistingCall(final LinphoneCall call) {
|
private void prepareForTransferingExistingCall(final LinphoneCall call) {
|
||||||
final List<LinphoneCall> existingCalls = LinphoneUtils.getLinphoneCalls(lc());
|
final List<LinphoneCall> existingCalls = LinphoneUtils.getLinphoneCalls(lc());
|
||||||
existingCalls.remove(call);
|
existingCalls.remove(call);
|
||||||
|
@ -669,10 +704,27 @@ public class ConferenceActivity extends ListActivity implements
|
||||||
|
|
||||||
private void updateSimpleControlButtons() {
|
private void updateSimpleControlButtons() {
|
||||||
LinphoneCall activeCall = lc().getCurrentCall();
|
LinphoneCall activeCall = lc().getCurrentCall();
|
||||||
View controlLayout = findViewById(R.id.conf_control_buttons);
|
View control = findViewById(R.id.conf_control_buttons);
|
||||||
int callNb = lc().getCallsNb();
|
int callNb = lc().getCallsNb();
|
||||||
boolean hide = activeCall == null || callNb !=2 || lc().getConferenceSize() > 0;
|
|
||||||
controlLayout.setVisibility(hide ? GONE : VISIBLE);
|
View permute = control.findViewById(R.id.conf_simple_permute);
|
||||||
|
boolean showPermute = activeCall != null && callNb == 2;
|
||||||
|
permute.setVisibility(showPermute ? VISIBLE : GONE);
|
||||||
|
|
||||||
|
View resume = control.findViewById(R.id.conf_simple_resume);
|
||||||
|
boolean showResume = activeCall == null && LinphoneUtils.hasExistingResumeableCall(lc());
|
||||||
|
resume.setVisibility(showResume ? VISIBLE : GONE);
|
||||||
|
|
||||||
|
View merge = control.findViewById(R.id.conf_simple_merge);
|
||||||
|
boolean showMerge = callNb >= 2;
|
||||||
|
merge.setVisibility(showMerge ? VISIBLE : GONE);
|
||||||
|
|
||||||
|
View transfer = control.findViewById(R.id.conf_simple_transfer);
|
||||||
|
boolean showTransfer = callNb >=2 && activeCall != null && allowTransfers;
|
||||||
|
transfer.setVisibility(showTransfer ? VISIBLE : GONE);
|
||||||
|
|
||||||
|
boolean showControl = (showMerge || showPermute || showResume || showTransfer) || lc().getConferenceSize() > 0;
|
||||||
|
control.setVisibility(showControl ? VISIBLE : GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tryToStartVideoActivity(LinphoneCall call, State state) {
|
private void tryToStartVideoActivity(LinphoneCall call, State state) {
|
||||||
|
|
|
@ -28,6 +28,7 @@ import org.linphone.core.LinphoneAddress;
|
||||||
import org.linphone.core.LinphoneCall;
|
import org.linphone.core.LinphoneCall;
|
||||||
import org.linphone.core.LinphoneCore;
|
import org.linphone.core.LinphoneCore;
|
||||||
import org.linphone.core.Log;
|
import org.linphone.core.Log;
|
||||||
|
import org.linphone.core.LinphoneCall.State;
|
||||||
import org.linphone.mediastream.Version;
|
import org.linphone.mediastream.Version;
|
||||||
import org.linphone.mediastream.video.capture.hwconf.Hacks;
|
import org.linphone.mediastream.video.capture.hwconf.Hacks;
|
||||||
|
|
||||||
|
@ -131,5 +132,14 @@ public final class LinphoneUtils {
|
||||||
public static final List<LinphoneCall> getLinphoneCalls(LinphoneCore lc) {
|
public static final List<LinphoneCall> getLinphoneCalls(LinphoneCore lc) {
|
||||||
return (List<LinphoneCall>) lc.getCalls();
|
return (List<LinphoneCall>) lc.getCalls();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final boolean hasExistingResumeableCall(LinphoneCore lc) {
|
||||||
|
for (LinphoneCall c : getLinphoneCalls(lc)) {
|
||||||
|
if (c.getState() == State.Paused) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
submodules/externals/exosip
vendored
2
submodules/externals/exosip
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit ce927e6b891a9d9129ab50d0666f6f22f37228a1
|
Subproject commit 0a98b96e5c72191d42fb8727e1088db126edf005
|
|
@ -1 +1 @@
|
||||||
Subproject commit c6d065690599ed7993d252776f552482dbed267f
|
Subproject commit 2b16115ebf7e8016ce61ddfef9399137d8c7208f
|
Loading…
Reference in a new issue