Bubbles cleanup and bug fixes.
diff --git a/src/com/savoirfairelinux/sflphone/client/CallActivity.java b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
index e8d87de..8c59016 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
@@ -47,7 +47,6 @@
import android.os.Environment;
import android.os.IBinder;
import android.os.RemoteException;
-import android.support.v4.view.ViewPager;
import android.support.v4.widget.SlidingPaneLayout;
import android.util.Log;
import android.view.View;
@@ -63,364 +62,368 @@
import com.savoirfairelinux.sflphone.service.CallManagerCallBack;
import com.savoirfairelinux.sflphone.service.ISipService;
import com.savoirfairelinux.sflphone.service.SipService;
+import com.savoirfairelinux.sflphone.views.CallPaneLayout;
public class CallActivity extends Activity implements CallInterface, CallFragment.Callbacks, CallListFragment.Callbacks {
- static final String TAG = "CallActivity";
- private ISipService service;
+ static final String TAG = "CallActivity";
+ private ISipService service;
- private String pendingAction = null;
+ private String pendingAction = null;
- private ExecutorService infos_fetcher = Executors.newCachedThreadPool();
- CallReceiver receiver;
-
- SlidingPaneLayout slidingPaneLayout;
+ private ExecutorService infos_fetcher = Executors.newCachedThreadPool();
+ CallReceiver receiver;
- CallListFragment mCallsFragment;
- CallFragment mCurrentCallFragment;
+ CallPaneLayout slidingPaneLayout;
- // private CallPagerAdapter mCallPagerAdapter;
- // private ViewPager mViewPager;
+ CallListFragment mCallsFragment;
+ CallFragment mCurrentCallFragment;
- /*
- * private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
- *
- * @Override public void onReceive(Context context, Intent intent) { String signalName = intent.getStringExtra(CallManagerCallBack.SIGNAL_NAME);
- * Log.d(TAG, "Signal received: " + signalName);
- *
- * if (signalName.equals(CallManagerCallBack.NEW_CALL_CREATED)) { } else if (signalName.equals(CallManagerCallBack.CALL_STATE_CHANGED)) {
- * processCallStateChangedSignal(intent); } else if (signalName.equals(CallManagerCallBack.INCOMING_CALL)) { } } };
- */
+ // private CallPagerAdapter mCallPagerAdapter;
+ // private ViewPager mViewPager;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_call_layout);
+ /*
+ * private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
+ *
+ * @Override public void onReceive(Context context, Intent intent) { String signalName = intent.getStringExtra(CallManagerCallBack.SIGNAL_NAME);
+ * Log.d(TAG, "Signal received: " + signalName);
+ *
+ * if (signalName.equals(CallManagerCallBack.NEW_CALL_CREATED)) { } else if (signalName.equals(CallManagerCallBack.CALL_STATE_CHANGED)) {
+ * processCallStateChangedSignal(intent); } else if (signalName.equals(CallManagerCallBack.INCOMING_CALL)) { } } };
+ */
- receiver = new CallReceiver(this);
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_call_layout);
- mCallsFragment = new CallListFragment();
+ receiver = new CallReceiver(this);
- getFragmentManager().beginTransaction().replace(R.id.calllist_pane, mCallsFragment).commit();
+ mCallsFragment = new CallListFragment();
- slidingPaneLayout = (SlidingPaneLayout) findViewById(R.id.slidingpanelayout);
- slidingPaneLayout.setPanelSlideListener(new SlidingPaneLayout.PanelSlideListener() {
+ getFragmentManager().beginTransaction().replace(R.id.calllist_pane, mCallsFragment).commit();
- @Override
- public void onPanelSlide(View view, float offSet) {
- }
+ slidingPaneLayout = (CallPaneLayout) findViewById(R.id.slidingpanelayout);
+ // slidingPaneLayout.requestDisallowInterceptTouchEvent(disallowIntercept)
+ slidingPaneLayout.setPanelSlideListener(new SlidingPaneLayout.PanelSlideListener() {
- @Override
- public void onPanelOpened(View view) {
+ @Override
+ public void onPanelSlide(View view, float offSet) {
+ }
- switch (view.getId()) {
- case R.id.calllist_pane:
- // getFragmentManager().findFragmentById(R.id.calllist_pane).setHasOptionsMenu(true);
- // getFragmentManager().findFragmentById(R.id.ongoingcall_pane).setHasOptionsMenu(false);
- break;
- default:
- break;
- }
- }
+ @Override
+ public void onPanelOpened(View view) {
- @Override
- public void onPanelClosed(View view) {
+ switch (view.getId()) {
+ case R.id.calllist_pane:
+ // getFragmentManager().findFragmentById(R.id.calllist_pane).setHasOptionsMenu(true);
+ // getFragmentManager().findFragmentById(R.id.ongoingcall_pane).setHasOptionsMenu(false);
+ break;
+ default:
+ break;
+ }
+ }
- switch (view.getId()) {
- case R.id.ongoingcall_pane:
- // getFragmentManager().findFragmentById(R.id.calllist_pane).setHasOptionsMenu(false);
- // getFragmentManager().findFragmentById(R.id.ongoingcall_pane).setHasOptionsMenu(true);
- break;
- default:
- break;
- }
- }
- });
+ @Override
+ public void onPanelClosed(View view) {
- Bundle b = getIntent().getExtras();
+ switch (view.getId()) {
+ case R.id.ongoingcall_pane:
+ // getFragmentManager().findFragmentById(R.id.calllist_pane).setHasOptionsMenu(false);
+ // getFragmentManager().findFragmentById(R.id.ongoingcall_pane).setHasOptionsMenu(true);
+ break;
+ default:
+ break;
+ }
+ }
+ });
- Intent intent = new Intent(this, SipService.class);
+ Bundle b = getIntent().getExtras();
- // setCallStateDisplay(mCall.getCallStateString());
+ Intent intent = new Intent(this, SipService.class);
- bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+ // setCallStateDisplay(mCall.getCallStateString());
- }
+ bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
- /* activity gets back to the foreground and user input */
- @Override
- protected void onResume() {
- Log.i(TAG, "onResume");
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(CallManagerCallBack.INCOMING_CALL);
- intentFilter.addAction(CallManagerCallBack.INCOMING_TEXT);
- intentFilter.addAction(CallManagerCallBack.CALL_STATE_CHANGED);
- registerReceiver(receiver, intentFilter);
- super.onResume();
- }
+ }
- /* activity no more in foreground */
- @Override
- protected void onPause() {
- super.onPause();
- unregisterReceiver(receiver);
- }
+ /* activity gets back to the foreground and user input */
+ @Override
+ protected void onResume() {
+ Log.i(TAG, "onResume");
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(CallManagerCallBack.INCOMING_CALL);
+ intentFilter.addAction(CallManagerCallBack.INCOMING_TEXT);
+ intentFilter.addAction(CallManagerCallBack.CALL_STATE_CHANGED);
+ registerReceiver(receiver, intentFilter);
+ super.onResume();
+ }
- @Override
- protected void onDestroy() {
- // Log.i(TAG, "Destroying Call Activity for call " + mCall.getCallId());
- // LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
- unbindService(mConnection);
+ /* activity no more in foreground */
+ @Override
+ protected void onPause() {
+ super.onPause();
+ unregisterReceiver(receiver);
+ }
- super.onDestroy();
- }
+ @Override
+ protected void onDestroy() {
+ // Log.i(TAG, "Destroying Call Activity for call " + mCall.getCallId());
+ // LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
+ unbindService(mConnection);
- /** Defines callbacks for service binding, passed to bindService() */
- private ServiceConnection mConnection = new ServiceConnection() {
- @Override
- public void onServiceConnected(ComponentName className, IBinder binder) {
- service = ISipService.Stub.asInterface(binder);
- Log.i(TAG, "Placing call");
- mCurrentCallFragment = new CallFragment();
- mCurrentCallFragment.setArguments(getIntent().getExtras());
- getIntent().getExtras();
- // SipCall info = getIntent().getExtras().getParcelable("CallInfo");
- // mCallPagerAdapter.addCall(info.mCallID, newCall);
- getFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment).commit();
+ super.onDestroy();
+ }
- }
+ /** Defines callbacks for service binding, passed to bindService() */
+ private ServiceConnection mConnection = new ServiceConnection() {
+ @Override
+ public void onServiceConnected(ComponentName className, IBinder binder) {
+ service = ISipService.Stub.asInterface(binder);
+ Log.i(TAG, "Placing call");
+ mCurrentCallFragment = new CallFragment();
+ mCurrentCallFragment.setArguments(getIntent().getExtras());
+ slidingPaneLayout.curFragment = mCurrentCallFragment;
+ getIntent().getExtras();
+ // SipCall info = getIntent().getExtras().getParcelable("CallInfo");
+ // mCallPagerAdapter.addCall(info.mCallID, newCall);
+ getFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment).commit();
- @Override
- public void onServiceDisconnected(ComponentName arg0) {
- }
- };
+ }
- @Override
- public void incomingCall(Intent call) {
- Toast.makeText(this, "New Call incoming", Toast.LENGTH_LONG).show();
+ @Override
+ public void onServiceDisconnected(ComponentName arg0) {
+ }
+ };
- mCallsFragment.update();
+ @Override
+ public void incomingCall(Intent call) {
+ Toast.makeText(this, "New Call incoming", Toast.LENGTH_LONG).show();
- }
+ mCallsFragment.update();
- @Override
- public void callStateChanged(Intent callState) {
+ }
- Bundle b = callState.getBundleExtra("com.savoirfairelinux.sflphone.service.newstate");
- processCallStateChangedSignal(b.getString("CallID"), b.getString("State"));
+ @Override
+ public void callStateChanged(Intent callState) {
- }
+ Bundle b = callState.getBundleExtra("com.savoirfairelinux.sflphone.service.newstate");
+ processCallStateChangedSignal(b.getString("CallID"), b.getString("State"));
- public void processCallStateChangedSignal(String callID, String newState) {
- /*
- * Bundle bundle = intent.getBundleExtra("com.savoirfairelinux.sflphone.service.newstate"); String callID = bundle.getString("CallID"); String
- * newState = bundle.getString("State");
- */
- // CallFragment fr = mCurrentCallFragment;
+ }
- mCallsFragment.update();
-
- mCurrentCallFragment.changeCallState(callID, newState);
-
- HashMap<String, SipCall> map;
- try {
- map = (HashMap<String, SipCall>) service.getCallList();
- if(map.size() == 0){
- finish();
- }
- } catch (RemoteException e) {
- Log.e(TAG, e.toString());
- }
-
-
+ public void processCallStateChangedSignal(String callID, String newState) {
+ /*
+ * Bundle bundle = intent.getBundleExtra("com.savoirfairelinux.sflphone.service.newstate"); String callID = bundle.getString("CallID"); String
+ * newState = bundle.getString("State");
+ */
+ // CallFragment fr = mCurrentCallFragment;
- // if (newState.equals("INCOMING")) {
- // fr.changeCallState(SipCall.state.CALL_STATE_INCOMING);
- //
- // } else if (newState.equals("RINGING")) {
- // fr.changeCallState(SipCall.state.CALL_STATE_RINGING);
- //
- // } else if (newState.equals("CURRENT")) {
- // fr.changeCallState(SipCall.state.CALL_STATE_CURRENT);
- //
- // } else if (newState.equals("HUNGUP")) {
- // // mCallPagerAdapter.remove(callID);
- // // if (mCallPagerAdapter.getCount() == 0) {
- // // finish();
- // // }
- //
- // } else if (newState.equals("BUSY")) {
- // // mCallPagerAdapter.remove(callID);
- // // if (mCallPagerAdapter.getCount() == 0) {
- // // finish();
- // // }
- //
- // } else if (newState.equals("FAILURE")) {
- // // mCallPagerAdapter.remove(callID);
- // // if (mCallPagerAdapter.getCount() == 0) {
- // // finish();
- // // }
- //
- // } else if (newState.equals("HOLD")) {
- // fr.changeCallState(SipCall.state.CALL_STATE_HOLD);
- //
- // } else if (newState.equals("UNHOLD")) {
- // fr.changeCallState(SipCall.state.CALL_STATE_CURRENT);
- //
- // } else {
- // fr.changeCallState(SipCall.state.CALL_STATE_NONE);
- //
- // }
+ mCallsFragment.update();
- Log.w(TAG, "processCallStateChangedSignal " + newState);
+ mCurrentCallFragment.changeCallState(callID, newState);
- }
-
- @Override
- public void incomingText(Intent msg) {
- Toast.makeText(this, "New Call incoming", Toast.LENGTH_LONG).show();
-
- // TODO link text message to associate call and display it at the right place
-
- }
-
- @Override
- public ISipService getService() {
- return service;
- }
-
- @Override
- public void onCallSelected(SipCall call) {
- mCurrentCallFragment = new CallFragment();
- Bundle b = new Bundle();
- b.putParcelable("CallInfo", call);
- mCurrentCallFragment.setArguments(b);
- getFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment).commit();
-
- slidingPaneLayout.openPane();
-
- }
-
- @Override
- public void callContact(SipCall call) {
- try {
- service.placeCall(call);
- } catch (RemoteException e) {
- Log.e(TAG, "Cannot call service method", e);
- }
-
- }
-
- @Override
- public void onCallAccepted(SipCall call) {
- int callState = call.getCallStateInt();
- if ((callState != state.CALL_STATE_RINGING) && (callState != state.CALL_STATE_NONE)) {
- return;
- }
-
- try {
- service.accept(call.getCallId());
- } catch (RemoteException e) {
- Log.e(TAG, "Cannot call service method", e);
- }
-
- }
-
- @Override
- public void onCallRejected(SipCall call) {
- try {
- if (call.getCallStateInt() == state.CALL_STATE_RINGING) {
- service.refuse(call.getCallId());
- return;
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Cannot call service method", e);
- }
- }
-
- @Override
- public void onCallEnded(SipCall call) {
- try {
- if ((call.getCallStateInt() == state.CALL_STATE_NONE) || (call.getCallStateInt() == state.CALL_STATE_CURRENT)
- || (call.getCallStateInt() == state.CALL_STATE_HOLD)) {
- service.hangUp(call.getCallId());
- return;
-
- } else if (call.getCallStateInt() == state.CALL_STATE_RINGING) {
- if (call.getCallType() == state.CALL_TYPE_INCOMING) {
- service.refuse(call.getCallId());
- return;
- } else if (call.getCallType() == state.CALL_TYPE_OUTGOING) {
- service.hangUp(call.getCallId());
- return;
- }
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Cannot call service method", e);
- }
- }
-
- @Override
- public void onCallSuspended(SipCall call) {
- try {
- if (call.getCallStateInt() == state.CALL_STATE_CURRENT) {
- service.hold(call.getCallId());
- return;
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Cannot call service method", e);
- }
- }
-
- @Override
- public void onCallResumed(SipCall call) {
- try {
- if (call.getCallStateInt() == state.CALL_STATE_HOLD) {
- service.unhold(call.getCallId());
- return;
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Cannot call service method", e);
- }
+ HashMap<String, SipCall> map;
+ try {
+ map = (HashMap<String, SipCall>) service.getCallList();
+ if(map.size() == 0){
+ finish();
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, e.toString());
+ }
- }
- @Override
- public void onCalltransfered(SipCall call,String to) {
- try {
- if (call.getCallStateInt() == state.CALL_STATE_CURRENT) {
- service.transfer(call.getCallId(), to);
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Cannot call service method", e);
- }
+ // if (newState.equals("INCOMING")) {
+ // fr.changeCallState(SipCall.state.CALL_STATE_INCOMING);
+ //
+ // } else if (newState.equals("RINGING")) {
+ // fr.changeCallState(SipCall.state.CALL_STATE_RINGING);
+ //
+ // } else if (newState.equals("CURRENT")) {
+ // fr.changeCallState(SipCall.state.CALL_STATE_CURRENT);
+ //
+ // } else if (newState.equals("HUNGUP")) {
+ // // mCallPagerAdapter.remove(callID);
+ // // if (mCallPagerAdapter.getCount() == 0) {
+ // // finish();
+ // // }
+ //
+ // } else if (newState.equals("BUSY")) {
+ // // mCallPagerAdapter.remove(callID);
+ // // if (mCallPagerAdapter.getCount() == 0) {
+ // // finish();
+ // // }
+ //
+ // } else if (newState.equals("FAILURE")) {
+ // // mCallPagerAdapter.remove(callID);
+ // // if (mCallPagerAdapter.getCount() == 0) {
+ // // finish();
+ // // }
+ //
+ // } else if (newState.equals("HOLD")) {
+ // fr.changeCallState(SipCall.state.CALL_STATE_HOLD);
+ //
+ // } else if (newState.equals("UNHOLD")) {
+ // fr.changeCallState(SipCall.state.CALL_STATE_CURRENT);
+ //
+ // } else {
+ // fr.changeCallState(SipCall.state.CALL_STATE_NONE);
+ //
+ // }
- }
+ Log.w(TAG, "processCallStateChangedSignal " + newState);
- @Override
- public void onRecordCall(SipCall call) {
- try {
- if (call.getCallStateInt() == state.CALL_STATE_CURRENT) {
- service.setRecordPath(Environment.getExternalStorageDirectory().getAbsolutePath());
- Log.w(TAG, "Recording path" + service.getRecordPath());
- service.setRecordingCall(call.getCallId());
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Cannot call service method", e);
- }
+ }
- }
+ @Override
+ public void incomingText(Intent msg) {
+ Toast.makeText(this, "New Call incoming", Toast.LENGTH_LONG).show();
- @Override
- public void onSendMessage(SipCall call, String msg) {
- try {
- if (call.getCallStateInt() == state.CALL_STATE_CURRENT) {
- service.sendTextMessage(call.getCallId(), msg, "Me");
- }
- } catch (RemoteException e) {
- Log.e(TAG, "Cannot call service method", e);
- }
+ // TODO link text message to associate call and display it at the right place
- }
+ }
+
+ @Override
+ public ISipService getService() {
+ return service;
+ }
+
+ @Override
+ public void onCallSelected(SipCall call) {
+ mCurrentCallFragment = new CallFragment();
+ Bundle b = new Bundle();
+ b.putParcelable("CallInfo", call);
+ mCurrentCallFragment.setArguments(b);
+ getFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment).commit();
+
+ slidingPaneLayout.curFragment = mCurrentCallFragment;
+ slidingPaneLayout.openPane();
+
+ }
+
+ @Override
+ public void callContact(SipCall call) {
+ try {
+ service.placeCall(call);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Cannot call service method", e);
+ }
+
+ }
+
+ @Override
+ public void onCallAccepted(SipCall call) {
+ int callState = call.getCallStateInt();
+ if (callState != state.CALL_STATE_RINGING && callState != state.CALL_STATE_NONE) {
+ return;
+ }
+
+ try {
+ service.accept(call.getCallId());
+ } catch (RemoteException e) {
+ Log.e(TAG, "Cannot call service method", e);
+ }
+
+ }
+
+ @Override
+ public void onCallRejected(SipCall call) {
+ try {
+ if (call.getCallStateInt() == state.CALL_STATE_RINGING) {
+ service.refuse(call.getCallId());
+ return;
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "Cannot call service method", e);
+ }
+ }
+
+ @Override
+ public void onCallEnded(SipCall call) {
+ try {
+ if (call.getCallStateInt() == state.CALL_STATE_NONE || call.getCallStateInt() == state.CALL_STATE_CURRENT
+ || call.getCallStateInt() == state.CALL_STATE_HOLD) {
+ service.hangUp(call.getCallId());
+ return;
+
+ } else if (call.getCallStateInt() == state.CALL_STATE_RINGING) {
+ if (call.getCallType() == state.CALL_TYPE_INCOMING) {
+ service.refuse(call.getCallId());
+ return;
+ } else if (call.getCallType() == state.CALL_TYPE_OUTGOING) {
+ service.hangUp(call.getCallId());
+ return;
+ }
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "Cannot call service method", e);
+ }
+ }
+
+ @Override
+ public void onCallSuspended(SipCall call) {
+ try {
+ if (call.getCallStateInt() == state.CALL_STATE_CURRENT) {
+ service.hold(call.getCallId());
+ return;
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "Cannot call service method", e);
+ }
+ }
+
+ @Override
+ public void onCallResumed(SipCall call) {
+ try {
+ if (call.getCallStateInt() == state.CALL_STATE_HOLD) {
+ service.unhold(call.getCallId());
+ return;
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "Cannot call service method", e);
+ }
+
+
+ }
+
+ @Override
+ public void onCalltransfered(SipCall call,String to) {
+ try {
+ if (call.getCallStateInt() == state.CALL_STATE_CURRENT) {
+ service.transfer(call.getCallId(), to);
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "Cannot call service method", e);
+ }
+
+ }
+
+ @Override
+ public void onRecordCall(SipCall call) {
+ try {
+ if (call.getCallStateInt() == state.CALL_STATE_CURRENT) {
+ service.setRecordPath(Environment.getExternalStorageDirectory().getAbsolutePath());
+ Log.w(TAG, "Recording path" + service.getRecordPath());
+ service.setRecordingCall(call.getCallId());
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "Cannot call service method", e);
+ }
+
+ }
+
+ @Override
+ public void onSendMessage(SipCall call, String msg) {
+ try {
+ if (call.getCallStateInt() == state.CALL_STATE_CURRENT) {
+ service.sendTextMessage(call.getCallId(), msg, "Me");
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "Cannot call service method", e);
+ }
+
+ }
}