# HG changeset patch # User Nikita Kozlov # Date 1254414076 -7200 # Node ID d8e79c0014f1995dc00ea5556afa185b79e9906f # Parent 7c0dcffaf20a4c2c144618e4e7a37c1aa2d1beaa# Parent aa9991b18ca84e96d11bc0d17466ebf2e12a9976 merge diff -r aa9991b18ca8 -r d8e79c0014f1 AndroidManifest.xml --- a/AndroidManifest.xml Thu Oct 01 18:07:32 2009 +0200 +++ b/AndroidManifest.xml Thu Oct 01 18:21:16 2009 +0200 @@ -67,6 +67,12 @@ + + + + + diff -r aa9991b18ca8 -r d8e79c0014f1 res/layout/group_list.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/res/layout/group_list.xml Thu Oct 01 18:21:16 2009 +0200 @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff -r aa9991b18ca8 -r d8e79c0014f1 src/com/beem/project/beem/ui/ContactDialog.java diff -r aa9991b18ca8 -r d8e79c0014f1 src/com/beem/project/beem/ui/GroupList.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/com/beem/project/beem/ui/GroupList.java Thu Oct 01 18:21:16 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 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(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; + } + } + +} diff -r aa9991b18ca8 -r d8e79c0014f1 src/com/beem/project/beem/ui/UserInfo.java --- a/src/com/beem/project/beem/ui/UserInfo.java Thu Oct 01 18:07:32 2009 +0200 +++ b/src/com/beem/project/beem/ui/UserInfo.java Thu Oct 01 18:21:16 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())); }