* #26410 Button added in history, replay/stop working
diff --git a/src/com/savoirfairelinux/sflphone/adapters/HistoryAdapter.java b/src/com/savoirfairelinux/sflphone/adapters/HistoryAdapter.java
deleted file mode 100644
index 54cb93c..0000000
--- a/src/com/savoirfairelinux/sflphone/adapters/HistoryAdapter.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.savoirfairelinux.sflphone.adapters;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.fragments.HistoryFragment;
-import com.savoirfairelinux.sflphone.model.HistoryEntry;
-
-public class HistoryAdapter extends BaseAdapter {
-
- HistoryFragment mContext;
- ArrayList<HistoryEntry> dataset;
- private static final String TAG = HistoryAdapter.class.getSimpleName();
- private ExecutorService infos_fetcher = Executors.newCachedThreadPool();
-
-
-
- public HistoryAdapter(HistoryFragment activity, ArrayList<HistoryEntry> history) {
- mContext = activity;
- dataset = history;
- }
-
- @Override
- public View getView(final int pos, View convertView, ViewGroup arg2) {
- View rowView = convertView;
- HistoryView entryView = null;
-
- if (rowView == null) {
- // Get a new instance of the row layout view
- LayoutInflater inflater = LayoutInflater.from(mContext.getActivity());
- rowView = inflater.inflate(R.layout.item_history, null);
-
- // Hold the view objects in an object
- // so they don't need to be re-fetched
- entryView = new HistoryView();
- entryView.photo = (ImageView) rowView.findViewById(R.id.photo);
- entryView.displayName = (TextView) rowView.findViewById(R.id.display_name);
- entryView.duration = (TextView) rowView.findViewById(R.id.duration);
- entryView.date = (TextView) rowView.findViewById(R.id.date_start);
- entryView.missed = (TextView) rowView.findViewById(R.id.missed);
- entryView.incoming = (TextView) rowView.findViewById(R.id.incomings);
- entryView.outgoing = (TextView) rowView.findViewById(R.id.outgoings);
- entryView.call_button = (ImageButton) rowView.findViewById(R.id.action_call);
- entryView.call_button.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- mContext.makeNewCall(pos);
-
- }
- } );
- rowView.setTag(entryView);
- } else {
- entryView = (HistoryView) rowView.getTag();
- }
-
- // Transfer the stock data from the data object
- // to the view objects
-
-// SipCall call = (SipCall) mCallList.values().toArray()[position];
- entryView.displayName.setText(dataset.get(pos).getContact().getmDisplayName());
-
- infos_fetcher.execute(new ContactPictureLoader(mContext.getActivity(), entryView.photo, dataset.get(pos).getContact().getId()));
-
- entryView.missed.setText("Missed:"+dataset.get(pos).getMissed_sum());
- entryView.incoming.setText("In:"+dataset.get(pos).getIncoming_sum());
- entryView.outgoing.setText("Out:"+dataset.get(pos).getOutgoing_sum());
-
- entryView.date.setText(dataset.get(pos).getCalls().lastEntry().getValue().getDate("yyyy-MM-dd"));
- entryView.duration.setText(dataset.get(pos).getTotalDuration());
-
-
- return rowView;
-
- }
-
-
-
- /*********************
- * ViewHolder Pattern
- *********************/
- public class HistoryView {
- public ImageView photo;
- protected TextView displayName;
- protected TextView date;
- public TextView duration;
- private ImageButton call_button;
-
- private TextView missed;
- private TextView outgoing;
- private TextView incoming;
- }
-
- @Override
- public int getCount() {
-
- return dataset.size();
- }
-
- @Override
- public HistoryEntry getItem(int pos) {
- return dataset.get(pos);
- }
-
- @Override
- public long getItemId(int arg0) {
- return 0;
- }
-
- public void clear() {
- dataset.clear();
-
- }
-
- public void addAll(ArrayList<HashMap<String, String>> history) {
-// dataset.addAll(history);
-
- }
-
-}
diff --git a/src/com/savoirfairelinux/sflphone/client/CallActivity.java b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
index c1d0826..75ce0c3 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
@@ -279,7 +279,10 @@
mCurrentCallFragment.setArguments(b);
getFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment).commit();
- // onCallResumed(calls);
+ if(calls.size() == 1){
+ onCallResumed(calls.get(0));
+ }
+
slidingPaneLayout.setCurFragment(mCurrentCallFragment);
slidingPaneLayout.closePane();
@@ -385,7 +388,7 @@
public void onRecordCall(SipCall call) {
try {
if (call.getCallStateInt() == state.CALL_STATE_CURRENT) {
- service.setRecordPath(Environment.getExternalStorageDirectory().getAbsolutePath());
+// service.setRecordPath(Environment.getExternalStorageDirectory().getAbsolutePath());
Log.w(TAG, "Recording path" + service.getRecordPath());
service.setRecordingCall(call.getCallId());
}
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
index f18b0bf..b79d2a3 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
@@ -50,7 +50,6 @@
import android.widget.TextView;
import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.adapters.ContactPictureLoader;
import com.savoirfairelinux.sflphone.model.Attractor;
import com.savoirfairelinux.sflphone.model.Bubble;
import com.savoirfairelinux.sflphone.model.BubbleModel;
@@ -58,6 +57,7 @@
import com.savoirfairelinux.sflphone.model.CallContact;
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 {
@@ -68,7 +68,7 @@
private ArrayList<SipCall> mCalls;
- private TextView callStatusTxt;
+ private CounterTextView callStatusTxt;
private BubblesView view;
private BubbleModel model;
@@ -175,7 +175,7 @@
// rootView.requestDisallowInterceptTouchEvent(true);
mCallbacks = (Callbacks) activity;
- myself = SipCall.SipCallBuilder.buildMyselfCall(activity.getContentResolver(), "");
+ myself = SipCall.SipCallBuilder.buildMyselfCall(activity.getContentResolver(), "Me");
}
@@ -200,7 +200,7 @@
view.setModel(model);
view.getHolder().addCallback(this);
- callStatusTxt = (TextView) rootView.findViewById(R.id.call_status_txt);
+ callStatusTxt = (CounterTextView) 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);
@@ -227,24 +227,24 @@
}
model.clearAttractors();
- model.addAttractor(new Attractor(new PointF(model.width / 1.1f, model.height * .1f), ATTRACTOR_SIZE, new Attractor.Callback() {
- @Override
- public boolean onBubbleSucked(Bubble b) {
- Log.w(TAG, "Bubble sucked ! ");
- if (mCalls.size() == 1) {
- mCallbacks.onCallEnded(b.associated_call);
- } else {
- try {
- mCallbacks.getService().detachParticipant(b.associated_call.getCallId());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- }
-
- bubbleRemoved(b);
- return true;
- }
- }, hangup_icon));
+// model.addAttractor(new Attractor(new PointF(model.width / 1.1f, model.height * .1f), ATTRACTOR_SIZE, new Attractor.Callback() {
+// @Override
+// public boolean onBubbleSucked(Bubble b) {
+// Log.w(TAG, "Bubble sucked ! ");
+// if (mCalls.size() == 1) {
+// mCallbacks.onCallEnded(b.associated_call);
+// } else {
+// try {
+// mCallbacks.getService().detachParticipant(b.associated_call.getCallId());
+// } catch (RemoteException e) {
+// e.printStackTrace();
+// }
+// }
+//
+// bubbleRemoved(b);
+// return true;
+// }
+// }, hangup_icon));
}
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
index 9ea78ee..b8eba9f 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallListFragment.java
@@ -345,6 +345,10 @@
if (convertView == null)
convertView = LayoutInflater.from(mContext).inflate(R.layout.expandable_child, null);
+
+ convertView.setAnimation(AnimationUtils.loadAnimation(getActivity(), R.animator.slide_down));
+
+
((ImageButton) convertView.findViewById(R.id.action_hangup)).setOnClickListener(new OnClickListener() {
@@ -435,6 +439,7 @@
// as new group to expand
if (groupPosition != lastExpandedGroupPosition) {
list.collapseGroup(lastExpandedGroupPosition);
+
}
super.onGroupExpanded(groupPosition);
diff --git a/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java b/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java
index e141b5b..8a2e0a2 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java
@@ -32,6 +32,8 @@
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import android.app.Activity;
import android.app.ListFragment;
@@ -42,18 +44,22 @@
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
-import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
+import android.widget.BaseAdapter;
+import android.widget.Button;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.adapters.HistoryAdapter;
+import com.savoirfairelinux.sflphone.adapters.ContactPictureLoader;
import com.savoirfairelinux.sflphone.loaders.HistoryLoader;
import com.savoirfairelinux.sflphone.loaders.LoaderConstants;
-import com.savoirfairelinux.sflphone.model.CallContact;
import com.savoirfairelinux.sflphone.model.HistoryEntry;
-import com.savoirfairelinux.sflphone.model.SipCall;
import com.savoirfairelinux.sflphone.service.ISipService;
public class HistoryFragment extends ListFragment implements LoaderCallbacks<ArrayList<HistoryEntry>> {
@@ -140,7 +146,7 @@
HistoryLoader loader = new HistoryLoader(getActivity(), mCallbacks.getService());
loader.forceLoad();
return loader;
-
+
}
@Override
@@ -157,4 +163,137 @@
}
+ public class HistoryAdapter extends BaseAdapter {
+
+ HistoryFragment mContext;
+ ArrayList<HistoryEntry> dataset;
+ private ExecutorService infos_fetcher = Executors.newCachedThreadPool();
+
+ public HistoryAdapter(HistoryFragment activity, ArrayList<HistoryEntry> history) {
+ mContext = activity;
+ dataset = history;
+ }
+
+ @Override
+ public View getView(final int pos, View convertView, ViewGroup arg2) {
+ View rowView = convertView;
+ HistoryView entryView = null;
+
+ if (rowView == null) {
+ // Get a new instance of the row layout view
+ LayoutInflater inflater = LayoutInflater.from(mContext.getActivity());
+ rowView = inflater.inflate(R.layout.item_history, null);
+
+ // Hold the view objects in an object
+ // so they don't need to be re-fetched
+ entryView = new HistoryView();
+ entryView.photo = (ImageView) rowView.findViewById(R.id.photo);
+ entryView.displayName = (TextView) rowView.findViewById(R.id.display_name);
+ entryView.duration = (TextView) rowView.findViewById(R.id.duration);
+ entryView.date = (TextView) rowView.findViewById(R.id.date_start);
+ entryView.missed = (TextView) rowView.findViewById(R.id.missed);
+ entryView.incoming = (TextView) rowView.findViewById(R.id.incomings);
+ entryView.outgoing = (TextView) rowView.findViewById(R.id.outgoings);
+ entryView.replay = (Button) rowView.findViewById(R.id.replay);
+ entryView.call_button = (ImageButton) rowView.findViewById(R.id.action_call);
+ entryView.call_button.setOnClickListener(new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ mContext.makeNewCall(pos);
+
+ }
+ });
+ rowView.setTag(entryView);
+ } else {
+ entryView = (HistoryView) rowView.getTag();
+ }
+
+ // Transfer the stock data from the data object
+ // to the view objects
+
+ // SipCall call = (SipCall) mCallList.values().toArray()[position];
+ entryView.displayName.setText(dataset.get(pos).getContact().getmDisplayName());
+
+ infos_fetcher.execute(new ContactPictureLoader(mContext.getActivity(), entryView.photo, dataset.get(pos).getContact().getId()));
+
+ entryView.missed.setText("Missed:" + dataset.get(pos).getMissed_sum());
+ entryView.incoming.setText("In:" + dataset.get(pos).getIncoming_sum());
+ entryView.outgoing.setText("Out:" + dataset.get(pos).getOutgoing_sum());
+
+ if (dataset.get(pos).getCalls().lastEntry().getValue().getRecordPath().length() > 0) {
+ entryView.replay.setVisibility(View.VISIBLE);
+ entryView.replay.setTag(R.id.replay, true);
+ entryView.replay.setOnClickListener(new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ try {
+ if ((Boolean) v.getTag(R.id.replay)) {
+ mCallbacks.getService().startRecordedFilePlayback(dataset.get(pos).getCalls().lastEntry().getValue().getRecordPath());
+ v.setTag(R.id.replay, false);
+ ((Button)v).setText("Stop");
+ } else {
+ mCallbacks.getService().stopRecordedFilePlayback(dataset.get(pos).getCalls().lastEntry().getValue().getRecordPath());
+ v.setTag(R.id.replay, true);
+ ((Button)v).setText("Replay");
+ }
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+
+ entryView.date.setText(dataset.get(pos).getCalls().lastEntry().getValue().getDate("yyyy-MM-dd"));
+ entryView.duration.setText(dataset.get(pos).getTotalDuration());
+
+ return rowView;
+
+ }
+
+ /*********************
+ * ViewHolder Pattern
+ *********************/
+ public class HistoryView {
+ public ImageView photo;
+ protected TextView displayName;
+ protected TextView date;
+ public TextView duration;
+ private ImageButton call_button;
+ private Button replay;
+ private TextView missed;
+ private TextView outgoing;
+ private TextView incoming;
+ }
+
+ @Override
+ public int getCount() {
+
+ return dataset.size();
+ }
+
+ @Override
+ public HistoryEntry getItem(int pos) {
+ return dataset.get(pos);
+ }
+
+ @Override
+ public long getItemId(int arg0) {
+ return 0;
+ }
+
+ public void clear() {
+ dataset.clear();
+
+ }
+
+ public void addAll(ArrayList<HashMap<String, String>> history) {
+ // dataset.addAll(history);
+
+ }
+
+ }
+
}
diff --git a/src/com/savoirfairelinux/sflphone/loaders/HistoryLoader.java b/src/com/savoirfairelinux/sflphone/loaders/HistoryLoader.java
index 8448d63..52120f6 100644
--- a/src/com/savoirfairelinux/sflphone/loaders/HistoryLoader.java
+++ b/src/com/savoirfairelinux/sflphone/loaders/HistoryLoader.java
@@ -39,7 +39,7 @@
historyEntries = new HashMap<String, HistoryEntry>();
- if(service == null){
+ if (service == null) {
return new ArrayList<HistoryEntry>();
}
try {
@@ -53,18 +53,22 @@
String call_state = entry.get(ServiceConstants.HISTORY_STATE_KEY);
String number_called = entry.get(ServiceConstants.HISTORY_PEER_NUMBER_KEY);
+
+ Log.w(TAG, "----------------------Record" + entry.get(ServiceConstants.HISTORY_RECORDING_PATH_KEY));
CallContact c = null;
if (historyEntries.containsKey(number_called)) {
- historyEntries.get(number_called).addHistoryCall(new HistoryCall(timestampStart, timestampEnd, number_called, call_state));
+ historyEntries.get(number_called).addHistoryCall(
+ new HistoryCall(timestampStart, timestampEnd, number_called, call_state, entry
+ .get(ServiceConstants.HISTORY_RECORDING_PATH_KEY)));
} else {
Pattern p = Pattern.compile("<sip:([^@]+)@([^>]+)>");
Matcher m = p.matcher(number_called);
if (m.find()) {
- String s1 = m.group(1);
- System.out.println(s1);
- String s2 = m.group(2);
- System.out.println(s2);
+ // String s1 = m.group(1);
+ // System.out.println(s1);
+ // String s2 = m.group(2);
+ // System.out.println(s2);
Cursor result = getContext().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.NUMBER + " = " + m.group(1), null, null);
@@ -84,7 +88,8 @@
c = ContactBuilder.buildUnknownContact(number_called);
}
HistoryEntry e = new HistoryEntry(entry.get(ServiceConstants.HISTORY_ACCOUNT_ID_KEY), c);
- e.addHistoryCall(new HistoryCall(timestampStart, timestampEnd, number_called, call_state));
+ e.addHistoryCall(new HistoryCall(timestampStart, timestampEnd, number_called, call_state, entry
+ .get(ServiceConstants.HISTORY_RECORDING_PATH_KEY)));
historyEntries.put(number_called, e);
}
diff --git a/src/com/savoirfairelinux/sflphone/model/Bubble.java b/src/com/savoirfairelinux/sflphone/model/Bubble.java
index de69770..420fb6a 100644
--- a/src/com/savoirfairelinux/sflphone/model/Bubble.java
+++ b/src/com/savoirfairelinux/sflphone/model/Bubble.java
@@ -125,13 +125,7 @@
boolean intersects(float x, float y) {
float dx = x - pos.x;
float dy = y - pos.y;
- Log.i("Bubble","dx:"+dx);
- Log.i("Bubble","dy:"+dy);
- Log.i("Bubble", "Intersection dx²+dy²="+(dx * dx + dy * dy));
- Log.i("Bubble", "Intersection getRadius²="+getRadius() * getRadius());
-
- Log.i("Bubble","pos.x:"+pos.x);
- Log.i("Bubble","pos.y:"+pos.y);
+
return dx * dx + dy * dy < getRadius() * density * getRadius() * density;
}
diff --git a/src/com/savoirfairelinux/sflphone/model/BubblesView.java b/src/com/savoirfairelinux/sflphone/model/BubblesView.java
index 26103fb..f365ec2 100644
--- a/src/com/savoirfairelinux/sflphone/model/BubblesView.java
+++ b/src/com/savoirfairelinux/sflphone/model/BubblesView.java
@@ -292,8 +292,11 @@
}
private Paint getNamePaint(Bubble b) {
- if (b.expanded)
+ if (b.expanded) {
+ white_name_paint.setTextSize(15 * b.target_scale * textDensity);
return white_name_paint;
+ }
+ black_name_paint.setTextSize(18 * b.target_scale * textDensity);
return black_name_paint;
}
@@ -340,7 +343,6 @@
}
return null;
}
-
class MyOnGestureListener implements OnGestureListener {
@Override
@@ -353,15 +355,21 @@
expand.retract();
} else {
Log.d("Main", "getAction");
- switch(expand.getAction(event.getX(), event.getY())){
- case 0: expand.retract();
- break;
- case 1: Log.d("Main", "onCallSuspended");((CallActivity)callback.getActivity()).onCallSuspended(expand.associated_call);
- break;
- case 2: Log.d("Main", "onRecordCall");((CallActivity)callback.getActivity()).onRecordCall(expand.associated_call);
- break;
- case 3: Toast.makeText(getContext(), "Not implemented here",Toast.LENGTH_SHORT).show();
- break;
+ switch (expand.getAction(event.getX(), event.getY())) {
+ case 0:
+ expand.retract();
+ break;
+ case 1:
+ Log.d("Main", "onCallSuspended");
+ ((CallActivity) callback.getActivity()).onCallSuspended(expand.associated_call);
+ break;
+ case 2:
+ Log.d("Main", "onRecordCall");
+ ((CallActivity) callback.getActivity()).onRecordCall(expand.associated_call);
+ break;
+ case 3:
+ Toast.makeText(getContext(), "Not implemented here", Toast.LENGTH_SHORT).show();
+ break;
}
}
return true;
@@ -379,8 +387,6 @@
}
return true;
}
-
-
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
@@ -422,15 +428,9 @@
float dt = (float) ((now - b.last_drag) / 1000000000.);
float dx = x - b.getPosX(), dy = y - b.getPosY();
b.last_drag = now;
-
b.setPos(event.getX(), event.getY());
- /*
- * int hn = event.getHistorySize() - 2; Log.w(TAG, "event.getHistorySize() : " + event.getHistorySize()); if(hn > 0) { float dx =
- * x-event.getHistoricalX(hn); float dy = y-event.getHistoricalY(hn); float dt = event.getHistoricalEventTime(hn)/1000.f;
- */
b.speed.x = dx / dt;
b.speed.y = dy / dt;
- // Log.w(TAG, "onTouch dx:" + b.speed.x + " dy:" + b.speed.y);
// }
return true;
}
@@ -460,7 +460,7 @@
public void setFragment(CallFragment callFragment) {
callback = callFragment;
-
+
}
}
diff --git a/src/com/savoirfairelinux/sflphone/model/HistoryEntry.java b/src/com/savoirfairelinux/sflphone/model/HistoryEntry.java
index 8809e2e..860bc16 100644
--- a/src/com/savoirfairelinux/sflphone/model/HistoryEntry.java
+++ b/src/com/savoirfairelinux/sflphone/model/HistoryEntry.java
@@ -45,16 +45,18 @@
long call_end;
String number;
String state;
+ String recordPath;
public String getState() {
return state;
}
- public HistoryCall(long start, long end, String n, String s) {
+ public HistoryCall(long start, long end, String n, String s, String path) {
call_start = start;
call_end = end;
number = n;
state = s;
+ recordPath = path;
}
public String getDate(String format) {
@@ -84,6 +86,14 @@
}
+ public String getRecordPath() {
+ return recordPath;
+ }
+
+ public void setRecordPath(String recordPath) {
+ this.recordPath = recordPath;
+ }
+
}
public CallContact getContact() {
diff --git a/src/com/savoirfairelinux/sflphone/model/SipCall.java b/src/com/savoirfairelinux/sflphone/model/SipCall.java
index 6b9da85..2e7018d 100644
--- a/src/com/savoirfairelinux/sflphone/model/SipCall.java
+++ b/src/com/savoirfairelinux/sflphone/model/SipCall.java
@@ -45,6 +45,8 @@
private String mCallID = "";
private String mAccountID = "";
private CallContact contact = null;
+
+ public static final String USER_ID = "user_id";
private int mCallType = state.CALL_TYPE_UNDETERMINED;
private int mCallState = state.CALL_STATE_NONE;
@@ -52,7 +54,6 @@
/************************
* Construtors
- *
***********************/
private SipCall(Parcel in) {
diff --git a/src/com/savoirfairelinux/sflphone/service/ISipService.aidl b/src/com/savoirfairelinux/sflphone/service/ISipService.aidl
index 15569b8..3a6cb3c 100644
--- a/src/com/savoirfairelinux/sflphone/service/ISipService.aidl
+++ b/src/com/savoirfairelinux/sflphone/service/ISipService.aidl
@@ -32,6 +32,8 @@
void setRecordPath(in String path);
String getRecordPath();
void setRecordingCall(in String id);
+ boolean startRecordedFilePlayback(in String filepath);
+ void stopRecordedFilePlayback(in String filepath);
/* IM */
void sendTextMessage(in String callID, in String message, in String from);
diff --git a/src/com/savoirfairelinux/sflphone/service/SipService.java b/src/com/savoirfairelinux/sflphone/service/SipService.java
index 9f1c193..94afa54 100644
--- a/src/com/savoirfairelinux/sflphone/service/SipService.java
+++ b/src/com/savoirfairelinux/sflphone/service/SipService.java
@@ -878,6 +878,29 @@
});
}
+
+ @Override
+ public boolean startRecordedFilePlayback(final String filepath) throws RemoteException {
+ getExecutor().execute(new SipRunnable() {
+ @Override
+ protected void doRun() throws SameThreadException, RemoteException {
+ Log.i(TAG, "SipService.setRecordingCall() thread running...");
+ callManagerJNI.startRecordedFilePlayback(filepath);
+ }
+ });
+ return false;
+ }
+
+ @Override
+ public void stopRecordedFilePlayback(final String filepath) throws RemoteException {
+ getExecutor().execute(new SipRunnable() {
+ @Override
+ protected void doRun() throws SameThreadException, RemoteException {
+ Log.i(TAG, "SipService.stopRecordedFilePlayback() thread running...");
+ callManagerJNI.stopRecordedFilePlayback(filepath);
+ }
+ });
+ }
@Override
public void setRecordPath(final String path) throws RemoteException {
@@ -1002,8 +1025,9 @@
public void removeNotification() {
NotificationManager nm = (NotificationManager) getBaseContext().getSystemService(Context.NOTIFICATION_SERVICE);
nm.cancel(NOTIFICATION_ID);
-
}
+
+
};
}
diff --git a/src/com/savoirfairelinux/sflphone/views/CounterTextView.java b/src/com/savoirfairelinux/sflphone/views/CounterTextView.java
new file mode 100644
index 0000000..251d9cb
--- /dev/null
+++ b/src/com/savoirfairelinux/sflphone/views/CounterTextView.java
@@ -0,0 +1,34 @@
+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");
+
+ }
+
+}