package uk.ac.cam.echo.activities; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.os.IBinder; import android.util.Log; import android.view.MenuItem; import android.view.View; import android.widget.ExpandableListAdapter; import android.widget.ExpandableListView; import java.util.ArrayList; import java.util.List; import uk.ac.cam.echo.R; import uk.ac.cam.echo.UserAdapter; import uk.ac.cam.echo.client.ClientApi; import uk.ac.cam.echo.data.User; import uk.ac.cam.echo.services.EchoService; public class UserListActivity extends Activity { private EchoService echoService; private ServiceConnection connection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder service) { echoService = ((EchoService.LocalBinder)service).getService(); api = echoService.getApi(); user = echoService.getUser(); Log.d("USER", "user is now " + user.getUsername()); onServiceReady(); } public void onServiceDisconnected(ComponentName className) { echoService = null; } }; ClientApi api; User user; //current user long id; //conversationId; UserAdapter adapter; ExpandableListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_detail); id = getIntent().getLongExtra("_id", 1); listView = (ExpandableListView)findViewById(R.id.userList); } @Override protected void onResume() { super.onResume(); Intent service = new Intent(this, EchoService.class); bindService(service, connection, Context.BIND_AUTO_CREATE); } @Override protected void onPause() { super.onPause(); unbindService(connection); } private void onServiceReady() { new GetUsers().execute(); } public void phoneUser(String phoneNumber) { String uri = "tel:" + phoneNumber.trim(); Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse(uri)); startActivity(intent); } public void emailUser(String emailAddress, String conversationName, String loggedInUserName, String userDisplay) { Intent emailIntent = new Intent(Intent.ACTION_SEND); emailIntent.setType("message/rfc822"); emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{emailAddress}); emailIntent.putExtra(Intent.EXTRA_SUBJECT, conversationName + " - a personal message from " + loggedInUserName); emailIntent.putExtra(Intent.EXTRA_TEXT, "Dear " + userDisplay + ",\n\n\n" + loggedInUserName); startActivity(Intent.createChooser(emailIntent, "Choose an email client: ")); } public EchoService getService() { return echoService; } private class GetUsers extends AsyncTask<String, Void, List<User>> { String conversationName; @Override protected List<User> doInBackground(String... params) { List<User> result; conversationName = api.conversationResource.get(id).getName(); result = (List<User>) api.conversationResource.get(id).getUsers(); return result; } @Override protected void onPostExecute(List<User> result) { // update list view super.onPostExecute(result); if(adapter == null) { getActionBar().setTitle(conversationName); getActionBar().setSubtitle("Active users "); adapter = UserAdapter.newInstance(UserListActivity.this, R.layout.user_group_item, result, api); listView.setAdapter(adapter); listView.setVisibility(View.VISIBLE); Log.d("USERADAPTER", "createdListView PerformSearch"); } else { Log.d("USERADAPTER", "updatedListView PerformSearch"); adapter.updateList(result); } } } }