--- a/res/layout/contactlistcontact.xml Wed Apr 08 00:02:09 2009 +0200
+++ b/res/layout/contactlistcontact.xml Wed Apr 08 00:12:24 2009 +0200
@@ -6,7 +6,7 @@
android:gravity="center_vertical" >
<ImageView android:id="@+id/contactliststatus"
- android:layout_weight="5"
+ android:layout_weight="5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical" />
--- a/src/com/beem/project/beem/service/Contact.java Wed Apr 08 00:02:09 2009 +0200
+++ b/src/com/beem/project/beem/service/Contact.java Wed Apr 08 00:12:24 2009 +0200
@@ -169,26 +169,36 @@
} else {
Log.d(TAG, "Presence OK");
Mode mode = presence.getMode();
- switch (mode) {
- case available:
- mStatus = Contact.CONTACT_STATUS_AVAILABLE;
- break;
- case away:
- mStatus = Contact.CONTACT_STATUS_AWAY;
- break;
- case chat:
- mStatus = Contact.CONTACT_STATUS_AVAILABLE_FOR_CHAT;
- break;
- case dnd:
- mStatus = Contact.CONTACT_STATUS_BUSY;
- break;
- case xa:
- mStatus = Contact.CONTACT_STATUS_UNAVAILABLE;
- break;
- default:
- Log.e("RosterAdapter", "Status mode non gere");
+ if (mode == null) {
+ mStatus = Contact.CONTACT_STATUS_AVAILABLE;
+ }
+ else {
+ switch (mode) {
+ case available:
+ Log.d(TAG, "Available");
+ mStatus = Contact.CONTACT_STATUS_AVAILABLE;
+ break;
+ case away:
+ Log.d(TAG, "Away");
+ mStatus = Contact.CONTACT_STATUS_AWAY;
+ break;
+ case chat:
+ Log.d(TAG, "Chat");
+ mStatus = Contact.CONTACT_STATUS_AVAILABLE_FOR_CHAT;
+ break;
+ case dnd:
+ Log.d(TAG, "Dnd");
+ mStatus = Contact.CONTACT_STATUS_BUSY;
+ break;
+ case xa:
+ Log.d(TAG, "Xa");
+ mStatus = Contact.CONTACT_STATUS_UNAVAILABLE;
+ break;
+ default:
+ Log.d(TAG, "Status mode non gere");
mStatus = Contact.CONTACT_STATUS_DISCONNECT;
break;
+ }
}
}
}
--- a/src/com/beem/project/beem/ui/ContactList.java Wed Apr 08 00:02:09 2009 +0200
+++ b/src/com/beem/project/beem/ui/ContactList.java Wed Apr 08 00:12:24 2009 +0200
@@ -13,6 +13,7 @@
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
+import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.view.Menu;
@@ -29,6 +30,8 @@
import com.beem.project.beem.BeemApplication;
import com.beem.project.beem.R;
import com.beem.project.beem.service.Contact;
+import com.beem.project.beem.service.PresenceAdapter;
+import com.beem.project.beem.service.aidl.IBeemRosterListener;
import com.beem.project.beem.service.aidl.IXmppFacade;
import com.beem.project.beem.service.aidl.IRoster;
@@ -40,6 +43,8 @@
private Handler mHandler;
private BeemApplication mBeemApplication;
private ContactListDialogSettings mDialog;
+ private BeemRosterListener mRosterListener;
+ private IRoster mRoster;
@SuppressWarnings("unchecked")
@Override
@@ -62,6 +67,7 @@
mSettings = getSharedPreferences(
getString(R.string.PreferenceFileName), MODE_PRIVATE);
mDialog = new ContactListDialogSettings(this, mSettings);
+ mRosterListener = new BeemRosterListener();
mSettings
.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() {
@@ -81,7 +87,6 @@
*/
}
});
-
}
@Override
@@ -102,6 +107,14 @@
mBeemApplication.callWhenConnectedToServer(mHandler, new Runnable() {
@Override
public void run() {
+ mService = mBeemApplication.getXmppFacade();
+ try {
+ mRoster = mService.getRoster();
+ mRoster.addConnectionListener(mRosterListener);
+ Log.i(TAG, "ROSTERLISTENER OK");
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
callbackShowContactList();
}
});
@@ -111,17 +124,12 @@
/*
* @TODO: A ameliorer apres listener de nikita
*/
- mService = mBeemApplication.getXmppFacade();
- if (mService != null) {
+ if (mRoster != null)
try {
- IRoster r = mService.getRoster();
- if (r != null)
- showContactList(r.getGroupsNames(), r.getContactList());
+ showContactList(mRoster.getGroupsNames(), mRoster.getContactList());
} catch (RemoteException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
- }
- }
+ }
}
/**
@@ -245,25 +253,32 @@
switch (c.getStatus()) {
case Contact.CONTACT_STATUS_AVAILABLE:
imageDrawable = (Drawable) getResources().getDrawable(
- R.drawable.avatar);
+ R.drawable.online);
+ break;
case Contact.CONTACT_STATUS_AVAILABLE_FOR_CHAT:
imageDrawable = (Drawable) getResources().getDrawable(
R.drawable.chat);
+ break;
case Contact.CONTACT_STATUS_AWAY:
imageDrawable = (Drawable) getResources().getDrawable(
R.drawable.away);
+ break;
case Contact.CONTACT_STATUS_BUSY:
imageDrawable = (Drawable) getResources().getDrawable(
R.drawable.dnd);
+ break;
case Contact.CONTACT_STATUS_DISCONNECT:
imageDrawable = (Drawable) getResources().getDrawable(
R.drawable.offline);
+ break;
case Contact.CONTACT_STATUS_UNAVAILABLE:
imageDrawable = (Drawable) getResources().getDrawable(
R.drawable.requested);
+ break;
default:
imageDrawable = (Drawable) getResources().getDrawable(
R.drawable.error);
+ break;
}
imgV.setImageDrawable(imageDrawable);
@@ -292,4 +307,33 @@
}
}
}
+
+ private class BeemRosterListener extends IBeemRosterListener.Stub {
+
+ @Override
+ public void onEntriesAdded(List<String> addresses)
+ throws RemoteException {
+ Log.i(TAG, "ENTRIES ADDED");
+
+ }
+ @Override
+ public void onEntriesDeleted(List<String> addresses)
+ throws RemoteException {
+ Log.i(TAG, "ENTRIES DEL");
+
+ }
+ @Override
+ public void onEntriesUpdated(List<String> addresses)
+ throws RemoteException {
+ Log.i(TAG, "ENTRIES UPD");
+
+ }
+ @Override
+ public void onPresenceChanged(PresenceAdapter presence)
+ throws RemoteException {
+ Log.i(TAG, "PRESENCE CHANGED");
+
+ }
+
+ }
}
\ No newline at end of file