* #25115 First Implementation of new CallActivity with dual-pane
* #25116 SipCall redesigned, holding list of contacts (android or unknown)
diff --git a/src/com/savoirfairelinux/sflphone/client/CallActivity.java b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
index 3c3ac6a..025709c 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
@@ -3,6 +3,7 @@
*
* Author: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
* Author: Adrien Béraud <adrien.beraud@savoirfairelinux.com>
+ * Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -43,22 +44,23 @@
import android.content.ServiceConnection;
import android.os.Bundle;
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;
import android.widget.Toast;
import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.adapters.CallPagerAdapter;
import com.savoirfairelinux.sflphone.client.receiver.CallReceiver;
import com.savoirfairelinux.sflphone.fragments.CallFragment;
+import com.savoirfairelinux.sflphone.fragments.CallListFragment;
import com.savoirfairelinux.sflphone.interfaces.CallInterface;
import com.savoirfairelinux.sflphone.model.SipCall;
import com.savoirfairelinux.sflphone.service.CallManagerCallBack;
import com.savoirfairelinux.sflphone.service.ISipService;
import com.savoirfairelinux.sflphone.service.SipService;
-public class CallActivity extends Activity implements CallInterface, CallFragment.Callbacks {
+public class CallActivity extends Activity implements CallInterface, CallFragment.Callbacks, CallListFragment.Callbacks {
static final String TAG = "CallActivity";
private ISipService service;
@@ -66,10 +68,13 @@
private ExecutorService infos_fetcher = Executors.newCachedThreadPool();
CallReceiver receiver;
+
+ CallListFragment mCallsFragment;
+ CallFragment mCurrentCallFragment;
- ViewPager vp;
- private CallPagerAdapter mCallPagerAdapter;
- private ViewPager mViewPager;
+
+ // private CallPagerAdapter mCallPagerAdapter;
+ // private ViewPager mViewPager;
/*
* private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@@ -88,13 +93,47 @@
receiver = new CallReceiver(this);
- if (mCallPagerAdapter == null) {
- mCallPagerAdapter = new CallPagerAdapter(this, getFragmentManager());
- }
- mViewPager = (ViewPager) findViewById(R.id.pager);
+ mCallsFragment = new CallListFragment();
+
+
+
+ getFragmentManager().beginTransaction().replace(R.id.calllist_pane, mCallsFragment).commit();
+
- mViewPager.setAdapter(mCallPagerAdapter);
+ final SlidingPaneLayout slidingPaneLayout = (SlidingPaneLayout) findViewById(R.id.slidingpanelayout);
+ slidingPaneLayout.setPanelSlideListener(new SlidingPaneLayout.PanelSlideListener() {
+
+ @Override
+ public void onPanelSlide(View view, float offSet) {
+ }
+
+ @Override
+ public void onPanelOpened(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;
+ }
+ }
+
+ @Override
+ public void onPanelClosed(View view) {
+
+ 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;
+ }
+ }
+ });
Bundle b = getIntent().getExtras();
@@ -102,7 +141,6 @@
// setCallStateDisplay(mCall.getCallStateString());
-
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
@@ -140,12 +178,13 @@
@Override
public void onServiceConnected(ComponentName className, IBinder binder) {
service = ISipService.Stub.asInterface(binder);
- Log.i(TAG, "Placing call");
- CallFragment newCall = new CallFragment();
- newCall.setArguments(getIntent().getExtras());
- getIntent().getExtras();
- SipCall.CallInfo info = getIntent().getExtras().getParcelable("CallInfo");
- mCallPagerAdapter.addCall(info.mCallID, newCall);
+ 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();
}
@@ -158,7 +197,7 @@
public void incomingCall(Intent call) {
Toast.makeText(this, "New Call incoming", Toast.LENGTH_LONG).show();
- // TODO Handle multicall here
+ mCallsFragment.update();
}
@@ -175,34 +214,43 @@
* Bundle bundle = intent.getBundleExtra("com.savoirfairelinux.sflphone.service.newstate"); String callID = bundle.getString("CallID"); String
* newState = bundle.getString("State");
*/
- CallFragment fr = (CallFragment) mCallPagerAdapter.getCall(callID);
+ CallFragment fr = mCurrentCallFragment;
if (newState.equals("INCOMING")) {
- fr.changeCallState(SipCall.CALL_STATE_INCOMING);
+ fr.changeCallState(SipCall.state.CALL_STATE_INCOMING);
} else if (newState.equals("RINGING")) {
- fr.changeCallState(SipCall.CALL_STATE_RINGING);
+ fr.changeCallState(SipCall.state.CALL_STATE_RINGING);
} else if (newState.equals("CURRENT")) {
- fr.changeCallState(SipCall.CALL_STATE_CURRENT);
+ fr.changeCallState(SipCall.state.CALL_STATE_CURRENT);
} else if (newState.equals("HUNGUP")) {
- mCallPagerAdapter.remove(callID);
+// mCallPagerAdapter.remove(callID);
+// if (mCallPagerAdapter.getCount() == 0) {
+// finish();
+// }
} else if (newState.equals("BUSY")) {
- mCallPagerAdapter.remove(callID);
+// mCallPagerAdapter.remove(callID);
+// if (mCallPagerAdapter.getCount() == 0) {
+// finish();
+// }
} else if (newState.equals("FAILURE")) {
- mCallPagerAdapter.remove(callID);
+// mCallPagerAdapter.remove(callID);
+// if (mCallPagerAdapter.getCount() == 0) {
+// finish();
+// }
} else if (newState.equals("HOLD")) {
- fr.changeCallState(SipCall.CALL_STATE_HOLD);
+ fr.changeCallState(SipCall.state.CALL_STATE_HOLD);
} else if (newState.equals("UNHOLD")) {
- fr.changeCallState(SipCall.CALL_STATE_CURRENT);
+ fr.changeCallState(SipCall.state.CALL_STATE_CURRENT);
} else {
- fr.changeCallState(SipCall.CALL_STATE_NONE);
+ fr.changeCallState(SipCall.state.CALL_STATE_NONE);
}