* #29743 modified config.h of libsnd, UI adjustements
diff --git a/src/com/savoirfairelinux/sflphone/client/CallActivity.java b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
index 9c2c0c3..5f5d78b 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
@@ -412,8 +412,8 @@
public void onRecordCall(SipCall call) {
try {
- service.setRecordPath(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator);
- Log.w(TAG, "Recording path" + service.getRecordPath());
+// service.setRecordPath(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator);
+ Log.w(TAG, "Recording path " + service.getRecordPath());
service.toggleRecordingCall(call.getCallId());
} catch (RemoteException e) {
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
index a7c22ee..7dd4f0e 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
@@ -31,8 +31,12 @@
package com.savoirfairelinux.sflphone.fragments;
+import java.util.ArrayList;
+
import android.app.Activity;
import android.app.Fragment;
+import android.app.FragmentManager;
+import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PointF;
@@ -63,6 +67,8 @@
float BUBBLE_SIZE = 75;
static final float ATTRACTOR_SIZE = 40;
+ public static final int REQUEST_TRANSFER = 10;
+
private Conference conf;
private CounterTextView callStatusTxt;
@@ -75,7 +81,7 @@
boolean accepted = false;
- private Bitmap hangup_icon, separate_icon;
+ private Bitmap hangup_icon, transfer_icon;
private Bitmap call_icon;
@Override
@@ -196,6 +202,45 @@
}
@Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ SipCall transfer = null;
+ if (requestCode == REQUEST_TRANSFER) {
+ switch (resultCode) {
+ case 0:
+ Conference c = data.getParcelableExtra("target");
+ transfer = data.getParcelableExtra("transfer");
+ try {
+
+ mCallbacks.getService().attendedTransfer(transfer.getCallId(), c.getParticipants().get(0).getCallId());
+
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ Toast.makeText(getActivity(), "Transfer complete", Toast.LENGTH_LONG).show();
+ break;
+
+ case 1:
+ String to = data.getStringExtra("to_number");
+ transfer = data.getParcelableExtra("transfer");
+ try {
+ Toast.makeText(getActivity(), "Transferring " + transfer.getContact().getmDisplayName() + " to " + to, Toast.LENGTH_SHORT).show();
+ mCallbacks.getService().transfer(transfer.getCallId(), to);
+ mCallbacks.getService().hangUp(transfer.getCallId());
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+
+ @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.frag_call, container, false);
@@ -208,7 +253,7 @@
hangup_icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_hangup);
call_icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_call);
- separate_icon = BitmapFactory.decodeResource(getResources(), R.drawable.icon_separate);
+ transfer_icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_phones_call_transfer_icon);
// Do nothing here, the view is not initialized yet.
return rootView;
@@ -237,7 +282,7 @@
}
model.clearAttractors();
- model.addAttractor(new Attractor(new PointF(model.width / 2f, model.height * 0.9f), ATTRACTOR_SIZE, new Attractor.Callback() {
+ model.addAttractor(new Attractor(new PointF(model.width * .2f, model.height * 0.9f), ATTRACTOR_SIZE, new Attractor.Callback() {
@Override
public boolean onBubbleSucked(Bubble b) {
Log.w(TAG, "Bubble sucked ! ");
@@ -249,6 +294,8 @@
mCallbacks.getService().hangUpConference(conf.getId());
else
mCallbacks.onCallEnded(conf.getParticipants().get(0));
+
+ model.clearAttractors();
} catch (RemoteException e) {
e.printStackTrace();
}
@@ -261,6 +308,15 @@
}
}, hangup_icon));
+ model.addAttractor(new Attractor(new PointF(model.width * .8f, model.height * 0.9f), ATTRACTOR_SIZE, new Attractor.Callback() {
+ @Override
+ public boolean onBubbleSucked(Bubble b) {
+ Log.w(TAG, "Bubble sucked ! ");
+ makeTransfer(b);
+ return true;
+ }
+ }, transfer_icon));
+
// if (conf.hasMultipleParticipants()) {
// model.addAttractor(new Attractor(new PointF(model.width / 1.1f, model.height * .9f), ATTRACTOR_SIZE, new Attractor.Callback() {
// @Override
@@ -332,6 +388,7 @@
}
model.clearAttractors();
+
model.addAttractor(new Attractor(new PointF(model.width / 2f, model.height * .9f), 40, new Attractor.Callback() {
@Override
public boolean onBubbleSucked(Bubble b) {
@@ -453,6 +510,19 @@
}
+ public void makeTransfer(Bubble contact) {
+ FragmentManager fm = getFragmentManager();
+ TransferDFragment editName = new TransferDFragment();
+
+ Bundle b = new Bundle();
+ b.putParcelableArrayList("calls", new ArrayList<Conference>());
+ b.putParcelable("call_selected", contact.associated_call);
+ editName.setArguments(b);
+ editName.setTargetFragment(this, REQUEST_TRANSFER);
+ editName.show(fm, "");
+
+ }
+
@Override
public void surfaceCreated(SurfaceHolder holder) {
}
@@ -465,5 +535,4 @@
return view;
}
-
}
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
index 4b3f516..d31cfb7 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
@@ -489,13 +489,13 @@
if (call.getParticipants().size() == 1) {
((TextView) convertView.findViewById(R.id.call_title)).setText(call.getParticipants().get(0).getContact().getmDisplayName());
} else {
- String tmp = "Conference with "+ call.getParticipants().size()+" participants";
-// for (SipCall c : call.getParticipants()) {
-// tmp += c.getContact().getmDisplayName() + " ";
-// }
+ String tmp = "Conference with " + call.getParticipants().size() + " participants";
+ // for (SipCall c : call.getParticipants()) {
+ // tmp += c.getContact().getmDisplayName() + " ";
+ // }
((TextView) convertView.findViewById(R.id.call_title)).setText(tmp);
}
-// ((TextView) convertView.findViewById(R.id.num_participants)).setText("" + call.getParticipants().size());
+ // ((TextView) convertView.findViewById(R.id.num_participants)).setText("" + call.getParticipants().size());
((TextView) convertView.findViewById(R.id.call_status)).setText(call.getState());
convertView.setOnDragListener(dragListener);
diff --git a/src/com/savoirfairelinux/sflphone/fragments/TransferDFragment.java b/src/com/savoirfairelinux/sflphone/fragments/TransferDFragment.java
index c410211..904bb1a 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/TransferDFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/TransferDFragment.java
@@ -67,7 +67,7 @@
View rootView = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_transfer, null);
ArrayList<Conference> calls = getArguments().getParcelableArrayList("calls");
- final Conference call_selected = getArguments().getParcelable("call_selected");
+ final SipCall call_selected = getArguments().getParcelable("call_selected");
mAdapter = new SimpleCallListAdapter(getActivity(), calls);
ListView list = (ListView) rootView.findViewById(R.id.concurrent_calls);
@@ -90,7 +90,7 @@
mEditText.setAdapter(autoCompleteAdapter);
final AlertDialog a = new AlertDialog.Builder(getActivity()).setView(rootView)
- .setTitle("Transfer " + call_selected.getParticipants().get(0).getContact().getmDisplayName())
+ .setTitle("Transfer " + call_selected.getContact().getmDisplayName())
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
diff --git a/src/com/savoirfairelinux/sflphone/model/BubblesView.java b/src/com/savoirfairelinux/sflphone/model/BubblesView.java
index a29d8ab..235b680 100644
--- a/src/com/savoirfairelinux/sflphone/model/BubblesView.java
+++ b/src/com/savoirfairelinux/sflphone/model/BubblesView.java
@@ -404,6 +404,7 @@
((CallActivity) callback.getActivity()).onRecordCall(expand.associated_call);
break;
case 3:
+ callback.makeTransfer(expand);
Toast.makeText(getContext(), "Not implemented here", Toast.LENGTH_SHORT).show();
break;
}