* #30152: refactoring
diff --git a/src/com/savoirfairelinux/sflphone/account/CallDetailsHandler.java b/src/com/savoirfairelinux/sflphone/account/CallDetailsHandler.java
index 1731113..636a63c 100644
--- a/src/com/savoirfairelinux/sflphone/account/CallDetailsHandler.java
+++ b/src/com/savoirfairelinux/sflphone/account/CallDetailsHandler.java
@@ -1,16 +1,59 @@
+/*
+ * Copyright (C) 2004-2013 Savoir-Faire Linux Inc.
+ *
+ * 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
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Additional permission under GNU GPL version 3 section 7:
+ *
+ * If you modify this program, or any covered work, by linking or
+ * combining it with the OpenSSL project's OpenSSL library (or a
+ * modified version of that library), containing parts covered by the
+ * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
+ * grants you additional permission to convey the resulting work.
+ * Corresponding Source for a non-source form of such a combination
+ * shall include the source code for the parts of OpenSSL used as well
+ * as that of the covered work.
+ */
+
package com.savoirfairelinux.sflphone.account;
import java.util.HashMap;
+import android.util.Log;
+
import com.savoirfairelinux.sflphone.service.ServiceConstants;
import com.savoirfairelinux.sflphone.service.StringMap;
public class CallDetailsHandler {
+
+ private static String TAG = CallDetailsHandler.class.getSimpleName();
public static HashMap<String, String> convertSwigToNative(StringMap swigmap) {
HashMap<String, String> entry = new HashMap<String, String>();
+ Log.i(TAG, "CALL_TYPE: " + swigmap.get(ServiceConstants.call.CALL_TYPE));
+ Log.i(TAG, "PEER_NUMBER: " + swigmap.get(ServiceConstants.call.PEER_NUMBER));
+ Log.i(TAG, "DISPLAY_NAME: " + swigmap.get(ServiceConstants.call.DISPLAY_NAME));
+ Log.i(TAG, "CALL_STATE: " + swigmap.get(ServiceConstants.call.CALL_STATE));
+ Log.i(TAG, "CONF_ID" + swigmap.get(ServiceConstants.call.CONF_ID));
+ Log.i(TAG, "TIMESTAMP_START: " + swigmap.get(ServiceConstants.call.TIMESTAMP_START));
+ Log.i(TAG, "ACCOUNTID: " + swigmap.get(ServiceConstants.call.ACCOUNTID));
+
entry.put(ServiceConstants.call.CALL_TYPE, swigmap.get(ServiceConstants.call.CALL_TYPE));
entry.put(ServiceConstants.call.PEER_NUMBER, swigmap.get(ServiceConstants.call.PEER_NUMBER));
entry.put(ServiceConstants.call.DISPLAY_NAME, swigmap.get(ServiceConstants.call.DISPLAY_NAME));
diff --git a/src/com/savoirfairelinux/sflphone/client/CallActivity.java b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
index 4799565..bb26765 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
@@ -33,6 +33,7 @@
package com.savoirfairelinux.sflphone.client;
+import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
@@ -262,10 +263,19 @@
try {
HashMap<String, SipCall> callMap = (HashMap<String, SipCall>) service.getCallList();
HashMap<String, Conference> confMap = (HashMap<String, Conference>) service.getConferenceList();
+
if (callMap.size() == 0 && confMap.size() == 0) {
finish();
}
+
+ if (callMap.size() > 0) {
+ ArrayList<SipCall> calls = new ArrayList<SipCall>(callMap.values());
+ HashMap<String, String> details = (HashMap<String, String>) service.getCallDetails(calls.get(0).getCallId());
+
+
+ }
} catch (RemoteException e) {
+
Log.e(TAG, e.toString());
}
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
index 7dd4f0e..6f01aea 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
@@ -48,6 +48,7 @@
import android.view.SurfaceHolder.Callback;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.TextView;
import android.widget.Toast;
import com.savoirfairelinux.sflphone.R;
@@ -58,7 +59,6 @@
import com.savoirfairelinux.sflphone.model.Conference;
import com.savoirfairelinux.sflphone.model.SipCall;
import com.savoirfairelinux.sflphone.service.ISipService;
-import com.savoirfairelinux.sflphone.views.CounterTextView;
public class CallFragment extends Fragment implements Callback {
@@ -71,7 +71,7 @@
private Conference conf;
- private CounterTextView callStatusTxt;
+ private TextView callStatusTxt;
private BubblesView view;
private BubbleModel model;
@@ -249,7 +249,7 @@
view.setModel(model);
view.getHolder().addCallback(this);
- callStatusTxt = (CounterTextView) rootView.findViewById(R.id.call_status_txt);
+ callStatusTxt = (TextView) rootView.findViewById(R.id.call_status_txt);
hangup_icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_hangup);
call_icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_call);
diff --git a/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java b/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java
index eba51ee..166d926 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/HomeFragment.java
@@ -32,6 +32,8 @@
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Observable;
+import java.util.Observer;
import android.app.Activity;
import android.app.Fragment;
@@ -43,16 +45,15 @@
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
-import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import com.savoirfairelinux.sflphone.R;
+import com.savoirfairelinux.sflphone.model.CallTimer;
import com.savoirfairelinux.sflphone.model.Conference;
import com.savoirfairelinux.sflphone.model.SipCall;
import com.savoirfairelinux.sflphone.service.ISipService;
@@ -64,6 +65,7 @@
// Button access_calls;
TextView nb_calls, nb_confs;
CallListAdapter confs_adapter;
+ CallTimer timer;
private CallListAdapter calls_adapter;
@@ -113,7 +115,17 @@
if (mCallbacks.getService() != null) {
try {
+ timer = new CallTimer();
+
updateLists();
+
+ if(!calls_adapter.isEmpty() || !confs_adapter.isEmpty()){
+
+ timer.addObserver(calls_adapter);
+ timer.addObserver(confs_adapter);
+ new Thread(timer).start();
+ }
+
} catch (RemoteException e) {
Log.e(TAG, e.toString());
@@ -122,6 +134,7 @@
}
+
public void updateLists() throws RemoteException {
HashMap<String, SipCall> calls = (HashMap<String, SipCall>) mCallbacks.getService().getCallList();
HashMap<String, Conference> confs = (HashMap<String, Conference>) mCallbacks.getService().getConferenceList();
@@ -151,19 +164,22 @@
@Override
public void onDetach() {
+
super.onDetach();
mCallbacks = sDummyCallbacks;
+
}
@Override
public void onCreate(Bundle savedInstanceState) {
+
super.onCreate(savedInstanceState);
- // mAdapter = new CallElementAdapter(getActivity(), new ArrayList<SipCall>());
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
+
super.onActivityCreated(savedInstanceState);
// Give some text to display if there is no data. In a real
@@ -177,6 +193,7 @@
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+
inflater.inflate(R.menu.call_element_menu, menu);
}
@@ -209,7 +226,7 @@
};
- public class CallListAdapter extends BaseAdapter {
+ public class CallListAdapter extends BaseAdapter implements Observer {
private ArrayList<Conference> calls;
@@ -222,6 +239,10 @@
}
+ public ArrayList<Conference> getDataset() {
+ return calls;
+ }
+
public void remove(Conference transfer) {
}
@@ -266,6 +287,11 @@
return convertView;
}
+ @Override
+ public void update(Observable observable, Object data) {
+ Log.i(TAG,"Updating views...");
+ }
+
}
}
diff --git a/src/com/savoirfairelinux/sflphone/model/SipCall.java b/src/com/savoirfairelinux/sflphone/model/SipCall.java
index 7bc3e15..ff32e32 100644
--- a/src/com/savoirfairelinux/sflphone/model/SipCall.java
+++ b/src/com/savoirfairelinux/sflphone/model/SipCall.java
@@ -47,6 +47,7 @@
private String mAccountID = "";
private CallContact contact = null;
private boolean isRecording = false;
+ private long timestamp_start = 0;
public static final String USER_ID = "user_id";
@@ -142,6 +143,16 @@
return mCallID;
}
+ public long getTimestamp_start() {
+ return timestamp_start;
+ }
+
+
+ public void setTimestamp_start(long timestamp_start) {
+ this.timestamp_start = timestamp_start;
+ }
+
+
public void setAccountID(String accountID) {
mAccountID = accountID;
}
diff --git a/src/com/savoirfairelinux/sflphone/service/SipService.java b/src/com/savoirfairelinux/sflphone/service/SipService.java
index 5ca1d9a..3211a33 100644
--- a/src/com/savoirfairelinux/sflphone/service/SipService.java
+++ b/src/com/savoirfairelinux/sflphone/service/SipService.java
@@ -263,7 +263,7 @@
}
- public HashMap<String, SipCall> getCurrent_calls() {
+ public HashMap<String, SipCall> getCurrent_calls() {
return current_calls;
}
@@ -358,7 +358,11 @@
protected void doRun() throws SameThreadException {
Log.i(TAG, "SipService.placeCall() thread running...");
callManagerJNI.placeCall(call.getAccountID(), call.getCallId(), call.getContact().getPhones().get(0).getNumber());
+
+ HashMap<String, String> details = CallDetailsHandler.convertSwigToNative(callManagerJNI.getCallDetails(call.getCallId()));
+ call.setTimestamp_start(Long.parseLong(details.get(ServiceConstants.call.TIMESTAMP_START)));
getCurrent_calls().put(call.getCallId(), call);
+
}
});
}
@@ -429,7 +433,7 @@
@Override
protected StringMap doRun() throws SameThreadException {
- Log.i(TAG, "SipService.getAccountDetails() thread running...");
+ Log.i(TAG, "SipService.getCallDetails() thread running...");
return callManagerJNI.getCallDetails(id);
}
}
diff --git a/src/com/savoirfairelinux/sflphone/views/CounterTextView.java b/src/com/savoirfairelinux/sflphone/views/CounterTextView.java
deleted file mode 100644
index 251d9cb..0000000
--- a/src/com/savoirfairelinux/sflphone/views/CounterTextView.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.savoirfairelinux.sflphone.views;
-
-import java.util.Observable;
-import java.util.Observer;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.widget.TextView;
-
-public class CounterTextView extends TextView implements Observer {
-
- public CounterTextView(Context context) {
- super(context);
- // TODO Auto-generated constructor stub
- }
-
- public CounterTextView(Context context, AttributeSet attrs) {
- super(context, attrs);
- // TODO Auto-generated constructor stub
- }
-
- public CounterTextView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
-
- }
-
- @Override
- public void update(Observable observable, Object data) {
- Log.i("TextView", "updating");
-
- }
-
-}