* 38608: link contact between history entry and new call.
diff --git a/src/org/sflphone/adapters/AccountSelectionAdapter.java b/src/org/sflphone/adapters/AccountSelectionAdapter.java
index e952199..cc722b8 100644
--- a/src/org/sflphone/adapters/AccountSelectionAdapter.java
+++ b/src/org/sflphone/adapters/AccountSelectionAdapter.java
@@ -108,6 +108,14 @@
return rowView;
}
+ public Account getAccount(String accountID) {
+ for(Account acc : accounts) {
+ if(acc.getAccountID().contentEquals(accountID))
+ return acc;
+ }
+ return null;
+ }
+
/*********************
* ViewHolder Pattern
*********************/
diff --git a/src/org/sflphone/client/HomeActivity.java b/src/org/sflphone/client/HomeActivity.java
index 8581959..854d4ce 100644
--- a/src/org/sflphone/client/HomeActivity.java
+++ b/src/org/sflphone/client/HomeActivity.java
@@ -52,6 +52,8 @@
import org.sflphone.fragments.HistoryFragment;
import org.sflphone.fragments.HomeFragment;
import org.sflphone.fragments.MenuFragment;
+import org.sflphone.history.HistoryEntry;
+import org.sflphone.model.Account;
import org.sflphone.model.CallContact;
import org.sflphone.model.Conference;
import org.sflphone.model.SipCall;
@@ -509,16 +511,43 @@
}
@Override
+ public void onCallHistory(HistoryEntry to) {
+
+ Account usedAccount = fMenu.retrieveAccountById(to.getAccountID());
+
+ if (usedAccount == null) {
+ createAccountDialog().show();
+ return;
+ }
+
+ if (usedAccount.isRegistered()) {
+ SipCall.SipCallBuilder callBuilder = SipCall.SipCallBuilder.getInstance();
+ callBuilder.startCallCreation().setAccount(usedAccount).setCallType(SipCall.direction.CALL_TYPE_OUTGOING);
+ callBuilder.setContact(to.getContact());
+ try {
+ launchCallActivity(callBuilder.build());
+ } catch (Exception e) {
+ Log.e(TAG, e.toString());
+ }
+ } else {
+ createNotRegisteredDialog().show();
+ }
+ }
+
+ @Override
public void onCallDialed(String to) {
- if (fMenu.getSelectedAccount() == null) {
+
+ Account usedAccount = fMenu.getSelectedAccount();
+
+ if (usedAccount == null) {
createAccountDialog().show();
return;
}
if (fMenu.getSelectedAccount().isRegistered()) {
SipCall.SipCallBuilder callBuilder = SipCall.SipCallBuilder.getInstance();
- callBuilder.startCallCreation().setAccount(fMenu.getSelectedAccount()).setCallType(SipCall.direction.CALL_TYPE_OUTGOING);
+ callBuilder.startCallCreation().setAccount(usedAccount).setCallType(SipCall.direction.CALL_TYPE_OUTGOING);
callBuilder.setContact(CallContact.ContactBuilder.buildUnknownContact(to));
try {
@@ -529,7 +558,6 @@
} else {
createNotRegisteredDialog().show();
}
-
}
private AlertDialog createNotRegisteredDialog() {
diff --git a/src/org/sflphone/fragments/HistoryFragment.java b/src/org/sflphone/fragments/HistoryFragment.java
index 38a2284..0858847 100644
--- a/src/org/sflphone/fragments/HistoryFragment.java
+++ b/src/org/sflphone/fragments/HistoryFragment.java
@@ -50,7 +50,6 @@
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.os.RemoteException;
import android.app.ListFragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.util.Log;
@@ -73,7 +72,7 @@
private static Callbacks sDummyCallbacks = new Callbacks() {
@Override
- public void onCallDialed(String to) {
+ public void onCallHistory(HistoryEntry to) {
}
@Override
@@ -87,7 +86,7 @@
public static String ARGS = "Bundle.args";
public interface Callbacks {
- public void onCallDialed(String to);
+ public void onCallHistory(HistoryEntry to);
public ISipService getService();
@@ -174,7 +173,7 @@
}
public void makeNewCall(int position) {
- mCallbacks.onCallDialed(mAdapter.getItem(position).getNumber());
+ mCallbacks.onCallHistory(mAdapter.getItem(position));
}
public class HistoryAdapter extends BaseAdapter implements ListAdapter {
diff --git a/src/org/sflphone/fragments/MenuFragment.java b/src/org/sflphone/fragments/MenuFragment.java
index 1ed66da..daa70b0 100644
--- a/src/org/sflphone/fragments/MenuFragment.java
+++ b/src/org/sflphone/fragments/MenuFragment.java
@@ -71,7 +71,6 @@
@SuppressWarnings("unused")
private static final String TAG = MenuFragment.class.getSimpleName();
- String[] mProjection = new String[] { Profile._ID, Profile.DISPLAY_NAME_PRIMARY, Profile.LOOKUP_KEY, Profile.PHOTO_URI };
AccountSelectionAdapter mAccountAdapter;
private Spinner spinnerAccounts;
AccountsReceiver accountReceiver;
@@ -92,6 +91,16 @@
}
};
+ public Account retrieveAccountById(String accountID) {
+ Account toReturn;
+ toReturn = mAccountAdapter.getAccount(accountID);
+
+ if(toReturn == null || !toReturn.isRegistered())
+ return getSelectedAccount();
+
+ return toReturn;
+ }
+
public interface Callbacks {
public ISipService getService();