merge
authorNikita Kozlov <nikita@beem-project.com>
Thu, 01 Oct 2009 18:20:15 +0200
changeset 431 7c0dcffaf20a
parent 430 ebadf7ab35ee (diff)
parent 427 ac5021ad2ac1 (current diff)
child 432 d8e79c0014f1
merge
res/layout/userinfo_alias.xml
src/com/beem/project/beem/ui/ContactDialog.java
src/com/beem/project/beem/ui/ContactDialogAliasDialog.java
src/com/beem/project/beem/ui/UserInfo.java
--- a/AndroidManifest.xml	Thu Oct 01 17:43:56 2009 +0200
+++ b/AndroidManifest.xml	Thu Oct 01 18:20:15 2009 +0200
@@ -67,6 +67,12 @@
 				<category android:name="android.intent.category.LAUNCHER" />
 			</intent-filter>
 		</activity>
+		<activity android:name=".ui.GroupList" android:label="GroupList">
+			<intent-filter android:label="Beem Connection">
+				<action
+					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
+			</intent-filter>
+		</activity>
 		<service android:name="BeemService" android:enabled="true"
 			android:label="Beem Service" android:permission="com.beem.project.beem.BEEM_SERVICE">
 			<intent-filter>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/res/layout/group_list.xml	Thu Oct 01 18:20:15 2009 +0200
@@ -0,0 +1,20 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="fill_parent" 
+    android:layout_height="fill_parent"
+    android:paddingLeft="8dip"
+    android:paddingRight="8dip">
+    
+    <ListView android:id="@android:id/list"
+        android:layout_width="fill_parent" 
+        android:layout_height="0dip"
+        android:layout_weight="1"
+        android:stackFromBottom="true"
+        android:transcriptMode="normal"/>
+        
+    <EditText android:id="@+id/GroupListText"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:singleLine="true" />
+        
+</LinearLayout>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/ui/GroupList.java	Thu Oct 01 18:20:15 2009 +0200
@@ -0,0 +1,119 @@
+package com.beem.project.beem.ui;
+
+import android.app.ListActivity;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.ServiceConnection;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+
+import com.beem.project.beem.BeemService;
+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;
+import com.beem.project.beem.utils.BeemBroadcastReceiver;
+
+/**
+ * @author nikita
+ *
+ */
+public class GroupList extends ListActivity {
+
+    private static final Intent SERVICE_INTENT = new Intent();
+
+    private final ServiceConnection mServConn = new BeemServiceConnection();
+    private BeemBroadcastReceiver mReceiver;
+    private IXmppFacade mXmppFacade;
+    private IRoster mRoster;
+    private String mJID;
+    private ArrayAdapter<String> mGroups;
+
+    private Contact mContact;
+
+    static {
+	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
+    }
+
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+	super.onCreate(savedInstanceState);
+	setContentView(R.layout.group_list);
+	mReceiver = new BeemBroadcastReceiver(mServConn);
+	mJID = getIntent().getStringExtra("JID");
+	final ListView listView = getListView();
+
+	listView.setItemsCanFocus(false);
+	listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
+    }
+
+    private void setAdapter(){
+	try {
+	    mGroups = new ArrayAdapter<String>(this,
+		android.R.layout.simple_list_item_multiple_choice, mRoster.getGroupsNames().toArray(new String[(mRoster.getGroupsNames().size())]));
+	    setListAdapter(mGroups);
+	    mContact = new Contact(mJID);
+	    for (String group : mContact.getGroups()) {
+		getListView().setItemChecked(mGroups.getPosition(group), true);
+	    }
+	} catch (RemoteException e) {
+	    e.printStackTrace();
+	}	
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void onResume() {
+	super.onResume();
+	this.registerReceiver(mReceiver, new IntentFilter(BeemBroadcastReceiver.BEEM_CONNECTION_CLOSED));
+	bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE);
+	mReceiver.setBinded();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void onPause() {
+	super.onPause();
+	this.unregisterReceiver(mReceiver);
+	if (mReceiver.isBinded())
+	    unbindService(mServConn);
+    }
+
+    /**
+     * The ServiceConnection used to connect to the Beem service.
+     */
+    private class BeemServiceConnection implements ServiceConnection {
+
+	/**
+	 * Constructor.
+	 */
+	public BeemServiceConnection() { }
+
+	@Override
+	public void onServiceConnected(ComponentName name, IBinder service) {
+	    mXmppFacade = IXmppFacade.Stub.asInterface(service);
+	    try {
+		mRoster = mXmppFacade.getRoster();
+		setAdapter();
+	    } catch (RemoteException e) {
+		e.printStackTrace();
+	    }
+	}
+
+	@Override
+	public void onServiceDisconnected(ComponentName name) {
+	    mXmppFacade = null;
+	    mRoster = null;
+	}
+    }
+
+}
--- a/src/com/beem/project/beem/ui/UserInfo.java	Thu Oct 01 17:43:56 2009 +0200
+++ b/src/com/beem/project/beem/ui/UserInfo.java	Thu Oct 01 18:20:15 2009 +0200
@@ -46,6 +46,7 @@
     private Contact mContact;
     private IXmppFacade mXmppFacade;
     private BeemBroadcastReceiver mReceiver;
+    private String mJID;
 
     static {
 	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
@@ -68,11 +69,14 @@
 	v.setOnClickListener(new AliasListener());
 	v = findViewById(R.id.userinfo_layout_delete);
 	v.setOnClickListener(new DeleteListener());
+	v = findViewById(R.id.userinfo_layout_chg_group);
+	v.setOnClickListener(new GroupListener());
 	v = findViewById(R.id.userinfo_layout_re_suscription);
 	v.setOnClickListener(new ResendListener());
 	mTextAlias = (TextView) findViewById(R.id.userinfo_alias);
 	mGalleryGroups = (Gallery) findViewById(R.id.userinfo_groups);
 	mReceiver = new BeemBroadcastReceiver(mServConn);
+	mJID = getIntent().getData().getEncodedSchemeSpecificPart();
     }
 
     /**
@@ -114,6 +118,25 @@
 	}
 
     }
+    
+    /**
+     * Event simple click on layout group.
+     */
+    private class GroupListener implements View.OnClickListener {
+	/**
+	 * Constructor.
+	 */
+	public GroupListener() {
+	}
+
+	@Override
+	public void onClick(View v) {
+	    Intent i = new Intent(UserInfo.this, GroupList.class);
+	    i.putExtra("JID", mContact.getJID());
+	    startActivity(i);
+	}
+
+    }
 
     /**
      * Create dialog alias.
@@ -303,9 +326,9 @@
 	    try {
 		IRoster r = mXmppFacade.getRoster();
 		if (r != null) {
-		    String jidByUri = getIntent().getData().getEncodedSchemeSpecificPart();
-		    setTitle(jidByUri);
-		    mContact = r.getContact(jidByUri);
+		    
+		    setTitle(mJID);
+		    mContact = r.getContact(mJID);
 		    mTextAlias.setText(mContact.getName());
 		    mGalleryGroups.setAdapter(new BeemGroups(UserInfo.this, mContact.getGroups()));
 		}