Correction gestion des groups.
authorVincent Veronis <veroni_v@epitech.net>
Thu, 08 Oct 2009 14:42:58 +0200
changeset 447 2771e1b2e080
parent 446 b33eed682a0d
child 448 aa654c8efd1b
Correction gestion des groups.
src/com/beem/project/beem/ui/ContactDialog.java
src/com/beem/project/beem/ui/GroupList.java
src/com/beem/project/beem/ui/UserInfo.java
--- a/src/com/beem/project/beem/ui/ContactDialog.java	Sat Oct 03 16:24:18 2009 +0200
+++ b/src/com/beem/project/beem/ui/ContactDialog.java	Thu Oct 08 14:42:58 2009 +0200
@@ -119,7 +119,7 @@
 	public void onClick(View v) {
 	    Activity a = ContactDialog.this.getOwnerActivity();
 	    Intent i = new Intent(mContext, UserInfo.class);
-	    i.putExtra("contact", mContact);
+	    i.putExtra("contact", mContact.getJID());
 	    a.startActivity(i);
 	    dismiss();
 	}
--- a/src/com/beem/project/beem/ui/GroupList.java	Sat Oct 03 16:24:18 2009 +0200
+++ b/src/com/beem/project/beem/ui/GroupList.java	Thu Oct 08 14:42:58 2009 +0200
@@ -14,10 +14,12 @@
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.View.OnKeyListener;
+import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.CheckedTextView;
 import android.widget.ListView;
 import android.widget.TextView;
+import android.widget.AdapterView.OnItemClickListener;
 
 import com.beem.project.beem.BeemService;
 import com.beem.project.beem.R;
@@ -65,6 +67,7 @@
 
 	listView.setItemsCanFocus(false);
 	listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
+	listView.setOnItemClickListener(new GroupOnItemClickListener());
 
 	mText = (TextView) findViewById(R.id.GroupListText);
 	mText.setOnKeyListener(new GroupListOnKeyListener());
@@ -100,21 +103,7 @@
      * @param id The row id of the item that was clicked
      */
     protected void onListItemClick(ListView l, View v, int position, long id) {
-	Log.d("GROUPLIST", "CLICK");
-	CheckedTextView textView = (CheckedTextView) v;
-	if (textView.isChecked()) {	    
-	    try {
-		mRoster.addContactToGroup(textView.getText().toString(), mJID);
-	    } catch (RemoteException e) {
-		e.printStackTrace();
-	    }
-	} else {
-	    try {
-		mRoster.removeContactFromGroup(textView.getText().toString(), mJID);
-	    } catch (RemoteException e) {
-		e.printStackTrace();
-	    }
-	}
+
     }
 
     /**
@@ -122,11 +111,10 @@
      */
     private void setAdapter() {
 	try {
-	    for (String group: mRoster.getGroupsNames()) {
+	    for (String group : mRoster.getGroupsNames()) {
 		mStrings.add(group);
 	    }
-	    mGroups = new ArrayAdapter<String>(this,
-		android.R.layout.simple_list_item_multiple_choice, mStrings);
+	    mGroups = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, mStrings);
 	    setListAdapter(mGroups);
 	    mContact = mRoster.getContact(mJID);
 	    for (String group : mContact.getGroups()) {
@@ -150,11 +138,6 @@
 			String groupname = mText.getText().toString();
 			mGroups.add(groupname);
 			mText.setText(null);
-			try {
-			    mRoster.createGroup(groupname);
-			} catch (RemoteException e) {
-			    e.printStackTrace();
-			}
 			return true;
 		    default:
 			return false;
@@ -165,6 +148,31 @@
 
     }
 
+    private class GroupOnItemClickListener implements OnItemClickListener {
+
+	@Override
+	public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3) {
+	    Log.d("GROUPLIST", "CLICK");
+	    CheckedTextView textView = (CheckedTextView) v;
+	    if (!textView.isChecked()) {
+		try {
+		    mRoster.createGroup(textView.getText().toString());
+		    mRoster.addContactToGroup(textView.getText().toString(), mJID);
+		} catch (RemoteException e) {
+		    e.printStackTrace();
+		}
+	    } else {
+		try {
+		    mRoster.removeContactFromGroup(textView.getText().toString(), mJID);
+		} catch (RemoteException e) {
+		    e.printStackTrace();
+		}
+	    }
+
+	}
+
+    }
+
     /**
      * The ServiceConnection used to connect to the Beem service.
      */
@@ -173,7 +181,8 @@
 	/**
 	 * Constructor.
 	 */
-	public BeemServiceConnection() { }
+	public BeemServiceConnection() {
+	}
 
 	@Override
 	public void onServiceConnected(ComponentName name, IBinder service) {
--- a/src/com/beem/project/beem/ui/UserInfo.java	Sat Oct 03 16:24:18 2009 +0200
+++ b/src/com/beem/project/beem/ui/UserInfo.java	Thu Oct 08 14:42:58 2009 +0200
@@ -77,12 +77,6 @@
 	mTextAlias = (TextView) findViewById(R.id.userinfo_alias);
 	mGalleryGroups = (Gallery) findViewById(R.id.userinfo_groups);
 	mReceiver = new BeemBroadcastReceiver(mServConn);
-
-	mContact = getIntent().getParcelableExtra("contact");
-	mJID = mContact.getJID();
-	mTextAlias.setText(mContact.getName());
-	mGalleryGroups.setAdapter(new BeemGroups(UserInfo.this, mContact.getGroups()));
-	setTitle(mJID);
     }
 
     /**
@@ -265,25 +259,25 @@
 
 	    AlertDialog.Builder builder = new AlertDialog.Builder(UserInfo.this);
 	    builder.setMessage(UserInfo.this.getString(R.string.userinfo_sureresend)).setCancelable(false)
-	    .setPositiveButton(UserInfo.this.getString(R.string.userinfo_yes),
-		new DialogInterface.OnClickListener() {
-		public void onClick(DialogInterface dialog, int id) {
-		    Presence presencePacket = new Presence(Presence.Type.subscribe);
-		    presencePacket.setTo(mContact.getJID());
-		    try {
-			mXmppFacade.sendPresencePacket(new PresenceAdapter(presencePacket));
-		    } catch (RemoteException e) {
-			e.printStackTrace();
-		    }
-		    Toast.makeText(UserInfo.this, getString(R.string.userinfo_resend), Toast.LENGTH_SHORT)
-		    .show();
-		}
-	    }).setNegativeButton(UserInfo.this.getString(R.string.userinfo_no),
-		new DialogInterface.OnClickListener() {
-		public void onClick(DialogInterface dialog, int id) {
-		    dialog.cancel();
-		}
-	    });
+		.setPositiveButton(UserInfo.this.getString(R.string.userinfo_yes),
+		    new DialogInterface.OnClickListener() {
+			public void onClick(DialogInterface dialog, int id) {
+			    Presence presencePacket = new Presence(Presence.Type.subscribe);
+			    presencePacket.setTo(mContact.getJID());
+			    try {
+				mXmppFacade.sendPresencePacket(new PresenceAdapter(presencePacket));
+			    } catch (RemoteException e) {
+				e.printStackTrace();
+			    }
+			    Toast.makeText(UserInfo.this, getString(R.string.userinfo_resend), Toast.LENGTH_SHORT)
+				.show();
+			}
+		    }).setNegativeButton(UserInfo.this.getString(R.string.userinfo_no),
+		    new DialogInterface.OnClickListener() {
+			public void onClick(DialogInterface dialog, int id) {
+			    dialog.cancel();
+			}
+		    });
 	    AlertDialog alert = builder.create();
 	    alert.show();
 	}
@@ -305,21 +299,21 @@
 	public void onClick(View v) {
 	    AlertDialog.Builder builder = new AlertDialog.Builder(UserInfo.this);
 	    builder.setMessage(UserInfo.this.getString(R.string.userinfo_sure2delete)).setCancelable(false)
-	    .setPositiveButton(UserInfo.this.getString(R.string.userinfo_yes),
-		new DialogInterface.OnClickListener() {
-		public void onClick(DialogInterface dialog, int id) {
-		    try {
-			mRoster.deleteContact(mContact);
-		    } catch (RemoteException e) {
-			e.printStackTrace();
-		    }
-		}
-	    }).setNegativeButton(UserInfo.this.getString(R.string.userinfo_no),
-		new DialogInterface.OnClickListener() {
-		public void onClick(DialogInterface dialog, int id) {
-		    dialog.cancel();
-		}
-	    });
+		.setPositiveButton(UserInfo.this.getString(R.string.userinfo_yes),
+		    new DialogInterface.OnClickListener() {
+			public void onClick(DialogInterface dialog, int id) {
+			    try {
+				mRoster.deleteContact(mContact);
+			    } catch (RemoteException e) {
+				e.printStackTrace();
+			    }
+			}
+		    }).setNegativeButton(UserInfo.this.getString(R.string.userinfo_no),
+		    new DialogInterface.OnClickListener() {
+			public void onClick(DialogInterface dialog, int id) {
+			    dialog.cancel();
+			}
+		    });
 	    AlertDialog alert = builder.create();
 	    alert.show();
 	}
@@ -343,7 +337,12 @@
 	public void onServiceConnected(ComponentName name, IBinder service) {
 	    mXmppFacade = IXmppFacade.Stub.asInterface(service);
 	    try {
-		mRoster = mXmppFacade.getRoster();		
+		mRoster = mXmppFacade.getRoster();
+		mJID = getIntent().getStringExtra("contact");
+		mContact = mRoster.getContact(mJID);
+		mTextAlias.setText(mContact.getName());
+		mGalleryGroups.setAdapter(new BeemGroups(UserInfo.this, mContact.getGroups()));
+		setTitle(mJID);
 	    } catch (RemoteException e) {
 		e.printStackTrace();
 	    }