#16898: Write CallInfo as a Parcelable object
diff --git a/src/com/savoirfairelinux/sflphone/client/CallActivity.java b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
index 6613a61..51a6cb4 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
@@ -54,20 +54,19 @@
private ISipService service;
private SipCall mCall;
- public void CallActivity(SipCall call) {
- mCall = call;
- }
-
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.call_activity_layout);
+ Bundle b = getIntent().getExtras();
+ // Parcelable value = b.getParcelable("CallInfo");
+ SipCall.CallInfo info = b.getParcelable("CallInfo"); // new SipCall.CallInfo.CREATOR.createFromParcel
+ Log.i(TAG, "Starting activity for call " + info.mCallID);
+
Intent intent = new Intent(this, SipService.class);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
-
-
}
@Override
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java
index 5f43016..df4ac8a 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHome.java
@@ -517,8 +517,11 @@
{
Log.i(TAG, "Launch Call Activity");
Bundle bundle = new Bundle();
- bundle.putString("CallID", call.mCallInfo.mCallID);
+ // bundle.putString("CallID", call.mCallInfo.mCallID);
+ call.mCallInfo.mCallID = "UNEBELLEPOULE";
+ bundle.putParcelable("CallInfo", call.mCallInfo);
Intent intent = new Intent().setClass(this, CallActivity.class);
+ intent.putExtras(bundle);
startActivity(intent);
}
}
diff --git a/src/com/savoirfairelinux/sflphone/client/SipCall.java b/src/com/savoirfairelinux/sflphone/client/SipCall.java
index 3bac1e2..caf9c9a 100644
--- a/src/com/savoirfairelinux/sflphone/client/SipCall.java
+++ b/src/com/savoirfairelinux/sflphone/client/SipCall.java
@@ -31,43 +31,84 @@
package com.savoirfairelinux.sflphone.client;
import android.os.Parcelable;
+import android.os.Parcel;
import android.util.Log;
import java.util.ArrayList;
-public class SipCall //implements Parcelable
+public class SipCall
{
final static String TAG = "SipCall";
public static CallElementList mCallElementList;
public CallInfo mCallInfo;
- public enum CallState {
- INVALID, // The call is not existent in SFLphone service
- NULL, // Before any action performed
- CALLING, // After INVITE is sent
- INCOMING, // After INVITE is received
- EARLY, // After response with To tag
- CONNECTING, // After 2xx is sent/received
- CONFIRMED, // After ACK is sent/received
- DISCONNECTED // Session is terminated
- }
+ public static int CALL_STATE_INVALID = 0; // The call is not existent in SFLphone service
+ public static int CALL_STATE_NULL = 1; // Before any action performed
+ public static int CALL_STATE_CALLING = 2; // After INVITE is sent
+ public static int CALL_STATE_INCOMING = 3; // After INVITE is received
+ public static int CALL_STATE_EARLY = 4; // After response with To tag
+ public static int CALL_STATE_CONNECTING = 5; // After 2xx is sent/received
+ public static int CALL_STATE_CONFIRMED = 6; // After ACK is sent/received
+ public static int CALL_STATE_DISCONNECTED = 7; // Session is terminated
- public enum MediaState {
- NONE, // No media currently
- ACTIVE, // Media is active
- LOCAL_HOLD, // Media is put on hold bu user
- REMOTE_HOLD, // Media is put on hold by peer
- ERROR, // Media is in error state
- }
+ public static int MEDIA_STATE_NONE = 0; // No media currently
+ public static int MEDIA_STATE_ACTIVE = 1; // Media is active
+ public static int MEDIA_STATE_LOCAL_HOLD = 2; // Media is put on hold bu user
+ public static int MEDIA_STATE_REMOTE_HOLD = 3; // Media is put on hold by peer
+ public static int MEDIA_STATE_ERROR = 4; // Media is in error state
- public static class CallInfo
+ public static class CallInfo implements Parcelable
{
public String mCallID = "";
public String mDisplayName = "";
public String mPhone = "";
public String mEmail = "";
public String mRemoteContact = "";
- public CallState mCallState = CallState.NULL;
- public MediaState mMediaState = MediaState.NONE;
+ public int mCallState = CALL_STATE_NULL;
+ public int mMediaState = MEDIA_STATE_NONE;
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel out, int flags) {
+ ArrayList<String> list = new ArrayList<String>();
+ list.add(mCallID);
+ list.add(mDisplayName);
+ list.add(mPhone);
+ list.add(mEmail);
+ list.add(mRemoteContact);
+
+ out.writeStringList(list);
+ out.writeInt(mCallState);
+ out.writeInt(mMediaState);
+ }
+
+ public static final Parcelable.Creator<CallInfo> CREATOR
+ = new Parcelable.Creator<CallInfo>() {
+ public CallInfo createFromParcel(Parcel in) {
+ return new CallInfo(in);
+ }
+
+ public CallInfo[] newArray(int size) {
+ return new CallInfo[size];
+ }
+ };
+
+ public CallInfo() {}
+
+ private CallInfo(Parcel in) {
+ ArrayList<String> list = in.createStringArrayList();
+ mCallID = list.get(0);
+ mDisplayName = list.get(1);
+ mPhone = list.get(2);
+ mEmail = list.get(3);
+ mRemoteContact = list.get(4);
+
+ mCallState = in.readInt();
+ mMediaState = in.readInt();
+ }
}
public SipCall()