Correction d'un petit bug pour recuperer les infos du contact dans le
SendIM.java
--- a/AndroidManifest.xml Fri Apr 03 18:50:13 2009 +0200
+++ b/AndroidManifest.xml Sat Apr 04 09:50:59 2009 +0200
@@ -3,13 +3,12 @@
package="com.beem.project.beem" android:versionCode="1"
android:versionName="1.0">
<application android:label="@string/app_name" android:name="BeemApplication">
- <activity android:name=".ui.Beem" android:label="@string/app_name">
+ <activity android:name=".ui.ContactList" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- <activity android:name=".ui.ContactList" android:label="@string/app_name" />
<activity android:name=".ui.SendIM" android:label="@string/app_name" />
<service android:name="BeemService" android:enabled="true"
android:label="Beem Service" android:permission="com.beem.project.beem.BEEM_SERVICE">
@@ -24,5 +23,5 @@
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
<uses-permission android:name="com.beem.project.beem.BEEM_SERVICE"></uses-permission>
-<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
+ <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
</manifest>
Binary file res/drawable/away.png has changed
Binary file res/drawable/chat.png has changed
Binary file res/drawable/closed.png has changed
Binary file res/drawable/connecting.png has changed
Binary file res/drawable/dnd.png has changed
Binary file res/drawable/error.png has changed
Binary file res/drawable/invisible.png has changed
Binary file res/drawable/message.png has changed
Binary file res/drawable/not_in_the_roster.png has changed
Binary file res/drawable/offline.png has changed
Binary file res/drawable/online.png has changed
Binary file res/drawable/requested.png has changed
--- a/res/layout/beem.xml Fri Apr 03 18:50:13 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
-
- <ImageView android:id="@+id/logo"
- android:src="@drawable/logo"
- android:adjustViewBounds="true"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
-
- <TextView android:text="@string/BeemJabberID"
- android:textSize="25sp"
- android:paddingLeft="100sp"
- android:paddingTop="50sp"
- android:paddingBottom="15sp"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
-
- <ImageView android:id="@+id/avatar"
- android:src="@drawable/bart"
- android:paddingTop="10sp"
- android:paddingBottom="10sp"
- android:adjustViewBounds="true"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"/>
-
- <Button android:id="@+id/connection"
- android:textSize="20sp"
- android:singleLine="true"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"/>
-
-</LinearLayout>
--- a/res/layout/beemdialogsettings.xml Fri Apr 03 18:50:13 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Host/Port:"
- android:minWidth="70dp"
- />
-
- <EditText android:id="@+id/host"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:textSize="16sp"
- android:autoText="false"
- android:capitalize="none"
- android:minWidth="150dp"
- android:scrollHorizontally="true"/>
- <EditText android:id="@+id/port"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:textSize="16sp"
- android:autoText="false"
- android:minWidth="80dp"
- android:capitalize="none"
- android:scrollHorizontally="true"/>
- </LinearLayout>
-
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Userid:"
- android:minWidth="70dp"
- />
- <EditText android:id="@+id/userid"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:textSize="16sp"
- android:autoText="false"
- android:minWidth="250dp"
- android:capitalize="none"
- android:scrollHorizontally="true"/>
- </LinearLayout>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Password:"
- android:minWidth="70dp"
- />
- <EditText android:id="@+id/password"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:password="true"
- android:textSize="16sp"
- android:autoText="false"
- android:minWidth="250dp"
- android:capitalize="none"
- android:scrollHorizontally="true"/>
- </LinearLayout>
-
- <Button android:id="@+id/ok"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:text="OK">
- <requestFocus/>
- </Button>
-</LinearLayout>
\ No newline at end of file
--- a/res/layout/contactlistcontact.xml Fri Apr 03 18:50:13 2009 +0200
+++ b/res/layout/contactlistcontact.xml Sat Apr 04 09:50:59 2009 +0200
@@ -2,25 +2,34 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
- android:layout_height="50sp"
+ android:layout_height="wrap_content"
android:gravity="center_vertical" >
- <ImageView android:id="@+id/avatar"
- android:layout_width="70px"
- android:layout_height="40sp" />
+ <ImageView android:id="@+id/contactliststatus"
+ android:layout_weight="5"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical" />
+
<LinearLayout
android:orientation="vertical"
+ android:layout_weight="1"
android:layout_width="fill_parent"
- android:layout_height="40sp">
-
- <TextView android:id="@+id/textchild1"
+ android:layout_height="wrap_content" >
+ <TextView android:id="@+id/contactlistpseudo"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:paddingLeft="20sp" />
+ <TextView android:id="@+id/contactlistmsgperso"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="20sp" />
-
- <TextView android:id="@+id/textchild2"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
</LinearLayout>
+ <ImageView android:id="@+id/contactlistavatar"
+ android:layout_weight="5"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical" />
+
</LinearLayout>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/res/layout/contactlistdialogsettings.xml Sat Apr 04 09:50:59 2009 +0200
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ >
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Host/Port:"
+ android:minWidth="70dp"
+ />
+
+ <EditText android:id="@+id/host"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:textSize="16sp"
+ android:autoText="false"
+ android:capitalize="none"
+ android:minWidth="150dp"
+ android:scrollHorizontally="true"/>
+ <EditText android:id="@+id/port"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:textSize="16sp"
+ android:autoText="false"
+ android:minWidth="80dp"
+ android:capitalize="none"
+ android:scrollHorizontally="true"/>
+ </LinearLayout>
+
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Userid:"
+ android:minWidth="70dp"
+ />
+ <EditText android:id="@+id/userid"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:textSize="16sp"
+ android:autoText="false"
+ android:minWidth="250dp"
+ android:capitalize="none"
+ android:scrollHorizontally="true"/>
+ </LinearLayout>
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Password:"
+ android:minWidth="70dp"
+ />
+ <EditText android:id="@+id/password"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:password="true"
+ android:textSize="16sp"
+ android:autoText="false"
+ android:minWidth="250dp"
+ android:capitalize="none"
+ android:scrollHorizontally="true"/>
+ </LinearLayout>
+
+ <Button android:id="@+id/ok"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:text="OK">
+ <requestFocus/>
+ </Button>
+</LinearLayout>
\ No newline at end of file
--- a/res/menu/beemmenu.xml Fri Apr 03 18:50:13 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:title="Creer ou Editer un compte" android:id="@+id/account_edit"/>
- <item android:title="L'equipe Beem" android:id="@+id/account_about"/>
-</menu>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/res/menu/contactlistmenu.xml Sat Apr 04 09:50:59 2009 +0200
@@ -0,0 +1,4 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:title="Creer ou Editer un compte" android:id="@+id/account_edit"/>
+ <item android:title="L'equipe Beem" android:id="@+id/account_about"/>
+</menu>
--- a/res/values/strings.xml Fri Apr 03 18:50:13 2009 +0200
+++ b/res/values/strings.xml Sat Apr 04 09:50:59 2009 +0200
@@ -3,7 +3,7 @@
<string name="app_name">Beem</string>
<!-- Beem class -->
- <string name="BeemCreateAccount">Creer un compte</string>
+
<string name="BeemJabberID">Jabber ID</string>
<!-- BeemService class -->
@@ -13,9 +13,9 @@
<!-- Preferences informations -->
<string name="PreferenceFileName">Beem</string>
- <string name="PreferenceLoginKey">login</string>
+
<string name="PreferenceHostKey">host</string>
- <string name="PreferencePasswordKey">password</string>
+ <string name="PreferenceJID">Jabber ID</string><string name="PreferenceLoginKey">login</string><string name="PreferencePasswordKey">password</string>
<string name="PreferencePortKey">port</string>
<!-- SendIM class -->
@@ -24,4 +24,5 @@
<string name="SendIMState">Is : </string>
<string name="SendIMFrom">and is speaking from : </string>
<string name="SendIMSmiley">Insert a smiley</string>
+
</resources>
--- a/src/com/beem/project/beem/BeemApplication.java Fri Apr 03 18:50:13 2009 +0200
+++ b/src/com/beem/project/beem/BeemApplication.java Sat Apr 04 09:50:59 2009 +0200
@@ -29,11 +29,14 @@
private static BeemApplication mBeemApp;
private IXMPPFacade mFacade;
+
private Context mApplicationContext;
private Resources mPrivateResources;
private List<Message> mQueue = new LinkedList<Message>();
private boolean mIsConnected;
+
+
private ServiceConnection mServConn = new ServiceConnection() {
@Override
@@ -132,9 +135,14 @@
* Stop the Beem service.
*/
public synchronized void stopBeemService() {
- Intent intent = new Intent(this, BeemService.class);
- mApplicationContext.unbindService(mServConn);
- mApplicationContext.stopService(intent);
+ if (mIsConnected) {
+ Intent intent = new Intent();
+ intent.setComponent(new ComponentName("com.beem.project.beem",
+ "com.beem.project.beem.BeemService"));
+ mApplicationContext.unbindService(mServConn);
+ mApplicationContext.stopService(intent);
+ mIsConnected = false;
+ }
}
/**
@@ -145,6 +153,7 @@
return mFacade;
}
+
/**
* Add a methode to execute when the application is connected to the Beem service.
* @param target the handler which will execute the callback
@@ -161,4 +170,12 @@
}
}
}
+
+ /**
+ * Indique si on est connecte au service.
+ */
+ public boolean isConnected() {
+ return mIsConnected;
+ }
+
}
--- a/src/com/beem/project/beem/provider/BeemDatabaseHelper.java Fri Apr 03 18:50:13 2009 +0200
+++ b/src/com/beem/project/beem/provider/BeemDatabaseHelper.java Sat Apr 04 09:50:59 2009 +0200
@@ -23,7 +23,6 @@
public void onCreate(SQLiteDatabase db) {
db.execSQL(this.creationQuery);
}
-
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
--- a/src/com/beem/project/beem/service/PresenceAdapter.java Fri Apr 03 18:50:13 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-package com.beem.project.beem.service;
-
-import org.jivesoftware.smack.packet.Presence;
-
-import android.os.IBinder;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class PresenceAdapter implements Parcelable {
-
- private Presence mPresence;
-
- /**
- * Parcelable.Creator needs by Android.
- */
- public static final Parcelable.Creator<PresenceAdapter> CREATOR = new Parcelable.Creator<PresenceAdapter>() {
-
- @Override
- public PresenceAdapter createFromParcel(Parcel source) {
- return new PresenceAdapter(source);
- }
-
- @Override
- public PresenceAdapter[] newArray(int size) {
- return new PresenceAdapter[size];
- }
- };
-
- public PresenceAdapter(Presence presence) {
- mPresence = presence;
- }
-
-
- public PresenceAdapter(Parcel source) {
- // TODO Auto-generated constructor stub
- }
-
- @Override
- public int describeContents() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- // TODO Auto-generated method stub
-
- }
-
- public IBinder asBinder() {
- // TODO Auto-generated method stub
- return null;
- }
-}
--- a/src/com/beem/project/beem/service/RosterAdapter.java Fri Apr 03 18:50:13 2009 +0200
+++ b/src/com/beem/project/beem/service/RosterAdapter.java Sat Apr 04 09:50:59 2009 +0200
@@ -16,10 +16,6 @@
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Presence;
-import com.beem.project.beem.service.aidl.IBeemConnectionListener;
-import com.beem.project.beem.service.aidl.IBeemRosterListener;
-
-import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.util.Log;
@@ -29,238 +25,143 @@
*/
public class RosterAdapter extends com.beem.project.beem.service.aidl.IRoster.Stub {
- 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 RosterListener mRosterListener = new RosterListener() {
- @Override
- public void presenceChanged(Presence presence) {
- String user = presence.getFrom();
- Presence bestPresence = mAdaptee.getPresence(user);
- Contact c = mContacts.get(user);
- if (c == null) {
- c = new Contact(user);
- mContacts.put(user, c);
- }
- int status;
- if (bestPresence.getType().equals(Presence.Type.unavailable))
- status = Contact.CONTACT_STATUS_DISCONNECT;
- else {
- switch (bestPresence.getMode()) {
- case available:
- status = Contact.CONTACT_STATUS_AVAILABLE;
- break;
- case away:
- status = Contact.CONTACT_STATUS_AWAY;
- break;
- case chat:
- status = Contact.CONTACT_STATUS_AVAILABLE_FOR_CHAT;
- break;
- case dnd:
- status = Contact.CONTACT_STATUS_BUSY;
- break;
- case xa:
- status = Contact.CONTACT_STATUS_UNAVAILABLE;
- break;
- default:
- Log.e("RosterAdapter", "Status mode non gere");
- status = Contact.CONTACT_STATUS_DISCONNECT;
- break;
- }
- }
- c.setStatus(status);
+ private Roster mAdaptee;
+ private Map<String, Contact> mContacts = new HashMap<String, Contact>();
+ private RosterListener mRosterListener = new RosterListener() {
+
+ @Override
+ public void presenceChanged(Presence presence) {
+ String user = presence.getFrom();
+ Presence bestPresence = mAdaptee.getPresence(user);
+ Contact c = mContacts.get(user);
+ if (c == null) {
+ c = new Contact(user);
+ mContacts.put(user, c);
+ }
+ int status;
+ if (bestPresence.getType().equals(Presence.Type.unavailable))
+ status = Contact.CONTACT_STATUS_DISCONNECT;
+ else {
+ switch (bestPresence.getMode()) {
+ case available:
+ status = Contact.CONTACT_STATUS_AVAILABLE;
+ break;
+ case away:
+ status = Contact.CONTACT_STATUS_AWAY;
+ break;
+ case chat:
+ status = Contact.CONTACT_STATUS_AVAILABLE_FOR_CHAT;
+ break;
+ case dnd:
+ status = Contact.CONTACT_STATUS_BUSY;
+ break;
+ case xa:
+ status = Contact.CONTACT_STATUS_UNAVAILABLE;
+ break;
+ default:
+ Log.e("RosterAdapter", "Status mode non gere");
+ status = Contact.CONTACT_STATUS_DISCONNECT;
+ break;
}
-
- @Override
- public void entriesUpdated(Collection<String> arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void entriesDeleted(Collection<String> arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void entriesAdded(Collection<String> arg0) {
- // TODO Auto-generated method stub
-
- }
- };
-
- /**
- * Constructor.
- * @param roster the roster to adapt
- */
- public RosterAdapter(final Roster roster) {
- mAdaptee = roster;
- roster.addRosterListener(mRosterListener);
- for (RosterEntry entry : roster.getEntries()) {
- String user = entry.getUser();
- if ( !mContacts.containsKey(user))
- mContacts.put(user, new Contact(user));
- }
+ }
+ c.setStatus(status);
}
- /**
- * {@inheritDoc}
- */
@Override
- public void createGroup(String groupname) throws RemoteException {
- // TODO Auto-generated method stub
- mAdaptee.createGroup(groupname);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Contact addContact(String user, String name, String[] groups) throws RemoteException {
- try {
- mAdaptee.createEntry(user, name, groups);
- Contact res = new Contact(user);
- mContacts.put(user, res);
- return res;
- } catch (XMPPException e) {
- return null;
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void deleteContact(Contact contact) throws RemoteException {
- // TODO Auto-generated method stub
+ public void entriesUpdated(Collection<String> arg0) {
+ // TODO Auto-generated method stub
}
- @Override
- public void addConnectionListener(IBeemRosterListener listen) throws RemoteException {
- if (listen != null)
- mRemoteRosListeners.register(listen);
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public void removeConnectionListener(IBeemRosterListener listen) throws RemoteException {
- if (listen != null)
- mRemoteRosListeners.unregister(listen);
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public Contact getContact(String jid) throws RemoteException {
- return mContacts.get(jid);
- }
-
- /**
- * {@inheritDoc}
- */
@Override
- public List<Contact> getContactList() throws RemoteException {
- List<Contact> res = new ArrayList<Contact>();
- res.addAll(mContacts.values());
- return res;
- }
-
- private class RosterListenerAdapter implements RosterListener {
-
- @Override
- public void entriesAdded(Collection<String> addresses) {
- final int n = mRemoteRosListeners.beginBroadcast();
-
- List<String> tab = null;
- for (int i = 0; i < n; i++) {
- IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
- try {
- tab.addAll(addresses);
- listener.onEntriesAdded(tab);
- } catch (RemoteException e) {
- // The RemoteCallbackList will take care of removing the
- // dead listeners.
- Log.w(TAG, "Error while adding roster entries", e);
- }
- }
- mRemoteRosListeners.finishBroadcast();
-
- }
-
- @Override
- public void entriesDeleted(Collection<String> addresses) {
- final int n = mRemoteRosListeners.beginBroadcast();
-
- List<String> tab = null;
- for (int i = 0; i < n; i++) {
- IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
- try {
- tab.addAll(addresses);
- listener.onEntriesDeleted(tab);
- } catch (RemoteException e) {
- // The RemoteCallbackList will take care of removing the
- // dead listeners.
- Log.w(TAG, "Error while deleting roster entries", e);
- }
- }
- mRemoteRosListeners.finishBroadcast();
- }
-
- @Override
- public void entriesUpdated(Collection<String> addresses) {
- final int n = mRemoteRosListeners.beginBroadcast();
-
- List<String> tab = null;
- for (int i = 0; i < n; i++) {
- IBeemRosterListener listener = mRemoteRosListeners.getBroadcastItem(i);
- try {
- tab.addAll(addresses);
- listener.onEntriesUpdated(tab);
- } catch (RemoteException e) {
- // The RemoteCallbackList will take care of removing the
- // dead listeners.
- Log.w(TAG, "Error while updating roster entries", e);
- }
- }
- mRemoteRosListeners.finishBroadcast();
- }
-
- @Override
- public void presenceChanged(Presence presence) {
- final int n = mRemoteRosListeners.beginBroadcast();
-
- List<String> tab = null;
- 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();
- }
+ public void entriesDeleted(Collection<String> arg0) {
+ // TODO Auto-generated method stub
}
- /**
- * {@inheritDoc}
- */
@Override
- public List<String> getGroupsNames() throws RemoteException {
- Collection<RosterGroup> groups = mAdaptee.getGroups();
- ArrayList<String> result = new ArrayList<String>(groups.size());
- for (RosterGroup rosterGroup : groups) {
- result.add(rosterGroup.getName());
- }
- return result;
+ public void entriesAdded(Collection<String> arg0) {
+ // TODO Auto-generated method stub
+
+ }
+ };
+
+ /**
+ * Constructor.
+ * @param roster the roster to adapt
+ */
+ public RosterAdapter(final Roster roster) {
+ mAdaptee = roster;
+ roster.addRosterListener(mRosterListener);
+ for (RosterEntry entry : roster.getEntries()) {
+ String user = entry.getUser();
+ if ( !mContacts.containsKey(user))
+ mContacts.put(user, new Contact(user));
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void createGroup(String groupname) throws RemoteException {
+ // TODO Auto-generated method stub
+ mAdaptee.createGroup(groupname);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Contact addContact(String user, String name, String[] groups) throws RemoteException {
+ try {
+ mAdaptee.createEntry(user, name, groups);
+ Contact res = new Contact(user);
+ mContacts.put(user, res);
+ return res;
+ } catch (XMPPException e) {
+ return null;
}
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void deleteContact(Contact contact) throws RemoteException {
+ // TODO Auto-generated method stub
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Contact getContact(String jid) throws RemoteException {
+ return mContacts.get(jid);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public List<Contact> getContactList() throws RemoteException {
+ List<Contact> res = new ArrayList<Contact>();
+ res.addAll(mContacts.values());
+ return res;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public List<String> getGroupsNames() throws RemoteException {
+ Collection<RosterGroup> groups = mAdaptee.getGroups();
+ ArrayList<String> result = new ArrayList<String>(groups.size());
+ for (RosterGroup rosterGroup : groups) {
+ result.add(rosterGroup.getName());
+ }
+ return result;
+ }
}
--- a/src/com/beem/project/beem/service/XMPPConnectionAdapter.java Fri Apr 03 18:50:13 2009 +0200
+++ b/src/com/beem/project/beem/service/XMPPConnectionAdapter.java Sat Apr 04 09:50:59 2009 +0200
@@ -25,308 +25,313 @@
*/
public class XMPPConnectionAdapter extends IXmppConnection.Stub {
- private static final String TAG = "XMPPConnectionAdapter";
- private XMPPConnection mAdaptee;
- private IChatManager mChatManager;
- private BeemException mLastException;
- private String mLogin;
- private String mPassword;
- private RosterAdapter mRoster;
+ private static final String TAG = "XMPPConnectionAdapter";
+ private XMPPConnection mAdaptee;
+ private IChatManager mChatManager;
+ private BeemException mLastException;
+ private String mLogin;
+ private String mPassword;
+ private RosterAdapter mRoster;
+
+ private RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners =
+ new RemoteCallbackList<IBeemConnectionListener>();
+ private ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter();
+
+ /**
+ * Constructor.
+ * @param con The connection to adapt
+ * @param login The login to use
+ * @param password The password to use
+ */
+ public XMPPConnectionAdapter(final XMPPConnection con, final String login, final String password) {
+ mAdaptee = con;
+ mLogin = login;
+ mPassword = password;
+ }
+
+ /**
+ * Constructor.
+ * @param serviceName name of the service to connect to
+ * @param login login to use on connect
+ * @param password password to use on connect
+ */
+ public XMPPConnectionAdapter(final String serviceName, final String login, final String password) {
+ this(new XMPPConnection(serviceName), login, password);
+ }
+
+ /**
+ * Constructor.
+ * @param config Configuration to use in order to connect
+ * @param login login to use on connect
+ * @param password password to use on connect
+ */
+ public XMPPConnectionAdapter(final ConnectionConfiguration config, final String login, final String password) {
+ this(new XMPPConnection(config), login, password);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean connectSync() throws RemoteException {
+ try {
+ mAdaptee.connect();
+ mAdaptee.addConnectionListener(mConListener);
+ mAdaptee.login(mLogin, mPassword, "BEEM");
+ mChatManager = new BeemChatManager(mAdaptee.getChatManager());
+ // TODO find why this cause a null pointer exception
+ // this.initFeatures(); // pour declarer les features xmpp qu'on supporte
+ mLastException = null;
+ triggerAsynchronousConnectEvent();
+ return true;
+ } catch (XMPPException e) {
+ mLastException = new BeemException(e);
+ }
+ return false;
+ }
- private RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners =
- new RemoteCallbackList<IBeemConnectionListener>();
- private ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter();
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean disconnect() {
+ mAdaptee.disconnect();
+ mLastException = null;
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public IRoster getRoster() throws RemoteException {
+ if (mRoster != null)
+ return mRoster;
+ Roster adap = mAdaptee.getRoster();
+ if (adap == null)
+ return null;
+ mRoster = new RosterAdapter(adap);
+ return mRoster;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public final void connectAsync() throws RemoteException {
+ Thread t = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ try {
+ connectSync();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Error while connecting", e);
+ }
+ }
+ });
+ t.start();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void addConnectionListener(IBeemConnectionListener listen) throws RemoteException {
+ if (listen != null)
+ mRemoteConnListeners.register(listen);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void removeConnectionListener(IBeemConnectionListener listen) throws RemoteException {
+ if (listen != null)
+ mRemoteConnListeners.unregister(listen);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public IChatManager getChatManager() throws RemoteException {
+ return mChatManager;
+ }
+
+ /**
+ * Trigger Connection event.
+ */
+ private void triggerAsynchronousConnectEvent() {
+ mConListener.onConnect();
+ }
+
+ /**
+ * Listener for XMPP connection events.
+ * It will calls the remote listeners for connexion events.
+ * @author darisk
+ */
+ private class ConnexionListenerAdapter implements ConnectionListener {
/**
- * Constructor.
- * @param con The connection to adapt
- * @param login The login to use
- * @param password The password to use
+ * Defaut constructor.
*/
- public XMPPConnectionAdapter(final XMPPConnection con, final String login, final String password) {
- mAdaptee = con;
- mLogin = login;
- mPassword = password;
- }
-
- /**
- * Constructor.
- * @param serviceName name of the service to connect to
- * @param login login to use on connect
- * @param password password to use on connect
- */
- public XMPPConnectionAdapter(final String serviceName, final String login, final String password) {
- this(new XMPPConnection(serviceName), login, password);
- }
-
- /**
- * Constructor.
- * @param config Configuration to use in order to connect
- * @param login login to use on connect
- * @param password password to use on connect
- */
- public XMPPConnectionAdapter(final ConnectionConfiguration config, final String login, final String password) {
- this(new XMPPConnection(config), login, password);
+ public ConnexionListenerAdapter() {
+ // TODO Auto-generated constructor stub
}
/**
- * {@inheritDoc}
- */
- @Override
- public boolean connectSync() throws RemoteException {
- try {
- mAdaptee.connect();
- mAdaptee.addConnectionListener(mConListener);
- mAdaptee.login(mLogin, mPassword, "BEEM");
- mChatManager = new BeemChatManager(mAdaptee.getChatManager());
- // TODO find why this cause a null pointer exception
- // this.initFeatures(); // pour declarer les features xmpp qu'on supporte
- mLastException = null;
- triggerAsynchronousConnectEvent();
- return true;
- } catch (XMPPException e) {
- mLastException = new BeemException(e);
- }
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean disconnect() {
- mAdaptee.disconnect();
- mLastException = null;
- return true;
- }
-
- /**
- * {@inheritDoc}
+ * Method to execute when a connection event occurs.
*/
- @Override
- public IRoster getRoster() throws RemoteException {
- if (mRoster != null)
- return mRoster;
- Roster adap = mAdaptee.getRoster();
- if (adap == null)
- return null;
- mRoster = new RosterAdapter(adap);
- return mRoster;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public final void connectAsync() throws RemoteException {
- Thread t = new Thread(new Runnable() {
+ public void onConnect() {
+ final int n = mRemoteConnListeners.beginBroadcast();
- @Override
- public void run() {
- try {
- connectSync();
- } catch (RemoteException e) {
- Log.e(TAG, "Error while connecting", e);
- }
- }
- });
- t.start();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void addConnectionListener(IBeemConnectionListener listen) throws RemoteException {
- if (listen != null)
- mRemoteConnListeners.register(listen);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void removeConnectionListener(IBeemConnectionListener listen) throws RemoteException {
- if (listen != null)
- mRemoteConnListeners.unregister(listen);
+ for (int i = 0; i < n; i++) {
+ IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+ try {
+ listener.onConnect();
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ Log.w(TAG, "Error while triggering remote connection listeners", e);
+ }
+ }
+ mRemoteConnListeners.finishBroadcast();
}
/**
* {@inheritDoc}
*/
@Override
- public IChatManager getChatManager() throws RemoteException {
- return mChatManager;
+ public void connectionClosed() {
+ final int n = mRemoteConnListeners.beginBroadcast();
+
+ for (int i = 0; i < n; i++) {
+ IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+ try {
+ listener.connectionClosed();
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ Log.w(TAG, "Error while triggering remote connection listeners", e);
+ }
+ }
+ mRemoteConnListeners.finishBroadcast();
}
/**
- * Trigger Connection event.
+ * {@inheritDoc}
*/
- private void triggerAsynchronousConnectEvent() {
- mConListener.onConnect();
+ @Override
+ public void connectionClosedOnError(Exception arg0) {
+ final int n = mRemoteConnListeners.beginBroadcast();
+
+ for (int i = 0; i < n; i++) {
+ IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+ try {
+ listener.connectionClosedOnError();
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ Log.w(TAG, "Error while triggering remote connection listeners", e);
+ }
+ }
+ mRemoteConnListeners.finishBroadcast();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void reconnectingIn(int arg0) {
+ final int n = mRemoteConnListeners.beginBroadcast();
+
+ for (int i = 0; i < n; i++) {
+ IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+ try {
+ listener.reconnectingIn(arg0);
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ }
+ }
+ mRemoteConnListeners.finishBroadcast();
}
/**
- * Listener for XMPP connection events.
- * It will calls the remote listeners for connexion events.
- * @author darisk
+ * {@inheritDoc}
*/
- private class ConnexionListenerAdapter implements ConnectionListener {
-
- /**
- * Defaut constructor.
- */
- public ConnexionListenerAdapter() {
- // TODO Auto-generated constructor stub
- }
-
- /**
- * Method to execute when a connection event occurs.
- */
- public void onConnect() {
- final int n = mRemoteConnListeners.beginBroadcast();
-
- for (int i = 0; i < n; i++) {
- IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
- try {
- listener.onConnect();
- } catch (RemoteException e) {
- // The RemoteCallbackList will take care of removing the
- // dead listeners.
- Log.w(TAG, "Error while triggering remote connection listeners", e);
- }
- }
- mRemoteConnListeners.finishBroadcast();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void connectionClosed() {
- final int n = mRemoteConnListeners.beginBroadcast();
-
- for (int i = 0; i < n; i++) {
- IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
- try {
- listener.connectionClosed();
- } catch (RemoteException e) {
- // The RemoteCallbackList will take care of removing the
- // dead listeners.
- Log.w(TAG, "Error while triggering remote connection listeners", e);
- }
- }
- mRemoteConnListeners.finishBroadcast();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void connectionClosedOnError(Exception arg0) {
- final int n = mRemoteConnListeners.beginBroadcast();
+ @Override
+ public void reconnectionFailed(Exception arg0) {
+ final int r = mRemoteConnListeners.beginBroadcast();
- for (int i = 0; i < n; i++) {
- IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
- try {
- listener.connectionClosedOnError();
- } catch (RemoteException e) {
- // The RemoteCallbackList will take care of removing the
- // dead listeners.
- Log.w(TAG, "Error while triggering remote connection listeners", e);
- }
- }
- mRemoteConnListeners.finishBroadcast();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void reconnectingIn(int arg0) {
- final int n = mRemoteConnListeners.beginBroadcast();
-
- for (int i = 0; i < n; i++) {
- IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
- try {
- listener.reconnectingIn(arg0);
- } catch (RemoteException e) {
- // The RemoteCallbackList will take care of removing the
- // dead listeners.
- }
- }
- mRemoteConnListeners.finishBroadcast();
+ for (int i = 0; i < r; i++) {
+ IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+ try {
+ listener.reconnectionFailed();
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ Log.w(TAG, "Error while triggering remote connection listeners", e);
}
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void reconnectionFailed(Exception arg0) {
- final int r = mRemoteConnListeners.beginBroadcast();
-
- for (int i = 0; i < r; i++) {
- IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
- try {
- listener.reconnectionFailed();
- } catch (RemoteException e) {
- // The RemoteCallbackList will take care of removing the
- // dead listeners.
- Log.w(TAG, "Error while triggering remote connection listeners", e);
- }
- }
- mRemoteConnListeners.finishBroadcast();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void reconnectionSuccessful() {
- final int n = mRemoteConnListeners.beginBroadcast();
-
- for (int i = 0; i < n; i++) {
- IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
- try {
- listener.reconnectionSuccessful();
- } catch (RemoteException e) {
- // The RemoteCallbackList will take care of removing the
- // dead listeners.
- Log.w(TAG, "Error while triggering remote connection listeners", e);
- }
- }
- mRemoteConnListeners.finishBroadcast();
- }
-
+ }
+ mRemoteConnListeners.finishBroadcast();
}
/**
- * enregistre les features dispo dans notre version Liste de features que Telepathy supporte.
- * "http://www.google.com/xmpp/protocol/session" "http://www.google.com/transport/p2p"
- * "http://jabber.org/protocol/jingle" "http://jabber.org/protocol/chatstates" "http://jabber.org/protocol/nick"
- * "http://jabber.org/protocol/nick+notify" "http://jabber.org/protocol/si" "ttp://jabber.org/protocol/ibb"
- * "ttp://telepathy.freedesktop.org/xmpp/tubes" "http://www.google.com/xmpp/protocol/voice/v1"
- * "http://jabber.org/protocol/jingle/description/audio" "http://jabber.org/protocol/jingle/description/video" Liste
- * de features que pidgin `supporte' (on notera la cradence de l'annonce): "jabber:iq:last" "jabber:iq:oob"
- * "jabber:iq:time" "jabber:iq:version" "jabber:x:conference" "urn:xmpp:attention:0" "urn:xmpp:bob" "urn:xmpp:ping"
- * "xmpp:urn:time" "http://jabber.org/protocol/bytestreams" "http://jabber.org/protocol/disco#info"
- * "http://jabber.org/protocol/disco#items" "http://jabber.org/protocol/ibb" "http://jabber.org/protocol/muc"
- * "http://jabber.org/protocol/muc#user" "http://jabber.org/protocol/si"
- * "http://jabber.org/protocol/si/profile/file-transfer" "http://jabber.org/protocol/xhtml-im"
- * "http://www.xmpp.org/extensions/xep-0199.html#ns" "http://jabber.org/protocol/mood"
- * "http://jabber.org/protocol/mood+notify" "http://jabber.org/protocol/nick"
- * "http://jabber.org/protocol/nick+notify" "http://jabber.org/protocol/tune"
- * "http://jabber.org/protocol/tune+notify" "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata"
- * "http://www.xmpp.org/extensions/xep-0084.html#ns-data"
- * "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata+notify"
- * "http://www.xmpp.org/extensions/xep-0167.html#ns" << Jingle RTP Sessions
+ * {@inheritDoc}
*/
- private void initFeatures() {
- JingleManager.setJingleServiceEnabled();
- ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(mAdaptee);
- sdm.addFeature("http://jabber.org/protocol/disco#info");
- // sdm.addFeature("http://jabber.org/protocol/nick");
+ @Override
+ public void reconnectionSuccessful() {
+ final int n = mRemoteConnListeners.beginBroadcast();
+ for (int i = 0; i < n; i++) {
+ IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+ try {
+ listener.reconnectionSuccessful();
+ } catch (RemoteException e) {
+ // The RemoteCallbackList will take care of removing the
+ // dead listeners.
+ Log.w(TAG, "Error while triggering remote connection listeners", e);
+ }
+ }
+ mRemoteConnListeners.finishBroadcast();
}
+ }
+
+ /**
+ * enregistre les features dispo dans notre version Liste de features que Telepathy supporte.
+ * "http://www.google.com/xmpp/protocol/session" "http://www.google.com/transport/p2p"
+ * "http://jabber.org/protocol/jingle" "http://jabber.org/protocol/chatstates" "http://jabber.org/protocol/nick"
+ * "http://jabber.org/protocol/nick+notify" "http://jabber.org/protocol/si" "ttp://jabber.org/protocol/ibb"
+ * "ttp://telepathy.freedesktop.org/xmpp/tubes" "http://www.google.com/xmpp/protocol/voice/v1"
+ * "http://jabber.org/protocol/jingle/description/audio" "http://jabber.org/protocol/jingle/description/video" Liste
+ * de features que pidgin `supporte' (on notera la cradence de l'annonce): "jabber:iq:last" "jabber:iq:oob"
+ * "jabber:iq:time" "jabber:iq:version" "jabber:x:conference" "urn:xmpp:attention:0" "urn:xmpp:bob" "urn:xmpp:ping"
+ * "xmpp:urn:time" "http://jabber.org/protocol/bytestreams" "http://jabber.org/protocol/disco#info"
+ * "http://jabber.org/protocol/disco#items" "http://jabber.org/protocol/ibb" "http://jabber.org/protocol/muc"
+ * "http://jabber.org/protocol/muc#user" "http://jabber.org/protocol/si"
+ * "http://jabber.org/protocol/si/profile/file-transfer" "http://jabber.org/protocol/xhtml-im"
+ * "http://www.xmpp.org/extensions/xep-0199.html#ns" "http://jabber.org/protocol/mood"
+ * "http://jabber.org/protocol/mood+notify" "http://jabber.org/protocol/nick"
+ * "http://jabber.org/protocol/nick+notify" "http://jabber.org/protocol/tune"
+ * "http://jabber.org/protocol/tune+notify" "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata"
+ * "http://www.xmpp.org/extensions/xep-0084.html#ns-data"
+ * "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata+notify"
+ * "http://www.xmpp.org/extensions/xep-0167.html#ns" << Jingle RTP Sessions
+ */
+ private void initFeatures() {
+ JingleManager.setJingleServiceEnabled();
+ ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(mAdaptee);
+ sdm.addFeature("http://jabber.org/protocol/disco#info");
+ // sdm.addFeature("http://jabber.org/protocol/nick");
+
+ }
+
+ @Override
+ public boolean isAuthentificated() throws RemoteException {
+ return mAdaptee.isAuthenticated();
+ }
+
}
--- a/src/com/beem/project/beem/service/XMPPFacade.java Fri Apr 03 18:50:13 2009 +0200
+++ b/src/com/beem/project/beem/service/XMPPFacade.java Sat Apr 04 09:50:59 2009 +0200
@@ -27,7 +27,6 @@
*/
@Override
public void connectAsync() throws RemoteException {
- // TODO Auto-generated method stub
mConnexion.connectAsync();
}
@@ -36,7 +35,6 @@
*/
@Override
public void connectSync() throws RemoteException {
- // TODO Auto-generated method stub
mConnexion.connectSync();
}
@@ -45,7 +43,6 @@
*/
@Override
public IXmppConnection createConnection() throws RemoteException {
- // TODO Auto-generated method stub
return mConnexion;
}
@@ -54,7 +51,6 @@
*/
@Override
public void disconnect() throws RemoteException {
- // TODO Auto-generated method stub
mConnexion.disconnect();
}
--- a/src/com/beem/project/beem/service/aidl/IXmppConnection.aidl Fri Apr 03 18:50:13 2009 +0200
+++ b/src/com/beem/project/beem/service/aidl/IXmppConnection.aidl Sat Apr 04 09:50:59 2009 +0200
@@ -17,5 +17,7 @@
void addConnectionListener(in IBeemConnectionListener listen);
void removeConnectionListener(in IBeemConnectionListener listen);
+ boolean isAuthentificated();
+
IChatManager getChatManager();
}
\ No newline at end of file
--- a/src/com/beem/project/beem/ui/Beem.java Fri Apr 03 18:50:13 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-package com.beem.project.beem.ui;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.os.Handler;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.Button;
-
-import com.beem.project.beem.BeemApplication;
-import com.beem.project.beem.R;
-
-/**
- * La principale activite to be continuous.
- */
-public class Beem extends Activity {
-
- private SharedPreferences mSettings;
- private BeemDialogSettings mDialog;
- private Button mButton;
- private Handler mHandler;
- private BeemApplication mBeemApplication;
-
- /**
- * Default constructor.
- */
- public Beem() {
- super();
- mHandler = new Handler();
- }
-
- /**
- * Called when the activity is first created.
- * @param savedInstanceState
- * previous state.
- */
- @Override
- public final void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mBeemApplication = BeemApplication.getApplication(this);
- setContentView(R.layout.beem);
- mSettings = getSharedPreferences(
- getString(R.string.PreferenceFileName), MODE_PRIVATE);
- mDialog = new BeemDialogSettings(this, mSettings);
-
- mButton = (Button) findViewById(R.id.connection);
- mButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mButton.getText() == getString(R.string.BeemCreateAccount))
- mDialog.show();
- else
- startActivity(new Intent(Beem.this, ContactList.class));
- }
- });
- showJID();
- }
-
- /**
- * Callback for menu creation.
- * @param menu
- * the menu created
- * @return true on success, false otherwise
- */
- @Override
- public final boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.beemmenu, menu);
- return true;
- }
-
- /**
- * Callback for menu item selected.
- * @param item
- * the item selected
- * @return true on success, false otherwise
- */
- @Override
- public final boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.account_edit:
- mDialog.show();
- return true;
- case R.id.account_about:
- return true;
- default:
- return false;
- }
- }
-
- /**
- * Show jabber id in button.
- */
- public final void showJID() {
- String jid = mSettings.getString(
- getString(R.string.PreferenceLoginKey), "")
- + "@"
- + mSettings
- .getString(getString(R.string.PreferenceHostKey), "");
- if (jid.length() == 1)
- jid = getString(R.string.BeemCreateAccount);
- mButton.setText(jid);
- }
-
-}
--- a/src/com/beem/project/beem/ui/BeemDialogSettings.java Fri Apr 03 18:50:13 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-package com.beem.project.beem.ui;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.view.View;
-import android.widget.Button;
-import android.widget.EditText;
-
-import com.beem.project.beem.R;
-
-/**
- *
- */
-public class BeemDialogSettings extends Dialog implements
- android.view.View.OnClickListener {
-
- private Beem mbeem;
-
- private SharedPreferences mSettings;
-
- public BeemDialogSettings(Beem beem, SharedPreferences settings) {
- super(beem);
- this.mbeem = beem;
- this.mSettings = settings;
- }
-
- @Override
- protected void onStart() {
- super.onStart();
- setContentView(R.layout.beemdialogsettings);
- getWindow().setFlags(4, 4);
- setTitle("Jabber Account Settings");
- showSettings();
- Button ok = (Button) findViewById(R.id.ok);
- ok.setOnClickListener(this);
- }
-
- @Override
- public void onClick(View v) {
- SharedPreferences.Editor editor = mSettings.edit();
- Context ctx = getContext();
- editor.putString(ctx.getString(R.string.PreferenceHostKey),
- getWidgetText(R.id.host));
- editor.putString(ctx.getString(R.string.PreferencePortKey),
- getWidgetText(R.id.port));
- editor.putString(ctx.getString(R.string.PreferenceLoginKey),
- getWidgetText(R.id.userid));
- editor.putString(ctx.getString(R.string.PreferencePasswordKey),
- getWidgetText(R.id.password));
- editor.commit();
- this.mbeem.showJID();
- dismiss();
- }
-
- private void showSettings() {
- String tmp;
- EditText eHost = (EditText) findViewById(R.id.host);
- if ((tmp = mSettings.getString("host", "")) != "")
- eHost.setText(tmp);
- EditText ePort = (EditText) findViewById(R.id.port);
- if ((tmp = mSettings.getString("port", "")) != "")
- ePort.setText(tmp);
- EditText eLogin = (EditText) findViewById(R.id.userid);
- if ((tmp = mSettings.getString("login", "")) != "")
- eLogin.setText(tmp);
- EditText ePwd = (EditText) findViewById(R.id.password);
- if ((tmp = mSettings.getString("password", "")) != "")
- ePwd.setText(tmp);
- }
-
- private String getWidgetText(int id) {
- EditText widget = (EditText) this.findViewById(id);
- return widget.getText().toString();
- }
-}
--- a/src/com/beem/project/beem/ui/ContactList.java Fri Apr 03 18:50:13 2009 +0200
+++ b/src/com/beem/project/beem/ui/ContactList.java Sat Apr 04 09:50:59 2009 +0200
@@ -4,14 +4,20 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+
import android.app.ExpandableListActivity;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.RemoteException;
import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ExpandableListAdapter;
@@ -19,95 +25,196 @@
import android.widget.ImageView;
import android.widget.SimpleExpandableListAdapter;
import android.widget.TextView;
+
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.aidl.IRoster;
import com.beem.project.beem.service.aidl.IXMPPFacade;
public class ContactList extends ExpandableListActivity {
private static final String TAG = "CONTACTLIST_ACT";
+ private SharedPreferences mSettings;
private IXMPPFacade mService = null;
private Handler mHandler;
private BeemApplication mBeemApplication;
+ private ContactListDialogSettings mDialog;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean onChildClick(ExpandableListView parent, View v,
+ int groupPosition, int childPosition, long id) {
+ Intent i = new Intent(this, SendIM.class);
+ Map<String, Contact> child = (HashMap<String, Contact>) parent
+ .getExpandableListAdapter().getChild(groupPosition,
+ childPosition);
+ i.putExtra("contact", child.get("CHILD"));
+ startActivity(i);
+ return true;
+ }
@Override
- public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
- startActivity(new Intent(this, SendIM.class));
- return true;
-
- };
-
- @Override
- public void onCreate(Bundle saveBundle) {
+ protected void onCreate(Bundle saveBundle) {
super.onCreate(saveBundle);
mHandler = new Handler();
mBeemApplication = BeemApplication.getApplication(this);
+ mSettings = getSharedPreferences(
+ getString(R.string.PreferenceFileName), MODE_PRIVATE);
+ mDialog = new ContactListDialogSettings(this, mSettings);
+
+ mSettings
+ .registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() {
+ @Override
+ public void onSharedPreferenceChanged(
+ SharedPreferences sharedPreferences, String key) {
+ /*
+ * TODO : A faire apres listener nikita
+ *
+ * mBeemApplication.stopBeemService();
+ * mBeemApplication.startBeemService();
+ * mBeemApplication.callWhenServiceConnected(mHandler,
+ * new Runnable() {
+ *
+ * @Override public void run() {
+ * callbackShowContactList(); } });
+ */
+ }
+ });
}
@Override
- public void onStart() {
+ protected void onStart() {
super.onStart();
- mBeemApplication.startBeemService();
+ Log.i(TAG, "onStart");
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ /*
+ * @TODO: A ameliorer apres listener de nikita
+ */
+ Log.i(TAG, "onResume");
+ if (!mBeemApplication.isConnected())
+ mBeemApplication.startBeemService();
+ else {
+ callbackShowContactList();
+ }
mBeemApplication.callWhenServiceConnected(mHandler, new Runnable() {
@Override
public void run() {
- mService = mBeemApplication.getXmppFacade();
- try {
- showContactList(mService.getRoster().getContactList(), mService.getRoster().getContactList());
- } catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
+ callbackShowContactList();
}
});
}
- private void showContactList(List<Contact> listGroup, List<Contact> listContact) {
+ private void callbackShowContactList() {
+ /*
+ * @TODO: A ameliorer apres listener de nikita
+ */
+ mService = mBeemApplication.getXmppFacade();
+ if (mService != null) {
+ try {
+ IRoster r = mService.getRoster();
+ if (r != null)
+ showContactList(r.getGroupsNames(), r.getContactList());
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * Callback for menu creation.
+ *
+ * @param menu
+ * the menu created
+ * @return true on success, false otherwise
+ */
+ @Override
+ public final boolean onCreateOptionsMenu(Menu menu) {
+ super.onCreateOptionsMenu(menu);
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.contactlistmenu, menu);
+ return true;
+ }
+
+ /**
+ * Callback for menu item selected.
+ *
+ * @param item
+ * the item selected
+ * @return true on success, false otherwise
+ */
+ @Override
+ public final boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.account_edit:
+ mDialog.show();
+ return true;
+ case R.id.account_about:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ private void showContactList(List<String> listGroup,
+ List<Contact> listContact) {
ExpandableListAdapter Adapter;
List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
- List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();
+ List<List<Map<String, Contact>>> childData = new ArrayList<List<Map<String, Contact>>>();
if (listGroup.size() == 0)
- listGroup.add(new Contact());
+ listGroup.add("Default");
for (int i = 0; i < listGroup.size(); i++) {
Map<String, String> curGroupMap = new HashMap<String, String>();
groupData.add(curGroupMap);
- curGroupMap.put("NAME", "Default");
+ curGroupMap.put("GROUP", listGroup.get(i));
- List<Map<String, String>> children = new ArrayList<Map<String, String>>();
+ List<Map<String, Contact>> children = new ArrayList<Map<String, Contact>>();
for (int j = 0; j < listContact.size(); ++j) {
- Map<String, String> curChildMap = new HashMap<String, String>();
+ Map<String, Contact> curChildMap = new HashMap<String, Contact>();
children.add(curChildMap);
- curChildMap.put("NAME_CHILD", listContact.get(j).getJID());
- curChildMap.put("MSG", "Taper votre message perso");
+ Contact c = listContact.get(j);
+ Log.i(TAG, c.getID() + " " +c.getJID());
+ curChildMap.put("CHILD", c);
}
childData.add(children);
}
- Adapter = new ContactExpandableListAdapter(this, groupData, R.layout.contactlistgroup, new String[] { "NAME" },
- new int[] { R.id.textgroup }, childData, R.layout.contactlistcontact, new String[] { "NAME_CHILD", "MSG" },
- new int[] { R.id.textchild1, R.id.textchild2, R.id.avatar });
+ Adapter = new ContactExpandableListAdapter(this, groupData,
+ R.layout.contactlistgroup, new String[] { "GROUP" },
+ new int[] { R.id.textgroup }, childData,
+ R.layout.contactlistcontact, new String[] { "CHILD" },
+ new int[] { R.id.contactliststatus, R.id.contactlistpseudo,
+ R.id.contactlistmsgperso, R.id.contactlistavatar });
setListAdapter(Adapter);
}
/**
- * A simple adapter which allows you to bind data to specific Views defined within the layout of an Expandable Lists
- * children (Implement getGroupView() to define the layout of parents)
+ * A simple adapter which allows you to bind data to specific Views defined
+ * within the layout of an Expandable Lists children (Implement
+ * getGroupView() to define the layout of parents)
*/
- public class ContactExpandableListAdapter extends SimpleExpandableListAdapter {
+ private class ContactExpandableListAdapter extends
+ SimpleExpandableListAdapter {
private List<? extends List<? extends Map<String, ?>>> mChildData;
private String[] mChildFrom;
private int[] mChildTo;
- public ContactExpandableListAdapter(Context context, List<? extends Map<String, ?>> groupData, int groupLayout,
- String[] groupFrom, int[] groupTo, List<? extends List<? extends Map<String, ?>>> childData,
- int childLayout, String[] childFrom, int[] childTo) {
- super(context, groupData, groupLayout, groupFrom, groupTo, childData, childLayout, childFrom, childTo);
+ public ContactExpandableListAdapter(Context context,
+ List<? extends Map<String, ?>> groupData, int groupLayout,
+ String[] groupFrom, int[] groupTo,
+ List<? extends List<? extends Map<String, ?>>> childData,
+ int childLayout, String[] childFrom, int[] childTo) {
+ super(context, groupData, groupLayout, groupFrom, groupTo,
+ childData, childLayout, childFrom, childTo);
mChildData = childData;
mChildFrom = childFrom;
@@ -116,8 +223,8 @@
}
@Override
- public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
- ViewGroup parent) {
+ public View getChildView(int groupPosition, int childPosition,
+ boolean isLastChild, View convertView, ViewGroup parent) {
View v;
if (convertView == null) {
@@ -125,33 +232,67 @@
} else {
v = convertView;
}
- bindView(v, mChildData.get(groupPosition).get(childPosition), mChildFrom, mChildTo, groupPosition,
- childPosition);
+ bindView(v, mChildData.get(groupPosition).get(childPosition),
+ mChildFrom, mChildTo, groupPosition, childPosition);
return v;
}
- // This method binds my data to the Views specified in the child
- // xmllayout
- private void bindView(View view, Map<String, ?> data, String[] from, int[] to, int groupPosition,
- int childPosition) {
- // Apply TextViews
- TextView v1 = (TextView) view.findViewById(to[0]);
- if (v1 != null) {
- Log.i("CONTACT LIST 1", (String) data.get(from[0]) + " " + to[0]);
- v1.setText((String) data.get(from[0]));
- }
- TextView v2 = (TextView) view.findViewById(to[1]);
- if (v2 != null) {
- Log.i("CONTACT LIST 2", (String) data.get(from[1]) + " " + to[1]);
- v2.setText((String) data.get(from[1]));
- }
- // Apply ImageView
- ImageView imgV = (ImageView) view.findViewById(to[2]);
- if (imgV != null) {
- Drawable avatar = (Drawable) getResources().getDrawable(R.drawable.avatar);
- imgV.setImageDrawable(avatar);
+ private void bindView(View view, Map<String, ?> data, String[] from,
+ int[] to, int groupPosition, int childPosition) {
+ Contact c = (Contact) data.get(from[0]);
+
+ if (c != null) {
+
+ ImageView imgV = (ImageView) view.findViewById(to[0]);
+ Drawable imageDrawable = null;
+ switch (c.getStatus()) {
+ case Contact.CONTACT_STATUS_AVAILABLE:
+ imageDrawable = (Drawable) getResources().getDrawable(
+ R.drawable.avatar);
+ case Contact.CONTACT_STATUS_AVAILABLE_FOR_CHAT:
+ imageDrawable = (Drawable) getResources().getDrawable(
+ R.drawable.chat);
+ case Contact.CONTACT_STATUS_AWAY:
+ imageDrawable = (Drawable) getResources().getDrawable(
+ R.drawable.away);
+ case Contact.CONTACT_STATUS_BUSY:
+ imageDrawable = (Drawable) getResources().getDrawable(
+ R.drawable.dnd);
+ case Contact.CONTACT_STATUS_DISCONNECT:
+ imageDrawable = (Drawable) getResources().getDrawable(
+ R.drawable.offline);
+ case Contact.CONTACT_STATUS_UNAVAILABLE:
+ imageDrawable = (Drawable) getResources().getDrawable(
+ R.drawable.requested);
+ default:
+ imageDrawable = (Drawable) getResources().getDrawable(
+ R.drawable.error);
+ }
+ imgV.setImageDrawable(imageDrawable);
+
+ TextView v = (TextView) view.findViewById(to[1]);
+ if (v != null) {
+ v.setText(c.getJID());
+ }
+ /*
+ * @TODO: Rajouter le message perso du contact v = (TextView)
+ */
+ v = (TextView) view.findViewById(to[2]);
+ if (v != null) {
+ v.setText(c.getMMsgState());
+ }
+
+ /*
+ * @TODO: Rajouter l'avatar du contact getAvatar() dans la
+ * classe
+ */
+ imgV = (ImageView) view.findViewById(to[3]);
+ if (imgV != null) {
+ imageDrawable = (Drawable) getResources().getDrawable(
+ R.drawable.avatar);
+ imgV.setImageDrawable(imageDrawable);
+ }
}
}
}
-
-}
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/ui/ContactListDialogSettings.java Sat Apr 04 09:50:59 2009 +0200
@@ -0,0 +1,81 @@
+package com.beem.project.beem.ui;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.RemoteException;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+import com.beem.project.beem.BeemApplication;
+import com.beem.project.beem.R;
+
+/**
+ *
+ */
+public class ContactListDialogSettings extends Dialog implements
+ android.view.View.OnClickListener {
+
+ private SharedPreferences mSettings;
+ private ContactList mContactList;
+
+ public ContactListDialogSettings(ContactList contactList,
+ SharedPreferences settings) {
+ super(contactList);
+ this.mContactList = contactList;
+ this.mSettings = settings;
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ setContentView(R.layout.contactlistdialogsettings);
+ getWindow().setFlags(4, 4);
+ setTitle("Jabber Account Settings");
+ showSettings();
+ Button ok = (Button) findViewById(R.id.ok);
+ ok.setOnClickListener(this);
+ }
+
+ @Override
+ public void onClick(View v) {
+ SharedPreferences.Editor editor = mSettings.edit();
+ Context ctx = getContext();
+ editor.putString(ctx.getString(R.string.PreferenceHostKey),
+ getWidgetText(R.id.host));
+ editor.putString(ctx.getString(R.string.PreferencePortKey),
+ getWidgetText(R.id.port));
+ editor.putString(ctx.getString(R.string.PreferenceLoginKey),
+ getWidgetText(R.id.userid));
+ editor.putString(ctx.getString(R.string.PreferencePasswordKey),
+ getWidgetText(R.id.password));
+ String JID = ctx.getString(R.string.PreferenceLoginKey) + "@"
+ + ctx.getString(R.string.PreferenceHostKey);
+ editor.putString(ctx.getString(R.string.PreferenceJID), JID);
+ editor.commit();
+ dismiss();
+ }
+
+ private void showSettings() {
+ Context ctx = getContext();
+ EditText e = (EditText) findViewById(R.id.host);
+ e.setText(mSettings.getString(
+ ctx.getString(R.string.PreferenceHostKey), ""));
+ e = (EditText) findViewById(R.id.port);
+ e.setText(mSettings.getString(
+ ctx.getString(R.string.PreferencePortKey), ""));
+ e = (EditText) findViewById(R.id.userid);
+ e.setText(mSettings.getString(ctx
+ .getString(R.string.PreferenceLoginKey), ""));
+ e = (EditText) findViewById(R.id.password);
+ e.setText(mSettings.getString(ctx
+ .getString(R.string.PreferencePasswordKey), ""));
+ }
+
+ private String getWidgetText(int id) {
+ EditText widget = (EditText) this.findViewById(id);
+ return widget.getText().toString();
+ }
+}
--- a/src/com/beem/project/beem/ui/SendIM.java Fri Apr 03 18:50:13 2009 +0200
+++ b/src/com/beem/project/beem/ui/SendIM.java Sat Apr 04 09:50:59 2009 +0200
@@ -5,6 +5,7 @@
import android.app.ListActivity;
import android.content.SharedPreferences;
import android.os.Bundle;
+import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
@@ -16,19 +17,21 @@
import android.widget.EditText;
import com.beem.project.beem.R;
+import com.beem.project.beem.service.Contact;
/**
- * @author barbu
- * This activity class provide the view for instant messaging
- * after selecting a correspondant.
+ * @author barbu This activity class provide the view for instant messaging
+ * after selecting a correspondant.
*/
-public class SendIM extends ListActivity implements OnClickListener, OnKeyListener {
- private EditText mToSend;
- private ArrayList<String> mMessages = new ArrayList<String>();
- private ArrayAdapter<String> mAdapter;
- private SendIMDialogSmiley mSmyDialog;
+public class SendIM extends ListActivity implements OnClickListener,
+ OnKeyListener {
+ private EditText mToSend;
+ private ArrayList<String> mMessages = new ArrayList<String>();
+ private ArrayAdapter<String> mAdapter;
+ private SendIMDialogSmiley mSmyDialog;
private SharedPreferences mSet;
+ private Contact mContact;
/**
* Constructor.
@@ -43,16 +46,26 @@
@Override
public void onCreate(Bundle saveBundle) {
super.onCreate(saveBundle);
+
setContentView(R.layout.sendim);
mToSend = (EditText) findViewById(R.id.userText);
mSet = getSharedPreferences("lol", MODE_PRIVATE);
mSmyDialog = new SendIMDialogSmiley(this, mSet);
- mAdapter = new ArrayAdapter<String>(this, R.layout.messagelist, mMessages);
+ mAdapter = new ArrayAdapter<String>(this, R.layout.messagelist,
+ mMessages);
setListAdapter(mAdapter);
mToSend.setOnClickListener(this);
mToSend.setOnKeyListener(this);
+
+ mContact = getIntent().getParcelableExtra("contact");
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+
}
/**
@@ -63,19 +76,25 @@
}
/**
- * This method send a message to the server over the XMPP
- * connection and display it on activity view
- * TODO : Exception si la connexion se coupe pendant la conversation
+ * This method send a message to the server over the XMPP connection and
+ * display it on activity view TODO : Exception si la connexion se coupe
+ * pendant la conversation
*/
private void sendText() {
String text = mToSend.getText().toString();
if (!text.equals("")) {
/*
- * Prepare the message to be send
- * */
- /*Message msg = new Message("barbu", Message.Type.chat);*/
- /*msg.setBody(text);*/
- mAdapter.add("Barbu " + getString(R.string.SendIMSays) + text);
+ * Prepare the message to be send
+ */
+ /* Message msg = new Message("barbu", Message.Type.chat); */
+ /* msg.setBody(text); */
+ /*
+ * Rien a voir il faut changer le mContact.getJID() et remplacer
+ * avec son pseudo cetait juste un test pour savoir qu'on recupere
+ * bien le contact a qui envoyer les infos
+ */
+ mAdapter.add(mContact.getJID() + " "
+ + getString(R.string.SendIMSays) + text);
mToSend.setText(null);
}
}
@@ -94,9 +113,10 @@
}
return false;
}
-
+
/**
* Callback for menu creation.
+ *
* @param menu
* the menu created
* @return true on success, false otherwise
@@ -108,7 +128,7 @@
inflater.inflate(R.menu.sendimmenu, menu);
return true;
}
-
+
@Override
public final boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {