package com.geored.gui; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.geored.rest.R; import com.geored.rest.ServicioRestUsuarios; import com.geored.rest.data.Usuario; import com.geored.rest.exception.ConflictException; import com.geored.rest.exception.NotFoundException; import com.geored.rest.exception.RestBlowUpException; import com.geored.rest.exception.UnauthorizedException; import android.annotation.SuppressLint; import android.content.Intent; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; import android.os.AsyncTask; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; public class BuscarContactosActivity extends GenericActivity { @Override protected void goToPreviousActivity(){ Intent setIntent = new Intent(this,UsuarioActivity.class); startActivity(setIntent); } protected void loadVista() { setContentView(R.layout.activity_buscar_contactos); loadListView(); registerForContextMenu(getListView()); } private void setListAdapter(ArrayAdapter<String> adapter) { getListView().setAdapter(adapter); } private ListAdapter getListAdapter() { return getListView().getAdapter(); } private ListView getListView() { return ((ListView)findViewById(R.id.listView)); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.activity_invitar_contactos, menu); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); Object itemList = getListAdapter().getItem(info.position); switch (item.getItemId()) { case R.id.menu_invitar_contacto: //showToast("Invitar: pos="+info.position + " , usr="+itemList.toString()); showInvitar(itemList.toString()); showToast("Contacto <"+itemList.toString()+"> invitado"); return true; //case R.id.menu_iniciar_chat: // showChat(itemList.toString()); // //showToast("Chat: pos="+info.position + " , usr="+itemList.toString()); // return true; default: return super.onContextItemSelected(item); } } //private void showChat(String id) { // Intent i = new Intent(getApplicationContext(), ChatActivity.class); // i.putExtra("user_id",id); // startActivity(i); //} private void showInvitar(String nombreUsuario) { if (hashUsuarios.containsKey(nombreUsuario)){ progressBar.show(); String id = hashUsuarios.get(nombreUsuario).getId(); InvitacionAsyncTask task = new InvitacionAsyncTask(); task.execute(new String[] { id}); }else{ showToast("error antes de llamar al invitar"); } } private void loadListView() { progressBar.show(); //TODO:hacer que el parametro de filtro funcione RegistryAsyncTask task = new RegistryAsyncTask(); //TODO:sacar el parametro hardcoreado task.execute(new String[] { "e"}); } private void loadListView(List<Usuario> usuarios) { try{ hashUsuarios.clear(); List<String> strs = new ArrayList<String>(); //List<Usuario> usuarios = ServicioRestUsuarios.getContactos(); if (usuarios != null){ showToast(Integer.toString(usuarios.size())); Iterator<Usuario> it = usuarios.iterator(); while(it.hasNext()){ Usuario usuario = (Usuario)it.next(); strs.add(usuario.getNombre()); hashUsuarios.put(usuario.getNombre(), usuario); } ArrayAdapter<String> adapter = new ArrayAdapter<String>(BuscarContactosActivity.this, android.R.layout.simple_list_item_1, strs); setListAdapter(adapter); }else{ showToast("usuarios == null"); } }catch(Exception ex){ showToast(ex.getMessage()); } } @SuppressLint("NewApi") private class RegistryAsyncTask extends AsyncTask<String, Void, List<Usuario>> { @Override protected List<Usuario> doInBackground(String... params) { List<Usuario> usuarios; try { usuarios = ServicioRestUsuarios.buscarContactos(params[0]); } catch (RestBlowUpException e) { e.printStackTrace(); return null; } catch (UnauthorizedException e) { e.printStackTrace(); return null; } return usuarios; } @SuppressLint("NewApi") @Override protected void onPostExecute(List<Usuario> result) { if (result != null){ loadListView(result); //goToActivity(UsuarioActivity.class); }else{ showToast("error"); } progressBar.dismiss(); } } @SuppressLint("NewApi") private class InvitacionAsyncTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { try { ServicioRestUsuarios.invitarContacto(params[0]); //ServicioRestUsuarios.aceptarInvitacion(params[0]); } catch (RestBlowUpException e) { e.printStackTrace(); return null; } catch (NotFoundException e) { e.printStackTrace(); return null; } catch (UnauthorizedException e) { e.printStackTrace(); return null; } catch (ConflictException e) { e.printStackTrace(); return null; } return "Exito"; } @Override protected void onPostExecute(String result) { if (result != null){ Intent i = new Intent(getApplicationContext(), UsuarioActivity.class); i.putExtra("user_id",usuarioId); startActivity(i); }else{ showToast("error"); } progressBar.dismiss(); } } }