* #38608: new utility classes for history
diff --git a/src/org/sflphone/loaders/HistoryLoader.java b/src/org/sflphone/loaders/HistoryLoader.java
index 0bdb7ba..a8acab9 100644
--- a/src/org/sflphone/loaders/HistoryLoader.java
+++ b/src/org/sflphone/loaders/HistoryLoader.java
@@ -31,36 +31,29 @@
package org.sflphone.loaders;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.sflphone.model.CallContact;
-import org.sflphone.model.CallContact.ContactBuilder;
-import org.sflphone.model.HistoryEntry;
-import org.sflphone.model.HistoryEntry.HistoryCall;
-import org.sflphone.service.ISipService;
-import org.sflphone.service.ServiceConstants;
-
+import android.content.AsyncTaskLoader;
import android.content.Context;
-import android.os.RemoteException;
-import android.provider.ContactsContract.Contacts;
-import android.support.v4.content.AsyncTaskLoader;
-import android.util.Log;
+import android.database.Cursor;
+import android.provider.ContactsContract;
+import org.sflphone.history.HistoryCall;
+import org.sflphone.history.HistoryEntry;
+import org.sflphone.history.HistoryManager;
+import org.sflphone.model.CallContact;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
public class HistoryLoader extends AsyncTaskLoader<ArrayList<HistoryEntry>> {
private static final String TAG = HistoryLoader.class.getSimpleName();
- private ISipService service;
- HashMap<String, HistoryEntry> historyEntries;
- static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] { Contacts._ID, Contacts.DISPLAY_NAME, Contacts.PHOTO_ID, Contacts.LOOKUP_KEY,
- Contacts.STARRED };
+ ArrayList<HistoryEntry> historyEntries;
+ private HistoryManager historyManager = null;
- public HistoryLoader(Context context, ISipService isip) {
+ public HistoryLoader(Context context) {
super(context);
- service = isip;
+ historyManager = new HistoryManager(context);
}
@SuppressWarnings("unchecked")
@@ -68,11 +61,41 @@
@Override
public ArrayList<HistoryEntry> loadInBackground() {
- historyEntries = new HashMap<String, HistoryEntry>();
+ historyEntries = new ArrayList<HistoryEntry>();
- if (service == null) {
- return new ArrayList<HistoryEntry>();
+ try {
+ List<HistoryCall> list = historyManager.getAll();
+
+ HistoryEntry tmp;
+ CallContact.ContactBuilder builder = CallContact.ContactBuilder.getInstance();
+ for (HistoryCall call : list) {
+ CallContact contact;
+ if (call.getContactID() == 0) {
+ contact = CallContact.ContactBuilder.buildUnknownContact(call.getNumber());
+ } else {
+ Cursor result = getContext().getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null,
+ ContactsContract.Contacts._ID + " = ?",
+ new String[]{String.valueOf(call.getContactID())}, null);
+ int iID = result.getColumnIndex(ContactsContract.Contacts._ID);
+ int iName = result.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
+ int iPhoto = result.getColumnIndex(ContactsContract.Contacts.PHOTO_ID);
+ int iStarred = result.getColumnIndex(ContactsContract.Contacts.STARRED);
+
+ if (result.moveToFirst()) {
+ builder.startNewContact(result.getLong(iID), result.getString(iName), result.getLong(iPhoto));
+ contact = builder.build();
+ } else {
+ contact = CallContact.ContactBuilder.buildUnknownContact(call.getNumber());
+ }
+ }
+ tmp = new HistoryEntry(call.getAccountID(), contact);
+ historyEntries.add(tmp);
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
}
+
+/*
try {
ArrayList<HashMap<String, String>> history = (ArrayList<HashMap<String, String>>) service.getHistory();
@@ -117,7 +140,9 @@
} catch (RemoteException e) {
Log.i(TAG, e.toString());
- }
- return new ArrayList<HistoryEntry>(historyEntries.values());
+ }*/
+ return historyEntries;
}
+
+
}