--- a/src/com/beem/project/beem/service/RosterAdapter.java Mon Jun 22 19:13:57 2009 +0200
+++ b/src/com/beem/project/beem/service/RosterAdapter.java Mon Jun 22 20:40:24 2009 +0200
@@ -30,126 +30,16 @@
*
* @author darisk
*/
-public class RosterAdapter extends com.beem.project.beem.service.aidl.IRoster.Stub {
-
- /**
- * Listener for the roster events. It will call the remote listeners registered.
- *
- * @author darisk
- */
- private class RosterListenerAdapter implements RosterListener {
-
- /**
- * Constructor.
- */
- public RosterListenerAdapter() {
- // TODO Auto-generated constructor stub
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void entriesAdded(Collection<String> addresses) {
- Log.i(TAG, "Ajout de l'entry");
- final int n = mRemoteRosListeners.beginBroadcast();
-
- List<String> tab = new ArrayList<String>();
- tab.addAll(addresses);
- for (int i = 0; i < n; i++) {
- IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
- try {
- listener.onEntriesAdded(tab);
- } catch (RemoteException e) {
- Log.w(TAG, "Error while adding roster entries", e);
- }
- }
- mRemoteRosListeners.finishBroadcast();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void entriesDeleted(Collection<String> addresses) {
- Log.i(TAG, "Suppression de l'entry");
- final int n = mRemoteRosListeners.beginBroadcast();
-
- List<String> tab = new ArrayList<String>();
- tab.addAll(addresses);
- for (int i = 0; i < n; i++) {
- IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
- try {
- listener.onEntriesDeleted(tab);
- } catch (RemoteException e) {
- Log.w(TAG, "Error while deleting roster entries", e);
- }
- }
- mRemoteRosListeners.finishBroadcast();
- }
+public class RosterAdapter extends
+ com.beem.project.beem.service.aidl.IRoster.Stub {
- /**
- * {@inheritDoc}
- */
- @Override
- public void entriesUpdated(Collection<String> addresses) {
- Log.d(TAG, "Update de l'entry");
- final int n = mRemoteRosListeners.beginBroadcast();
-
- List<String> tab = new ArrayList<String>();
- tab.addAll(addresses);
- for (int i = 0; i < n; i++) {
- IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
- try {
- listener.onEntriesUpdated(tab);
- } catch (RemoteException e) {
- Log.w(TAG, "Error while updating roster entries", e);
- }
- }
- mRemoteRosListeners.finishBroadcast();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void presenceChanged(Presence presence) {
- Log.i(TAG, "Changement de Presence");
- String user = StringUtils.parseBareAddress(presence.getFrom());
- Log.d(TAG, "User : " + user);
- Contact c = mContacts.get(StringUtils.parseBareAddress(user));
- if (c == null) {
- c = new Contact(user);
- mContacts.put(user, c);
- }
- c.addRes(StringUtils.parseResource(presence.getFrom()));
- c.setStatus(mAdaptee.getPresence(presence.getFrom()));
- c.setMsgState(presence.getStatus());
- c.setName(mAdaptee.getEntry(user).getName());
- /* redispatch vers les IBeemRosterListener */
- final int n = mRemoteRosListeners.beginBroadcast();
-
- for (int i = 0; i < n; i++) {
- IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
- try {
- listener.onPresenceChanged(new PresenceAdapter(presence));
- } catch (RemoteException e) {
- // The RemoteCallbackList will take care of removing the
- // dead listeners.
- Log.w(TAG, "Error while updating roster entries", e);
- }
- }
- mRemoteRosListeners.finishBroadcast();
- }
- }
-
- private static final String TAG = "RosterAdapter";
- private Roster mAdaptee;
+ private static final String TAG = "RosterAdapter";
+ private Roster mAdaptee;
private RemoteCallbackList<IBeemRosterListener> mRemoteRosListeners = new RemoteCallbackList<IBeemRosterListener>();
- private Map<String, Contact> mContacts = new HashMap<String, Contact>();
+ private Map<String, Contact> mContacts = new HashMap<String, Contact>();
- private RosterListenerAdapter mRosterListener = new RosterListenerAdapter();
+ private RosterListenerAdapter mRosterListener = new RosterListenerAdapter();
/**
* Constructor.
@@ -176,7 +66,8 @@
* {@inheritDoc}
*/
@Override
- public void addRosterListener(IBeemRosterListener listen) throws RemoteException {
+ public void addRosterListener(IBeemRosterListener listen)
+ throws RemoteException {
if (listen != null)
mRemoteRosListeners.register(listen);
}
@@ -185,46 +76,52 @@
* {@inheritDoc}
*/
@Override
- public Contact addContact(String user, String name, String[] groups) throws RemoteException {
+ public Contact addContact(String user, String name, String[] groups)
+ throws RemoteException {
Contact res = null;
RosterEntry contact = mAdaptee.getEntry(user);
- if (contact != null) {
+ if (contact != null) {
res = mContacts.get(user);
- for (String groupStr : groups) {
- boolean found = false;
- for (RosterGroup group: mAdaptee.getGroups()) {
- if (group.getName().equals(groupStr) && !group.contains(contact)) {
+ if (groups != null) {
+ for (String groupStr : groups) {
+ boolean found = false;
+ for (RosterGroup group : mAdaptee.getGroups()) {
+ if (group.getName().equals(groupStr)
+ && !group.contains(contact)) {
+ try {
+ group.addEntry(contact);
+ res.addGroup(groupStr);
+ found = true;
+ } catch (XMPPException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ if (!found) {
try {
- group.addEntry(contact);
- res.addGroup(groupStr);
- found = true;
+ mAdaptee.createGroup(groupStr).addEntry(contact);
} catch (XMPPException e) {
e.printStackTrace();
+ } catch (IllegalArgumentException e) {
}
+ res.addGroup(groupStr);
}
}
- if (!found) {
- try {
- mAdaptee.createGroup(groupStr).addEntry(contact);
- } catch (XMPPException e) {
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- }
- res.addGroup(groupStr);
- }
}
} else {
try {
mAdaptee.createEntry(user, name, groups);
res = new Contact(user);
mContacts.put(user, res);
- for (String groupStr : groups) {
- try {
- mAdaptee.createGroup(groupStr);
- } catch (IllegalArgumentException e) {
- //e.printStackTrace();
+ if (groups != null) {
+ for (String groupStr : groups) {
+ try {
+ mAdaptee.createGroup(groupStr);
+ } catch (IllegalArgumentException e) {
+ // e.printStackTrace();
+ }
+ res.addGroup(groupStr);
}
- res.addGroup(groupStr);
}
} catch (XMPPException e) {
Log.e(TAG, "Error while adding new contact", e);
@@ -285,7 +182,8 @@
* {@inheritDoc}
*/
@Override
- public void removeRosterListener(IBeemRosterListener listen) throws RemoteException {
+ public void removeRosterListener(IBeemRosterListener listen)
+ throws RemoteException {
if (listen != null)
mRemoteRosListeners.unregister(listen);
}
@@ -304,4 +202,120 @@
return new PresenceAdapter(mAdaptee.getPresence(jid));
}
+ /**
+ * Listener for the roster events. It will call the remote listeners
+ * registered.
+ *
+ * @author darisk
+ */
+ private class RosterListenerAdapter implements RosterListener {
+
+ /**
+ * Constructor.
+ */
+ public RosterListenerAdapter() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void entriesAdded(Collection<String> addresses) {
+ Log.i(TAG, "Ajout de l'entry");
+ final int n = mRemoteRosListeners.beginBroadcast();
+
+ List<String> tab = new ArrayList<String>();
+ tab.addAll(addresses);
+ for (int i = 0; i < n; i++) {
+ IBeemRosterListener listener = mRemoteRosListeners
+ .getBroadcastItem(i);
+ try {
+ listener.onEntriesAdded(tab);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Error while adding roster entries", e);
+ }
+ }
+ mRemoteRosListeners.finishBroadcast();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void entriesDeleted(Collection<String> addresses) {
+ Log.i(TAG, "Suppression de l'entry");
+ final int n = mRemoteRosListeners.beginBroadcast();
+
+ List<String> tab = new ArrayList<String>();
+ tab.addAll(addresses);
+ for (int i = 0; i < n; i++) {
+ IBeemRosterListener listener = mRemoteRosListeners
+ .getBroadcastItem(i);
+ try {
+ listener.onEntriesDeleted(tab);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Error while deleting roster entries", e);
+ }
+ }
+ mRemoteRosListeners.finishBroadcast();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void entriesUpdated(Collection<String> addresses) {
+ Log.d(TAG, "Update de l'entry");
+ final int n = mRemoteRosListeners.beginBroadcast();
+
+ List<String> tab = new ArrayList<String>();
+ tab.addAll(addresses);
+ for (int i = 0; i < n; i++) {
+ IBeemRosterListener listener = mRemoteRosListeners
+ .getBroadcastItem(i);
+ try {
+ listener.onEntriesUpdated(tab);
+ } catch (RemoteException e) {
+ Log.w(TAG, "Error while updating roster entries", e);
+ }
+ }
+ mRemoteRosListeners.finishBroadcast();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void presenceChanged(Presence presence) {
+ Log.i(TAG, "Changement de Presence");
+ String user = StringUtils.parseBareAddress(presence.getFrom());
+ Log.d(TAG, "User : " + user);
+ Contact c = mContacts.get(StringUtils.parseBareAddress(user));
+ if (c == null) {
+ c = new Contact(user);
+ mContacts.put(user, c);
+ }
+ c.addRes(StringUtils.parseResource(presence.getFrom()));
+ c.setStatus(mAdaptee.getPresence(presence.getFrom()));
+ c.setMsgState(presence.getStatus());
+ c.setName(mAdaptee.getEntry(user).getName());
+ /* redispatch vers les IBeemRosterListener */
+ final int n = mRemoteRosListeners.beginBroadcast();
+
+ for (int i = 0; i < n; i++) {
+ IBeemRosterListener listener = mRemoteRosListeners
+ .getBroadcastItem(i);
+ try {
+ listener.onPresenceChanged(new PresenceAdapter(presence));
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ Log.w(TAG, "Error while updating roster entries", e);
+ }
+ }
+ mRemoteRosListeners.finishBroadcast();
+ }
+ }
+
}
--- a/src/com/beem/project/beem/ui/AddContact.java Mon Jun 22 19:13:57 2009 +0200
+++ b/src/com/beem/project/beem/ui/AddContact.java Mon Jun 22 20:40:24 2009 +0200
@@ -28,81 +28,79 @@
*/
public class AddContact extends Activity {
- protected static final String TAG = "AddContact";
- private String mLogin;
- private String mAlias;
- private final List<String> mGroup = new ArrayList<String>();
- private IXmppFacade xmppFacade;
- private final ServiceConnection mServConn = new BeemServiceConnection();
-
- private final OnClickListener mOkListener = new OnClickListener() {
+ protected static final String TAG = "AddContact";
+ private String mLogin;
+ private String mAlias;
+ private final List<String> mGroup = new ArrayList<String>();
+ private IXmppFacade xmppFacade;
+ private final ServiceConnection mServConn = new BeemServiceConnection();
@Override
- public void onClick(View v) {
- boolean valid = true;
- if (getWidgetText(R.id.addc_login).length() == 0) {
- valid = false;
- } else {
- mLogin = getWidgetText(R.id.addc_login);
- }
- if (getWidgetText(R.id.addc_alias).length() == 0) {
- valid = false;
- } else {
- mAlias = getWidgetText(R.id.addc_alias);
- }
- if (getWidgetText(R.id.addc_group).length() == 0) {
- valid = false;
- } else {
- mGroup.add(getWidgetText(R.id.addc_group));
- }
- if (valid) {
- try {
- xmppFacade.getRoster().addContact(mLogin, mAlias, mGroup.toArray(new String[mGroup.size()]));
- Toast.makeText(AddContact.this, getString(R.string.AddCContactAdded), Toast.LENGTH_SHORT).show();
- finish();
- } catch (RemoteException e) {
- Toast.makeText(AddContact.this, e.getMessage(), Toast.LENGTH_SHORT).show();
- e.printStackTrace();
- }
- setResult(RESULT_OK);
- } else {
- Toast.makeText(AddContact.this, getString(R.string.AddCBadForm), Toast.LENGTH_SHORT).show();
- setResult(RESULT_CANCELED);
- }
-
- }
- };
-
- private String getWidgetText(int id) {
- EditText widget = (EditText) this.findViewById(id);
- return widget.getText().toString();
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.addcontact);
- Button ok = (Button) findViewById(R.id.addc_ok);
- ok.setOnClickListener(mOkListener);
- bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE);
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- unbindService(mServConn);
- }
-
- private class BeemServiceConnection implements ServiceConnection {
-
- @Override
- public void onServiceConnected(ComponentName name, IBinder service) {
- xmppFacade = IXmppFacade.Stub.asInterface(service);
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.addcontact);
+ Button ok = (Button) findViewById(R.id.addc_ok);
+ ok.setOnClickListener(mOkListener);
+ bindService(new Intent(this, BeemService.class), mServConn,
+ BIND_AUTO_CREATE);
}
@Override
- public void onServiceDisconnected(ComponentName name) {
- xmppFacade = null;
+ protected void onDestroy() {
+ super.onDestroy();
+ unbindService(mServConn);
+ }
+
+ private class BeemServiceConnection implements ServiceConnection {
+
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder service) {
+ xmppFacade = IXmppFacade.Stub.asInterface(service);
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ xmppFacade = null;
+ }
+ }
+
+ private String getWidgetText(int id) {
+ EditText widget = (EditText) this.findViewById(id);
+ return widget.getText().toString();
}
- }
+
+ private final OnClickListener mOkListener = new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ boolean valid = true;
+ mLogin = getWidgetText(R.id.addc_login);
+ mAlias = getWidgetText(R.id.addc_alias);
+ if (mLogin.length() == 0)
+ valid = false;
+ if (getWidgetText(R.id.addc_group).length() != 0)
+ mGroup.add(getWidgetText(R.id.addc_group));
+ if (valid) {
+ try {
+ xmppFacade.getRoster().addContact(mLogin, mAlias,
+ mGroup.toArray(new String[mGroup.size()]));
+ Toast.makeText(AddContact.this,
+ getString(R.string.AddCContactAdded),
+ Toast.LENGTH_SHORT).show();
+ finish();
+ } catch (RemoteException e) {
+ Toast.makeText(AddContact.this, e.getMessage(),
+ Toast.LENGTH_SHORT).show();
+ e.printStackTrace();
+ }
+ setResult(RESULT_OK);
+ } else {
+ Toast.makeText(AddContact.this,
+ getString(R.string.AddCBadForm), Toast.LENGTH_SHORT)
+ .show();
+ setResult(RESULT_CANCELED);
+ }
+
+ }
+ };
}